openvox 7.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +15 -0
- data/CODEOWNERS +11 -0
- data/CODE_OF_CONDUCT.md +70 -0
- data/CONTRIBUTING.md +161 -0
- data/Gemfile +82 -0
- data/Guardfile.example +76 -0
- data/LICENSE +202 -0
- data/README.md +68 -0
- data/Rakefile +160 -0
- data/bin/puppet +9 -0
- data/conf/environment.conf +18 -0
- data/conf/fileserver.conf +32 -0
- data/conf/hiera.yaml +11 -0
- data/conf/puppet.conf +6 -0
- data/examples/enc/regexp_nodes/classes/databases +2 -0
- data/examples/enc/regexp_nodes/classes/webservers +2 -0
- data/examples/enc/regexp_nodes/environment/development +2 -0
- data/examples/enc/regexp_nodes/parameters/service/prod +1 -0
- data/examples/enc/regexp_nodes/parameters/service/qa +3 -0
- data/examples/enc/regexp_nodes/parameters/service/sandbox +1 -0
- data/examples/enc/regexp_nodes/regexp_nodes.rb +270 -0
- data/examples/hiera/README.md +91 -0
- data/examples/hiera/etc/hiera.yaml +15 -0
- data/examples/hiera/etc/hieradb/common.yaml +3 -0
- data/examples/hiera/etc/hieradb/dc1.yaml +6 -0
- data/examples/hiera/etc/hieradb/development.yaml +2 -0
- data/examples/hiera/etc/puppet.conf +3 -0
- data/examples/hiera/modules/data/manifests/common.pp +4 -0
- data/examples/hiera/modules/ntp/manifests/config.pp +6 -0
- data/examples/hiera/modules/ntp/manifests/data.pp +4 -0
- data/examples/hiera/modules/ntp/templates/ntp.conf.erb +3 -0
- data/examples/hiera/modules/users/manifests/common.pp +4 -0
- data/examples/hiera/modules/users/manifests/dc1.pp +4 -0
- data/examples/hiera/modules/users/manifests/development.pp +4 -0
- data/examples/hiera/site.pp +3 -0
- data/examples/nagios/check_puppet.rb +123 -0
- data/ext/README.md +13 -0
- data/ext/build_defaults.yaml +18 -0
- data/ext/debian/puppet.default +4 -0
- data/ext/debian/puppet.init +113 -0
- data/ext/hiera/hiera.yaml +15 -0
- data/ext/osx/puppet.plist +32 -0
- data/ext/project_data.yaml +20 -0
- data/ext/redhat/client.init +169 -0
- data/ext/redhat/client.sysconfig +2 -0
- data/ext/solaris/smf/puppet +44 -0
- data/ext/solaris/smf/puppet.xml +46 -0
- data/ext/suse/client.init +141 -0
- data/ext/systemd/puppet.service +26 -0
- data/ext/windows/puppet_interactive.bat +6 -0
- data/ext/windows/puppet_shell.bat +9 -0
- data/ext/windows/run_puppet_interactive.bat +9 -0
- data/ext/windows/service/daemon.bat +6 -0
- data/ext/windows/service/daemon.rb +225 -0
- data/install.rb +499 -0
- data/lib/hiera/puppet_function.rb +84 -0
- data/lib/hiera/scope.rb +90 -0
- data/lib/hiera_puppet.rb +80 -0
- data/lib/puppet/agent/disabler.rb +53 -0
- data/lib/puppet/agent/locker.rb +46 -0
- data/lib/puppet/agent.rb +176 -0
- data/lib/puppet/application/agent.rb +523 -0
- data/lib/puppet/application/apply.rb +428 -0
- data/lib/puppet/application/catalog.rb +4 -0
- data/lib/puppet/application/config.rb +5 -0
- data/lib/puppet/application/describe.rb +253 -0
- data/lib/puppet/application/device.rb +439 -0
- data/lib/puppet/application/doc.rb +233 -0
- data/lib/puppet/application/epp.rb +5 -0
- data/lib/puppet/application/face_base.rb +276 -0
- data/lib/puppet/application/facts.rb +9 -0
- data/lib/puppet/application/filebucket.rb +318 -0
- data/lib/puppet/application/generate.rb +5 -0
- data/lib/puppet/application/help.rb +5 -0
- data/lib/puppet/application/indirection_base.rb +4 -0
- data/lib/puppet/application/lookup.rb +433 -0
- data/lib/puppet/application/module.rb +4 -0
- data/lib/puppet/application/node.rb +4 -0
- data/lib/puppet/application/parser.rb +5 -0
- data/lib/puppet/application/plugin.rb +4 -0
- data/lib/puppet/application/report.rb +4 -0
- data/lib/puppet/application/resource.rb +254 -0
- data/lib/puppet/application/script.rb +264 -0
- data/lib/puppet/application/ssl.rb +323 -0
- data/lib/puppet/application.rb +596 -0
- data/lib/puppet/application_support.rb +68 -0
- data/lib/puppet/coercion.rb +40 -0
- data/lib/puppet/compilable_resource_type.rb +15 -0
- data/lib/puppet/concurrent/lock.rb +16 -0
- data/lib/puppet/concurrent/synchronized.rb +15 -0
- data/lib/puppet/concurrent/thread_local_singleton.rb +17 -0
- data/lib/puppet/concurrent.rb +2 -0
- data/lib/puppet/configurer/downloader.rb +85 -0
- data/lib/puppet/configurer/fact_handler.rb +50 -0
- data/lib/puppet/configurer/plugin_handler.rb +59 -0
- data/lib/puppet/configurer.rb +755 -0
- data/lib/puppet/confine/any.rb +26 -0
- data/lib/puppet/confine/boolean.rb +45 -0
- data/lib/puppet/confine/exists.rb +19 -0
- data/lib/puppet/confine/false.rb +25 -0
- data/lib/puppet/confine/feature.rb +17 -0
- data/lib/puppet/confine/true.rb +26 -0
- data/lib/puppet/confine/variable.rb +59 -0
- data/lib/puppet/confine.rb +83 -0
- data/lib/puppet/confine_collection.rb +51 -0
- data/lib/puppet/confiner.rb +46 -0
- data/lib/puppet/context/trusted_information.rb +120 -0
- data/lib/puppet/context.rb +188 -0
- data/lib/puppet/daemon.rb +182 -0
- data/lib/puppet/data_binding.rb +14 -0
- data/lib/puppet/datatypes/error.rb +21 -0
- data/lib/puppet/datatypes/impl/error.rb +40 -0
- data/lib/puppet/datatypes.rb +213 -0
- data/lib/puppet/defaults.rb +2277 -0
- data/lib/puppet/environments.rb +601 -0
- data/lib/puppet/error.rb +138 -0
- data/lib/puppet/etc.rb +180 -0
- data/lib/puppet/external/dot.rb +325 -0
- data/lib/puppet/external/pson/common.rb +374 -0
- data/lib/puppet/external/pson/pure/generator.rb +395 -0
- data/lib/puppet/external/pson/pure/parser.rb +308 -0
- data/lib/puppet/external/pson/pure.rb +15 -0
- data/lib/puppet/external/pson/version.rb +8 -0
- data/lib/puppet/face/catalog/select.rb +49 -0
- data/lib/puppet/face/catalog.rb +165 -0
- data/lib/puppet/face/config.rb +267 -0
- data/lib/puppet/face/epp.rb +566 -0
- data/lib/puppet/face/facts.rb +174 -0
- data/lib/puppet/face/generate.rb +66 -0
- data/lib/puppet/face/help/action.erb +90 -0
- data/lib/puppet/face/help/face.erb +115 -0
- data/lib/puppet/face/help/global.erb +16 -0
- data/lib/puppet/face/help/man.erb +152 -0
- data/lib/puppet/face/help.rb +242 -0
- data/lib/puppet/face/module/changes.rb +43 -0
- data/lib/puppet/face/module/install.rb +146 -0
- data/lib/puppet/face/module/list.rb +272 -0
- data/lib/puppet/face/module/uninstall.rb +89 -0
- data/lib/puppet/face/module/upgrade.rb +87 -0
- data/lib/puppet/face/module.rb +19 -0
- data/lib/puppet/face/node/clean.rb +107 -0
- data/lib/puppet/face/node.rb +43 -0
- data/lib/puppet/face/parser.rb +227 -0
- data/lib/puppet/face/plugin.rb +60 -0
- data/lib/puppet/face/report.rb +54 -0
- data/lib/puppet/face/resource.rb +53 -0
- data/lib/puppet/face.rb +12 -0
- data/lib/puppet/facter_impl.rb +96 -0
- data/lib/puppet/feature/base.rb +76 -0
- data/lib/puppet/feature/bolt.rb +3 -0
- data/lib/puppet/feature/cfpropertylist.rb +3 -0
- data/lib/puppet/feature/eventlog.rb +5 -0
- data/lib/puppet/feature/hiera_eyaml.rb +3 -0
- data/lib/puppet/feature/hocon.rb +3 -0
- data/lib/puppet/feature/libuser.rb +8 -0
- data/lib/puppet/feature/msgpack.rb +3 -0
- data/lib/puppet/feature/pe_license.rb +4 -0
- data/lib/puppet/feature/selinux.rb +3 -0
- data/lib/puppet/feature/ssh.rb +3 -0
- data/lib/puppet/feature/telnet.rb +9 -0
- data/lib/puppet/feature/zlib.rb +5 -0
- data/lib/puppet/ffi/posix/constants.rb +14 -0
- data/lib/puppet/ffi/posix/functions.rb +24 -0
- data/lib/puppet/ffi/posix.rb +10 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/ffi/windows.rb +12 -0
- data/lib/puppet/file_bucket/dipper.rb +174 -0
- data/lib/puppet/file_bucket/file.rb +129 -0
- data/lib/puppet/file_bucket.rb +4 -0
- data/lib/puppet/file_serving/base.rb +86 -0
- data/lib/puppet/file_serving/configuration/parser.rb +113 -0
- data/lib/puppet/file_serving/configuration.rb +113 -0
- data/lib/puppet/file_serving/content.rb +43 -0
- data/lib/puppet/file_serving/fileset.rb +186 -0
- data/lib/puppet/file_serving/http_metadata.rb +62 -0
- data/lib/puppet/file_serving/metadata.rb +171 -0
- data/lib/puppet/file_serving/mount/file.rb +122 -0
- data/lib/puppet/file_serving/mount/locales.rb +35 -0
- data/lib/puppet/file_serving/mount/modules.rb +26 -0
- data/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
- data/lib/puppet/file_serving/mount/plugins.rb +35 -0
- data/lib/puppet/file_serving/mount/scripts.rb +24 -0
- data/lib/puppet/file_serving/mount/tasks.rb +23 -0
- data/lib/puppet/file_serving/mount.rb +38 -0
- data/lib/puppet/file_serving/terminus_helper.rb +31 -0
- data/lib/puppet/file_serving/terminus_selector.rb +31 -0
- data/lib/puppet/file_serving.rb +3 -0
- data/lib/puppet/file_system/file_impl.rb +188 -0
- data/lib/puppet/file_system/jruby.rb +23 -0
- data/lib/puppet/file_system/memory_file.rb +79 -0
- data/lib/puppet/file_system/memory_impl.rb +99 -0
- data/lib/puppet/file_system/path_pattern.rb +93 -0
- data/lib/puppet/file_system/posix.rb +47 -0
- data/lib/puppet/file_system/uniquefile.rb +188 -0
- data/lib/puppet/file_system/windows.rb +213 -0
- data/lib/puppet/file_system.rb +419 -0
- data/lib/puppet/forge/cache.rb +60 -0
- data/lib/puppet/forge/errors.rb +114 -0
- data/lib/puppet/forge/repository.rb +95 -0
- data/lib/puppet/forge.rb +259 -0
- data/lib/puppet/functions/abs.rb +61 -0
- data/lib/puppet/functions/alert.rb +14 -0
- data/lib/puppet/functions/all.rb +104 -0
- data/lib/puppet/functions/annotate.rb +108 -0
- data/lib/puppet/functions/any.rb +109 -0
- data/lib/puppet/functions/assert_type.rb +93 -0
- data/lib/puppet/functions/binary_file.rb +32 -0
- data/lib/puppet/functions/break.rb +47 -0
- data/lib/puppet/functions/call.rb +80 -0
- data/lib/puppet/functions/camelcase.rb +62 -0
- data/lib/puppet/functions/capitalize.rb +61 -0
- data/lib/puppet/functions/ceiling.rb +37 -0
- data/lib/puppet/functions/chomp.rb +57 -0
- data/lib/puppet/functions/chop.rb +67 -0
- data/lib/puppet/functions/compare.rb +125 -0
- data/lib/puppet/functions/contain.rb +55 -0
- data/lib/puppet/functions/convert_to.rb +34 -0
- data/lib/puppet/functions/crit.rb +14 -0
- data/lib/puppet/functions/debug.rb +14 -0
- data/lib/puppet/functions/defined.rb +159 -0
- data/lib/puppet/functions/dig.rb +67 -0
- data/lib/puppet/functions/downcase.rb +89 -0
- data/lib/puppet/functions/each.rb +167 -0
- data/lib/puppet/functions/emerg.rb +14 -0
- data/lib/puppet/functions/empty.rb +85 -0
- data/lib/puppet/functions/epp.rb +49 -0
- data/lib/puppet/functions/err.rb +14 -0
- data/lib/puppet/functions/eyaml_lookup_key.rb +102 -0
- data/lib/puppet/functions/filter.rb +137 -0
- data/lib/puppet/functions/find_file.rb +44 -0
- data/lib/puppet/functions/find_template.rb +63 -0
- data/lib/puppet/functions/flatten.rb +64 -0
- data/lib/puppet/functions/floor.rb +37 -0
- data/lib/puppet/functions/get.rb +150 -0
- data/lib/puppet/functions/getvar.rb +87 -0
- data/lib/puppet/functions/group_by.rb +62 -0
- data/lib/puppet/functions/hiera.rb +89 -0
- data/lib/puppet/functions/hiera_array.rb +81 -0
- data/lib/puppet/functions/hiera_hash.rb +92 -0
- data/lib/puppet/functions/hiera_include.rb +104 -0
- data/lib/puppet/functions/hocon_data.rb +41 -0
- data/lib/puppet/functions/import.rb +7 -0
- data/lib/puppet/functions/include.rb +53 -0
- data/lib/puppet/functions/index.rb +167 -0
- data/lib/puppet/functions/info.rb +14 -0
- data/lib/puppet/functions/inline_epp.rb +60 -0
- data/lib/puppet/functions/join.rb +56 -0
- data/lib/puppet/functions/json_data.rb +33 -0
- data/lib/puppet/functions/keys.rb +25 -0
- data/lib/puppet/functions/length.rb +44 -0
- data/lib/puppet/functions/lest.rb +55 -0
- data/lib/puppet/functions/lookup.rb +224 -0
- data/lib/puppet/functions/lstrip.rb +58 -0
- data/lib/puppet/functions/map.rb +135 -0
- data/lib/puppet/functions/match.rb +130 -0
- data/lib/puppet/functions/max.rb +183 -0
- data/lib/puppet/functions/min.rb +182 -0
- data/lib/puppet/functions/module_directory.rb +41 -0
- data/lib/puppet/functions/new.rb +1011 -0
- data/lib/puppet/functions/next.rb +33 -0
- data/lib/puppet/functions/notice.rb +14 -0
- data/lib/puppet/functions/partition.rb +62 -0
- data/lib/puppet/functions/reduce.rb +162 -0
- data/lib/puppet/functions/regsubst.rb +101 -0
- data/lib/puppet/functions/require.rb +77 -0
- data/lib/puppet/functions/return.rb +15 -0
- data/lib/puppet/functions/reverse_each.rb +94 -0
- data/lib/puppet/functions/round.rb +24 -0
- data/lib/puppet/functions/rstrip.rb +58 -0
- data/lib/puppet/functions/scanf.rb +44 -0
- data/lib/puppet/functions/size.rb +15 -0
- data/lib/puppet/functions/slice.rb +124 -0
- data/lib/puppet/functions/sort.rb +74 -0
- data/lib/puppet/functions/split.rb +76 -0
- data/lib/puppet/functions/step.rb +98 -0
- data/lib/puppet/functions/strftime.rb +212 -0
- data/lib/puppet/functions/strip.rb +58 -0
- data/lib/puppet/functions/then.rb +77 -0
- data/lib/puppet/functions/tree_each.rb +197 -0
- data/lib/puppet/functions/type.rb +72 -0
- data/lib/puppet/functions/unique.rb +132 -0
- data/lib/puppet/functions/unwrap.rb +59 -0
- data/lib/puppet/functions/upcase.rb +89 -0
- data/lib/puppet/functions/values.rb +25 -0
- data/lib/puppet/functions/versioncmp.rb +40 -0
- data/lib/puppet/functions/warning.rb +14 -0
- data/lib/puppet/functions/with.rb +32 -0
- data/lib/puppet/functions/yaml_data.rb +45 -0
- data/lib/puppet/functions.rb +862 -0
- data/lib/puppet/generate/models/type/property.rb +70 -0
- data/lib/puppet/generate/models/type/type.rb +65 -0
- data/lib/puppet/generate/templates/type/pcore.erb +42 -0
- data/lib/puppet/generate/type.rb +249 -0
- data/lib/puppet/gettext/config.rb +275 -0
- data/lib/puppet/gettext/module_translations.rb +42 -0
- data/lib/puppet/gettext/stubs.rb +11 -0
- data/lib/puppet/graph/key.rb +26 -0
- data/lib/puppet/graph/prioritizer.rb +29 -0
- data/lib/puppet/graph/rb_tree_map.rb +388 -0
- data/lib/puppet/graph/relationship_graph.rb +284 -0
- data/lib/puppet/graph/sequential_prioritizer.rb +31 -0
- data/lib/puppet/graph/simple_graph.rb +546 -0
- data/lib/puppet/graph.rb +9 -0
- data/lib/puppet/http/client.rb +525 -0
- data/lib/puppet/http/dns.rb +159 -0
- data/lib/puppet/http/errors.rb +48 -0
- data/lib/puppet/http/external_client.rb +88 -0
- data/lib/puppet/http/factory.rb +51 -0
- data/lib/puppet/http/pool.rb +172 -0
- data/lib/puppet/http/pool_entry.rb +17 -0
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +85 -0
- data/lib/puppet/http/resolver/server_list.rb +87 -0
- data/lib/puppet/http/resolver/settings.rb +23 -0
- data/lib/puppet/http/resolver/srv.rb +41 -0
- data/lib/puppet/http/resolver.rb +48 -0
- data/lib/puppet/http/response.rb +102 -0
- data/lib/puppet/http/response_converter.rb +24 -0
- data/lib/puppet/http/response_net_http.rb +42 -0
- data/lib/puppet/http/retry_after_handler.rb +77 -0
- data/lib/puppet/http/service/ca.rb +101 -0
- data/lib/puppet/http/service/compiler.rb +353 -0
- data/lib/puppet/http/service/file_server.rb +198 -0
- data/lib/puppet/http/service/puppetserver.rb +53 -0
- data/lib/puppet/http/service/report.rb +64 -0
- data/lib/puppet/http/service.rb +182 -0
- data/lib/puppet/http/session.rb +122 -0
- data/lib/puppet/http/site.rb +42 -0
- data/lib/puppet/http.rb +46 -0
- data/lib/puppet/indirector/catalog/compiler.rb +431 -0
- data/lib/puppet/indirector/catalog/json.rb +40 -0
- data/lib/puppet/indirector/catalog/msgpack.rb +6 -0
- data/lib/puppet/indirector/catalog/rest.rb +49 -0
- data/lib/puppet/indirector/catalog/store_configs.rb +8 -0
- data/lib/puppet/indirector/catalog/yaml.rb +6 -0
- data/lib/puppet/indirector/code.rb +6 -0
- data/lib/puppet/indirector/data_binding/hiera.rb +7 -0
- data/lib/puppet/indirector/data_binding/none.rb +8 -0
- data/lib/puppet/indirector/direct_file_server.rb +17 -0
- data/lib/puppet/indirector/envelope.rb +11 -0
- data/lib/puppet/indirector/errors.rb +5 -0
- data/lib/puppet/indirector/exec.rb +38 -0
- data/lib/puppet/indirector/face.rb +153 -0
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +117 -0
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/memory.rb +9 -0
- data/lib/puppet/indirector/facts/network_device.rb +27 -0
- data/lib/puppet/indirector/facts/rest.rb +44 -0
- data/lib/puppet/indirector/facts/store_configs.rb +11 -0
- data/lib/puppet/indirector/facts/yaml.rb +29 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +262 -0
- data/lib/puppet/indirector/file_bucket_file/rest.rb +50 -0
- data/lib/puppet/indirector/file_bucket_file/selector.rb +53 -0
- data/lib/puppet/indirector/file_content/file.rb +7 -0
- data/lib/puppet/indirector/file_content/file_server.rb +7 -0
- data/lib/puppet/indirector/file_content/rest.rb +35 -0
- data/lib/puppet/indirector/file_content/selector.rb +30 -0
- data/lib/puppet/indirector/file_content.rb +5 -0
- data/lib/puppet/indirector/file_metadata/file.rb +7 -0
- data/lib/puppet/indirector/file_metadata/file_server.rb +7 -0
- data/lib/puppet/indirector/file_metadata/http.rb +47 -0
- data/lib/puppet/indirector/file_metadata/rest.rb +56 -0
- data/lib/puppet/indirector/file_metadata/selector.rb +30 -0
- data/lib/puppet/indirector/file_metadata.rb +5 -0
- data/lib/puppet/indirector/file_server.rb +54 -0
- data/lib/puppet/indirector/generic_http.rb +5 -0
- data/lib/puppet/indirector/hiera.rb +100 -0
- data/lib/puppet/indirector/indirection.rb +372 -0
- data/lib/puppet/indirector/json.rb +79 -0
- data/lib/puppet/indirector/memory.rb +34 -0
- data/lib/puppet/indirector/msgpack.rb +83 -0
- data/lib/puppet/indirector/node/exec.rb +70 -0
- data/lib/puppet/indirector/node/json.rb +8 -0
- data/lib/puppet/indirector/node/memory.rb +10 -0
- data/lib/puppet/indirector/node/msgpack.rb +7 -0
- data/lib/puppet/indirector/node/plain.rb +21 -0
- data/lib/puppet/indirector/node/rest.rb +29 -0
- data/lib/puppet/indirector/node/store_configs.rb +8 -0
- data/lib/puppet/indirector/node/yaml.rb +7 -0
- data/lib/puppet/indirector/none.rb +9 -0
- data/lib/puppet/indirector/plain.rb +9 -0
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/msgpack.rb +11 -0
- data/lib/puppet/indirector/report/processor.rb +60 -0
- data/lib/puppet/indirector/report/rest.rb +42 -0
- data/lib/puppet/indirector/report/yaml.rb +34 -0
- data/lib/puppet/indirector/request.rb +194 -0
- data/lib/puppet/indirector/resource/ral.rb +66 -0
- data/lib/puppet/indirector/resource/store_configs.rb +12 -0
- data/lib/puppet/indirector/resource/validator.rb +8 -0
- data/lib/puppet/indirector/rest.rb +64 -0
- data/lib/puppet/indirector/store_configs.rb +30 -0
- data/lib/puppet/indirector/terminus.rb +176 -0
- data/lib/puppet/indirector/yaml.rb +63 -0
- data/lib/puppet/indirector.rb +61 -0
- data/lib/puppet/info_service/class_information_service.rb +109 -0
- data/lib/puppet/info_service/plan_information_service.rb +36 -0
- data/lib/puppet/info_service/task_information_service.rb +44 -0
- data/lib/puppet/info_service.rb +26 -0
- data/lib/puppet/interface/action.rb +406 -0
- data/lib/puppet/interface/action_builder.rb +161 -0
- data/lib/puppet/interface/action_manager.rb +98 -0
- data/lib/puppet/interface/documentation.rb +357 -0
- data/lib/puppet/interface/face_collection.rb +137 -0
- data/lib/puppet/interface/option.rb +172 -0
- data/lib/puppet/interface/option_builder.rb +105 -0
- data/lib/puppet/interface/option_manager.rb +106 -0
- data/lib/puppet/interface.rb +239 -0
- data/lib/puppet/loaders.rb +30 -0
- data/lib/puppet/metatype/manager.rb +197 -0
- data/lib/puppet/module/plan.rb +159 -0
- data/lib/puppet/module/task.rb +283 -0
- data/lib/puppet/module.rb +475 -0
- data/lib/puppet/module_tool/applications/application.rb +91 -0
- data/lib/puppet/module_tool/applications/checksummer.rb +62 -0
- data/lib/puppet/module_tool/applications/installer.rb +411 -0
- data/lib/puppet/module_tool/applications/uninstaller.rb +119 -0
- data/lib/puppet/module_tool/applications/unpacker.rb +100 -0
- data/lib/puppet/module_tool/applications/upgrader.rb +282 -0
- data/lib/puppet/module_tool/applications.rb +12 -0
- data/lib/puppet/module_tool/checksums.rb +49 -0
- data/lib/puppet/module_tool/contents_description.rb +89 -0
- data/lib/puppet/module_tool/dependency.rb +41 -0
- data/lib/puppet/module_tool/errors/base.rb +15 -0
- data/lib/puppet/module_tool/errors/installer.rb +93 -0
- data/lib/puppet/module_tool/errors/shared.rb +227 -0
- data/lib/puppet/module_tool/errors/uninstaller.rb +50 -0
- data/lib/puppet/module_tool/errors/upgrader.rb +63 -0
- data/lib/puppet/module_tool/errors.rb +11 -0
- data/lib/puppet/module_tool/install_directory.rb +45 -0
- data/lib/puppet/module_tool/installed_modules.rb +96 -0
- data/lib/puppet/module_tool/local_tarball.rb +90 -0
- data/lib/puppet/module_tool/metadata.rb +221 -0
- data/lib/puppet/module_tool/shared_behaviors.rb +181 -0
- data/lib/puppet/module_tool/tar/gnu.rb +19 -0
- data/lib/puppet/module_tool/tar/mini.rb +116 -0
- data/lib/puppet/module_tool/tar.rb +18 -0
- data/lib/puppet/module_tool.rb +194 -0
- data/lib/puppet/network/authconfig.rb +7 -0
- data/lib/puppet/network/authorization.rb +19 -0
- data/lib/puppet/network/client_request.rb +29 -0
- data/lib/puppet/network/format.rb +110 -0
- data/lib/puppet/network/format_handler.rb +108 -0
- data/lib/puppet/network/format_support.rb +139 -0
- data/lib/puppet/network/formats.rb +329 -0
- data/lib/puppet/network/http/api/indirected_routes.rb +277 -0
- data/lib/puppet/network/http/api/indirection_type.rb +32 -0
- data/lib/puppet/network/http/api/master/v3/environments.rb +3 -0
- data/lib/puppet/network/http/api/master/v3.rb +3 -0
- data/lib/puppet/network/http/api/master.rb +3 -0
- data/lib/puppet/network/http/api/server/v3/environments.rb +48 -0
- data/lib/puppet/network/http/api/server/v3.rb +39 -0
- data/lib/puppet/network/http/api/server.rb +10 -0
- data/lib/puppet/network/http/api.rb +39 -0
- data/lib/puppet/network/http/connection.rb +286 -0
- data/lib/puppet/network/http/error.rb +73 -0
- data/lib/puppet/network/http/handler.rb +215 -0
- data/lib/puppet/network/http/issues.rb +12 -0
- data/lib/puppet/network/http/memory_response.rb +13 -0
- data/lib/puppet/network/http/request.rb +71 -0
- data/lib/puppet/network/http/response.rb +23 -0
- data/lib/puppet/network/http/route.rb +101 -0
- data/lib/puppet/network/http.rb +28 -0
- data/lib/puppet/network/http_pool.rb +77 -0
- data/lib/puppet/network/uri.rb +18 -0
- data/lib/puppet/network.rb +3 -0
- data/lib/puppet/node/environment.rb +635 -0
- data/lib/puppet/node/facts.rb +165 -0
- data/lib/puppet/node/server_facts.rb +46 -0
- data/lib/puppet/node.rb +256 -0
- data/lib/puppet/pal/catalog_compiler.rb +108 -0
- data/lib/puppet/pal/compiler.rb +222 -0
- data/lib/puppet/pal/function_signature.rb +52 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +71 -0
- data/lib/puppet/pal/pal_api.rb +15 -0
- data/lib/puppet/pal/pal_impl.rb +590 -0
- data/lib/puppet/pal/plan_signature.rb +71 -0
- data/lib/puppet/pal/script_compiler.rb +73 -0
- data/lib/puppet/pal/task_signature.rb +58 -0
- data/lib/puppet/parameter/boolean.rb +15 -0
- data/lib/puppet/parameter/package_options.rb +31 -0
- data/lib/puppet/parameter/path.rb +57 -0
- data/lib/puppet/parameter/value.rb +91 -0
- data/lib/puppet/parameter/value_collection.rb +212 -0
- data/lib/puppet/parameter.rb +589 -0
- data/lib/puppet/parser/abstract_compiler.rb +36 -0
- data/lib/puppet/parser/ast/block_expression.rb +15 -0
- data/lib/puppet/parser/ast/branch.rb +19 -0
- data/lib/puppet/parser/ast/hostclass.rb +27 -0
- data/lib/puppet/parser/ast/leaf.rb +81 -0
- data/lib/puppet/parser/ast/node.rb +17 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +245 -0
- data/lib/puppet/parser/ast/resource.rb +66 -0
- data/lib/puppet/parser/ast/resource_instance.rb +10 -0
- data/lib/puppet/parser/ast/resourceparam.rb +31 -0
- data/lib/puppet/parser/ast/top_level_construct.rb +4 -0
- data/lib/puppet/parser/ast.rb +61 -0
- data/lib/puppet/parser/catalog_compiler.rb +56 -0
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +39 -0
- data/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
- data/lib/puppet/parser/compiler.rb +615 -0
- data/lib/puppet/parser/e4_parser_adapter.rb +60 -0
- data/lib/puppet/parser/files.rb +93 -0
- data/lib/puppet/parser/functions/assert_type.rb +60 -0
- data/lib/puppet/parser/functions/binary_file.rb +24 -0
- data/lib/puppet/parser/functions/break.rb +39 -0
- data/lib/puppet/parser/functions/contain.rb +30 -0
- data/lib/puppet/parser/functions/create_resources.rb +110 -0
- data/lib/puppet/parser/functions/defined.rb +107 -0
- data/lib/puppet/parser/functions/dig.rb +38 -0
- data/lib/puppet/parser/functions/digest.rb +5 -0
- data/lib/puppet/parser/functions/each.rb +104 -0
- data/lib/puppet/parser/functions/epp.rb +39 -0
- data/lib/puppet/parser/functions/fail.rb +11 -0
- data/lib/puppet/parser/functions/file.rb +33 -0
- data/lib/puppet/parser/functions/filter.rb +79 -0
- data/lib/puppet/parser/functions/find_file.rb +28 -0
- data/lib/puppet/parser/functions/fqdn_rand.rb +44 -0
- data/lib/puppet/parser/functions/generate.rb +37 -0
- data/lib/puppet/parser/functions/hiera.rb +103 -0
- data/lib/puppet/parser/functions/hiera_array.rb +92 -0
- data/lib/puppet/parser/functions/hiera_hash.rb +102 -0
- data/lib/puppet/parser/functions/hiera_include.rb +101 -0
- data/lib/puppet/parser/functions/include.rb +34 -0
- data/lib/puppet/parser/functions/inline_epp.rb +51 -0
- data/lib/puppet/parser/functions/inline_template.rb +26 -0
- data/lib/puppet/parser/functions/lest.rb +49 -0
- data/lib/puppet/parser/functions/lookup.rb +132 -0
- data/lib/puppet/parser/functions/map.rb +76 -0
- data/lib/puppet/parser/functions/match.rb +43 -0
- data/lib/puppet/parser/functions/md5.rb +5 -0
- data/lib/puppet/parser/functions/new.rb +991 -0
- data/lib/puppet/parser/functions/next.rb +38 -0
- data/lib/puppet/parser/functions/realize.rb +20 -0
- data/lib/puppet/parser/functions/reduce.rb +137 -0
- data/lib/puppet/parser/functions/regsubst.rb +62 -0
- data/lib/puppet/parser/functions/require.rb +40 -0
- data/lib/puppet/parser/functions/return.rb +92 -0
- data/lib/puppet/parser/functions/reverse_each.rb +83 -0
- data/lib/puppet/parser/functions/scanf.rb +38 -0
- data/lib/puppet/parser/functions/sha1.rb +5 -0
- data/lib/puppet/parser/functions/sha256.rb +5 -0
- data/lib/puppet/parser/functions/shellquote.rb +61 -0
- data/lib/puppet/parser/functions/slice.rb +39 -0
- data/lib/puppet/parser/functions/split.rb +28 -0
- data/lib/puppet/parser/functions/sprintf.rb +61 -0
- data/lib/puppet/parser/functions/step.rb +84 -0
- data/lib/puppet/parser/functions/strftime.rb +185 -0
- data/lib/puppet/parser/functions/tag.rb +12 -0
- data/lib/puppet/parser/functions/tagged.rb +21 -0
- data/lib/puppet/parser/functions/template.rb +39 -0
- data/lib/puppet/parser/functions/then.rb +73 -0
- data/lib/puppet/parser/functions/type.rb +53 -0
- data/lib/puppet/parser/functions/versioncmp.rb +30 -0
- data/lib/puppet/parser/functions/with.rb +28 -0
- data/lib/puppet/parser/functions.rb +321 -0
- data/lib/puppet/parser/parser_factory.rb +30 -0
- data/lib/puppet/parser/relationship.rb +84 -0
- data/lib/puppet/parser/resource/param.rb +35 -0
- data/lib/puppet/parser/resource.rb +351 -0
- data/lib/puppet/parser/scope.rb +1127 -0
- data/lib/puppet/parser/script_compiler.rb +123 -0
- data/lib/puppet/parser/templatewrapper.rb +104 -0
- data/lib/puppet/parser/type_loader.rb +150 -0
- data/lib/puppet/parser.rb +20 -0
- data/lib/puppet/plugins/configuration.rb +29 -0
- data/lib/puppet/plugins/syntax_checkers.rb +98 -0
- data/lib/puppet/plugins.rb +9 -0
- data/lib/puppet/pops/adaptable.rb +197 -0
- data/lib/puppet/pops/adapters.rb +156 -0
- data/lib/puppet/pops/evaluator/access_operator.rb +719 -0
- data/lib/puppet/pops/evaluator/callable_signature.rb +107 -0
- data/lib/puppet/pops/evaluator/closure.rb +375 -0
- data/lib/puppet/pops/evaluator/collector_transformer.rb +234 -0
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +86 -0
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +29 -0
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +70 -0
- data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +38 -0
- data/lib/puppet/pops/evaluator/compare_operator.rb +254 -0
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +225 -0
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +120 -0
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1317 -0
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +46 -0
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +82 -0
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +100 -0
- data/lib/puppet/pops/evaluator/puppet_proc.rb +69 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +185 -0
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +221 -0
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +535 -0
- data/lib/puppet/pops/functions/dispatch.rb +107 -0
- data/lib/puppet/pops/functions/dispatcher.rb +75 -0
- data/lib/puppet/pops/functions/function.rb +139 -0
- data/lib/puppet/pops/issue_reporter.rb +137 -0
- data/lib/puppet/pops/issues.rb +928 -0
- data/lib/puppet/pops/label_provider.rb +90 -0
- data/lib/puppet/pops/loader/base_loader.rb +178 -0
- data/lib/puppet/pops/loader/dependency_loader.rb +91 -0
- data/lib/puppet/pops/loader/gem_support.rb +51 -0
- data/lib/puppet/pops/loader/generic_plan_instantiator.rb +28 -0
- data/lib/puppet/pops/loader/loader.rb +221 -0
- data/lib/puppet/pops/loader/loader_paths.rb +412 -0
- data/lib/puppet/pops/loader/module_loaders.rb +556 -0
- data/lib/puppet/pops/loader/predefined_loader.rb +28 -0
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +84 -0
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +93 -0
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +79 -0
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +39 -0
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +45 -0
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +120 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +103 -0
- data/lib/puppet/pops/loader/simple_environment_loader.rb +20 -0
- data/lib/puppet/pops/loader/static_loader.rb +131 -0
- data/lib/puppet/pops/loader/task_instantiator.rb +44 -0
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +100 -0
- data/lib/puppet/pops/loader/typed_name.rb +54 -0
- data/lib/puppet/pops/loader/uri_helper.rb +22 -0
- data/lib/puppet/pops/loaders.rb +546 -0
- data/lib/puppet/pops/lookup/configured_data_provider.rb +93 -0
- data/lib/puppet/pops/lookup/context.rb +199 -0
- data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +145 -0
- data/lib/puppet/pops/lookup/data_hash_function_provider.rb +126 -0
- data/lib/puppet/pops/lookup/data_provider.rb +92 -0
- data/lib/puppet/pops/lookup/environment_data_provider.rb +35 -0
- data/lib/puppet/pops/lookup/explainer.rb +595 -0
- data/lib/puppet/pops/lookup/function_provider.rb +110 -0
- data/lib/puppet/pops/lookup/global_data_provider.rb +75 -0
- data/lib/puppet/pops/lookup/hiera_config.rb +775 -0
- data/lib/puppet/pops/lookup/interpolation.rb +155 -0
- data/lib/puppet/pops/lookup/invocation.rb +268 -0
- data/lib/puppet/pops/lookup/key_recorder.rb +18 -0
- data/lib/puppet/pops/lookup/location_resolver.rb +99 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +528 -0
- data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
- data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +92 -0
- data/lib/puppet/pops/lookup/module_data_provider.rb +89 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +92 -0
- data/lib/puppet/pops/lookup.rb +97 -0
- data/lib/puppet/pops/merge_strategy.rb +441 -0
- data/lib/puppet/pops/migration/migration_checker.rb +58 -0
- data/lib/puppet/pops/model/ast.pp +669 -0
- data/lib/puppet/pops/model/ast.rb +4675 -0
- data/lib/puppet/pops/model/ast_transformer.rb +131 -0
- data/lib/puppet/pops/model/factory.rb +1155 -0
- data/lib/puppet/pops/model/model_label_provider.rb +134 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +445 -0
- data/lib/puppet/pops/model/pn_transformer.rb +385 -0
- data/lib/puppet/pops/model/tree_dumper.rb +59 -0
- data/lib/puppet/pops/parser/code_merger.rb +29 -0
- data/lib/puppet/pops/parser/egrammar.ra +889 -0
- data/lib/puppet/pops/parser/eparser.rb +3184 -0
- data/lib/puppet/pops/parser/epp_parser.rb +51 -0
- data/lib/puppet/pops/parser/epp_support.rb +265 -0
- data/lib/puppet/pops/parser/evaluating_parser.rb +162 -0
- data/lib/puppet/pops/parser/heredoc_support.rb +153 -0
- data/lib/puppet/pops/parser/interpolation_support.rb +249 -0
- data/lib/puppet/pops/parser/lexer2.rb +777 -0
- data/lib/puppet/pops/parser/lexer_support.rb +221 -0
- data/lib/puppet/pops/parser/locatable.rb +23 -0
- data/lib/puppet/pops/parser/locator.rb +357 -0
- data/lib/puppet/pops/parser/parser_support.rb +251 -0
- data/lib/puppet/pops/parser/pn_parser.rb +317 -0
- data/lib/puppet/pops/parser/slurp_support.rb +118 -0
- data/lib/puppet/pops/patterns.rb +60 -0
- data/lib/puppet/pops/pcore.rb +135 -0
- data/lib/puppet/pops/pn.rb +236 -0
- data/lib/puppet/pops/puppet_stack.rb +61 -0
- data/lib/puppet/pops/resource/param.rb +55 -0
- data/lib/puppet/pops/resource/resource_type_impl.rb +294 -0
- data/lib/puppet/pops/resource/resource_type_set.pcore +22 -0
- data/lib/puppet/pops/semantic_error.rb +29 -0
- data/lib/puppet/pops/serialization/abstract_reader.rb +180 -0
- data/lib/puppet/pops/serialization/abstract_writer.rb +222 -0
- data/lib/puppet/pops/serialization/deserializer.rb +80 -0
- data/lib/puppet/pops/serialization/extension.rb +158 -0
- data/lib/puppet/pops/serialization/from_data_converter.rb +224 -0
- data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
- data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
- data/lib/puppet/pops/serialization/json.rb +297 -0
- data/lib/puppet/pops/serialization/json_path.rb +127 -0
- data/lib/puppet/pops/serialization/object.rb +70 -0
- data/lib/puppet/pops/serialization/serializer.rb +140 -0
- data/lib/puppet/pops/serialization/time_factory.rb +67 -0
- data/lib/puppet/pops/serialization/to_data_converter.rb +313 -0
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +226 -0
- data/lib/puppet/pops/serialization.rb +43 -0
- data/lib/puppet/pops/time/timespan.rb +716 -0
- data/lib/puppet/pops/time/timestamp.rb +160 -0
- data/lib/puppet/pops/types/annotatable.rb +36 -0
- data/lib/puppet/pops/types/annotation.rb +71 -0
- data/lib/puppet/pops/types/class_loader.rb +132 -0
- data/lib/puppet/pops/types/implementation_registry.rb +134 -0
- data/lib/puppet/pops/types/iterable.rb +365 -0
- data/lib/puppet/pops/types/p_binary_type.rb +232 -0
- data/lib/puppet/pops/types/p_init_type.rb +238 -0
- data/lib/puppet/pops/types/p_meta_type.rb +94 -0
- data/lib/puppet/pops/types/p_object_type.rb +1117 -0
- data/lib/puppet/pops/types/p_object_type_extension.rb +228 -0
- data/lib/puppet/pops/types/p_runtime_type.rb +115 -0
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +190 -0
- data/lib/puppet/pops/types/p_sem_ver_type.rb +155 -0
- data/lib/puppet/pops/types/p_sensitive_type.rb +83 -0
- data/lib/puppet/pops/types/p_timespan_type.rb +192 -0
- data/lib/puppet/pops/types/p_timestamp_type.rb +73 -0
- data/lib/puppet/pops/types/p_type_set_type.rb +387 -0
- data/lib/puppet/pops/types/p_uri_type.rb +190 -0
- data/lib/puppet/pops/types/puppet_object.rb +40 -0
- data/lib/puppet/pops/types/recursion_guard.rb +136 -0
- data/lib/puppet/pops/types/ruby_generator.rb +472 -0
- data/lib/puppet/pops/types/ruby_method.rb +31 -0
- data/lib/puppet/pops/types/string_converter.rb +1134 -0
- data/lib/puppet/pops/types/tree_iterators.rb +254 -0
- data/lib/puppet/pops/types/type_acceptor.rb +25 -0
- data/lib/puppet/pops/types/type_asserter.rb +47 -0
- data/lib/puppet/pops/types/type_assertion_error.rb +27 -0
- data/lib/puppet/pops/types/type_calculator.rb +822 -0
- data/lib/puppet/pops/types/type_conversion_error.rb +15 -0
- data/lib/puppet/pops/types/type_factory.rb +631 -0
- data/lib/puppet/pops/types/type_formatter.rb +801 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1096 -0
- data/lib/puppet/pops/types/type_parser.rb +683 -0
- data/lib/puppet/pops/types/type_set_reference.rb +59 -0
- data/lib/puppet/pops/types/type_with_members.rb +43 -0
- data/lib/puppet/pops/types/types.rb +3633 -0
- data/lib/puppet/pops/utils.rb +119 -0
- data/lib/puppet/pops/validation/checker4_0.rb +1148 -0
- data/lib/puppet/pops/validation/tasks_checker.rb +93 -0
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +45 -0
- data/lib/puppet/pops/validation.rb +459 -0
- data/lib/puppet/pops/visitable.rb +6 -0
- data/lib/puppet/pops/visitor.rb +122 -0
- data/lib/puppet/pops.rb +121 -0
- data/lib/puppet/property/boolean.rb +7 -0
- data/lib/puppet/property/ensure.rb +106 -0
- data/lib/puppet/property/keyvalue.rb +158 -0
- data/lib/puppet/property/list.rb +70 -0
- data/lib/puppet/property/ordered_list.rb +29 -0
- data/lib/puppet/property.rb +611 -0
- data/lib/puppet/provider/aix_object.rb +485 -0
- data/lib/puppet/provider/command.rb +25 -0
- data/lib/puppet/provider/confine.rb +6 -0
- data/lib/puppet/provider/exec/posix.rb +60 -0
- data/lib/puppet/provider/exec/shell.rb +25 -0
- data/lib/puppet/provider/exec/windows.rb +55 -0
- data/lib/puppet/provider/exec.rb +105 -0
- data/lib/puppet/provider/file/posix.rb +144 -0
- data/lib/puppet/provider/file/windows.rb +152 -0
- data/lib/puppet/provider/group/aix.rb +99 -0
- data/lib/puppet/provider/group/directoryservice.rb +22 -0
- data/lib/puppet/provider/group/groupadd.rb +174 -0
- data/lib/puppet/provider/group/ldap.rb +48 -0
- data/lib/puppet/provider/group/pw.rb +51 -0
- data/lib/puppet/provider/group/windows_adsi.rb +113 -0
- data/lib/puppet/provider/ldap.rb +141 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +512 -0
- data/lib/puppet/provider/nameservice/objectadd.rb +22 -0
- data/lib/puppet/provider/nameservice/pw.rb +21 -0
- data/lib/puppet/provider/nameservice.rb +293 -0
- data/lib/puppet/provider/network_device.rb +74 -0
- data/lib/puppet/provider/package/aix.rb +169 -0
- data/lib/puppet/provider/package/appdmg.rb +111 -0
- data/lib/puppet/provider/package/apple.rb +47 -0
- data/lib/puppet/provider/package/apt.rb +262 -0
- data/lib/puppet/provider/package/aptitude.rb +35 -0
- data/lib/puppet/provider/package/aptrpm.rb +83 -0
- data/lib/puppet/provider/package/blastwave.rb +112 -0
- data/lib/puppet/provider/package/dnf.rb +50 -0
- data/lib/puppet/provider/package/dnfmodule.rb +141 -0
- data/lib/puppet/provider/package/dpkg.rb +192 -0
- data/lib/puppet/provider/package/fink.rb +97 -0
- data/lib/puppet/provider/package/freebsd.rb +47 -0
- data/lib/puppet/provider/package/gem.rb +293 -0
- data/lib/puppet/provider/package/hpux.rb +44 -0
- data/lib/puppet/provider/package/macports.rb +110 -0
- data/lib/puppet/provider/package/nim.rb +291 -0
- data/lib/puppet/provider/package/openbsd.rb +260 -0
- data/lib/puppet/provider/package/opkg.rb +82 -0
- data/lib/puppet/provider/package/pacman.rb +273 -0
- data/lib/puppet/provider/package/pip.rb +346 -0
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/pip3.rb +17 -0
- data/lib/puppet/provider/package/pkg.rb +295 -0
- data/lib/puppet/provider/package/pkgdmg.rb +153 -0
- data/lib/puppet/provider/package/pkgin.rb +87 -0
- data/lib/puppet/provider/package/pkgng.rb +173 -0
- data/lib/puppet/provider/package/pkgutil.rb +187 -0
- data/lib/puppet/provider/package/portage.rb +310 -0
- data/lib/puppet/provider/package/ports.rb +91 -0
- data/lib/puppet/provider/package/portupgrade.rb +240 -0
- data/lib/puppet/provider/package/puppet_gem.rb +34 -0
- data/lib/puppet/provider/package/puppetserver_gem.rb +171 -0
- data/lib/puppet/provider/package/rpm.rb +250 -0
- data/lib/puppet/provider/package/rug.rb +51 -0
- data/lib/puppet/provider/package/sun.rb +133 -0
- data/lib/puppet/provider/package/sunfreeware.rb +9 -0
- data/lib/puppet/provider/package/tdnf.rb +28 -0
- data/lib/puppet/provider/package/up2date.rb +40 -0
- data/lib/puppet/provider/package/urpmi.rb +55 -0
- data/lib/puppet/provider/package/windows/exe_package.rb +106 -0
- data/lib/puppet/provider/package/windows/msi_package.rb +70 -0
- data/lib/puppet/provider/package/windows/package.rb +110 -0
- data/lib/puppet/provider/package/windows.rb +130 -0
- data/lib/puppet/provider/package/yum.rb +387 -0
- data/lib/puppet/provider/package/zypper.rb +206 -0
- data/lib/puppet/provider/package.rb +59 -0
- data/lib/puppet/provider/package_targetable.rb +69 -0
- data/lib/puppet/provider/parsedfile.rb +490 -0
- data/lib/puppet/provider/service/base.rb +139 -0
- data/lib/puppet/provider/service/bsd.rb +51 -0
- data/lib/puppet/provider/service/daemontools.rb +193 -0
- data/lib/puppet/provider/service/debian.rb +75 -0
- data/lib/puppet/provider/service/freebsd.rb +143 -0
- data/lib/puppet/provider/service/gentoo.rb +45 -0
- data/lib/puppet/provider/service/init.rb +192 -0
- data/lib/puppet/provider/service/launchd.rb +384 -0
- data/lib/puppet/provider/service/openbsd.rb +100 -0
- data/lib/puppet/provider/service/openrc.rb +71 -0
- data/lib/puppet/provider/service/openwrt.rb +36 -0
- data/lib/puppet/provider/service/rcng.rb +51 -0
- data/lib/puppet/provider/service/redhat.rb +72 -0
- data/lib/puppet/provider/service/runit.rb +106 -0
- data/lib/puppet/provider/service/service.rb +68 -0
- data/lib/puppet/provider/service/smf.rb +317 -0
- data/lib/puppet/provider/service/src.rb +147 -0
- data/lib/puppet/provider/service/systemd.rb +232 -0
- data/lib/puppet/provider/service/upstart.rb +385 -0
- data/lib/puppet/provider/service/windows.rb +182 -0
- data/lib/puppet/provider/user/aix.rb +361 -0
- data/lib/puppet/provider/user/directoryservice.rb +680 -0
- data/lib/puppet/provider/user/hpux.rb +95 -0
- data/lib/puppet/provider/user/ldap.rb +132 -0
- data/lib/puppet/provider/user/openbsd.rb +77 -0
- data/lib/puppet/provider/user/pw.rb +108 -0
- data/lib/puppet/provider/user/user_role_add.rb +239 -0
- data/lib/puppet/provider/user/useradd.rb +406 -0
- data/lib/puppet/provider/user/windows_adsi.rb +172 -0
- data/lib/puppet/provider.rb +612 -0
- data/lib/puppet/reference/configuration.rb +97 -0
- data/lib/puppet/reference/function.rb +17 -0
- data/lib/puppet/reference/indirection.rb +71 -0
- data/lib/puppet/reference/metaparameter.rb +33 -0
- data/lib/puppet/reference/providers.rb +117 -0
- data/lib/puppet/reference/report.rb +20 -0
- data/lib/puppet/reference/type.rb +109 -0
- data/lib/puppet/relationship.rb +84 -0
- data/lib/puppet/reports/http.rb +44 -0
- data/lib/puppet/reports/log.rb +14 -0
- data/lib/puppet/reports/store.rb +68 -0
- data/lib/puppet/reports.rb +93 -0
- data/lib/puppet/resource/catalog.rb +654 -0
- data/lib/puppet/resource/status.rb +229 -0
- data/lib/puppet/resource/type.rb +425 -0
- data/lib/puppet/resource/type_collection.rb +231 -0
- data/lib/puppet/resource.rb +663 -0
- data/lib/puppet/runtime.rb +65 -0
- data/lib/puppet/scheduler/job.rb +53 -0
- data/lib/puppet/scheduler/scheduler.rb +44 -0
- data/lib/puppet/scheduler/splay_job.rb +32 -0
- data/lib/puppet/scheduler/timer.rb +13 -0
- data/lib/puppet/scheduler.rb +16 -0
- data/lib/puppet/settings/alias_setting.rb +37 -0
- data/lib/puppet/settings/array_setting.rb +17 -0
- data/lib/puppet/settings/autosign_setting.rb +22 -0
- data/lib/puppet/settings/base_setting.rb +223 -0
- data/lib/puppet/settings/boolean_setting.rb +32 -0
- data/lib/puppet/settings/certificate_revocation_setting.rb +21 -0
- data/lib/puppet/settings/config_file.rb +146 -0
- data/lib/puppet/settings/directory_setting.rb +18 -0
- data/lib/puppet/settings/duration_setting.rb +32 -0
- data/lib/puppet/settings/enum_setting.rb +16 -0
- data/lib/puppet/settings/environment_conf.rb +224 -0
- data/lib/puppet/settings/errors.rb +11 -0
- data/lib/puppet/settings/file_or_directory_setting.rb +40 -0
- data/lib/puppet/settings/file_setting.rb +241 -0
- data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
- data/lib/puppet/settings/ini_file.rb +226 -0
- data/lib/puppet/settings/integer_setting.rb +17 -0
- data/lib/puppet/settings/path_setting.rb +8 -0
- data/lib/puppet/settings/port_setting.rb +15 -0
- data/lib/puppet/settings/priority_setting.rb +43 -0
- data/lib/puppet/settings/server_list_setting.rb +29 -0
- data/lib/puppet/settings/string_setting.rb +9 -0
- data/lib/puppet/settings/symbolic_enum_setting.rb +17 -0
- data/lib/puppet/settings/terminus_setting.rb +14 -0
- data/lib/puppet/settings/ttl_setting.rb +51 -0
- data/lib/puppet/settings/value_translator.rb +14 -0
- data/lib/puppet/settings.rb +1642 -0
- data/lib/puppet/ssl/base.rb +149 -0
- data/lib/puppet/ssl/certificate.rb +96 -0
- data/lib/puppet/ssl/certificate_request.rb +324 -0
- data/lib/puppet/ssl/certificate_request_attributes.rb +37 -0
- data/lib/puppet/ssl/certificate_signer.rb +39 -0
- data/lib/puppet/ssl/digest.rb +20 -0
- data/lib/puppet/ssl/error.rb +26 -0
- data/lib/puppet/ssl/oids.rb +197 -0
- data/lib/puppet/ssl/openssl_loader.rb +24 -0
- data/lib/puppet/ssl/ssl_context.rb +25 -0
- data/lib/puppet/ssl/ssl_provider.rb +350 -0
- data/lib/puppet/ssl/state_machine.rb +474 -0
- data/lib/puppet/ssl/verifier.rb +142 -0
- data/lib/puppet/ssl.rb +23 -0
- data/lib/puppet/syntax_checkers/base64.rb +40 -0
- data/lib/puppet/syntax_checkers/epp.rb +34 -0
- data/lib/puppet/syntax_checkers/json.rb +35 -0
- data/lib/puppet/syntax_checkers/pp.rb +34 -0
- data/lib/puppet/syntax_checkers.rb +3 -0
- data/lib/puppet/test/test_helper.rb +265 -0
- data/lib/puppet/thread_local.rb +4 -0
- data/lib/puppet/transaction/additional_resource_generator.rb +220 -0
- data/lib/puppet/transaction/event.rb +168 -0
- data/lib/puppet/transaction/event_manager.rb +179 -0
- data/lib/puppet/transaction/persistence.rb +119 -0
- data/lib/puppet/transaction/report.rb +504 -0
- data/lib/puppet/transaction/resource_harness.rb +323 -0
- data/lib/puppet/transaction.rb +491 -0
- data/lib/puppet/trusted_external.rb +41 -0
- data/lib/puppet/type/component.rb +89 -0
- data/lib/puppet/type/exec.rb +720 -0
- data/lib/puppet/type/file/checksum.rb +50 -0
- data/lib/puppet/type/file/checksum_value.rb +54 -0
- data/lib/puppet/type/file/content.rb +176 -0
- data/lib/puppet/type/file/ctime.rb +21 -0
- data/lib/puppet/type/file/data_sync.rb +98 -0
- data/lib/puppet/type/file/ensure.rb +195 -0
- data/lib/puppet/type/file/group.rb +48 -0
- data/lib/puppet/type/file/mode.rb +189 -0
- data/lib/puppet/type/file/mtime.rb +19 -0
- data/lib/puppet/type/file/owner.rb +51 -0
- data/lib/puppet/type/file/selcontext.rb +142 -0
- data/lib/puppet/type/file/source.rb +379 -0
- data/lib/puppet/type/file/target.rb +88 -0
- data/lib/puppet/type/file/type.rb +20 -0
- data/lib/puppet/type/file.rb +1133 -0
- data/lib/puppet/type/filebucket.rb +121 -0
- data/lib/puppet/type/group.rb +237 -0
- data/lib/puppet/type/notify.rb +47 -0
- data/lib/puppet/type/package.rb +713 -0
- data/lib/puppet/type/resources.rb +187 -0
- data/lib/puppet/type/schedule.rb +441 -0
- data/lib/puppet/type/service.rb +309 -0
- data/lib/puppet/type/stage.rb +27 -0
- data/lib/puppet/type/tidy.rb +376 -0
- data/lib/puppet/type/user.rb +859 -0
- data/lib/puppet/type/whit.rb +34 -0
- data/lib/puppet/type.rb +2676 -0
- data/lib/puppet/util/at_fork/noop.rb +18 -0
- data/lib/puppet/util/at_fork/solaris.rb +160 -0
- data/lib/puppet/util/at_fork.rb +35 -0
- data/lib/puppet/util/autoload.rb +215 -0
- data/lib/puppet/util/backups.rb +86 -0
- data/lib/puppet/util/character_encoding.rb +80 -0
- data/lib/puppet/util/checksums.rb +376 -0
- data/lib/puppet/util/classgen.rb +228 -0
- data/lib/puppet/util/colors.rb +100 -0
- data/lib/puppet/util/command_line/puppet_option_parser.rb +87 -0
- data/lib/puppet/util/command_line/trollop.rb +825 -0
- data/lib/puppet/util/command_line.rb +196 -0
- data/lib/puppet/util/constant_inflector.rb +24 -0
- data/lib/puppet/util/diff.rb +81 -0
- data/lib/puppet/util/docs.rb +128 -0
- data/lib/puppet/util/errors.rb +159 -0
- data/lib/puppet/util/execution.rb +424 -0
- data/lib/puppet/util/execution_stub.rb +26 -0
- data/lib/puppet/util/feature.rb +129 -0
- data/lib/puppet/util/file_watcher.rb +28 -0
- data/lib/puppet/util/fileparsing.rb +408 -0
- data/lib/puppet/util/filetype.rb +358 -0
- data/lib/puppet/util/http_proxy.rb +4 -0
- data/lib/puppet/util/inifile.rb +340 -0
- data/lib/puppet/util/instance_loader.rb +66 -0
- data/lib/puppet/util/json.rb +92 -0
- data/lib/puppet/util/json_lockfile.rb +44 -0
- data/lib/puppet/util/ldap/connection.rb +73 -0
- data/lib/puppet/util/ldap/generator.rb +42 -0
- data/lib/puppet/util/ldap/manager.rb +284 -0
- data/lib/puppet/util/ldap.rb +2 -0
- data/lib/puppet/util/libuser.conf +15 -0
- data/lib/puppet/util/libuser.rb +12 -0
- data/lib/puppet/util/limits.rb +12 -0
- data/lib/puppet/util/lockfile.rb +66 -0
- data/lib/puppet/util/log/destination.rb +49 -0
- data/lib/puppet/util/log/destinations.rb +253 -0
- data/lib/puppet/util/log.rb +427 -0
- data/lib/puppet/util/logging.rb +300 -0
- data/lib/puppet/util/metaid.rb +21 -0
- data/lib/puppet/util/metric.rb +65 -0
- data/lib/puppet/util/monkey_patches.rb +122 -0
- data/lib/puppet/util/multi_match.rb +51 -0
- data/lib/puppet/util/network_device/base.rb +23 -0
- data/lib/puppet/util/network_device/config.rb +105 -0
- data/lib/puppet/util/network_device/transport/base.rb +26 -0
- data/lib/puppet/util/network_device/transport.rb +5 -0
- data/lib/puppet/util/network_device.rb +17 -0
- data/lib/puppet/util/package/version/debian.rb +175 -0
- data/lib/puppet/util/package/version/gem.rb +15 -0
- data/lib/puppet/util/package/version/pip.rb +167 -0
- data/lib/puppet/util/package/version/range/eq.rb +14 -0
- data/lib/puppet/util/package/version/range/gt.rb +14 -0
- data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/lt.rb +14 -0
- data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/min_max.rb +21 -0
- data/lib/puppet/util/package/version/range/simple.rb +11 -0
- data/lib/puppet/util/package/version/range.rb +53 -0
- data/lib/puppet/util/package/version/rpm.rb +73 -0
- data/lib/puppet/util/package.rb +40 -0
- data/lib/puppet/util/pidlock.rb +102 -0
- data/lib/puppet/util/platform.rb +70 -0
- data/lib/puppet/util/plist.rb +161 -0
- data/lib/puppet/util/posix.rb +203 -0
- data/lib/puppet/util/profiler/aggregate.rb +85 -0
- data/lib/puppet/util/profiler/around_profiler.rb +67 -0
- data/lib/puppet/util/profiler/logging.rb +48 -0
- data/lib/puppet/util/profiler/object_counts.rb +17 -0
- data/lib/puppet/util/profiler/wall_clock.rb +35 -0
- data/lib/puppet/util/profiler.rb +53 -0
- data/lib/puppet/util/provider_features.rb +179 -0
- data/lib/puppet/util/psych_support.rb +30 -0
- data/lib/puppet/util/rdoc/code_objects.rb +295 -0
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +912 -0
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1085 -0
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +259 -0
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
- data/lib/puppet/util/rdoc/parser.rb +12 -0
- data/lib/puppet/util/rdoc.rb +53 -0
- data/lib/puppet/util/reference.rb +119 -0
- data/lib/puppet/util/resource_template.rb +61 -0
- data/lib/puppet/util/retry_action.rb +46 -0
- data/lib/puppet/util/rpm_compare.rb +193 -0
- data/lib/puppet/util/rubygems.rb +67 -0
- data/lib/puppet/util/run_mode.rb +122 -0
- data/lib/puppet/util/selinux.rb +297 -0
- data/lib/puppet/util/skip_tags.rb +13 -0
- data/lib/puppet/util/splayer.rb +18 -0
- data/lib/puppet/util/storage.rb +100 -0
- data/lib/puppet/util/suidmanager.rb +166 -0
- data/lib/puppet/util/symbolic_file_mode.rb +156 -0
- data/lib/puppet/util/tag_set.rb +27 -0
- data/lib/puppet/util/tagging.rb +132 -0
- data/lib/puppet/util/terminal.rb +16 -0
- data/lib/puppet/util/user_attr.rb +21 -0
- data/lib/puppet/util/warnings.rb +31 -0
- data/lib/puppet/util/watched_file.rb +37 -0
- data/lib/puppet/util/watcher/change_watcher.rb +33 -0
- data/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
- data/lib/puppet/util/watcher/timer.rb +19 -0
- data/lib/puppet/util/watcher.rb +17 -0
- data/lib/puppet/util/windows/access_control_entry.rb +84 -0
- data/lib/puppet/util/windows/access_control_list.rb +113 -0
- data/lib/puppet/util/windows/adsi.rb +654 -0
- data/lib/puppet/util/windows/com.rb +225 -0
- data/lib/puppet/util/windows/daemon.rb +343 -0
- data/lib/puppet/util/windows/error.rb +84 -0
- data/lib/puppet/util/windows/eventlog.rb +187 -0
- data/lib/puppet/util/windows/file.rb +355 -0
- data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
- data/lib/puppet/util/windows/principal.rb +201 -0
- data/lib/puppet/util/windows/process.rb +364 -0
- data/lib/puppet/util/windows/registry.rb +441 -0
- data/lib/puppet/util/windows/root_certs.rb +108 -0
- data/lib/puppet/util/windows/security.rb +907 -0
- data/lib/puppet/util/windows/security_descriptor.rb +62 -0
- data/lib/puppet/util/windows/service.rb +696 -0
- data/lib/puppet/util/windows/sid.rb +289 -0
- data/lib/puppet/util/windows/string.rb +15 -0
- data/lib/puppet/util/windows/user.rb +550 -0
- data/lib/puppet/util/windows.rb +51 -0
- data/lib/puppet/util/yaml.rb +65 -0
- data/lib/puppet/util.rb +808 -0
- data/lib/puppet/vendor/require_vendored.rb +4 -0
- data/lib/puppet/vendor.rb +57 -0
- data/lib/puppet/version.rb +95 -0
- data/lib/puppet/x509/cert_provider.rb +369 -0
- data/lib/puppet/x509/pem_store.rb +55 -0
- data/lib/puppet/x509.rb +11 -0
- data/lib/puppet.rb +345 -0
- data/lib/puppet_pal.rb +8 -0
- data/lib/puppet_x.rb +14 -0
- data/locales/config.yaml +29 -0
- data/locales/en/puppet.po +19 -0
- data/locales/puppet.pot +20 -0
- data/man/man5/puppet.conf.5 +2198 -0
- data/man/man8/puppet-agent.8 +203 -0
- data/man/man8/puppet-apply.8 +100 -0
- data/man/man8/puppet-catalog.8 +291 -0
- data/man/man8/puppet-config.8 +151 -0
- data/man/man8/puppet-describe.8 +51 -0
- data/man/man8/puppet-device.8 +119 -0
- data/man/man8/puppet-doc.8 +46 -0
- data/man/man8/puppet-epp.8 +377 -0
- data/man/man8/puppet-facts.8 +234 -0
- data/man/man8/puppet-filebucket.8 +166 -0
- data/man/man8/puppet-generate.8 +84 -0
- data/man/man8/puppet-help.8 +67 -0
- data/man/man8/puppet-lookup.8 +107 -0
- data/man/man8/puppet-module.8 +325 -0
- data/man/man8/puppet-node.8 +163 -0
- data/man/man8/puppet-parser.8 +130 -0
- data/man/man8/puppet-plugin.8 +73 -0
- data/man/man8/puppet-report.8 +127 -0
- data/man/man8/puppet-resource.8 +88 -0
- data/man/man8/puppet-script.8 +70 -0
- data/man/man8/puppet-ssl.8 +63 -0
- data/man/man8/puppet.8 +28 -0
- data/tasks/benchmark.rake +180 -0
- data/tasks/ci.rake +24 -0
- data/tasks/generate_ast_model.rake +90 -0
- data/tasks/generate_cert_fixtures.rake +194 -0
- data/tasks/manpages.rake +67 -0
- data/tasks/memwalk.rake +195 -0
- data/tasks/parallel.rake +410 -0
- data/tasks/parser.rake +22 -0
- data/tasks/yard.rake +59 -0
- metadata +1324 -0
@@ -0,0 +1,590 @@
|
|
1
|
+
# Puppet as a Library "PAL"
|
2
|
+
|
3
|
+
# Yes, this requires all of puppet for now because 'settings' and many other things...
|
4
|
+
require_relative '../../puppet'
|
5
|
+
require_relative '../../puppet/parser/script_compiler'
|
6
|
+
require_relative '../../puppet/parser/catalog_compiler'
|
7
|
+
|
8
|
+
module Puppet
|
9
|
+
# This is the main entry point for "Puppet As a Library" PAL.
|
10
|
+
# This file should be required instead of "puppet"
|
11
|
+
# Initially, this will require ALL of puppet - over time this will change as the monolithical "puppet" is broken up
|
12
|
+
# into smaller components.
|
13
|
+
#
|
14
|
+
# @example Running a snippet of Puppet Language code
|
15
|
+
# require 'puppet_pal'
|
16
|
+
# result = Puppet::Pal.in_tmp_environment('pal_env', modulepath: ['/tmp/testmodules']) do |pal|
|
17
|
+
# pal.evaluate_script_string('1+2+3')
|
18
|
+
# end
|
19
|
+
# # The result is the value 6
|
20
|
+
#
|
21
|
+
# @example Calling a function
|
22
|
+
# require 'puppet_pal'
|
23
|
+
# result = Puppet::Pal.in_tmp_environment('pal_env', modulepath: ['/tmp/testmodules']) do |pal|
|
24
|
+
# pal.call_function('mymodule::myfunction', 10, 20)
|
25
|
+
# end
|
26
|
+
# # The result is what 'mymodule::myfunction' returns
|
27
|
+
#
|
28
|
+
# @api public
|
29
|
+
module Pal
|
30
|
+
|
31
|
+
# Defines a context in which multiple operations in an env with a script compiler can be performed in a given block.
|
32
|
+
# The calls that takes place to PAL inside of the given block are all with the same instance of the compiler.
|
33
|
+
# The parameter `configured_by_env` makes it possible to either use the configuration in the environment, or specify
|
34
|
+
# `manifest_file` or `code_string` manually. If neither is given, an empty `code_string` is used.
|
35
|
+
#
|
36
|
+
# @example define a script compiler without any initial logic
|
37
|
+
# pal.with_script_compiler do | compiler |
|
38
|
+
# # do things with compiler
|
39
|
+
# end
|
40
|
+
#
|
41
|
+
# @example define a script compiler with a code_string containing initial logic
|
42
|
+
# pal.with_script_compiler(code_string: '$myglobal_var = 42') do | compiler |
|
43
|
+
# # do things with compiler
|
44
|
+
# end
|
45
|
+
#
|
46
|
+
# @param configured_by_env [Boolean] when true the environment's settings are used, otherwise the given `manifest_file` or `code_string`
|
47
|
+
# @param manifest_file [String] a Puppet Language file to load and evaluate before calling the given block, mutually exclusive with `code_string`
|
48
|
+
# @param code_string [String] a Puppet Language source string to load and evaluate before calling the given block, mutually exclusive with `manifest_file`
|
49
|
+
# @param facts [Hash] optional map of fact name to fact value - if not given will initialize the facts (which is a slow operation)
|
50
|
+
# If given at the environment level, the facts given here are merged with higher priority.
|
51
|
+
# @param variables [Hash] optional map of fully qualified variable name to value. If given at the environment level, the variables
|
52
|
+
# given here are merged with higher priority.
|
53
|
+
# @param set_local_facts [Boolean] when true, the $facts, $server_facts, and $trusted variables are set for the scope.
|
54
|
+
# @param block [Proc] the block performing operations on compiler
|
55
|
+
# @return [Object] what the block returns
|
56
|
+
# @yieldparam [Puppet::Pal::ScriptCompiler] compiler, a ScriptCompiler to perform operations on.
|
57
|
+
#
|
58
|
+
def self.with_script_compiler(
|
59
|
+
configured_by_env: false,
|
60
|
+
manifest_file: nil,
|
61
|
+
code_string: nil,
|
62
|
+
facts: {},
|
63
|
+
variables: {},
|
64
|
+
set_local_facts: true,
|
65
|
+
&block
|
66
|
+
)
|
67
|
+
# TRANSLATORS: do not translate variable name strings in these assertions
|
68
|
+
assert_mutually_exclusive(manifest_file, code_string, 'manifest_file', 'code_string')
|
69
|
+
assert_non_empty_string(manifest_file, 'manifest_file', true)
|
70
|
+
assert_non_empty_string(code_string, 'code_string', true)
|
71
|
+
assert_type(T_BOOLEAN, configured_by_env, "configured_by_env", false)
|
72
|
+
|
73
|
+
if configured_by_env
|
74
|
+
unless manifest_file.nil? && code_string.nil?
|
75
|
+
# TRANSLATORS: do not translate the variable names in this error message
|
76
|
+
raise ArgumentError, _("manifest_file or code_string cannot be given when configured_by_env is true")
|
77
|
+
end
|
78
|
+
# Use the manifest setting
|
79
|
+
manifest_file = Puppet[:manifest]
|
80
|
+
else
|
81
|
+
# An "undef" code_string is the only way to override Puppet[:manifest] & Puppet[:code] settings since an
|
82
|
+
# empty string is taken as Puppet[:code] not being set.
|
83
|
+
#
|
84
|
+
if manifest_file.nil? && code_string.nil?
|
85
|
+
code_string = 'undef'
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
previous_tasks_value = Puppet[:tasks]
|
90
|
+
previous_code_value = Puppet[:code]
|
91
|
+
Puppet[:tasks] = true
|
92
|
+
# After the assertions, if code_string is non nil - it has the highest precedence
|
93
|
+
Puppet[:code] = code_string unless code_string.nil?
|
94
|
+
|
95
|
+
# If manifest_file is nil, the #main method will use the env configured manifest
|
96
|
+
# to do things in the block while a Script Compiler is in effect
|
97
|
+
main(
|
98
|
+
manifest: manifest_file,
|
99
|
+
facts: facts,
|
100
|
+
variables: variables,
|
101
|
+
internal_compiler_class: :script,
|
102
|
+
set_local_facts: set_local_facts,
|
103
|
+
&block
|
104
|
+
)
|
105
|
+
ensure
|
106
|
+
Puppet[:tasks] = previous_tasks_value
|
107
|
+
Puppet[:code] = previous_code_value
|
108
|
+
end
|
109
|
+
|
110
|
+
# Evaluates a Puppet Language script string.
|
111
|
+
# @param code_string [String] a snippet of Puppet Language source code
|
112
|
+
# @return [Object] what the Puppet Language code_string evaluates to
|
113
|
+
# @deprecated Use {#with_script_compiler} and then evaluate_string on the given compiler - to be removed in 1.0 version
|
114
|
+
#
|
115
|
+
def self.evaluate_script_string(code_string)
|
116
|
+
# prevent the default loading of Puppet[:manifest] which is the environment's manifest-dir by default settings
|
117
|
+
# by setting code_string to 'undef'
|
118
|
+
with_script_compiler do |compiler|
|
119
|
+
compiler.evaluate_string(code_string)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
# Evaluates a Puppet Language script (.pp) file.
|
124
|
+
# @param manifest_file [String] a file with Puppet Language source code
|
125
|
+
# @return [Object] what the Puppet Language manifest_file contents evaluates to
|
126
|
+
# @deprecated Use {#with_script_compiler} and then evaluate_file on the given compiler - to be removed in 1.0 version
|
127
|
+
#
|
128
|
+
def self.evaluate_script_manifest(manifest_file)
|
129
|
+
with_script_compiler do |compiler|
|
130
|
+
compiler.evaluate_file(manifest_file)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
# Defines a context in which multiple operations in an env with a catalog producing compiler can be performed
|
135
|
+
# in a given block.
|
136
|
+
# The calls that takes place to PAL inside of the given block are all with the same instance of the compiler.
|
137
|
+
# The parameter `configured_by_env` makes it possible to either use the configuration in the environment, or specify
|
138
|
+
# `manifest_file` or `code_string` manually. If neither is given, an empty `code_string` is used.
|
139
|
+
#
|
140
|
+
# @example define a catalog compiler without any initial logic
|
141
|
+
# pal.with_catalog_compiler do | compiler |
|
142
|
+
# # do things with compiler
|
143
|
+
# end
|
144
|
+
#
|
145
|
+
# @example define a catalog compiler with a code_string containing initial logic
|
146
|
+
# pal.with_catalog_compiler(code_string: '$myglobal_var = 42') do | compiler |
|
147
|
+
# # do things with compiler
|
148
|
+
# end
|
149
|
+
#
|
150
|
+
# @param configured_by_env [Boolean] when true the environment's settings are used, otherwise the
|
151
|
+
# given `manifest_file` or `code_string`
|
152
|
+
# @param manifest_file [String] a Puppet Language file to load and evaluate before calling the given block, mutually exclusive
|
153
|
+
# with `code_string`
|
154
|
+
# @param code_string [String] a Puppet Language source string to load and evaluate before calling the given block, mutually
|
155
|
+
# exclusive with `manifest_file`
|
156
|
+
# @param facts [Hash] optional map of fact name to fact value - if not given will initialize the facts (which is a slow operation)
|
157
|
+
# If given at the environment level, the facts given here are merged with higher priority.
|
158
|
+
# @param variables [Hash] optional map of fully qualified variable name to value. If given at the environment level, the variables
|
159
|
+
# given here are merged with higher priority.
|
160
|
+
# @param block [Proc] the block performing operations on compiler
|
161
|
+
# @return [Object] what the block returns
|
162
|
+
# @yieldparam [Puppet::Pal::CatalogCompiler] compiler, a CatalogCompiler to perform operations on.
|
163
|
+
#
|
164
|
+
def self.with_catalog_compiler(
|
165
|
+
configured_by_env: false,
|
166
|
+
manifest_file: nil,
|
167
|
+
code_string: nil,
|
168
|
+
facts: {},
|
169
|
+
variables: {},
|
170
|
+
target_variables: {},
|
171
|
+
&block
|
172
|
+
)
|
173
|
+
# TRANSLATORS: do not translate variable name strings in these assertions
|
174
|
+
assert_mutually_exclusive(manifest_file, code_string, 'manifest_file', 'code_string')
|
175
|
+
assert_non_empty_string(manifest_file, 'manifest_file', true)
|
176
|
+
assert_non_empty_string(code_string, 'code_string', true)
|
177
|
+
assert_type(T_BOOLEAN, configured_by_env, "configured_by_env", false)
|
178
|
+
|
179
|
+
if configured_by_env
|
180
|
+
unless manifest_file.nil? && code_string.nil?
|
181
|
+
# TRANSLATORS: do not translate the variable names in this error message
|
182
|
+
raise ArgumentError, _("manifest_file or code_string cannot be given when configured_by_env is true")
|
183
|
+
end
|
184
|
+
# Use the manifest setting
|
185
|
+
manifest_file = Puppet[:manifest]
|
186
|
+
else
|
187
|
+
# An "undef" code_string is the only way to override Puppet[:manifest] & Puppet[:code] settings since an
|
188
|
+
# empty string is taken as Puppet[:code] not being set.
|
189
|
+
#
|
190
|
+
if manifest_file.nil? && code_string.nil?
|
191
|
+
code_string = 'undef'
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
# We need to make sure to set these back when we're done
|
196
|
+
previous_tasks_value = Puppet[:tasks]
|
197
|
+
previous_code_value = Puppet[:code]
|
198
|
+
|
199
|
+
Puppet[:tasks] = false
|
200
|
+
# After the assertions, if code_string is non nil - it has the highest precedence
|
201
|
+
Puppet[:code] = code_string unless code_string.nil?
|
202
|
+
|
203
|
+
# If manifest_file is nil, the #main method will use the env configured manifest
|
204
|
+
# to do things in the block while a Script Compiler is in effect
|
205
|
+
main(
|
206
|
+
manifest: manifest_file,
|
207
|
+
facts: facts,
|
208
|
+
variables: variables,
|
209
|
+
target_variables: target_variables,
|
210
|
+
internal_compiler_class: :catalog,
|
211
|
+
set_local_facts: false,
|
212
|
+
&block
|
213
|
+
)
|
214
|
+
ensure
|
215
|
+
# Clean up after ourselves
|
216
|
+
Puppet[:tasks] = previous_tasks_value
|
217
|
+
Puppet[:code] = previous_code_value
|
218
|
+
end
|
219
|
+
|
220
|
+
# Defines the context in which to perform puppet operations (evaluation, etc)
|
221
|
+
# The code to evaluate in this context is given in a block.
|
222
|
+
#
|
223
|
+
# @param env_name [String] a name to use for the temporary environment - this only shows up in errors
|
224
|
+
# @param modulepath [Array<String>] an array of directory paths containing Puppet modules, may be empty, defaults to empty array
|
225
|
+
# @param settings_hash [Hash] a hash of settings - currently not used for anything, defaults to empty hash
|
226
|
+
# @param facts [Hash] optional map of fact name to fact value - if not given will initialize the facts (which is a slow operation)
|
227
|
+
# @param variables [Hash] optional map of fully qualified variable name to value
|
228
|
+
# @return [Object] returns what the given block returns
|
229
|
+
# @yieldparam [Puppet::Pal] context, a context that responds to Puppet::Pal methods
|
230
|
+
#
|
231
|
+
def self.in_tmp_environment(env_name,
|
232
|
+
modulepath: [],
|
233
|
+
settings_hash: {},
|
234
|
+
facts: nil,
|
235
|
+
variables: {},
|
236
|
+
&block
|
237
|
+
)
|
238
|
+
assert_non_empty_string(env_name, _("temporary environment name"))
|
239
|
+
# TRANSLATORS: do not translate variable name string in these assertions
|
240
|
+
assert_optionally_empty_array(modulepath, 'modulepath')
|
241
|
+
|
242
|
+
unless block_given?
|
243
|
+
raise ArgumentError, _("A block must be given to 'in_tmp_environment'") # TRANSLATORS 'in_tmp_environment' is a name, do not translate
|
244
|
+
end
|
245
|
+
|
246
|
+
env = Puppet::Node::Environment.create(env_name, modulepath)
|
247
|
+
|
248
|
+
in_environment_context(
|
249
|
+
Puppet::Environments::Static.new(env), # The tmp env is the only known env
|
250
|
+
env, facts, variables, &block
|
251
|
+
)
|
252
|
+
end
|
253
|
+
|
254
|
+
# Defines the context in which to perform puppet operations (evaluation, etc)
|
255
|
+
# The code to evaluate in this context is given in a block.
|
256
|
+
#
|
257
|
+
# The name of an environment (env_name) is always given. The location of that environment on disk
|
258
|
+
# is then either constructed by:
|
259
|
+
# * searching a given envpath where name is a child of a directory on that path, or
|
260
|
+
# * it is the directory given in env_dir (which must exist).
|
261
|
+
#
|
262
|
+
# The env_dir and envpath options are mutually exclusive.
|
263
|
+
#
|
264
|
+
# @param env_name [String] the name of an existing environment
|
265
|
+
# @param modulepath [Array<String>] an array of directory paths containing Puppet modules, overrides the modulepath of an existing env.
|
266
|
+
# Defaults to `{env_dir}/modules` if `env_dir` is given,
|
267
|
+
# @param pre_modulepath [Array<String>] like modulepath, but is prepended to the modulepath
|
268
|
+
# @param post_modulepath [Array<String>] like modulepath, but is appended to the modulepath
|
269
|
+
# @param settings_hash [Hash] a hash of settings - currently not used for anything, defaults to empty hash
|
270
|
+
# @param env_dir [String] a reference to a directory being the named environment (mutually exclusive with `envpath`)
|
271
|
+
# @param envpath [String] a path of directories in which there are environments to search for `env_name` (mutually exclusive with `env_dir`).
|
272
|
+
# Should be a single directory, or several directories separated with platform specific `File::PATH_SEPARATOR` character.
|
273
|
+
# @param facts [Hash] optional map of fact name to fact value - if not given will initialize the facts (which is a slow operation)
|
274
|
+
# @param variables [Hash] optional map of fully qualified variable name to value
|
275
|
+
# @return [Object] returns what the given block returns
|
276
|
+
# @yieldparam [Puppet::Pal] context, a context that responds to Puppet::Pal methods
|
277
|
+
#
|
278
|
+
# @api public
|
279
|
+
def self.in_environment(env_name,
|
280
|
+
modulepath: nil,
|
281
|
+
pre_modulepath: [],
|
282
|
+
post_modulepath: [],
|
283
|
+
settings_hash: {},
|
284
|
+
env_dir: nil,
|
285
|
+
envpath: nil,
|
286
|
+
facts: nil,
|
287
|
+
variables: {},
|
288
|
+
&block
|
289
|
+
)
|
290
|
+
# TRANSLATORS terms in the assertions below are names of terms in code
|
291
|
+
assert_non_empty_string(env_name, 'env_name')
|
292
|
+
assert_optionally_empty_array(modulepath, 'modulepath', true)
|
293
|
+
assert_optionally_empty_array(pre_modulepath, 'pre_modulepath', false)
|
294
|
+
assert_optionally_empty_array(post_modulepath, 'post_modulepath', false)
|
295
|
+
assert_mutually_exclusive(env_dir, envpath, 'env_dir', 'envpath')
|
296
|
+
|
297
|
+
unless block_given?
|
298
|
+
raise ArgumentError, _("A block must be given to 'in_environment'") # TRANSLATORS 'in_environment' is a name, do not translate
|
299
|
+
end
|
300
|
+
|
301
|
+
if env_dir
|
302
|
+
unless Puppet::FileSystem.exist?(env_dir)
|
303
|
+
raise ArgumentError, _("The environment directory '%{env_dir}' does not exist") % { env_dir: env_dir }
|
304
|
+
end
|
305
|
+
|
306
|
+
# a nil modulepath for env_dir means it should use its ./modules directory
|
307
|
+
mid_modulepath = modulepath.nil? ? [Puppet::FileSystem.expand_path(File.join(env_dir, 'modules'))] : modulepath
|
308
|
+
|
309
|
+
env = Puppet::Node::Environment.create(env_name, pre_modulepath + mid_modulepath + post_modulepath)
|
310
|
+
environments = Puppet::Environments::StaticDirectory.new(env_name, env_dir, env) # The env being used is the only one...
|
311
|
+
else
|
312
|
+
assert_non_empty_string(envpath, 'envpath')
|
313
|
+
|
314
|
+
# The environment is resolved against the envpath. This is setup without a basemodulepath
|
315
|
+
# The modulepath defaults to the 'modulepath' in the found env when "Directories" is used
|
316
|
+
#
|
317
|
+
if envpath.is_a?(String) && envpath.include?(File::PATH_SEPARATOR)
|
318
|
+
# potentially more than one directory to search
|
319
|
+
env_loaders = Puppet::Environments::Directories.from_path(envpath, [])
|
320
|
+
environments = Puppet::Environments::Combined.new(*env_loaders)
|
321
|
+
else
|
322
|
+
environments = Puppet::Environments::Directories.new(envpath, [])
|
323
|
+
end
|
324
|
+
env = environments.get(env_name)
|
325
|
+
if env.nil?
|
326
|
+
raise ArgumentError, _("No directory found for the environment '%{env_name}' on the path '%{envpath}'") % { env_name: env_name, envpath: envpath }
|
327
|
+
end
|
328
|
+
# A given modulepath should override the default
|
329
|
+
mid_modulepath = modulepath.nil? ? env.modulepath : modulepath
|
330
|
+
env_path = env.configuration.path_to_env
|
331
|
+
env = env.override_with(:modulepath => pre_modulepath + mid_modulepath + post_modulepath)
|
332
|
+
# must configure this in case logic looks up the env by name again (otherwise the looked up env does
|
333
|
+
# not have the same effective modulepath).
|
334
|
+
environments = Puppet::Environments::StaticDirectory.new(env_name, env_path, env) # The env being used is the only one...
|
335
|
+
end
|
336
|
+
in_environment_context(environments, env, facts, variables, &block)
|
337
|
+
end
|
338
|
+
|
339
|
+
# Prepares the puppet context with pal information - and delegates to the block
|
340
|
+
# No set up is performed at this step - it is delayed until it is known what the
|
341
|
+
# operation is going to be (for example - using a ScriptCompiler).
|
342
|
+
#
|
343
|
+
def self.in_environment_context(environments, env, facts, variables, &block)
|
344
|
+
# Create a default node to use (may be overridden later)
|
345
|
+
node = Puppet::Node.new(Puppet[:node_name_value], :environment => env)
|
346
|
+
|
347
|
+
Puppet.override(
|
348
|
+
environments: environments, # The env being used is the only one...
|
349
|
+
pal_env: env, # provide as convenience
|
350
|
+
pal_current_node: node, # to allow it to be picked up instead of created
|
351
|
+
pal_variables: variables, # common set of variables across several inner contexts
|
352
|
+
pal_facts: facts # common set of facts across several inner contexts (or nil)
|
353
|
+
) do
|
354
|
+
# DELAY: prepare_node_facts(node, facts)
|
355
|
+
return block.call(self)
|
356
|
+
end
|
357
|
+
end
|
358
|
+
private_class_method :in_environment_context
|
359
|
+
|
360
|
+
# Prepares the node for use by giving it node_facts (if given)
|
361
|
+
# If a hash of facts values is given, then the operation of creating a node with facts is much
|
362
|
+
# speeded up (as getting a fresh set of facts is avoided in a later step).
|
363
|
+
#
|
364
|
+
def self.prepare_node_facts(node, facts)
|
365
|
+
# Prepare the node with facts if it does not already have them
|
366
|
+
if node.facts.nil?
|
367
|
+
node_facts = facts.nil? ? nil : Puppet::Node::Facts.new(Puppet[:node_name_value], facts)
|
368
|
+
node.fact_merge(node_facts)
|
369
|
+
# Add server facts so $server_facts[environment] exists when doing a puppet script
|
370
|
+
# SCRIPT TODO: May be needed when running scripts under orchestrator. Leave it for now.
|
371
|
+
#
|
372
|
+
node.add_server_facts({})
|
373
|
+
end
|
374
|
+
end
|
375
|
+
private_class_method :prepare_node_facts
|
376
|
+
|
377
|
+
def self.add_variables(scope, variables)
|
378
|
+
return if variables.nil?
|
379
|
+
unless variables.is_a?(Hash)
|
380
|
+
raise ArgumentError, _("Given variables must be a hash, got %{type}") % { type: variables.class }
|
381
|
+
end
|
382
|
+
|
383
|
+
rich_data_t = Puppet::Pops::Types::TypeFactory.rich_data
|
384
|
+
variables.each_pair do |k,v|
|
385
|
+
unless k =~ Puppet::Pops::Patterns::VAR_NAME
|
386
|
+
raise ArgumentError, _("Given variable '%{varname}' has illegal name") % { varname: k }
|
387
|
+
end
|
388
|
+
|
389
|
+
unless rich_data_t.instance?(v)
|
390
|
+
raise ArgumentError, _("Given value for '%{varname}' has illegal type - got: %{type}") % { varname: k, type: v.class }
|
391
|
+
end
|
392
|
+
|
393
|
+
scope.setvar(k, v)
|
394
|
+
end
|
395
|
+
end
|
396
|
+
private_class_method :add_variables
|
397
|
+
|
398
|
+
# The main routine for script compiler
|
399
|
+
# Picks up information from the puppet context and configures a script compiler which is given to
|
400
|
+
# the provided block
|
401
|
+
#
|
402
|
+
def self.main(
|
403
|
+
manifest: nil,
|
404
|
+
facts: {},
|
405
|
+
variables: {},
|
406
|
+
target_variables: {},
|
407
|
+
internal_compiler_class: nil,
|
408
|
+
set_local_facts: true
|
409
|
+
)
|
410
|
+
# Configure the load path
|
411
|
+
env = Puppet.lookup(:pal_env)
|
412
|
+
env.each_plugin_directory do |dir|
|
413
|
+
$LOAD_PATH << dir unless $LOAD_PATH.include?(dir)
|
414
|
+
end
|
415
|
+
|
416
|
+
# Puppet requires Facter, which initializes its lookup paths. Reset Facter to
|
417
|
+
# pickup the new $LOAD_PATH.
|
418
|
+
Puppet.runtime[:facter].reset
|
419
|
+
|
420
|
+
node = Puppet.lookup(:pal_current_node)
|
421
|
+
pal_facts = Puppet.lookup(:pal_facts)
|
422
|
+
pal_variables = Puppet.lookup(:pal_variables)
|
423
|
+
|
424
|
+
overrides = {}
|
425
|
+
|
426
|
+
unless facts.nil? || facts.empty?
|
427
|
+
pal_facts = pal_facts.merge(facts)
|
428
|
+
overrides[:pal_facts] = pal_facts
|
429
|
+
end
|
430
|
+
|
431
|
+
prepare_node_facts(node, pal_facts)
|
432
|
+
|
433
|
+
configured_environment = node.environment || Puppet.lookup(:current_environment)
|
434
|
+
|
435
|
+
apply_environment = manifest ?
|
436
|
+
configured_environment.override_with(:manifest => manifest) :
|
437
|
+
configured_environment
|
438
|
+
|
439
|
+
# Modify the node descriptor to use the special apply_environment.
|
440
|
+
# It is based on the actual environment from the node, or the locally
|
441
|
+
# configured environment if the node does not specify one.
|
442
|
+
# If a manifest file is passed on the command line, it overrides
|
443
|
+
# the :manifest setting of the apply_environment.
|
444
|
+
node.environment = apply_environment
|
445
|
+
|
446
|
+
# TRANSLATORS, the string "For puppet PAL" is not user facing
|
447
|
+
Puppet.override({:current_environment => apply_environment}, "For puppet PAL") do
|
448
|
+
begin
|
449
|
+
node.sanitize()
|
450
|
+
compiler = create_internal_compiler(internal_compiler_class, node)
|
451
|
+
|
452
|
+
case internal_compiler_class
|
453
|
+
when :script
|
454
|
+
pal_compiler = ScriptCompiler.new(compiler)
|
455
|
+
overrides[:pal_script_compiler] = overrides[:pal_compiler] = pal_compiler
|
456
|
+
when :catalog
|
457
|
+
pal_compiler = CatalogCompiler.new(compiler)
|
458
|
+
overrides[:pal_catalog_compiler] = overrides[:pal_compiler] = pal_compiler
|
459
|
+
end
|
460
|
+
|
461
|
+
# When scripting the trusted data are always local; default is to set them anyway
|
462
|
+
# When compiling for a catalog, the catalog compiler does this
|
463
|
+
if set_local_facts
|
464
|
+
compiler.topscope.set_trusted(node.trusted_data)
|
465
|
+
|
466
|
+
# Server facts are always about the local node's version etc.
|
467
|
+
compiler.topscope.set_server_facts(node.server_facts)
|
468
|
+
|
469
|
+
# Set $facts for the node running the script
|
470
|
+
facts_hash = node.facts.nil? ? {} : node.facts.values
|
471
|
+
compiler.topscope.set_facts(facts_hash)
|
472
|
+
|
473
|
+
# create the $settings:: variables
|
474
|
+
compiler.topscope.merge_settings(node.environment.name, false)
|
475
|
+
end
|
476
|
+
|
477
|
+
# Make compiler available to Puppet#lookup and injection in functions
|
478
|
+
# TODO: The compiler instances should be available under non PAL use as well!
|
479
|
+
# TRANSLATORS: Do not translate, symbolic name
|
480
|
+
Puppet.override(overrides, "PAL::with_#{internal_compiler_class}_compiler") do
|
481
|
+
compiler.compile do | compiler_yield |
|
482
|
+
# In case the variables passed to the compiler are PCore types defined in modules, they
|
483
|
+
# need to be deserialized and added from within the this scope, so that loaders are
|
484
|
+
# available during deserizlization.
|
485
|
+
pal_variables = Puppet::Pops::Serialization::FromDataConverter.convert(pal_variables)
|
486
|
+
variables = Puppet::Pops::Serialization::FromDataConverter.convert(variables)
|
487
|
+
|
488
|
+
# Merge together target variables and plan variables. This will also shadow any
|
489
|
+
# collisions with facts and emit a warning.
|
490
|
+
topscope_vars = pal_variables.merge(merge_vars(target_variables, variables, node.facts.values))
|
491
|
+
|
492
|
+
add_variables(compiler.topscope, topscope_vars)
|
493
|
+
# wrap the internal compiler to prevent it from leaking in the PAL API
|
494
|
+
if block_given?
|
495
|
+
yield(pal_compiler)
|
496
|
+
end
|
497
|
+
end
|
498
|
+
end
|
499
|
+
|
500
|
+
rescue Puppet::Error
|
501
|
+
# already logged and handled by the compiler, including Puppet::ParseErrorWithIssue
|
502
|
+
raise
|
503
|
+
|
504
|
+
rescue => detail
|
505
|
+
Puppet.log_exception(detail)
|
506
|
+
raise
|
507
|
+
end
|
508
|
+
end
|
509
|
+
end
|
510
|
+
private_class_method :main
|
511
|
+
|
512
|
+
# Warn and remove variables that will be shadowed by facts of the same
|
513
|
+
# name, which are set in scope earlier.
|
514
|
+
def self.merge_vars(target_vars, vars, facts)
|
515
|
+
# First, shadow plan and target variables by facts of the same name
|
516
|
+
vars = shadow_vars(facts || {}, vars, 'fact', 'plan variable')
|
517
|
+
target_vars = shadow_vars(facts || {}, target_vars, 'fact', 'target variable')
|
518
|
+
# Then, shadow target variables by plan variables of the same name
|
519
|
+
target_vars = shadow_vars(vars, target_vars, 'plan variable', 'target variable')
|
520
|
+
|
521
|
+
target_vars.merge(vars)
|
522
|
+
end
|
523
|
+
private_class_method :merge_vars
|
524
|
+
|
525
|
+
def self.shadow_vars(vars, other_vars, vars_type, other_vars_type)
|
526
|
+
collisions, valid = other_vars.partition do |k, _|
|
527
|
+
vars.include?(k)
|
528
|
+
end
|
529
|
+
|
530
|
+
if collisions.any?
|
531
|
+
names = collisions.map { |k, _| "$#{k}" }.join(', ')
|
532
|
+
plural = collisions.length == 1 ? '' : 's'
|
533
|
+
|
534
|
+
Puppet.warning(
|
535
|
+
"#{other_vars_type.capitalize}#{plural} #{names} will be overridden by "\
|
536
|
+
"#{vars_type}#{plural} of the same name in the apply block"
|
537
|
+
)
|
538
|
+
end
|
539
|
+
|
540
|
+
valid.to_h
|
541
|
+
end
|
542
|
+
private_class_method :shadow_vars
|
543
|
+
|
544
|
+
def self.create_internal_compiler(compiler_class_reference, node)
|
545
|
+
case compiler_class_reference
|
546
|
+
when :script
|
547
|
+
Puppet::Parser::ScriptCompiler.new(node.environment, node.name)
|
548
|
+
when :catalog
|
549
|
+
Puppet::Parser::CatalogCompiler.new(node)
|
550
|
+
else
|
551
|
+
raise ArgumentError, "Internal Error: Invalid compiler type requested."
|
552
|
+
end
|
553
|
+
end
|
554
|
+
|
555
|
+
T_STRING = Puppet::Pops::Types::PStringType::NON_EMPTY
|
556
|
+
T_STRING_ARRAY = Puppet::Pops::Types::TypeFactory.array_of(T_STRING)
|
557
|
+
T_ANY_ARRAY = Puppet::Pops::Types::TypeFactory.array_of_any
|
558
|
+
T_BOOLEAN = Puppet::Pops::Types::PBooleanType::DEFAULT
|
559
|
+
|
560
|
+
T_GENERIC_TASK_HASH = Puppet::Pops::Types::TypeFactory.hash_kv(
|
561
|
+
Puppet::Pops::Types::TypeFactory.pattern(/\A[a-z][a-z0-9_]*\z/), Puppet::Pops::Types::TypeFactory.data)
|
562
|
+
|
563
|
+
def self.assert_type(type, value, what, allow_nil=false)
|
564
|
+
Puppet::Pops::Types::TypeAsserter.assert_instance_of(nil, type, value, allow_nil) { _('Puppet Pal: %{what}') % {what: what} }
|
565
|
+
end
|
566
|
+
|
567
|
+
def self.assert_non_empty_string(s, what, allow_nil=false)
|
568
|
+
assert_type(T_STRING, s, what, allow_nil)
|
569
|
+
end
|
570
|
+
|
571
|
+
def self.assert_optionally_empty_array(a, what, allow_nil=false)
|
572
|
+
assert_type(T_STRING_ARRAY, a, what, allow_nil)
|
573
|
+
end
|
574
|
+
private_class_method :assert_optionally_empty_array
|
575
|
+
|
576
|
+
def self.assert_mutually_exclusive(a, b, a_term, b_term)
|
577
|
+
if a && b
|
578
|
+
raise ArgumentError, _("Cannot use '%{a_term}' and '%{b_term}' at the same time") % { a_term: a_term, b_term: b_term }
|
579
|
+
end
|
580
|
+
end
|
581
|
+
private_class_method :assert_mutually_exclusive
|
582
|
+
|
583
|
+
def self.assert_block_given(block)
|
584
|
+
if block.nil?
|
585
|
+
raise ArgumentError, _("A block must be given")
|
586
|
+
end
|
587
|
+
end
|
588
|
+
private_class_method :assert_block_given
|
589
|
+
end
|
590
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module Puppet
|
2
|
+
module Pal
|
3
|
+
# A PlanSignature is returned from `plan_signature`. Its purpose is to answer questions about the plans's parameters
|
4
|
+
# and if it can be called with a hash of named parameters.
|
5
|
+
#
|
6
|
+
# @api public
|
7
|
+
#
|
8
|
+
class PlanSignature
|
9
|
+
def initialize(plan_function)
|
10
|
+
@plan_func = plan_function
|
11
|
+
end
|
12
|
+
|
13
|
+
# Returns true or false depending on if the given PlanSignature is callable with a set of named arguments or not
|
14
|
+
# In addition to returning the boolean outcome, if a block is given, it is called with a string of formatted
|
15
|
+
# error messages that describes the difference between what was given and what is expected. The error message may
|
16
|
+
# have multiple lines of text, and each line is indented one space.
|
17
|
+
#
|
18
|
+
# @example Checking if signature is acceptable
|
19
|
+
#
|
20
|
+
# signature = pal.plan_signature('myplan')
|
21
|
+
# signature.callable_with?({x => 10}) { |errors| raise ArgumentError("Ooops: given arguments does not match\n#{errors}") }
|
22
|
+
#
|
23
|
+
# @api public
|
24
|
+
#
|
25
|
+
def callable_with?(args_hash)
|
26
|
+
dispatcher = @plan_func.class.dispatcher.dispatchers[0]
|
27
|
+
|
28
|
+
param_scope = {}
|
29
|
+
# Assign all non-nil values, even those that represent non-existent parameters.
|
30
|
+
args_hash.each { |k, v| param_scope[k] = v unless v.nil? }
|
31
|
+
dispatcher.parameters.each do |p|
|
32
|
+
name = p.name
|
33
|
+
arg = args_hash[name]
|
34
|
+
if arg.nil?
|
35
|
+
# Arg either wasn't given, or it was undef
|
36
|
+
if p.value.nil?
|
37
|
+
# No default. Assign nil if the args_hash included it
|
38
|
+
param_scope[name] = nil if args_hash.include?(name)
|
39
|
+
else
|
40
|
+
# parameter does not have a default value, it will be assigned its default when being called
|
41
|
+
# we assume that the default value is of the correct type and therefore simply skip
|
42
|
+
# checking this
|
43
|
+
# param_scope[name] = param_scope.evaluate(name, p.value, closure_scope, @evaluator)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
errors = Puppet::Pops::Types::TypeMismatchDescriber.singleton.describe_struct_signature(dispatcher.params_struct, param_scope).flatten
|
49
|
+
return true if errors.empty?
|
50
|
+
if block_given?
|
51
|
+
yield errors.map {|e| e.format }.join("\n")
|
52
|
+
end
|
53
|
+
false
|
54
|
+
end
|
55
|
+
|
56
|
+
# Returns a PStructType describing the parameters as a puppet Struct data type
|
57
|
+
# Note that a `to_s` on the returned structure will result in a human readable Struct datatype as a
|
58
|
+
# description of what a plan expects.
|
59
|
+
#
|
60
|
+
# @return [Puppet::Pops::Types::PStructType] a struct data type describing the parameters and their types
|
61
|
+
#
|
62
|
+
# @api public
|
63
|
+
#
|
64
|
+
def params_type
|
65
|
+
dispatcher = @plan_func.class.dispatcher.dispatchers[0]
|
66
|
+
dispatcher.params_struct
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|