openvox 8.19.0
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 +19 -0
- data/CODEOWNERS +11 -0
- data/CODE_OF_CONDUCT.md +70 -0
- data/Gemfile +87 -0
- data/Guardfile.example +76 -0
- data/LICENSE +202 -0
- data/README.md +63 -0
- data/Rakefile +170 -0
- data/bin/puppet +10 -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 +102 -0
- data/examples/hiera/data/common.yaml +12 -0
- data/examples/hiera/data/dc1.yaml +6 -0
- data/examples/hiera/hiera.yaml +15 -0
- data/examples/hiera/modules/ntp/data/common.yaml +4 -0
- data/examples/hiera/modules/ntp/hiera.yaml +9 -0
- data/examples/hiera/modules/ntp/manifests/config.pp +18 -0
- data/examples/hiera/modules/ntp/templates/ntp.conf.epp +3 -0
- data/examples/hiera/modules/users/manifests/common.pp +9 -0
- data/examples/hiera/modules/users/manifests/dc1.pp +9 -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 +219 -0
- data/install.rb +428 -0
- data/lib/hiera/puppet_function.rb +86 -0
- data/lib/hiera/scope.rb +92 -0
- data/lib/hiera_puppet.rb +78 -0
- data/lib/puppet/agent/disabler.rb +55 -0
- data/lib/puppet/agent/locker.rb +46 -0
- data/lib/puppet/agent.rb +178 -0
- data/lib/puppet/application/agent.rb +527 -0
- data/lib/puppet/application/apply.rb +435 -0
- data/lib/puppet/application/catalog.rb +6 -0
- data/lib/puppet/application/config.rb +7 -0
- data/lib/puppet/application/describe.rb +255 -0
- data/lib/puppet/application/device.rb +440 -0
- data/lib/puppet/application/doc.rb +232 -0
- data/lib/puppet/application/epp.rb +7 -0
- data/lib/puppet/application/face_base.rb +277 -0
- data/lib/puppet/application/facts.rb +11 -0
- data/lib/puppet/application/filebucket.rb +324 -0
- data/lib/puppet/application/generate.rb +7 -0
- data/lib/puppet/application/help.rb +7 -0
- data/lib/puppet/application/indirection_base.rb +6 -0
- data/lib/puppet/application/lookup.rb +433 -0
- data/lib/puppet/application/module.rb +6 -0
- data/lib/puppet/application/node.rb +6 -0
- data/lib/puppet/application/parser.rb +7 -0
- data/lib/puppet/application/plugin.rb +6 -0
- data/lib/puppet/application/report.rb +6 -0
- data/lib/puppet/application/resource.rb +264 -0
- data/lib/puppet/application/script.rb +266 -0
- data/lib/puppet/application/ssl.rb +331 -0
- data/lib/puppet/application.rb +596 -0
- data/lib/puppet/application_support.rb +69 -0
- data/lib/puppet/coercion.rb +42 -0
- data/lib/puppet/compilable_resource_type.rb +17 -0
- data/lib/puppet/concurrent/lock.rb +15 -0
- data/lib/puppet/concurrent/synchronized.rb +15 -0
- data/lib/puppet/concurrent/thread_local_singleton.rb +18 -0
- data/lib/puppet/concurrent.rb +4 -0
- data/lib/puppet/configurer/downloader.rb +91 -0
- data/lib/puppet/configurer/fact_handler.rb +51 -0
- data/lib/puppet/configurer/plugin_handler.rb +61 -0
- data/lib/puppet/configurer.rb +759 -0
- data/lib/puppet/confine/any.rb +28 -0
- data/lib/puppet/confine/boolean.rb +47 -0
- data/lib/puppet/confine/exists.rb +21 -0
- data/lib/puppet/confine/false.rb +27 -0
- data/lib/puppet/confine/feature.rb +18 -0
- data/lib/puppet/confine/true.rb +28 -0
- data/lib/puppet/confine/variable.rb +61 -0
- data/lib/puppet/confine.rb +86 -0
- data/lib/puppet/confine_collection.rb +54 -0
- data/lib/puppet/confiner.rb +48 -0
- data/lib/puppet/context/trusted_information.rb +122 -0
- data/lib/puppet/context.rb +190 -0
- data/lib/puppet/daemon.rb +198 -0
- data/lib/puppet/data_binding.rb +16 -0
- data/lib/puppet/datatypes/error.rb +23 -0
- data/lib/puppet/datatypes/impl/error.rb +42 -0
- data/lib/puppet/datatypes.rb +218 -0
- data/lib/puppet/defaults.rb +2316 -0
- data/lib/puppet/environments.rb +599 -0
- data/lib/puppet/error.rb +142 -0
- data/lib/puppet/etc.rb +185 -0
- data/lib/puppet/external/dot.rb +315 -0
- data/lib/puppet/face/catalog/select.rb +51 -0
- data/lib/puppet/face/catalog.rb +167 -0
- data/lib/puppet/face/config.rb +266 -0
- data/lib/puppet/face/epp.rb +565 -0
- data/lib/puppet/face/facts.rb +176 -0
- data/lib/puppet/face/generate.rb +69 -0
- data/lib/puppet/face/help/action.erb +89 -0
- data/lib/puppet/face/help/face.erb +114 -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 +260 -0
- data/lib/puppet/face/module/changes.rb +44 -0
- data/lib/puppet/face/module/install.rb +149 -0
- data/lib/puppet/face/module/list.rb +271 -0
- data/lib/puppet/face/module/uninstall.rb +91 -0
- data/lib/puppet/face/module/upgrade.rb +89 -0
- data/lib/puppet/face/module.rb +21 -0
- data/lib/puppet/face/node/clean.rb +109 -0
- data/lib/puppet/face/node.rb +45 -0
- data/lib/puppet/face/parser.rb +226 -0
- data/lib/puppet/face/plugin.rb +62 -0
- data/lib/puppet/face/report.rb +54 -0
- data/lib/puppet/face/resource.rb +55 -0
- data/lib/puppet/face.rb +14 -0
- data/lib/puppet/facter_impl.rb +96 -0
- data/lib/puppet/feature/base.rb +76 -0
- data/lib/puppet/feature/bolt.rb +5 -0
- data/lib/puppet/feature/cfpropertylist.rb +5 -0
- data/lib/puppet/feature/eventlog.rb +7 -0
- data/lib/puppet/feature/hiera_eyaml.rb +5 -0
- data/lib/puppet/feature/hocon.rb +5 -0
- data/lib/puppet/feature/libuser.rb +10 -0
- data/lib/puppet/feature/msgpack.rb +5 -0
- data/lib/puppet/feature/pe_license.rb +6 -0
- data/lib/puppet/feature/pson.rb +6 -0
- data/lib/puppet/feature/selinux.rb +5 -0
- data/lib/puppet/feature/ssh.rb +5 -0
- data/lib/puppet/feature/telnet.rb +5 -0
- data/lib/puppet/feature/zlib.rb +7 -0
- data/lib/puppet/ffi/posix/constants.rb +16 -0
- data/lib/puppet/ffi/posix/functions.rb +25 -0
- data/lib/puppet/ffi/posix.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +313 -0
- data/lib/puppet/ffi/windows/constants.rb +406 -0
- data/lib/puppet/ffi/windows/functions.rb +629 -0
- data/lib/puppet/ffi/windows/structs.rb +339 -0
- data/lib/puppet/ffi/windows.rb +14 -0
- data/lib/puppet/file_bucket/dipper.rb +183 -0
- data/lib/puppet/file_bucket/file.rb +131 -0
- data/lib/puppet/file_bucket.rb +6 -0
- data/lib/puppet/file_serving/base.rb +94 -0
- data/lib/puppet/file_serving/configuration/parser.rb +116 -0
- data/lib/puppet/file_serving/configuration.rb +116 -0
- data/lib/puppet/file_serving/content.rb +45 -0
- data/lib/puppet/file_serving/fileset.rb +190 -0
- data/lib/puppet/file_serving/http_metadata.rb +61 -0
- data/lib/puppet/file_serving/metadata.rb +174 -0
- data/lib/puppet/file_serving/mount/file.rb +126 -0
- data/lib/puppet/file_serving/mount/locales.rb +35 -0
- data/lib/puppet/file_serving/mount/modules.rb +29 -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 +27 -0
- data/lib/puppet/file_serving/mount/tasks.rb +26 -0
- data/lib/puppet/file_serving/mount.rb +41 -0
- data/lib/puppet/file_serving/terminus_helper.rb +33 -0
- data/lib/puppet/file_serving/terminus_selector.rb +33 -0
- data/lib/puppet/file_serving.rb +5 -0
- data/lib/puppet/file_system/file_impl.rb +189 -0
- data/lib/puppet/file_system/jruby.rb +25 -0
- data/lib/puppet/file_system/memory_file.rb +82 -0
- data/lib/puppet/file_system/memory_impl.rb +103 -0
- data/lib/puppet/file_system/path_pattern.rb +95 -0
- data/lib/puppet/file_system/posix.rb +52 -0
- data/lib/puppet/file_system/uniquefile.rb +190 -0
- data/lib/puppet/file_system/windows.rb +224 -0
- data/lib/puppet/file_system.rb +421 -0
- data/lib/puppet/forge/cache.rb +61 -0
- data/lib/puppet/forge/errors.rb +113 -0
- data/lib/puppet/forge/repository.rb +98 -0
- data/lib/puppet/forge.rb +257 -0
- data/lib/puppet/functions/abs.rb +64 -0
- data/lib/puppet/functions/alert.rb +16 -0
- data/lib/puppet/functions/all.rb +106 -0
- data/lib/puppet/functions/annotate.rb +110 -0
- data/lib/puppet/functions/any.rb +111 -0
- data/lib/puppet/functions/assert_type.rb +96 -0
- data/lib/puppet/functions/binary_file.rb +35 -0
- data/lib/puppet/functions/break.rb +49 -0
- data/lib/puppet/functions/call.rb +81 -0
- data/lib/puppet/functions/camelcase.rb +63 -0
- data/lib/puppet/functions/capitalize.rb +62 -0
- data/lib/puppet/functions/ceiling.rb +38 -0
- data/lib/puppet/functions/chomp.rb +58 -0
- data/lib/puppet/functions/chop.rb +68 -0
- data/lib/puppet/functions/compare.rb +127 -0
- data/lib/puppet/functions/contain.rb +58 -0
- data/lib/puppet/functions/convert_to.rb +36 -0
- data/lib/puppet/functions/crit.rb +16 -0
- data/lib/puppet/functions/debug.rb +16 -0
- data/lib/puppet/functions/defined.rb +163 -0
- data/lib/puppet/functions/dig.rb +70 -0
- data/lib/puppet/functions/downcase.rb +91 -0
- data/lib/puppet/functions/each.rb +169 -0
- data/lib/puppet/functions/emerg.rb +16 -0
- data/lib/puppet/functions/empty.rb +87 -0
- data/lib/puppet/functions/epp.rb +50 -0
- data/lib/puppet/functions/err.rb +16 -0
- data/lib/puppet/functions/eyaml_lookup_key.rb +103 -0
- data/lib/puppet/functions/filter.rb +138 -0
- data/lib/puppet/functions/find_file.rb +50 -0
- data/lib/puppet/functions/find_template.rb +65 -0
- data/lib/puppet/functions/flatten.rb +66 -0
- data/lib/puppet/functions/floor.rb +38 -0
- data/lib/puppet/functions/get.rb +152 -0
- data/lib/puppet/functions/getvar.rb +89 -0
- data/lib/puppet/functions/group_by.rb +62 -0
- data/lib/puppet/functions/hiera.rb +91 -0
- data/lib/puppet/functions/hiera_array.rb +83 -0
- data/lib/puppet/functions/hiera_hash.rb +94 -0
- data/lib/puppet/functions/hiera_include.rb +107 -0
- data/lib/puppet/functions/hocon_data.rb +41 -0
- data/lib/puppet/functions/import.rb +9 -0
- data/lib/puppet/functions/include.rb +56 -0
- data/lib/puppet/functions/index.rb +168 -0
- data/lib/puppet/functions/info.rb +16 -0
- data/lib/puppet/functions/inline_epp.rb +61 -0
- data/lib/puppet/functions/join.rb +58 -0
- data/lib/puppet/functions/json_data.rb +33 -0
- data/lib/puppet/functions/keys.rb +27 -0
- data/lib/puppet/functions/length.rb +45 -0
- data/lib/puppet/functions/lest.rb +57 -0
- data/lib/puppet/functions/lookup.rb +224 -0
- data/lib/puppet/functions/lstrip.rb +59 -0
- data/lib/puppet/functions/map.rb +137 -0
- data/lib/puppet/functions/match.rb +133 -0
- data/lib/puppet/functions/max.rb +250 -0
- data/lib/puppet/functions/min.rb +249 -0
- data/lib/puppet/functions/module_directory.rb +43 -0
- data/lib/puppet/functions/new.rb +1013 -0
- data/lib/puppet/functions/next.rb +35 -0
- data/lib/puppet/functions/notice.rb +16 -0
- data/lib/puppet/functions/partition.rb +62 -0
- data/lib/puppet/functions/reduce.rb +159 -0
- data/lib/puppet/functions/regsubst.rb +100 -0
- data/lib/puppet/functions/require.rb +81 -0
- data/lib/puppet/functions/return.rb +17 -0
- data/lib/puppet/functions/reverse_each.rb +96 -0
- data/lib/puppet/functions/round.rb +26 -0
- data/lib/puppet/functions/rstrip.rb +59 -0
- data/lib/puppet/functions/scanf.rb +46 -0
- data/lib/puppet/functions/size.rb +15 -0
- data/lib/puppet/functions/slice.rb +127 -0
- data/lib/puppet/functions/sort.rb +76 -0
- data/lib/puppet/functions/split.rb +78 -0
- data/lib/puppet/functions/step.rb +100 -0
- data/lib/puppet/functions/strftime.rb +214 -0
- data/lib/puppet/functions/strip.rb +59 -0
- data/lib/puppet/functions/then.rb +80 -0
- data/lib/puppet/functions/tree_each.rb +198 -0
- data/lib/puppet/functions/type.rb +74 -0
- data/lib/puppet/functions/unique.rb +135 -0
- data/lib/puppet/functions/unwrap.rb +61 -0
- data/lib/puppet/functions/upcase.rb +91 -0
- data/lib/puppet/functions/values.rb +27 -0
- data/lib/puppet/functions/versioncmp.rb +41 -0
- data/lib/puppet/functions/warning.rb +16 -0
- data/lib/puppet/functions/with.rb +34 -0
- data/lib/puppet/functions/yaml_data.rb +45 -0
- data/lib/puppet/functions.rb +858 -0
- data/lib/puppet/generate/models/type/property.rb +73 -0
- data/lib/puppet/generate/models/type/type.rb +68 -0
- data/lib/puppet/generate/templates/type/pcore.erb +42 -0
- data/lib/puppet/generate/type.rb +255 -0
- data/lib/puppet/gettext/config.rb +282 -0
- data/lib/puppet/gettext/module_translations.rb +43 -0
- data/lib/puppet/gettext/stubs.rb +13 -0
- data/lib/puppet/graph/key.rb +28 -0
- data/lib/puppet/graph/prioritizer.rb +31 -0
- data/lib/puppet/graph/rb_tree_map.rb +407 -0
- data/lib/puppet/graph/relationship_graph.rb +286 -0
- data/lib/puppet/graph/sequential_prioritizer.rb +33 -0
- data/lib/puppet/graph/simple_graph.rb +552 -0
- data/lib/puppet/graph.rb +11 -0
- data/lib/puppet/http/client.rb +529 -0
- data/lib/puppet/http/dns.rb +159 -0
- data/lib/puppet/http/errors.rb +50 -0
- data/lib/puppet/http/external_client.rb +89 -0
- data/lib/puppet/http/factory.rb +53 -0
- data/lib/puppet/http/pool.rb +174 -0
- data/lib/puppet/http/pool_entry.rb +19 -0
- data/lib/puppet/http/proxy.rb +139 -0
- data/lib/puppet/http/redirector.rb +87 -0
- data/lib/puppet/http/resolver/server_list.rb +88 -0
- data/lib/puppet/http/resolver/settings.rb +24 -0
- data/lib/puppet/http/resolver/srv.rb +42 -0
- data/lib/puppet/http/resolver.rb +50 -0
- data/lib/puppet/http/response.rb +104 -0
- data/lib/puppet/http/response_converter.rb +25 -0
- data/lib/puppet/http/response_net_http.rb +43 -0
- data/lib/puppet/http/retry_after_handler.rb +78 -0
- data/lib/puppet/http/service/ca.rb +133 -0
- data/lib/puppet/http/service/compiler.rb +356 -0
- data/lib/puppet/http/service/file_server.rb +200 -0
- data/lib/puppet/http/service/puppetserver.rb +54 -0
- data/lib/puppet/http/service/report.rb +62 -0
- data/lib/puppet/http/service.rb +177 -0
- data/lib/puppet/http/session.rb +124 -0
- data/lib/puppet/http/site.rb +44 -0
- data/lib/puppet/http.rb +48 -0
- data/lib/puppet/indirector/catalog/compiler.rb +432 -0
- data/lib/puppet/indirector/catalog/json.rb +42 -0
- data/lib/puppet/indirector/catalog/msgpack.rb +8 -0
- data/lib/puppet/indirector/catalog/rest.rb +51 -0
- data/lib/puppet/indirector/catalog/store_configs.rb +8 -0
- data/lib/puppet/indirector/catalog/yaml.rb +8 -0
- data/lib/puppet/indirector/code.rb +8 -0
- data/lib/puppet/indirector/data_binding/hiera.rb +8 -0
- data/lib/puppet/indirector/data_binding/none.rb +10 -0
- data/lib/puppet/indirector/direct_file_server.rb +20 -0
- data/lib/puppet/indirector/envelope.rb +13 -0
- data/lib/puppet/indirector/errors.rb +7 -0
- data/lib/puppet/indirector/exec.rb +40 -0
- data/lib/puppet/indirector/face.rb +142 -0
- data/lib/puppet/indirector/fact_search.rb +62 -0
- data/lib/puppet/indirector/facts/facter.rb +120 -0
- data/lib/puppet/indirector/facts/json.rb +29 -0
- data/lib/puppet/indirector/facts/memory.rb +11 -0
- data/lib/puppet/indirector/facts/network_device.rb +29 -0
- data/lib/puppet/indirector/facts/rest.rb +46 -0
- data/lib/puppet/indirector/facts/store_configs.rb +12 -0
- data/lib/puppet/indirector/facts/yaml.rb +31 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +268 -0
- data/lib/puppet/indirector/file_bucket_file/rest.rb +53 -0
- data/lib/puppet/indirector/file_bucket_file/selector.rb +54 -0
- data/lib/puppet/indirector/file_content/file.rb +9 -0
- data/lib/puppet/indirector/file_content/file_server.rb +9 -0
- data/lib/puppet/indirector/file_content/rest.rb +37 -0
- data/lib/puppet/indirector/file_content/selector.rb +32 -0
- data/lib/puppet/indirector/file_content.rb +7 -0
- data/lib/puppet/indirector/file_metadata/file.rb +9 -0
- data/lib/puppet/indirector/file_metadata/file_server.rb +9 -0
- data/lib/puppet/indirector/file_metadata/http.rb +49 -0
- data/lib/puppet/indirector/file_metadata/rest.rb +58 -0
- data/lib/puppet/indirector/file_metadata/selector.rb +32 -0
- data/lib/puppet/indirector/file_metadata.rb +7 -0
- data/lib/puppet/indirector/file_server.rb +57 -0
- data/lib/puppet/indirector/generic_http.rb +7 -0
- data/lib/puppet/indirector/hiera.rb +101 -0
- data/lib/puppet/indirector/indirection.rb +381 -0
- data/lib/puppet/indirector/json.rb +82 -0
- data/lib/puppet/indirector/memory.rb +37 -0
- data/lib/puppet/indirector/msgpack.rb +87 -0
- data/lib/puppet/indirector/node/exec.rb +70 -0
- data/lib/puppet/indirector/node/json.rb +9 -0
- data/lib/puppet/indirector/node/memory.rb +12 -0
- data/lib/puppet/indirector/node/msgpack.rb +9 -0
- data/lib/puppet/indirector/node/plain.rb +23 -0
- data/lib/puppet/indirector/node/rest.rb +31 -0
- data/lib/puppet/indirector/node/store_configs.rb +8 -0
- data/lib/puppet/indirector/node/yaml.rb +9 -0
- data/lib/puppet/indirector/none.rb +10 -0
- data/lib/puppet/indirector/plain.rb +11 -0
- data/lib/puppet/indirector/report/json.rb +36 -0
- data/lib/puppet/indirector/report/msgpack.rb +13 -0
- data/lib/puppet/indirector/report/processor.rb +63 -0
- data/lib/puppet/indirector/report/rest.rb +31 -0
- data/lib/puppet/indirector/report/yaml.rb +36 -0
- data/lib/puppet/indirector/request.rb +197 -0
- data/lib/puppet/indirector/resource/ral.rb +66 -0
- data/lib/puppet/indirector/resource/store_configs.rb +14 -0
- data/lib/puppet/indirector/resource/validator.rb +10 -0
- data/lib/puppet/indirector/rest.rb +66 -0
- data/lib/puppet/indirector/store_configs.rb +32 -0
- data/lib/puppet/indirector/terminus.rb +180 -0
- data/lib/puppet/indirector/yaml.rb +65 -0
- data/lib/puppet/indirector.rb +64 -0
- data/lib/puppet/info_service/class_information_service.rb +108 -0
- data/lib/puppet/info_service/plan_information_service.rb +38 -0
- data/lib/puppet/info_service/task_information_service.rb +45 -0
- data/lib/puppet/info_service.rb +27 -0
- data/lib/puppet/interface/action.rb +410 -0
- data/lib/puppet/interface/action_builder.rb +167 -0
- data/lib/puppet/interface/action_manager.rb +101 -0
- data/lib/puppet/interface/documentation.rb +363 -0
- data/lib/puppet/interface/face_collection.rb +141 -0
- data/lib/puppet/interface/option.rb +184 -0
- data/lib/puppet/interface/option_builder.rb +110 -0
- data/lib/puppet/interface/option_manager.rb +108 -0
- data/lib/puppet/interface.rb +240 -0
- data/lib/puppet/loaders.rb +31 -0
- data/lib/puppet/metatype/manager.rb +198 -0
- data/lib/puppet/module/plan.rb +166 -0
- data/lib/puppet/module/task.rb +288 -0
- data/lib/puppet/module.rb +487 -0
- data/lib/puppet/module_tool/applications/application.rb +96 -0
- data/lib/puppet/module_tool/applications/checksummer.rb +62 -0
- data/lib/puppet/module_tool/applications/installer.rb +402 -0
- data/lib/puppet/module_tool/applications/uninstaller.rb +121 -0
- data/lib/puppet/module_tool/applications/unpacker.rb +102 -0
- data/lib/puppet/module_tool/applications/upgrader.rb +288 -0
- data/lib/puppet/module_tool/applications.rb +14 -0
- data/lib/puppet/module_tool/checksums.rb +50 -0
- data/lib/puppet/module_tool/dependency.rb +42 -0
- data/lib/puppet/module_tool/errors/base.rb +17 -0
- data/lib/puppet/module_tool/errors/installer.rb +94 -0
- data/lib/puppet/module_tool/errors/shared.rb +228 -0
- data/lib/puppet/module_tool/errors/uninstaller.rb +51 -0
- data/lib/puppet/module_tool/errors/upgrader.rb +64 -0
- data/lib/puppet/module_tool/errors.rb +13 -0
- data/lib/puppet/module_tool/install_directory.rb +48 -0
- data/lib/puppet/module_tool/installed_modules.rb +99 -0
- data/lib/puppet/module_tool/local_tarball.rb +92 -0
- data/lib/puppet/module_tool/metadata.rb +227 -0
- data/lib/puppet/module_tool/shared_behaviors.rb +199 -0
- data/lib/puppet/module_tool/tar/gnu.rb +23 -0
- data/lib/puppet/module_tool/tar/mini.rb +118 -0
- data/lib/puppet/module_tool/tar.rb +20 -0
- data/lib/puppet/module_tool.rb +194 -0
- data/lib/puppet/network/authconfig.rb +9 -0
- data/lib/puppet/network/authorization.rb +21 -0
- data/lib/puppet/network/client_request.rb +32 -0
- data/lib/puppet/network/format.rb +116 -0
- data/lib/puppet/network/format_handler.rb +110 -0
- data/lib/puppet/network/format_support.rb +140 -0
- data/lib/puppet/network/formats.rb +338 -0
- data/lib/puppet/network/http/api/indirected_routes.rb +270 -0
- data/lib/puppet/network/http/api/indirection_type.rb +33 -0
- data/lib/puppet/network/http/api/master/v3/environments.rb +4 -0
- data/lib/puppet/network/http/api/master/v3.rb +4 -0
- data/lib/puppet/network/http/api/master.rb +5 -0
- data/lib/puppet/network/http/api/server/v3/environments.rb +54 -0
- data/lib/puppet/network/http/api/server/v3.rb +40 -0
- data/lib/puppet/network/http/api/server.rb +12 -0
- data/lib/puppet/network/http/api.rb +41 -0
- data/lib/puppet/network/http/connection.rb +288 -0
- data/lib/puppet/network/http/error.rb +75 -0
- data/lib/puppet/network/http/handler.rb +213 -0
- data/lib/puppet/network/http/issues.rb +14 -0
- data/lib/puppet/network/http/memory_response.rb +15 -0
- data/lib/puppet/network/http/request.rb +83 -0
- data/lib/puppet/network/http/response.rb +25 -0
- data/lib/puppet/network/http/route.rb +104 -0
- data/lib/puppet/network/http.rb +30 -0
- data/lib/puppet/network/http_pool.rb +78 -0
- data/lib/puppet/network/uri.rb +20 -0
- data/lib/puppet/network.rb +5 -0
- data/lib/puppet/node/environment.rb +638 -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 +107 -0
- data/lib/puppet/pal/compiler.rb +227 -0
- data/lib/puppet/pal/function_signature.rb +54 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +76 -0
- data/lib/puppet/pal/pal_api.rb +17 -0
- data/lib/puppet/pal/pal_impl.rb +585 -0
- data/lib/puppet/pal/plan_signature.rb +73 -0
- data/lib/puppet/pal/script_compiler.rb +75 -0
- data/lib/puppet/pal/task_signature.rb +64 -0
- data/lib/puppet/parameter/boolean.rb +17 -0
- data/lib/puppet/parameter/package_options.rb +33 -0
- data/lib/puppet/parameter/path.rb +61 -0
- data/lib/puppet/parameter/value.rb +93 -0
- data/lib/puppet/parameter/value_collection.rb +213 -0
- data/lib/puppet/parameter.rb +590 -0
- data/lib/puppet/parser/abstract_compiler.rb +35 -0
- data/lib/puppet/parser/ast/block_expression.rb +17 -0
- data/lib/puppet/parser/ast/branch.rb +21 -0
- data/lib/puppet/parser/ast/hostclass.rb +29 -0
- data/lib/puppet/parser/ast/leaf.rb +84 -0
- data/lib/puppet/parser/ast/node.rb +19 -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 +13 -0
- data/lib/puppet/parser/ast/resourceparam.rb +33 -0
- data/lib/puppet/parser/ast/top_level_construct.rb +6 -0
- data/lib/puppet/parser/ast.rb +62 -0
- data/lib/puppet/parser/catalog_compiler.rb +56 -0
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +41 -0
- data/lib/puppet/parser/compiler/catalog_validator.rb +35 -0
- data/lib/puppet/parser/compiler.rb +616 -0
- data/lib/puppet/parser/e4_parser_adapter.rb +61 -0
- data/lib/puppet/parser/files.rb +95 -0
- data/lib/puppet/parser/functions/assert_type.rb +62 -0
- data/lib/puppet/parser/functions/binary_file.rb +26 -0
- data/lib/puppet/parser/functions/break.rb +41 -0
- data/lib/puppet/parser/functions/contain.rb +32 -0
- data/lib/puppet/parser/functions/create_resources.rb +114 -0
- data/lib/puppet/parser/functions/defined.rb +109 -0
- data/lib/puppet/parser/functions/dig.rb +40 -0
- data/lib/puppet/parser/functions/digest.rb +7 -0
- data/lib/puppet/parser/functions/each.rb +106 -0
- data/lib/puppet/parser/functions/epp.rb +40 -0
- data/lib/puppet/parser/functions/fail.rb +13 -0
- data/lib/puppet/parser/functions/file.rb +35 -0
- data/lib/puppet/parser/functions/filter.rb +81 -0
- data/lib/puppet/parser/functions/find_file.rb +29 -0
- data/lib/puppet/parser/functions/fqdn_rand.rb +46 -0
- data/lib/puppet/parser/functions/generate.rb +39 -0
- data/lib/puppet/parser/functions/hiera.rb +105 -0
- data/lib/puppet/parser/functions/hiera_array.rb +93 -0
- data/lib/puppet/parser/functions/hiera_hash.rb +103 -0
- data/lib/puppet/parser/functions/hiera_include.rb +102 -0
- data/lib/puppet/parser/functions/include.rb +36 -0
- data/lib/puppet/parser/functions/inline_epp.rb +52 -0
- data/lib/puppet/parser/functions/inline_template.rb +28 -0
- data/lib/puppet/parser/functions/lest.rb +51 -0
- data/lib/puppet/parser/functions/lookup.rb +134 -0
- data/lib/puppet/parser/functions/map.rb +78 -0
- data/lib/puppet/parser/functions/match.rb +45 -0
- data/lib/puppet/parser/functions/md5.rb +7 -0
- data/lib/puppet/parser/functions/new.rb +992 -0
- data/lib/puppet/parser/functions/next.rb +40 -0
- data/lib/puppet/parser/functions/realize.rb +22 -0
- data/lib/puppet/parser/functions/reduce.rb +139 -0
- data/lib/puppet/parser/functions/regsubst.rb +65 -0
- data/lib/puppet/parser/functions/require.rb +43 -0
- data/lib/puppet/parser/functions/return.rb +94 -0
- data/lib/puppet/parser/functions/reverse_each.rb +85 -0
- data/lib/puppet/parser/functions/scanf.rb +40 -0
- data/lib/puppet/parser/functions/sha1.rb +7 -0
- data/lib/puppet/parser/functions/sha256.rb +7 -0
- data/lib/puppet/parser/functions/shellquote.rb +63 -0
- data/lib/puppet/parser/functions/slice.rb +41 -0
- data/lib/puppet/parser/functions/split.rb +29 -0
- data/lib/puppet/parser/functions/sprintf.rb +62 -0
- data/lib/puppet/parser/functions/step.rb +86 -0
- data/lib/puppet/parser/functions/strftime.rb +187 -0
- data/lib/puppet/parser/functions/tag.rb +15 -0
- data/lib/puppet/parser/functions/tagged.rb +24 -0
- data/lib/puppet/parser/functions/template.rb +42 -0
- data/lib/puppet/parser/functions/then.rb +75 -0
- data/lib/puppet/parser/functions/type.rb +55 -0
- data/lib/puppet/parser/functions/versioncmp.rb +31 -0
- data/lib/puppet/parser/functions/with.rb +30 -0
- data/lib/puppet/parser/functions.rb +324 -0
- data/lib/puppet/parser/parser_factory.rb +32 -0
- data/lib/puppet/parser/relationship.rb +90 -0
- data/lib/puppet/parser/resource/param.rb +37 -0
- data/lib/puppet/parser/resource.rb +353 -0
- data/lib/puppet/parser/scope.rb +1141 -0
- data/lib/puppet/parser/script_compiler.rb +123 -0
- data/lib/puppet/parser/templatewrapper.rb +105 -0
- data/lib/puppet/parser/type_loader.rb +151 -0
- data/lib/puppet/parser.rb +22 -0
- data/lib/puppet/plugins/configuration.rb +31 -0
- data/lib/puppet/plugins/syntax_checkers.rb +99 -0
- data/lib/puppet/plugins.rb +11 -0
- data/lib/puppet/pops/adaptable.rb +199 -0
- data/lib/puppet/pops/adapters.rb +159 -0
- data/lib/puppet/pops/evaluator/access_operator.rb +732 -0
- data/lib/puppet/pops/evaluator/callable_signature.rb +108 -0
- data/lib/puppet/pops/evaluator/closure.rb +370 -0
- data/lib/puppet/pops/evaluator/collector_transformer.rb +237 -0
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +88 -0
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +30 -0
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +71 -0
- data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +38 -0
- data/lib/puppet/pops/evaluator/compare_operator.rb +269 -0
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +227 -0
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +121 -0
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1317 -0
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +47 -0
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +83 -0
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +100 -0
- data/lib/puppet/pops/evaluator/puppet_proc.rb +72 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +188 -0
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +225 -0
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +528 -0
- data/lib/puppet/pops/functions/dispatch.rb +107 -0
- data/lib/puppet/pops/functions/dispatcher.rb +76 -0
- data/lib/puppet/pops/functions/function.rb +137 -0
- data/lib/puppet/pops/issue_reporter.rb +140 -0
- data/lib/puppet/pops/issues.rb +933 -0
- data/lib/puppet/pops/label_provider.rb +92 -0
- data/lib/puppet/pops/loader/base_loader.rb +178 -0
- data/lib/puppet/pops/loader/dependency_loader.rb +95 -0
- data/lib/puppet/pops/loader/gem_support.rb +54 -0
- data/lib/puppet/pops/loader/generic_plan_instantiator.rb +30 -0
- data/lib/puppet/pops/loader/loader.rb +221 -0
- data/lib/puppet/pops/loader/loader_paths.rb +413 -0
- data/lib/puppet/pops/loader/module_loaders.rb +552 -0
- data/lib/puppet/pops/loader/predefined_loader.rb +28 -0
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +88 -0
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +97 -0
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +43 -0
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +49 -0
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +130 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +104 -0
- data/lib/puppet/pops/loader/simple_environment_loader.rb +20 -0
- data/lib/puppet/pops/loader/static_loader.rb +133 -0
- data/lib/puppet/pops/loader/task_instantiator.rb +46 -0
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +104 -0
- data/lib/puppet/pops/loader/typed_name.rb +56 -0
- data/lib/puppet/pops/loader/uri_helper.rb +24 -0
- data/lib/puppet/pops/loaders.rb +550 -0
- data/lib/puppet/pops/lookup/configured_data_provider.rb +95 -0
- data/lib/puppet/pops/lookup/context.rb +208 -0
- data/lib/puppet/pops/lookup/data_adapter.rb +29 -0
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +146 -0
- data/lib/puppet/pops/lookup/data_hash_function_provider.rb +128 -0
- data/lib/puppet/pops/lookup/data_provider.rb +94 -0
- data/lib/puppet/pops/lookup/environment_data_provider.rb +37 -0
- data/lib/puppet/pops/lookup/explainer.rb +597 -0
- data/lib/puppet/pops/lookup/function_provider.rb +112 -0
- data/lib/puppet/pops/lookup/global_data_provider.rb +76 -0
- data/lib/puppet/pops/lookup/hiera_config.rb +823 -0
- data/lib/puppet/pops/lookup/interpolation.rb +166 -0
- data/lib/puppet/pops/lookup/invocation.rb +272 -0
- data/lib/puppet/pops/lookup/key_recorder.rb +21 -0
- data/lib/puppet/pops/lookup/location_resolver.rb +101 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +533 -0
- data/lib/puppet/pops/lookup/lookup_key.rb +101 -0
- data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +94 -0
- data/lib/puppet/pops/lookup/module_data_provider.rb +92 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +96 -0
- data/lib/puppet/pops/lookup.rb +102 -0
- data/lib/puppet/pops/merge_strategy.rb +447 -0
- data/lib/puppet/pops/migration/migration_checker.rb +61 -0
- data/lib/puppet/pops/model/ast.pp +669 -0
- data/lib/puppet/pops/model/ast.rb +4776 -0
- data/lib/puppet/pops/model/ast_transformer.rb +131 -0
- data/lib/puppet/pops/model/factory.rb +1157 -0
- data/lib/puppet/pops/model/model_label_provider.rb +137 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +447 -0
- data/lib/puppet/pops/model/pn_transformer.rb +384 -0
- data/lib/puppet/pops/model/tree_dumper.rb +62 -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 +52 -0
- data/lib/puppet/pops/parser/epp_support.rb +266 -0
- data/lib/puppet/pops/parser/evaluating_parser.rb +166 -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 +789 -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 +361 -0
- data/lib/puppet/pops/parser/parser_support.rb +252 -0
- data/lib/puppet/pops/parser/pn_parser.rb +318 -0
- data/lib/puppet/pops/parser/slurp_support.rb +119 -0
- data/lib/puppet/pops/patterns.rb +60 -0
- data/lib/puppet/pops/pcore.rb +136 -0
- data/lib/puppet/pops/pn.rb +239 -0
- data/lib/puppet/pops/puppet_stack.rb +63 -0
- data/lib/puppet/pops/resource/param.rb +56 -0
- data/lib/puppet/pops/resource/resource_type_impl.rb +296 -0
- data/lib/puppet/pops/resource/resource_type_set.pcore +22 -0
- data/lib/puppet/pops/semantic_error.rb +31 -0
- data/lib/puppet/pops/serialization/abstract_reader.rb +182 -0
- data/lib/puppet/pops/serialization/abstract_writer.rb +224 -0
- data/lib/puppet/pops/serialization/deserializer.rb +83 -0
- data/lib/puppet/pops/serialization/extension.rb +166 -0
- data/lib/puppet/pops/serialization/from_data_converter.rb +231 -0
- data/lib/puppet/pops/serialization/instance_reader.rb +21 -0
- data/lib/puppet/pops/serialization/instance_writer.rb +16 -0
- data/lib/puppet/pops/serialization/json.rb +301 -0
- data/lib/puppet/pops/serialization/json_path.rb +129 -0
- data/lib/puppet/pops/serialization/object.rb +73 -0
- data/lib/puppet/pops/serialization/serializer.rb +144 -0
- data/lib/puppet/pops/serialization/time_factory.rb +68 -0
- data/lib/puppet/pops/serialization/to_data_converter.rb +316 -0
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +227 -0
- data/lib/puppet/pops/serialization.rb +45 -0
- data/lib/puppet/pops/time/timespan.rb +728 -0
- data/lib/puppet/pops/time/timestamp.rb +167 -0
- data/lib/puppet/pops/types/annotatable.rb +37 -0
- data/lib/puppet/pops/types/annotation.rb +73 -0
- data/lib/puppet/pops/types/class_loader.rb +134 -0
- data/lib/puppet/pops/types/implementation_registry.rb +137 -0
- data/lib/puppet/pops/types/iterable.rb +375 -0
- data/lib/puppet/pops/types/p_binary_type.rb +232 -0
- data/lib/puppet/pops/types/p_init_type.rb +241 -0
- data/lib/puppet/pops/types/p_meta_type.rb +95 -0
- data/lib/puppet/pops/types/p_object_type.rb +1142 -0
- data/lib/puppet/pops/types/p_object_type_extension.rb +229 -0
- data/lib/puppet/pops/types/p_runtime_type.rb +117 -0
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +191 -0
- data/lib/puppet/pops/types/p_sem_ver_type.rb +155 -0
- data/lib/puppet/pops/types/p_sensitive_type.rb +81 -0
- data/lib/puppet/pops/types/p_timespan_type.rb +194 -0
- data/lib/puppet/pops/types/p_timestamp_type.rb +74 -0
- data/lib/puppet/pops/types/p_type_set_type.rb +394 -0
- data/lib/puppet/pops/types/p_uri_type.rb +198 -0
- data/lib/puppet/pops/types/puppet_object.rb +41 -0
- data/lib/puppet/pops/types/recursion_guard.rb +142 -0
- data/lib/puppet/pops/types/ruby_generator.rb +477 -0
- data/lib/puppet/pops/types/ruby_method.rb +32 -0
- data/lib/puppet/pops/types/string_converter.rb +1144 -0
- data/lib/puppet/pops/types/tree_iterators.rb +250 -0
- data/lib/puppet/pops/types/type_acceptor.rb +27 -0
- data/lib/puppet/pops/types/type_asserter.rb +49 -0
- data/lib/puppet/pops/types/type_assertion_error.rb +27 -0
- data/lib/puppet/pops/types/type_calculator.rb +829 -0
- data/lib/puppet/pops/types/type_conversion_error.rb +7 -0
- data/lib/puppet/pops/types/type_factory.rb +640 -0
- data/lib/puppet/pops/types/type_formatter.rb +796 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1105 -0
- data/lib/puppet/pops/types/type_parser.rb +690 -0
- data/lib/puppet/pops/types/type_set_reference.rb +62 -0
- data/lib/puppet/pops/types/type_with_members.rb +43 -0
- data/lib/puppet/pops/types/types.rb +3651 -0
- data/lib/puppet/pops/utils.rb +117 -0
- data/lib/puppet/pops/validation/checker4_0.rb +1155 -0
- data/lib/puppet/pops/validation/tasks_checker.rb +95 -0
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +45 -0
- data/lib/puppet/pops/validation.rb +462 -0
- data/lib/puppet/pops/visitable.rb +8 -0
- data/lib/puppet/pops/visitor.rb +136 -0
- data/lib/puppet/pops.rb +124 -0
- data/lib/puppet/property/boolean.rb +9 -0
- data/lib/puppet/property/ensure.rb +107 -0
- data/lib/puppet/property/keyvalue.rb +159 -0
- data/lib/puppet/property/list.rb +71 -0
- data/lib/puppet/property/ordered_list.rb +30 -0
- data/lib/puppet/property.rb +610 -0
- data/lib/puppet/provider/aix_object.rb +491 -0
- data/lib/puppet/provider/command.rb +27 -0
- data/lib/puppet/provider/confine.rb +8 -0
- data/lib/puppet/provider/exec/posix.rb +63 -0
- data/lib/puppet/provider/exec/shell.rb +27 -0
- data/lib/puppet/provider/exec/windows.rb +57 -0
- data/lib/puppet/provider/exec.rb +107 -0
- data/lib/puppet/provider/file/posix.rb +162 -0
- data/lib/puppet/provider/file/windows.rb +151 -0
- data/lib/puppet/provider/group/aix.rb +101 -0
- data/lib/puppet/provider/group/directoryservice.rb +24 -0
- data/lib/puppet/provider/group/groupadd.rb +180 -0
- data/lib/puppet/provider/group/ldap.rb +51 -0
- data/lib/puppet/provider/group/pw.rb +52 -0
- data/lib/puppet/provider/group/windows_adsi.rb +116 -0
- data/lib/puppet/provider/ldap.rb +143 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +522 -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 +297 -0
- data/lib/puppet/provider/network_device.rb +74 -0
- data/lib/puppet/provider/package/aix.rb +171 -0
- data/lib/puppet/provider/package/appdmg.rb +113 -0
- data/lib/puppet/provider/package/apple.rb +49 -0
- data/lib/puppet/provider/package/apt.rb +265 -0
- data/lib/puppet/provider/package/aptitude.rb +35 -0
- data/lib/puppet/provider/package/aptrpm.rb +87 -0
- data/lib/puppet/provider/package/blastwave.rb +109 -0
- data/lib/puppet/provider/package/dnf.rb +57 -0
- data/lib/puppet/provider/package/dnfmodule.rb +143 -0
- data/lib/puppet/provider/package/dpkg.rb +191 -0
- data/lib/puppet/provider/package/fink.rb +99 -0
- data/lib/puppet/provider/package/freebsd.rb +49 -0
- data/lib/puppet/provider/package/gem.rb +296 -0
- data/lib/puppet/provider/package/hpux.rb +46 -0
- data/lib/puppet/provider/package/macports.rb +112 -0
- data/lib/puppet/provider/package/nim.rb +290 -0
- data/lib/puppet/provider/package/openbsd.rb +263 -0
- data/lib/puppet/provider/package/opkg.rb +85 -0
- data/lib/puppet/provider/package/pacman.rb +270 -0
- data/lib/puppet/provider/package/pip.rb +347 -0
- data/lib/puppet/provider/package/pip2.rb +18 -0
- data/lib/puppet/provider/package/pip3.rb +18 -0
- data/lib/puppet/provider/package/pkg.rb +300 -0
- data/lib/puppet/provider/package/pkgdmg.rb +159 -0
- data/lib/puppet/provider/package/pkgin.rb +88 -0
- data/lib/puppet/provider/package/pkgng.rb +178 -0
- data/lib/puppet/provider/package/pkgutil.rb +186 -0
- data/lib/puppet/provider/package/portage.rb +314 -0
- data/lib/puppet/provider/package/ports.rb +94 -0
- data/lib/puppet/provider/package/portupgrade.rb +233 -0
- data/lib/puppet/provider/package/puppet_gem.rb +25 -0
- data/lib/puppet/provider/package/puppetserver_gem.rb +174 -0
- data/lib/puppet/provider/package/rpm.rb +255 -0
- data/lib/puppet/provider/package/rug.rb +51 -0
- data/lib/puppet/provider/package/sun.rb +137 -0
- data/lib/puppet/provider/package/sunfreeware.rb +11 -0
- data/lib/puppet/provider/package/tdnf.rb +35 -0
- data/lib/puppet/provider/package/up2date.rb +40 -0
- data/lib/puppet/provider/package/urpmi.rb +57 -0
- data/lib/puppet/provider/package/windows/exe_package.rb +108 -0
- data/lib/puppet/provider/package/windows/msi_package.rb +72 -0
- data/lib/puppet/provider/package/windows/package.rb +113 -0
- data/lib/puppet/provider/package/windows.rb +131 -0
- data/lib/puppet/provider/package/xbps.rb +127 -0
- data/lib/puppet/provider/package/yum.rb +390 -0
- data/lib/puppet/provider/package/zypper.rb +206 -0
- data/lib/puppet/provider/package.rb +61 -0
- data/lib/puppet/provider/package_targetable.rb +71 -0
- data/lib/puppet/provider/parsedfile.rb +494 -0
- data/lib/puppet/provider/service/base.rb +135 -0
- data/lib/puppet/provider/service/bsd.rb +53 -0
- data/lib/puppet/provider/service/daemontools.rb +196 -0
- data/lib/puppet/provider/service/debian.rb +77 -0
- data/lib/puppet/provider/service/freebsd.rb +141 -0
- data/lib/puppet/provider/service/gentoo.rb +47 -0
- data/lib/puppet/provider/service/init.rb +194 -0
- data/lib/puppet/provider/service/launchd.rb +391 -0
- data/lib/puppet/provider/service/openbsd.rb +101 -0
- data/lib/puppet/provider/service/openrc.rb +72 -0
- data/lib/puppet/provider/service/openwrt.rb +37 -0
- data/lib/puppet/provider/service/rcng.rb +53 -0
- data/lib/puppet/provider/service/redhat.rb +75 -0
- data/lib/puppet/provider/service/runit.rb +107 -0
- data/lib/puppet/provider/service/service.rb +67 -0
- data/lib/puppet/provider/service/smf.rb +322 -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 +179 -0
- data/lib/puppet/provider/user/aix.rb +365 -0
- data/lib/puppet/provider/user/directoryservice.rb +687 -0
- data/lib/puppet/provider/user/hpux.rb +93 -0
- data/lib/puppet/provider/user/ldap.rb +135 -0
- data/lib/puppet/provider/user/openbsd.rb +79 -0
- data/lib/puppet/provider/user/pw.rb +109 -0
- data/lib/puppet/provider/user/user_role_add.rb +243 -0
- data/lib/puppet/provider/user/useradd.rb +417 -0
- data/lib/puppet/provider/user/windows_adsi.rb +176 -0
- data/lib/puppet/provider.rb +613 -0
- data/lib/puppet/reference/configuration.rb +105 -0
- data/lib/puppet/reference/function.rb +19 -0
- data/lib/puppet/reference/indirection.rb +76 -0
- data/lib/puppet/reference/metaparameter.rb +35 -0
- data/lib/puppet/reference/providers.rb +119 -0
- data/lib/puppet/reference/report.rb +22 -0
- data/lib/puppet/reference/type.rb +111 -0
- data/lib/puppet/relationship.rb +85 -0
- data/lib/puppet/reports/http.rb +45 -0
- data/lib/puppet/reports/log.rb +15 -0
- data/lib/puppet/reports/store.rb +71 -0
- data/lib/puppet/reports.rb +95 -0
- data/lib/puppet/resource/catalog.rb +655 -0
- data/lib/puppet/resource/status.rb +231 -0
- data/lib/puppet/resource/type.rb +449 -0
- data/lib/puppet/resource/type_collection.rb +235 -0
- data/lib/puppet/resource.rb +673 -0
- data/lib/puppet/runtime.rb +67 -0
- data/lib/puppet/scheduler/job.rb +55 -0
- data/lib/puppet/scheduler/scheduler.rb +46 -0
- data/lib/puppet/scheduler/splay_job.rb +45 -0
- data/lib/puppet/scheduler/timer.rb +15 -0
- data/lib/puppet/scheduler.rb +18 -0
- data/lib/puppet/settings/alias_setting.rb +37 -0
- data/lib/puppet/settings/array_setting.rb +18 -0
- data/lib/puppet/settings/autosign_setting.rb +23 -0
- data/lib/puppet/settings/base_setting.rb +228 -0
- data/lib/puppet/settings/boolean_setting.rb +34 -0
- data/lib/puppet/settings/certificate_revocation_setting.rb +22 -0
- data/lib/puppet/settings/config_file.rb +148 -0
- data/lib/puppet/settings/directory_setting.rb +20 -0
- data/lib/puppet/settings/duration_setting.rb +33 -0
- data/lib/puppet/settings/enum_setting.rb +18 -0
- data/lib/puppet/settings/environment_conf.rb +228 -0
- data/lib/puppet/settings/errors.rb +14 -0
- data/lib/puppet/settings/file_or_directory_setting.rb +37 -0
- data/lib/puppet/settings/file_setting.rb +232 -0
- data/lib/puppet/settings/http_extra_headers_setting.rb +26 -0
- data/lib/puppet/settings/ini_file.rb +228 -0
- data/lib/puppet/settings/integer_setting.rb +19 -0
- data/lib/puppet/settings/path_setting.rb +10 -0
- data/lib/puppet/settings/port_setting.rb +17 -0
- data/lib/puppet/settings/priority_setting.rb +44 -0
- data/lib/puppet/settings/server_list_setting.rb +30 -0
- data/lib/puppet/settings/string_setting.rb +11 -0
- data/lib/puppet/settings/symbolic_enum_setting.rb +19 -0
- data/lib/puppet/settings/terminus_setting.rb +16 -0
- data/lib/puppet/settings/ttl_setting.rb +53 -0
- data/lib/puppet/settings/value_translator.rb +16 -0
- data/lib/puppet/settings.rb +1650 -0
- data/lib/puppet/ssl/base.rb +152 -0
- data/lib/puppet/ssl/certificate.rb +98 -0
- data/lib/puppet/ssl/certificate_request.rb +320 -0
- data/lib/puppet/ssl/certificate_request_attributes.rb +40 -0
- data/lib/puppet/ssl/certificate_signer.rb +39 -0
- data/lib/puppet/ssl/digest.rb +22 -0
- data/lib/puppet/ssl/error.rb +29 -0
- data/lib/puppet/ssl/oids.rb +199 -0
- data/lib/puppet/ssl/openssl_loader.rb +26 -0
- data/lib/puppet/ssl/ssl_context.rb +27 -0
- data/lib/puppet/ssl/ssl_provider.rb +354 -0
- data/lib/puppet/ssl/state_machine.rb +605 -0
- data/lib/puppet/ssl/verifier.rb +143 -0
- data/lib/puppet/ssl.rb +25 -0
- data/lib/puppet/syntax_checkers/base64.rb +42 -0
- data/lib/puppet/syntax_checkers/epp.rb +35 -0
- data/lib/puppet/syntax_checkers/json.rb +35 -0
- data/lib/puppet/syntax_checkers/pp.rb +35 -0
- data/lib/puppet/syntax_checkers.rb +5 -0
- data/lib/puppet/test/test_helper.rb +251 -0
- data/lib/puppet/thread_local.rb +6 -0
- data/lib/puppet/transaction/additional_resource_generator.rb +225 -0
- data/lib/puppet/transaction/event.rb +171 -0
- data/lib/puppet/transaction/event_manager.rb +180 -0
- data/lib/puppet/transaction/persistence.rb +119 -0
- data/lib/puppet/transaction/report.rb +511 -0
- data/lib/puppet/transaction/resource_harness.rb +331 -0
- data/lib/puppet/transaction.rb +493 -0
- data/lib/puppet/trusted_external.rb +46 -0
- data/lib/puppet/type/component.rb +96 -0
- data/lib/puppet/type/exec.rb +730 -0
- data/lib/puppet/type/file/checksum.rb +54 -0
- data/lib/puppet/type/file/checksum_value.rb +56 -0
- data/lib/puppet/type/file/content.rb +180 -0
- data/lib/puppet/type/file/ctime.rb +22 -0
- data/lib/puppet/type/file/data_sync.rb +101 -0
- data/lib/puppet/type/file/ensure.rb +194 -0
- data/lib/puppet/type/file/group.rb +50 -0
- data/lib/puppet/type/file/mode.rb +192 -0
- data/lib/puppet/type/file/mtime.rb +21 -0
- data/lib/puppet/type/file/owner.rb +52 -0
- data/lib/puppet/type/file/selcontext.rb +143 -0
- data/lib/puppet/type/file/source.rb +380 -0
- data/lib/puppet/type/file/target.rb +86 -0
- data/lib/puppet/type/file/type.rb +21 -0
- data/lib/puppet/type/file.rb +1139 -0
- data/lib/puppet/type/filebucket.rb +123 -0
- data/lib/puppet/type/group.rb +238 -0
- data/lib/puppet/type/notify.rb +48 -0
- data/lib/puppet/type/package.rb +715 -0
- data/lib/puppet/type/resources.rb +192 -0
- data/lib/puppet/type/schedule.rb +441 -0
- data/lib/puppet/type/service.rb +310 -0
- data/lib/puppet/type/stage.rb +29 -0
- data/lib/puppet/type/tidy.rb +382 -0
- data/lib/puppet/type/user.rb +865 -0
- data/lib/puppet/type/whit.rb +35 -0
- data/lib/puppet/type.rb +2629 -0
- data/lib/puppet/util/at_fork/noop.rb +20 -0
- data/lib/puppet/util/at_fork/solaris.rb +158 -0
- data/lib/puppet/util/at_fork.rb +37 -0
- data/lib/puppet/util/autoload.rb +221 -0
- data/lib/puppet/util/backups.rb +88 -0
- data/lib/puppet/util/character_encoding.rb +83 -0
- data/lib/puppet/util/checksums.rb +380 -0
- data/lib/puppet/util/classgen.rb +223 -0
- data/lib/puppet/util/colors.rb +102 -0
- data/lib/puppet/util/command_line/puppet_option_parser.rb +89 -0
- data/lib/puppet/util/command_line/trollop.rb +847 -0
- data/lib/puppet/util/command_line.rb +198 -0
- data/lib/puppet/util/constant_inflector.rb +25 -0
- data/lib/puppet/util/diff.rb +80 -0
- data/lib/puppet/util/docs.rb +132 -0
- data/lib/puppet/util/errors.rb +161 -0
- data/lib/puppet/util/execution.rb +446 -0
- data/lib/puppet/util/execution_stub.rb +28 -0
- data/lib/puppet/util/feature.rb +129 -0
- data/lib/puppet/util/file_watcher.rb +31 -0
- data/lib/puppet/util/fileparsing.rb +404 -0
- data/lib/puppet/util/filetype.rb +358 -0
- data/lib/puppet/util/http_proxy.rb +6 -0
- data/lib/puppet/util/inifile.rb +335 -0
- data/lib/puppet/util/instance_loader.rb +69 -0
- data/lib/puppet/util/json.rb +94 -0
- data/lib/puppet/util/json_lockfile.rb +47 -0
- data/lib/puppet/util/ldap/connection.rb +75 -0
- data/lib/puppet/util/ldap/generator.rb +44 -0
- data/lib/puppet/util/ldap/manager.rb +283 -0
- data/lib/puppet/util/ldap.rb +4 -0
- data/lib/puppet/util/libuser.conf +15 -0
- data/lib/puppet/util/libuser.rb +13 -0
- data/lib/puppet/util/limits.rb +14 -0
- data/lib/puppet/util/lockfile.rb +66 -0
- data/lib/puppet/util/log/destination.rb +50 -0
- data/lib/puppet/util/log/destinations.rb +253 -0
- data/lib/puppet/util/log.rb +436 -0
- data/lib/puppet/util/logging.rb +304 -0
- data/lib/puppet/util/metaid.rb +22 -0
- data/lib/puppet/util/metric.rb +68 -0
- data/lib/puppet/util/monkey_patches.rb +114 -0
- data/lib/puppet/util/multi_match.rb +55 -0
- data/lib/puppet/util/network_device/base.rb +24 -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 +7 -0
- data/lib/puppet/util/network_device.rb +19 -0
- data/lib/puppet/util/package/version/debian.rb +177 -0
- data/lib/puppet/util/package/version/gem.rb +18 -0
- data/lib/puppet/util/package/version/pip.rb +173 -0
- data/lib/puppet/util/package/version/range/eq.rb +17 -0
- data/lib/puppet/util/package/version/range/gt.rb +17 -0
- data/lib/puppet/util/package/version/range/gt_eq.rb +17 -0
- data/lib/puppet/util/package/version/range/lt.rb +17 -0
- data/lib/puppet/util/package/version/range/lt_eq.rb +17 -0
- data/lib/puppet/util/package/version/range/min_max.rb +26 -0
- data/lib/puppet/util/package/version/range/simple.rb +13 -0
- data/lib/puppet/util/package/version/range.rb +57 -0
- data/lib/puppet/util/package/version/rpm.rb +75 -0
- data/lib/puppet/util/package.rb +43 -0
- data/lib/puppet/util/pidlock.rb +103 -0
- data/lib/puppet/util/platform.rb +72 -0
- data/lib/puppet/util/plist.rb +161 -0
- data/lib/puppet/util/posix.rb +206 -0
- data/lib/puppet/util/profiler/aggregate.rb +82 -0
- data/lib/puppet/util/profiler/around_profiler.rb +68 -0
- data/lib/puppet/util/profiler/logging.rb +50 -0
- data/lib/puppet/util/profiler/object_counts.rb +19 -0
- data/lib/puppet/util/profiler/wall_clock.rb +36 -0
- data/lib/puppet/util/profiler.rb +55 -0
- data/lib/puppet/util/provider_features.rb +183 -0
- data/lib/puppet/util/psych_support.rb +32 -0
- data/lib/puppet/util/rdoc/code_objects.rb +293 -0
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +902 -0
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1068 -0
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +262 -0
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +16 -0
- data/lib/puppet/util/rdoc/parser.rb +14 -0
- data/lib/puppet/util/rdoc.rb +54 -0
- data/lib/puppet/util/reference.rb +94 -0
- data/lib/puppet/util/resource_template.rb +63 -0
- data/lib/puppet/util/retry_action.rb +47 -0
- data/lib/puppet/util/rpm_compare.rb +196 -0
- data/lib/puppet/util/rubygems.rb +67 -0
- data/lib/puppet/util/run_mode.rb +164 -0
- data/lib/puppet/util/selinux.rb +331 -0
- data/lib/puppet/util/skip_tags.rb +15 -0
- data/lib/puppet/util/splayer.rb +20 -0
- data/lib/puppet/util/storage.rb +100 -0
- data/lib/puppet/util/suidmanager.rb +167 -0
- data/lib/puppet/util/symbolic_file_mode.rb +156 -0
- data/lib/puppet/util/tag_set.rb +29 -0
- data/lib/puppet/util/tagging.rb +131 -0
- data/lib/puppet/util/terminal.rb +18 -0
- data/lib/puppet/util/user_attr.rb +23 -0
- data/lib/puppet/util/warnings.rb +35 -0
- data/lib/puppet/util/watched_file.rb +40 -0
- data/lib/puppet/util/watcher/change_watcher.rb +35 -0
- data/lib/puppet/util/watcher/periodic_watcher.rb +38 -0
- data/lib/puppet/util/watcher/timer.rb +21 -0
- data/lib/puppet/util/watcher.rb +17 -0
- data/lib/puppet/util/windows/access_control_entry.rb +86 -0
- data/lib/puppet/util/windows/access_control_list.rb +116 -0
- data/lib/puppet/util/windows/adsi.rb +662 -0
- data/lib/puppet/util/windows/com.rb +228 -0
- data/lib/puppet/util/windows/daemon.rb +340 -0
- data/lib/puppet/util/windows/error.rb +86 -0
- data/lib/puppet/util/windows/eventlog.rb +191 -0
- data/lib/puppet/util/windows/file.rb +359 -0
- data/lib/puppet/util/windows/monkey_patches/process.rb +413 -0
- data/lib/puppet/util/windows/principal.rb +204 -0
- data/lib/puppet/util/windows/process.rb +360 -0
- data/lib/puppet/util/windows/registry.rb +443 -0
- data/lib/puppet/util/windows/root_certs.rb +110 -0
- data/lib/puppet/util/windows/security.rb +909 -0
- data/lib/puppet/util/windows/security_descriptor.rb +64 -0
- data/lib/puppet/util/windows/service.rb +708 -0
- data/lib/puppet/util/windows/sid.rb +291 -0
- data/lib/puppet/util/windows/string.rb +17 -0
- data/lib/puppet/util/windows/user.rb +551 -0
- data/lib/puppet/util/windows.rb +58 -0
- data/lib/puppet/util/yaml.rb +67 -0
- data/lib/puppet/util.rb +759 -0
- data/lib/puppet/vendor/require_vendored.rb +4 -0
- data/lib/puppet/vendor.rb +59 -0
- data/lib/puppet/version.rb +98 -0
- data/lib/puppet/x509/cert_provider.rb +405 -0
- data/lib/puppet/x509/pem_store.rb +57 -0
- data/lib/puppet/x509.rb +13 -0
- data/lib/puppet.rb +348 -0
- data/lib/puppet_pal.rb +10 -0
- data/lib/puppet_x.rb +16 -0
- data/locales/config.yaml +29 -0
- data/locales/en/puppet.po +19 -0
- data/locales/puppet.pot +9738 -0
- data/man/man5/puppet.conf.5 +1407 -0
- data/man/man8/puppet-agent.8 +135 -0
- data/man/man8/puppet-apply.8 +67 -0
- data/man/man8/puppet-catalog.8 +194 -0
- data/man/man8/puppet-config.8 +103 -0
- data/man/man8/puppet-describe.8 +35 -0
- data/man/man8/puppet-device.8 +83 -0
- data/man/man8/puppet-doc.8 +30 -0
- data/man/man8/puppet-epp.8 +232 -0
- data/man/man8/puppet-facts.8 +156 -0
- data/man/man8/puppet-filebucket.8 +134 -0
- data/man/man8/puppet-generate.8 +54 -0
- data/man/man8/puppet-help.8 +46 -0
- data/man/man8/puppet-lookup.8 +71 -0
- data/man/man8/puppet-module.8 +220 -0
- data/man/man8/puppet-node.8 +142 -0
- data/man/man8/puppet-parser.8 +87 -0
- data/man/man8/puppet-plugin.8 +50 -0
- data/man/man8/puppet-report.8 +84 -0
- data/man/man8/puppet-resource.8 +63 -0
- data/man/man8/puppet-script.8 +48 -0
- data/man/man8/puppet-ssl.8 +45 -0
- data/man/man8/puppet.8 +98 -0
- data/tasks/tag.rake +34 -0
- metadata +1336 -0
@@ -0,0 +1,190 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../puppet/thread_local'
|
4
|
+
|
5
|
+
# Puppet::Context is a system for tracking services and contextual information
|
6
|
+
# that puppet needs to be able to run. Values are "bound" in a context when it is created
|
7
|
+
# and cannot be changed; however a child context can be created, using
|
8
|
+
# {#override}, that provides a different value.
|
9
|
+
#
|
10
|
+
# When binding a {Proc}, the proc is called when the value is looked up, and the result
|
11
|
+
# is memoized for subsequent lookups. This provides a lazy mechanism that can be used to
|
12
|
+
# delay expensive production of values until they are needed.
|
13
|
+
#
|
14
|
+
# @api private
|
15
|
+
class Puppet::Context
|
16
|
+
require_relative 'context/trusted_information'
|
17
|
+
|
18
|
+
class UndefinedBindingError < Puppet::Error; end
|
19
|
+
class StackUnderflow < Puppet::Error; end
|
20
|
+
|
21
|
+
class UnknownRollbackMarkError < Puppet::Error; end
|
22
|
+
class DuplicateRollbackMarkError < Puppet::Error; end
|
23
|
+
|
24
|
+
# @api private
|
25
|
+
def initialize(initial_bindings)
|
26
|
+
@stack = Puppet::ThreadLocal.new(EmptyStack.new.push(initial_bindings))
|
27
|
+
|
28
|
+
# By initializing @rollbacks to nil and creating a hash lazily when #mark or
|
29
|
+
# #rollback are called we ensure that the hashes are never shared between
|
30
|
+
# threads and it's safe to mutate them
|
31
|
+
@rollbacks = Puppet::ThreadLocal.new(nil)
|
32
|
+
end
|
33
|
+
|
34
|
+
# @api private
|
35
|
+
def push(overrides, description = '')
|
36
|
+
@stack.value = @stack.value.push(overrides, description)
|
37
|
+
end
|
38
|
+
|
39
|
+
# Push a context and make this global across threads
|
40
|
+
# Do not use in a context where multiple threads may already exist
|
41
|
+
#
|
42
|
+
# @api private
|
43
|
+
def unsafe_push_global(overrides, description = '')
|
44
|
+
@stack = Puppet::ThreadLocal.new(
|
45
|
+
@stack.value.push(overrides, description)
|
46
|
+
)
|
47
|
+
end
|
48
|
+
|
49
|
+
# @api private
|
50
|
+
def pop
|
51
|
+
@stack.value = @stack.value.pop
|
52
|
+
end
|
53
|
+
|
54
|
+
# @api private
|
55
|
+
def lookup(name, &block)
|
56
|
+
@stack.value.lookup(name, &block)
|
57
|
+
end
|
58
|
+
|
59
|
+
# @api private
|
60
|
+
def override(bindings, description = '', &block)
|
61
|
+
saved_point = @stack.value
|
62
|
+
push(bindings, description)
|
63
|
+
|
64
|
+
yield
|
65
|
+
ensure
|
66
|
+
@stack.value = saved_point
|
67
|
+
end
|
68
|
+
|
69
|
+
# Mark a place on the context stack to later return to with {rollback}.
|
70
|
+
#
|
71
|
+
# @param name [Object] The identifier for the mark
|
72
|
+
#
|
73
|
+
# @api private
|
74
|
+
def mark(name)
|
75
|
+
@rollbacks.value ||= {}
|
76
|
+
if @rollbacks.value[name].nil?
|
77
|
+
@rollbacks.value[name] = @stack.value
|
78
|
+
else
|
79
|
+
raise DuplicateRollbackMarkError, _("Mark for '%{name}' already exists") % { name: name }
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# Roll back to a mark set by {mark}.
|
84
|
+
#
|
85
|
+
# Rollbacks can only reach a mark accessible via {pop}. If the mark is not on
|
86
|
+
# the current context stack the behavior of rollback is undefined.
|
87
|
+
#
|
88
|
+
# @param name [Object] The identifier for the mark
|
89
|
+
#
|
90
|
+
# @api private
|
91
|
+
def rollback(name)
|
92
|
+
@rollbacks.value ||= {}
|
93
|
+
if @rollbacks.value[name].nil?
|
94
|
+
raise UnknownRollbackMarkError, _("Unknown mark '%{name}'") % { name: name }
|
95
|
+
end
|
96
|
+
|
97
|
+
@stack.value = @rollbacks.value.delete(name)
|
98
|
+
end
|
99
|
+
|
100
|
+
# Base case for Puppet::Context::Stack.
|
101
|
+
#
|
102
|
+
# @api private
|
103
|
+
class EmptyStack
|
104
|
+
# Lookup a binding. Since there are none in EmptyStack, this always raises
|
105
|
+
# an exception unless a block is passed, in which case the block is called
|
106
|
+
# and its return value is used.
|
107
|
+
#
|
108
|
+
# @api private
|
109
|
+
def lookup(name, &block)
|
110
|
+
if block
|
111
|
+
block.call
|
112
|
+
else
|
113
|
+
raise UndefinedBindingError, _("Unable to lookup '%{name}'") % { name: name }
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
# Base case of #pop always raises an error since this is the bottom
|
118
|
+
#
|
119
|
+
# @api private
|
120
|
+
def pop
|
121
|
+
raise(StackUnderflow,
|
122
|
+
_('Attempted to pop, but already at root of the context stack.'))
|
123
|
+
end
|
124
|
+
|
125
|
+
# Push bindings onto the stack by creating a new Stack object with `self` as
|
126
|
+
# the parent
|
127
|
+
#
|
128
|
+
# @api private
|
129
|
+
def push(overrides, description = '')
|
130
|
+
Puppet::Context::Stack.new(self, overrides, description)
|
131
|
+
end
|
132
|
+
|
133
|
+
# Return the bindings table, which is always empty here
|
134
|
+
#
|
135
|
+
# @api private
|
136
|
+
def bindings
|
137
|
+
{}
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
# Internal implementation of the bindings stack used by Puppet::Context. An
|
142
|
+
# instance of Puppet::Context::Stack represents one level of bindings. It
|
143
|
+
# caches a merged copy of all the bindings in the stack up to this point.
|
144
|
+
# Each element of the stack is immutable, allowing the base to be shared
|
145
|
+
# between threads.
|
146
|
+
#
|
147
|
+
# @api private
|
148
|
+
class Stack
|
149
|
+
attr_reader :bindings
|
150
|
+
|
151
|
+
def initialize(parent, bindings, description = '')
|
152
|
+
@parent = parent
|
153
|
+
@bindings = parent.bindings.merge(bindings || {})
|
154
|
+
@description = description
|
155
|
+
end
|
156
|
+
|
157
|
+
# Lookup a binding in the current stack. Return the value if it is present.
|
158
|
+
# If the value is a stored Proc, evaluate, cache, and return the result. If
|
159
|
+
# no binding is found and a block is passed evaluate it and return the
|
160
|
+
# result. Otherwise an exception is raised.
|
161
|
+
#
|
162
|
+
# @api private
|
163
|
+
def lookup(name, &block)
|
164
|
+
if @bindings.include?(name)
|
165
|
+
value = @bindings[name]
|
166
|
+
value.is_a?(Proc) ? (@bindings[name] = value.call) : value
|
167
|
+
elsif block
|
168
|
+
block.call
|
169
|
+
else
|
170
|
+
raise UndefinedBindingError,
|
171
|
+
_("Unable to lookup '%{name}'") % { name: name }
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
# Pop one level off the stack by returning the parent object.
|
176
|
+
#
|
177
|
+
# @api private
|
178
|
+
def pop
|
179
|
+
@parent
|
180
|
+
end
|
181
|
+
|
182
|
+
# Push bindings onto the stack by creating a new Stack object with `self` as
|
183
|
+
# the parent
|
184
|
+
#
|
185
|
+
# @api private
|
186
|
+
def push(overrides, description = '')
|
187
|
+
Puppet::Context::Stack.new(self, overrides, description)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
@@ -0,0 +1,198 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../puppet/application'
|
4
|
+
require_relative '../puppet/scheduler'
|
5
|
+
|
6
|
+
# Run periodic actions in a daemonized process.
|
7
|
+
#
|
8
|
+
# A Daemon has 2 parts:
|
9
|
+
# * config reparse
|
10
|
+
# * an agent that responds to #run
|
11
|
+
#
|
12
|
+
# The config reparse will occur periodically based on Settings. The agent
|
13
|
+
# is run periodically and a time interval based on Settings. The config
|
14
|
+
# reparse will update this time interval when needed.
|
15
|
+
#
|
16
|
+
# The Daemon is also responsible for signal handling, starting, stopping,
|
17
|
+
# running the agent on demand, and reloading the entire process. It ensures
|
18
|
+
# that only one Daemon is running by using a lockfile.
|
19
|
+
#
|
20
|
+
# @api private
|
21
|
+
class Puppet::Daemon
|
22
|
+
SIGNAL_CHECK_INTERVAL = 5
|
23
|
+
|
24
|
+
attr_accessor :argv
|
25
|
+
attr_reader :signals, :agent
|
26
|
+
|
27
|
+
def initialize(agent, pidfile, scheduler = Puppet::Scheduler::Scheduler.new())
|
28
|
+
raise Puppet::DevError, _("Daemons must have an agent") unless agent
|
29
|
+
|
30
|
+
@scheduler = scheduler
|
31
|
+
@pidfile = pidfile
|
32
|
+
@agent = agent
|
33
|
+
@signals = []
|
34
|
+
end
|
35
|
+
|
36
|
+
def daemonname
|
37
|
+
Puppet.run_mode.name
|
38
|
+
end
|
39
|
+
|
40
|
+
# Put the daemon into the background.
|
41
|
+
def daemonize
|
42
|
+
pid = fork
|
43
|
+
if pid
|
44
|
+
Process.detach(pid)
|
45
|
+
exit(0)
|
46
|
+
end
|
47
|
+
|
48
|
+
create_pidfile
|
49
|
+
|
50
|
+
# Get rid of console logging
|
51
|
+
Puppet::Util::Log.close(:console)
|
52
|
+
|
53
|
+
Process.setsid
|
54
|
+
Dir.chdir("/")
|
55
|
+
|
56
|
+
close_streams
|
57
|
+
end
|
58
|
+
|
59
|
+
# Close stdin/stdout/stderr so that we can finish our transition into 'daemon' mode.
|
60
|
+
# @return nil
|
61
|
+
def self.close_streams
|
62
|
+
Puppet.debug("Closing streams for daemon mode")
|
63
|
+
begin
|
64
|
+
$stdin.reopen "/dev/null"
|
65
|
+
$stdout.reopen "/dev/null", "a"
|
66
|
+
$stderr.reopen $stdout
|
67
|
+
Puppet::Util::Log.reopen
|
68
|
+
Puppet.debug("Finished closing streams for daemon mode")
|
69
|
+
rescue => detail
|
70
|
+
Puppet.err "Could not start #{Puppet.run_mode.name}: #{detail}"
|
71
|
+
Puppet::Util.replace_file("/tmp/daemonout", 0o644) do |f|
|
72
|
+
f.puts "Could not start #{Puppet.run_mode.name}: #{detail}"
|
73
|
+
end
|
74
|
+
exit(12)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# Convenience signature for calling Puppet::Daemon.close_streams
|
79
|
+
def close_streams
|
80
|
+
Puppet::Daemon.close_streams
|
81
|
+
end
|
82
|
+
|
83
|
+
def reexec
|
84
|
+
raise Puppet::DevError, _("Cannot reexec unless ARGV arguments are set") unless argv
|
85
|
+
|
86
|
+
command = $PROGRAM_NAME + " " + argv.join(" ")
|
87
|
+
Puppet.notice "Restarting with '#{command}'"
|
88
|
+
stop(:exit => false)
|
89
|
+
exec(command)
|
90
|
+
end
|
91
|
+
|
92
|
+
def reload
|
93
|
+
agent.run({ :splay => false })
|
94
|
+
rescue Puppet::LockError
|
95
|
+
Puppet.notice "Not triggering already-running agent"
|
96
|
+
end
|
97
|
+
|
98
|
+
def restart
|
99
|
+
Puppet::Application.restart!
|
100
|
+
reexec
|
101
|
+
end
|
102
|
+
|
103
|
+
def reopen_logs
|
104
|
+
Puppet::Util::Log.reopen
|
105
|
+
end
|
106
|
+
|
107
|
+
# Trap a couple of the main signals. This should probably be handled
|
108
|
+
# in a way that anyone else can register callbacks for traps, but, eh.
|
109
|
+
def set_signal_traps
|
110
|
+
[:INT, :TERM].each do |signal|
|
111
|
+
Signal.trap(signal) do
|
112
|
+
Puppet.notice "Caught #{signal}; exiting"
|
113
|
+
stop
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
# extended signals not supported under windows
|
118
|
+
unless Puppet::Util::Platform.windows?
|
119
|
+
signals = { :HUP => :restart, :USR1 => :reload, :USR2 => :reopen_logs }
|
120
|
+
signals.each do |signal, method|
|
121
|
+
Signal.trap(signal) do
|
122
|
+
Puppet.notice "Caught #{signal}; storing #{method}"
|
123
|
+
@signals << method
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
# Stop everything
|
130
|
+
def stop(args = { :exit => true })
|
131
|
+
Puppet::Application.stop!
|
132
|
+
|
133
|
+
remove_pidfile
|
134
|
+
|
135
|
+
Puppet::Util::Log.close_all
|
136
|
+
|
137
|
+
exit if args[:exit]
|
138
|
+
end
|
139
|
+
|
140
|
+
def start
|
141
|
+
create_pidfile
|
142
|
+
run_event_loop
|
143
|
+
end
|
144
|
+
|
145
|
+
private
|
146
|
+
|
147
|
+
# Create a pidfile for our daemon, so we can be stopped and others
|
148
|
+
# don't try to start.
|
149
|
+
def create_pidfile
|
150
|
+
raise "Could not create PID file: #{@pidfile.file_path}" unless @pidfile.lock
|
151
|
+
end
|
152
|
+
|
153
|
+
# Remove the pid file for our daemon.
|
154
|
+
def remove_pidfile
|
155
|
+
@pidfile.unlock
|
156
|
+
end
|
157
|
+
|
158
|
+
# Loop forever running events - or, at least, until we exit.
|
159
|
+
def run_event_loop
|
160
|
+
splaylimit = Puppet[:splay] ? Puppet[:splaylimit] : 0
|
161
|
+
|
162
|
+
agent_run = Puppet::Scheduler.create_job(Puppet[:runinterval], true, splaylimit) do |job|
|
163
|
+
if job.splay != 0
|
164
|
+
Puppet.info "Running agent every #{job.run_interval} seconds with splay #{job.splay} of #{job.splay_limit} seconds"
|
165
|
+
else
|
166
|
+
Puppet.info "Running agent every #{job.run_interval} seconds"
|
167
|
+
end
|
168
|
+
|
169
|
+
# Splay for the daemon is handled in the scheduler
|
170
|
+
agent.run(:splay => false)
|
171
|
+
end
|
172
|
+
|
173
|
+
reparse_run = Puppet::Scheduler.create_job(Puppet[:filetimeout]) do
|
174
|
+
Puppet.settings.reparse_config_files
|
175
|
+
agent_run.run_interval = Puppet[:runinterval]
|
176
|
+
# Puppet[:splaylimit] defaults to Puppet[:runinterval] so if runinterval
|
177
|
+
# changes, but splaylimit doesn't, we'll still recalculate splay
|
178
|
+
agent_run.splay_limit = Puppet[:splay] ? Puppet[:splaylimit] : 0
|
179
|
+
if Puppet[:filetimeout] == 0
|
180
|
+
reparse_run.disable
|
181
|
+
else
|
182
|
+
reparse_run.run_interval = Puppet[:filetimeout]
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
signal_loop = Puppet::Scheduler.create_job(SIGNAL_CHECK_INTERVAL) do
|
187
|
+
while method = @signals.shift # rubocop:disable Lint/AssignmentInCondition
|
188
|
+
Puppet.notice "Processing #{method}"
|
189
|
+
send(method)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
reparse_run.disable if Puppet[:filetimeout] == 0
|
194
|
+
|
195
|
+
# these are added in a different order than they are defined
|
196
|
+
@scheduler.run_loop([reparse_run, agent_run, signal_loop])
|
197
|
+
end
|
198
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../puppet/indirector'
|
4
|
+
|
5
|
+
# A class for managing data lookups
|
6
|
+
class Puppet::DataBinding
|
7
|
+
# Set up indirection, so that data can be looked for in the compiler
|
8
|
+
extend Puppet::Indirector
|
9
|
+
|
10
|
+
indirects(:data_binding, :terminus_setting => :data_binding_terminus,
|
11
|
+
:doc => "Where to find external data bindings.")
|
12
|
+
|
13
|
+
class LookupError < Puppet::PreformattedError; end
|
14
|
+
|
15
|
+
class RecursiveLookupError < Puppet::DataBinding::LookupError; end
|
16
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Puppet::DataTypes.create_type('Error') do
|
4
|
+
interface <<-PUPPET
|
5
|
+
type_parameters => {
|
6
|
+
kind => Optional[Variant[String,Regexp,Type[Enum],Type[Pattern],Type[NotUndef],Type[Undef]]],
|
7
|
+
issue_code => Optional[Variant[String,Regexp,Type[Enum],Type[Pattern],Type[NotUndef],Type[Undef]]]
|
8
|
+
},
|
9
|
+
attributes => {
|
10
|
+
msg => String[1],
|
11
|
+
kind => { type => Optional[String[1]], value => undef },
|
12
|
+
details => { type => Optional[Hash[String[1],Data]], value => undef },
|
13
|
+
issue_code => { type => Optional[String[1]], value => undef },
|
14
|
+
},
|
15
|
+
functions => {
|
16
|
+
message => Callable[[], String[1]]
|
17
|
+
}
|
18
|
+
PUPPET
|
19
|
+
|
20
|
+
require_relative '../../puppet/datatypes/impl/error'
|
21
|
+
|
22
|
+
implementation_class Puppet::DataTypes::Error
|
23
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Puppet::DataTypes::Error
|
4
|
+
attr_reader :msg, :kind, :issue_code, :details
|
5
|
+
alias message msg
|
6
|
+
|
7
|
+
def self.from_asserted_hash(hash)
|
8
|
+
new(hash['msg'], hash['kind'], hash['details'], hash['issue_code'])
|
9
|
+
end
|
10
|
+
|
11
|
+
def _pcore_init_hash
|
12
|
+
result = { 'msg' => @msg }
|
13
|
+
result['kind'] = @kind unless @kind.nil?
|
14
|
+
result['details'] = @details unless @details.nil?
|
15
|
+
result['issue_code'] = @issue_code unless @issue_code.nil?
|
16
|
+
result
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(msg, kind = nil, details = nil, issue_code = nil)
|
20
|
+
@msg = msg
|
21
|
+
@kind = kind
|
22
|
+
@details = details
|
23
|
+
@issue_code = issue_code
|
24
|
+
end
|
25
|
+
|
26
|
+
def eql?(o)
|
27
|
+
self.class.equal?(o.class) &&
|
28
|
+
@msg == o.msg &&
|
29
|
+
@kind == o.kind &&
|
30
|
+
@issue_code == o.issue_code &&
|
31
|
+
@details == o.details
|
32
|
+
end
|
33
|
+
alias == eql?
|
34
|
+
|
35
|
+
def hash
|
36
|
+
@msg.hash ^ @kind.hash ^ @issue_code.hash
|
37
|
+
end
|
38
|
+
|
39
|
+
def to_s
|
40
|
+
Puppet::Pops::Types::StringConverter.singleton.convert(self)
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,218 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Data types in the Puppet Language can have implementations written in Ruby
|
4
|
+
# and distributed in puppet modules. A data type can be declared together with
|
5
|
+
# its implementation by creating a file in 'lib/puppet/functions/<modulename>'.
|
6
|
+
# The name of the file must be the downcased name of the data type followed by
|
7
|
+
# the extension '.rb'.
|
8
|
+
#
|
9
|
+
# A data type is created by calling {Puppet::DataTypes.create_type(<type name>)}
|
10
|
+
# and passing it a block that defines the data type interface and implementation.
|
11
|
+
#
|
12
|
+
# Data types are namespaced inside the modules that contains them. The name of the
|
13
|
+
# data type is prefixed with the name of the module. As with all type names, each
|
14
|
+
# segment of the name must start with an uppercase letter.
|
15
|
+
#
|
16
|
+
# @example A simple data type
|
17
|
+
# Puppet::DataTypes.create_type('Auth::User') do
|
18
|
+
# interface <<-PUPPET
|
19
|
+
# attributes => {
|
20
|
+
# name => String,
|
21
|
+
# email => String
|
22
|
+
# }
|
23
|
+
# PUPPET
|
24
|
+
# end
|
25
|
+
#
|
26
|
+
# The above example does not declare an implementation which makes it equivalent
|
27
|
+
# to adding the following contents in a file named 'user.pp' under the 'types' directory
|
28
|
+
# of the module root.
|
29
|
+
#
|
30
|
+
# type Auth::User = Object[
|
31
|
+
# attributes => {
|
32
|
+
# name => String,
|
33
|
+
# email => String
|
34
|
+
# }]
|
35
|
+
#
|
36
|
+
# Both declarations are valid and will be found by the module loader.
|
37
|
+
#
|
38
|
+
# Structure of a data type
|
39
|
+
# ---
|
40
|
+
#
|
41
|
+
# A Data Type consists of an interface and an implementation. Unless a registered implementation
|
42
|
+
# is found, the type system will automatically generate one. An automatically generated
|
43
|
+
# implementation is all that is needed when the interface fully defines the behaviour (for
|
44
|
+
# example in the common case when the data type has no other behaviour than having attributes).
|
45
|
+
#
|
46
|
+
# When the automatically generated implementation is not sufficient, one must be implemented and
|
47
|
+
# registered. The implementation can either be done next to the interface definition by passing
|
48
|
+
# a block to `implementation`, or map to an existing implementation class by passing the class
|
49
|
+
# as an argument to `implementation_class`. An implementation class does not have to be special
|
50
|
+
# in other respects than that it must implemented the type's interface. This makes it possible
|
51
|
+
# to use existing Ruby data types as data types in the puppet language.
|
52
|
+
#
|
53
|
+
# Note that when using `implementation_class` there can only be one such implementation across
|
54
|
+
# all environments managed by one puppet server and you must handle and install these
|
55
|
+
# implementations as if they are part of the puppet platform. In contrast; the type
|
56
|
+
# implementations that are done inside of the type's definition are safe to use in different
|
57
|
+
# versions in different environments (given that they do not need additional external logic to
|
58
|
+
# be loaded).
|
59
|
+
#
|
60
|
+
# When using an `implementation_class` it is sometimes desirable to load this class from the
|
61
|
+
# 'lib' directory of the module. The method `load_file` is provided to facilitate such a load.
|
62
|
+
# The `load_file` will use the `Puppet::Util::Autoload` to search for the given file in the 'lib'
|
63
|
+
# directory of the current environment and the 'lib' directory in each included module.
|
64
|
+
#
|
65
|
+
# @example Adding implementation on top of the generated type using `implementation`
|
66
|
+
# Puppet::DataTypes.create_type('Auth::User') do
|
67
|
+
# interface <<-PUPPET
|
68
|
+
# attributes => {
|
69
|
+
# name => String,
|
70
|
+
# email => String,
|
71
|
+
# year_of_birth => Integer,
|
72
|
+
# age => { type => Integer, kind => derived }
|
73
|
+
# }
|
74
|
+
# PUPPET
|
75
|
+
#
|
76
|
+
# implementation do
|
77
|
+
# def age
|
78
|
+
# DateTime.now.year - @year_of_birth
|
79
|
+
# end
|
80
|
+
# end
|
81
|
+
# end
|
82
|
+
#
|
83
|
+
# @example Appointing an already existing implementation class
|
84
|
+
#
|
85
|
+
# Assumes the following class is declared under 'lib/puppetx/auth' in the module:
|
86
|
+
#
|
87
|
+
# class PuppetX::Auth::User
|
88
|
+
# attr_reader :name, :year_of_birth
|
89
|
+
# def initialize(name, year_of_birth)
|
90
|
+
# @name = name
|
91
|
+
# @year_of_birth = year_of_birth
|
92
|
+
# end
|
93
|
+
#
|
94
|
+
# def age
|
95
|
+
# DateTime.now.year - @year_of_birth
|
96
|
+
# end
|
97
|
+
#
|
98
|
+
# def send_text(sender, text)
|
99
|
+
# sender.send_text_from(@name, text)
|
100
|
+
# end
|
101
|
+
# end
|
102
|
+
#
|
103
|
+
# Then the type declaration can look like this:
|
104
|
+
#
|
105
|
+
# Puppet::DataTypes.create_type('Auth::User') do
|
106
|
+
# interface <<-PUPPET
|
107
|
+
# attributes => {
|
108
|
+
# name => String,
|
109
|
+
# email => String,
|
110
|
+
# year_of_birth => Integer,
|
111
|
+
# age => { type => Integer, kind => derived }
|
112
|
+
# },
|
113
|
+
# functions => {
|
114
|
+
# send_text => Callable[Sender, String[1]]
|
115
|
+
# }
|
116
|
+
# PUPPET
|
117
|
+
#
|
118
|
+
# # This load_file is optional and only needed in case
|
119
|
+
# # the implementation is not loaded by other means.
|
120
|
+
# load_file 'puppetx/auth/user'
|
121
|
+
#
|
122
|
+
# implementation_class PuppetX::Auth::User
|
123
|
+
# end
|
124
|
+
#
|
125
|
+
module Puppet::DataTypes
|
126
|
+
def self.create_type(type_name, &block)
|
127
|
+
# Ruby < 2.1.0 does not have method on Binding, can only do eval
|
128
|
+
# and it will fail unless protected with an if defined? if the local
|
129
|
+
# variable does not exist in the block's binder.
|
130
|
+
#
|
131
|
+
|
132
|
+
loader = block.binding.eval('loader_injected_arg if defined?(loader_injected_arg)')
|
133
|
+
create_loaded_type(type_name, loader, &block)
|
134
|
+
rescue StandardError => e
|
135
|
+
raise ArgumentError, _("Data Type Load Error for type '%{type_name}': %{message}") % { type_name: type_name, message: e.message }
|
136
|
+
end
|
137
|
+
|
138
|
+
def self.create_loaded_type(type_name, loader, &block)
|
139
|
+
builder = TypeBuilder.new(type_name.to_s)
|
140
|
+
api = TypeBuilderAPI.new(builder).freeze
|
141
|
+
api.instance_eval(&block)
|
142
|
+
builder.create_type(loader)
|
143
|
+
end
|
144
|
+
|
145
|
+
# @api private
|
146
|
+
class TypeBuilder
|
147
|
+
attr_accessor :interface, :implementation, :implementation_class
|
148
|
+
|
149
|
+
def initialize(type_name)
|
150
|
+
@type_name = type_name
|
151
|
+
@implementation = nil
|
152
|
+
@implementation_class = nil
|
153
|
+
end
|
154
|
+
|
155
|
+
def create_type(loader)
|
156
|
+
raise ArgumentError, _('a data type must have an interface') unless @interface.is_a?(String)
|
157
|
+
|
158
|
+
created_type = Puppet::Pops::Types::PObjectType.new(
|
159
|
+
@type_name,
|
160
|
+
Puppet::Pops::Parser::EvaluatingParser.new.parse_string("{ #{@interface} }").body
|
161
|
+
)
|
162
|
+
|
163
|
+
if !@implementation_class.nil?
|
164
|
+
if @implementation_class < Puppet::Pops::Types::PuppetObject
|
165
|
+
@implementation_class.instance_eval do
|
166
|
+
include Puppet::Pops::Types::PuppetObject
|
167
|
+
@_pcore_type = created_type
|
168
|
+
|
169
|
+
def self._pcore_type
|
170
|
+
@_pcore_type
|
171
|
+
end
|
172
|
+
end
|
173
|
+
else
|
174
|
+
Puppet::Pops::Loaders.implementation_registry.register_implementation(created_type, @implementation_class)
|
175
|
+
end
|
176
|
+
created_type.implementation_class = @implementation_class
|
177
|
+
elsif !@implementation.nil?
|
178
|
+
created_type.implementation_override = @implementation
|
179
|
+
end
|
180
|
+
created_type
|
181
|
+
end
|
182
|
+
|
183
|
+
def has_implementation?
|
184
|
+
!(@implementation_class.nil? && @implementation.nil?)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
# The TypeBuilderAPI class exposes only those methods that the builder API provides
|
189
|
+
# @api public
|
190
|
+
class TypeBuilderAPI
|
191
|
+
# @api private
|
192
|
+
def initialize(type_builder)
|
193
|
+
@type_builder = type_builder
|
194
|
+
end
|
195
|
+
|
196
|
+
def interface(type_string)
|
197
|
+
raise ArgumentError, _('a data type can only have one interface') unless @type_builder.interface.nil?
|
198
|
+
|
199
|
+
@type_builder.interface = type_string
|
200
|
+
end
|
201
|
+
|
202
|
+
def implementation(&block)
|
203
|
+
raise ArgumentError, _('a data type can only have one implementation') if @type_builder.has_implementation?
|
204
|
+
|
205
|
+
@type_builder.implementation = block
|
206
|
+
end
|
207
|
+
|
208
|
+
def implementation_class(ruby_class)
|
209
|
+
raise ArgumentError, _('a data type can only have one implementation') if @type_builder.has_implementation?
|
210
|
+
|
211
|
+
@type_builder.implementation_class = ruby_class
|
212
|
+
end
|
213
|
+
|
214
|
+
def load_file(file_name)
|
215
|
+
Puppet::Util::Autoload.load_file(file_name, Puppet.lookup(:current_environment))
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|