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,331 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Provides utility functions to help interface Puppet to SELinux.
|
4
|
+
#
|
5
|
+
# This requires the very new SELinux Ruby bindings. These bindings closely
|
6
|
+
# mirror the SELinux C library interface.
|
7
|
+
#
|
8
|
+
# Support for the command line tools is not provided because the performance
|
9
|
+
# was abysmal. At this time (2008-11-02) the only distribution providing
|
10
|
+
# these Ruby SELinux bindings which I am aware of is Fedora (in libselinux-ruby).
|
11
|
+
|
12
|
+
Puppet.features.selinux? # check, but continue even if it's not
|
13
|
+
|
14
|
+
require 'pathname'
|
15
|
+
|
16
|
+
module Puppet::Util::SELinux
|
17
|
+
S_IFREG = 0o100000
|
18
|
+
S_IFDIR = 0o040000
|
19
|
+
S_IFLNK = 0o120000
|
20
|
+
|
21
|
+
def self.selinux_support?
|
22
|
+
return false unless defined?(Selinux)
|
23
|
+
if Selinux.is_selinux_enabled == 1
|
24
|
+
return true
|
25
|
+
end
|
26
|
+
|
27
|
+
false
|
28
|
+
end
|
29
|
+
|
30
|
+
def selinux_support?
|
31
|
+
Puppet::Util::SELinux.selinux_support?
|
32
|
+
end
|
33
|
+
|
34
|
+
# Retrieve and return the full context of the file. If we don't have
|
35
|
+
# SELinux support or if the SELinux call fails then return nil.
|
36
|
+
def get_selinux_current_context(file)
|
37
|
+
return nil unless selinux_support?
|
38
|
+
|
39
|
+
retval = Selinux.lgetfilecon(file)
|
40
|
+
if retval == -1
|
41
|
+
return nil
|
42
|
+
end
|
43
|
+
|
44
|
+
retval[1]
|
45
|
+
end
|
46
|
+
|
47
|
+
# Retrieve and return the default context of the file. If we don't have
|
48
|
+
# SELinux support or if the SELinux call fails to file a default then return nil.
|
49
|
+
# @deprecated matchpathcon is a deprecated method, selabel_lookup is preferred
|
50
|
+
def get_selinux_default_context(file, resource_ensure = nil)
|
51
|
+
return nil unless selinux_support?
|
52
|
+
# If the filesystem has no support for SELinux labels, return a default of nil
|
53
|
+
# instead of what matchpathcon would return
|
54
|
+
return nil unless selinux_label_support?(file)
|
55
|
+
|
56
|
+
# If the file exists we should pass the mode to matchpathcon for the most specific
|
57
|
+
# matching. If not, we can pass a mode of 0.
|
58
|
+
mode = file_mode(file, resource_ensure)
|
59
|
+
|
60
|
+
retval = Selinux.matchpathcon(file, mode)
|
61
|
+
retval == -1 ? nil : retval[1]
|
62
|
+
end
|
63
|
+
|
64
|
+
# Retrieve and return the default context of the file using an selinux handle.
|
65
|
+
# If we don't have SELinux support or if the SELinux call fails to file a
|
66
|
+
# default then return nil.
|
67
|
+
def get_selinux_default_context_with_handle(file, handle, resource_ensure = nil)
|
68
|
+
return nil unless selinux_support?
|
69
|
+
# If the filesystem has no support for SELinux labels, return a default of nil
|
70
|
+
# instead of what selabel_lookup would return
|
71
|
+
return nil unless selinux_label_support?(file)
|
72
|
+
|
73
|
+
# Handle is needed for selabel_lookup
|
74
|
+
raise ArgumentError, _("Cannot get default context with nil handle") unless handle
|
75
|
+
|
76
|
+
# If the file exists we should pass the mode to selabel_lookup for the most specific
|
77
|
+
# matching. If not, we can pass a mode of 0.
|
78
|
+
mode = file_mode(file, resource_ensure)
|
79
|
+
|
80
|
+
retval = Selinux.selabel_lookup(handle, file, mode)
|
81
|
+
retval == -1 ? nil : retval[1]
|
82
|
+
end
|
83
|
+
|
84
|
+
# Take the full SELinux context returned from the tools and parse it
|
85
|
+
# out to the three (or four) component parts. Supports :seluser, :selrole,
|
86
|
+
# :seltype, and on systems with range support, :selrange.
|
87
|
+
def parse_selinux_context(component, context)
|
88
|
+
if context.nil? or context == "unlabeled"
|
89
|
+
return nil
|
90
|
+
end
|
91
|
+
|
92
|
+
components = /^([^\s:]+):([^\s:]+):([^\s:]+)(?::([\sa-zA-Z0-9:,._-]+))?$/.match(context)
|
93
|
+
unless components
|
94
|
+
raise Puppet::Error, _("Invalid context to parse: %{context}") % { context: context }
|
95
|
+
end
|
96
|
+
|
97
|
+
case component
|
98
|
+
when :seluser
|
99
|
+
components[1]
|
100
|
+
when :selrole
|
101
|
+
components[2]
|
102
|
+
when :seltype
|
103
|
+
components[3]
|
104
|
+
when :selrange
|
105
|
+
components[4]
|
106
|
+
else
|
107
|
+
raise Puppet::Error, _("Invalid SELinux parameter type")
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
# This updates the actual SELinux label on the file. You can update
|
112
|
+
# only a single component or update the entire context.
|
113
|
+
# The caveat is that since setting a partial context makes no sense the
|
114
|
+
# file has to already exist. Puppet (via the File resource) will always
|
115
|
+
# just try to set components, even if all values are specified by the manifest.
|
116
|
+
# I believe that the OS should always provide at least a fall-through context
|
117
|
+
# though on any well-running system.
|
118
|
+
def set_selinux_context(file, value, component = false)
|
119
|
+
return nil unless selinux_support? && selinux_label_support?(file)
|
120
|
+
|
121
|
+
if component
|
122
|
+
# Must first get existing context to replace a single component
|
123
|
+
context = Selinux.lgetfilecon(file)[1]
|
124
|
+
if context == -1
|
125
|
+
# We can't set partial context components when no context exists
|
126
|
+
# unless/until we can find a way to make Puppet call this method
|
127
|
+
# once for all selinux file label attributes.
|
128
|
+
Puppet.warning _("Can't set SELinux context on file unless the file already has some kind of context")
|
129
|
+
return nil
|
130
|
+
end
|
131
|
+
context = context.split(':')
|
132
|
+
case component
|
133
|
+
when :seluser
|
134
|
+
context[0] = value
|
135
|
+
when :selrole
|
136
|
+
context[1] = value
|
137
|
+
when :seltype
|
138
|
+
context[2] = value
|
139
|
+
when :selrange
|
140
|
+
context[3] = value
|
141
|
+
else
|
142
|
+
raise ArgumentError, _("set_selinux_context component must be one of :seluser, :selrole, :seltype, or :selrange")
|
143
|
+
end
|
144
|
+
context = context.join(':')
|
145
|
+
else
|
146
|
+
context = value
|
147
|
+
end
|
148
|
+
|
149
|
+
retval = Selinux.lsetfilecon(file, context)
|
150
|
+
if retval == 0
|
151
|
+
true
|
152
|
+
else
|
153
|
+
Puppet.warning _("Failed to set SELinux context %{context} on %{file}") % { context: context, file: file }
|
154
|
+
false
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
# Since this call relies on get_selinux_default_context it also needs a
|
159
|
+
# full non-relative path to the file. Fortunately, that seems to be all
|
160
|
+
# Puppet uses. This will set the file's SELinux context to the policy's
|
161
|
+
# default context (if any) if it differs from the context currently on
|
162
|
+
# the file.
|
163
|
+
def set_selinux_default_context(file, resource_ensure = nil)
|
164
|
+
new_context = get_selinux_default_context(file, resource_ensure)
|
165
|
+
return nil unless new_context
|
166
|
+
|
167
|
+
cur_context = get_selinux_current_context(file)
|
168
|
+
if new_context != cur_context
|
169
|
+
set_selinux_context(file, new_context)
|
170
|
+
return new_context
|
171
|
+
end
|
172
|
+
nil
|
173
|
+
end
|
174
|
+
|
175
|
+
##
|
176
|
+
# selinux_category_to_label is an internal method that converts all
|
177
|
+
# selinux categories to their internal representation, avoiding
|
178
|
+
# potential issues when mcstransd is not functional.
|
179
|
+
#
|
180
|
+
# It is not marked private because it is needed by File's
|
181
|
+
# selcontext.rb, but it is not intended for use outside of Puppet's
|
182
|
+
# code.
|
183
|
+
#
|
184
|
+
# @param category [String] An selinux category, such as "s0" or "SystemLow"
|
185
|
+
#
|
186
|
+
# @return [String] the numeric category name, such as "s0"
|
187
|
+
def selinux_category_to_label(category)
|
188
|
+
# We don't cache this, but there's already a ton of duplicate work
|
189
|
+
# in the selinux handling code.
|
190
|
+
|
191
|
+
path = Selinux.selinux_translations_path
|
192
|
+
begin
|
193
|
+
File.open(path).each do |line|
|
194
|
+
line.strip!
|
195
|
+
next if line.empty?
|
196
|
+
next if line[0] == "#" # skip comments
|
197
|
+
|
198
|
+
line.gsub!(/[[:space:]]+/m, '')
|
199
|
+
mapping = line.split("=", 2)
|
200
|
+
if category == mapping[1]
|
201
|
+
return mapping[0]
|
202
|
+
end
|
203
|
+
end
|
204
|
+
rescue SystemCallError => ex
|
205
|
+
log_exception(ex)
|
206
|
+
raise Puppet::Error, _("Could not open SELinux category translation file %{path}.") % { context: context }
|
207
|
+
end
|
208
|
+
|
209
|
+
category
|
210
|
+
end
|
211
|
+
|
212
|
+
########################################################################
|
213
|
+
# Internal helper methods from here on in, kids. Don't fiddle.
|
214
|
+
private
|
215
|
+
|
216
|
+
# Check filesystem a path resides on for SELinux support against
|
217
|
+
# whitelist of known-good filesystems.
|
218
|
+
# Returns true if the filesystem can support SELinux labels and
|
219
|
+
# false if not.
|
220
|
+
def selinux_label_support?(file)
|
221
|
+
fstype = find_fs(file)
|
222
|
+
return false if fstype.nil?
|
223
|
+
|
224
|
+
filesystems = %w[ext2 ext3 ext4 gfs gfs2 xfs jfs btrfs tmpfs zfs]
|
225
|
+
filesystems.include?(fstype)
|
226
|
+
end
|
227
|
+
|
228
|
+
# Get mode file type bits set based on ensure on
|
229
|
+
# the file resource. This helps SELinux determine
|
230
|
+
# what context a new resource being created should have.
|
231
|
+
def get_create_mode(resource_ensure)
|
232
|
+
mode = 0
|
233
|
+
case resource_ensure
|
234
|
+
when :present, :file
|
235
|
+
mode |= S_IFREG
|
236
|
+
when :directory
|
237
|
+
mode |= S_IFDIR
|
238
|
+
when :link
|
239
|
+
mode |= S_IFLNK
|
240
|
+
end
|
241
|
+
mode
|
242
|
+
end
|
243
|
+
|
244
|
+
# If the file/directory/symlink exists, return its mode. Otherwise, get the default mode
|
245
|
+
# that should be used to create the file/directory/symlink taking into account the desired
|
246
|
+
# file type specified in +resource_ensure+.
|
247
|
+
def file_mode(file, resource_ensure)
|
248
|
+
filestat = file_lstat(file)
|
249
|
+
filestat.mode
|
250
|
+
rescue Errno::EACCES
|
251
|
+
0
|
252
|
+
rescue Errno::ENOENT
|
253
|
+
if resource_ensure
|
254
|
+
get_create_mode(resource_ensure)
|
255
|
+
else
|
256
|
+
0
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
# Internal helper function to read and parse /proc/mounts
|
261
|
+
def read_mounts
|
262
|
+
mounts = ''.dup
|
263
|
+
begin
|
264
|
+
if File.method_defined? "read_nonblock"
|
265
|
+
# If possible we use read_nonblock in a loop rather than read to work-
|
266
|
+
# a linux kernel bug. See ticket #1963 for details.
|
267
|
+
mountfh = File.new("/proc/mounts")
|
268
|
+
loop do
|
269
|
+
mounts += mountfh.read_nonblock(1024)
|
270
|
+
end
|
271
|
+
else
|
272
|
+
# Otherwise we shell out and let cat do it for us
|
273
|
+
mountfh = IO.popen("/bin/cat /proc/mounts")
|
274
|
+
mounts = mountfh.read
|
275
|
+
end
|
276
|
+
rescue EOFError
|
277
|
+
# that's expected
|
278
|
+
rescue
|
279
|
+
return nil
|
280
|
+
ensure
|
281
|
+
mountfh.close if mountfh
|
282
|
+
end
|
283
|
+
|
284
|
+
mntpoint = {}
|
285
|
+
|
286
|
+
# Read all entries in /proc/mounts. The second column is the
|
287
|
+
# mountpoint and the third column is the filesystem type.
|
288
|
+
# We skip rootfs because it is always mounted at /
|
289
|
+
mounts.each_line do |line|
|
290
|
+
params = line.split(' ')
|
291
|
+
next if params[2] == 'rootfs'
|
292
|
+
|
293
|
+
mntpoint[params[1]] = params[2]
|
294
|
+
end
|
295
|
+
mntpoint
|
296
|
+
end
|
297
|
+
|
298
|
+
# Internal helper function to return which type of filesystem a given file
|
299
|
+
# path resides on
|
300
|
+
def find_fs(path)
|
301
|
+
mounts = read_mounts
|
302
|
+
return nil unless mounts
|
303
|
+
|
304
|
+
# cleanpath eliminates useless parts of the path (like '.', or '..', or
|
305
|
+
# multiple slashes), without touching the filesystem, and without
|
306
|
+
# following symbolic links. This gives the right (logical) tree to follow
|
307
|
+
# while we try and figure out what file-system the target lives on.
|
308
|
+
path = Pathname(path).cleanpath
|
309
|
+
unless path.absolute?
|
310
|
+
raise Puppet::DevError, _("got a relative path in SELinux find_fs: %{path}") % { path: path }
|
311
|
+
end
|
312
|
+
|
313
|
+
# Now, walk up the tree until we find a match for that path in the hash.
|
314
|
+
path.ascend do |segment|
|
315
|
+
return mounts[segment.to_s] if mounts.has_key?(segment.to_s)
|
316
|
+
end
|
317
|
+
|
318
|
+
# Should never be reached...
|
319
|
+
mounts['/']
|
320
|
+
end
|
321
|
+
|
322
|
+
##
|
323
|
+
# file_lstat is an internal, private method to allow precise stubbing and
|
324
|
+
# mocking without affecting the rest of the system.
|
325
|
+
#
|
326
|
+
# @return [File::Stat] File.lstat result
|
327
|
+
def file_lstat(path)
|
328
|
+
Puppet::FileSystem.lstat(path)
|
329
|
+
end
|
330
|
+
private :file_lstat
|
331
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../puppet/util/tagging'
|
4
|
+
|
5
|
+
class Puppet::Util::SkipTags
|
6
|
+
include Puppet::Util::Tagging
|
7
|
+
|
8
|
+
def initialize(stags)
|
9
|
+
self.tags = stags unless defined?(@tags)
|
10
|
+
end
|
11
|
+
|
12
|
+
def split_qualified_tags?
|
13
|
+
false
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Handle splay options (sleeping for a random interval before executing)
|
4
|
+
module Puppet::Util::Splayer
|
5
|
+
# Have we splayed already?
|
6
|
+
def splayed?
|
7
|
+
!!@splayed
|
8
|
+
end
|
9
|
+
|
10
|
+
# Sleep when splay is enabled; else just return.
|
11
|
+
def splay(do_splay = Puppet[:splay])
|
12
|
+
return unless do_splay
|
13
|
+
return if splayed?
|
14
|
+
|
15
|
+
time = rand(Puppet[:splaylimit] + 1)
|
16
|
+
Puppet.info _("Sleeping for %{time} seconds (splay is enabled)") % { time: time }
|
17
|
+
sleep(time)
|
18
|
+
@splayed = true
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
require 'singleton'
|
5
|
+
require_relative '../../puppet/util/yaml'
|
6
|
+
|
7
|
+
# a class for storing state
|
8
|
+
class Puppet::Util::Storage
|
9
|
+
include Singleton
|
10
|
+
include Puppet::Util
|
11
|
+
|
12
|
+
def self.state
|
13
|
+
@@state
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
self.class.load
|
18
|
+
end
|
19
|
+
|
20
|
+
# Return a hash that will be stored to disk. It's worth noting
|
21
|
+
# here that we use the object's full path, not just the name/type
|
22
|
+
# combination. At the least, this is useful for those non-isomorphic
|
23
|
+
# types like exec, but it also means that if an object changes locations
|
24
|
+
# in the configuration it will lose its cache.
|
25
|
+
def self.cache(object)
|
26
|
+
if object.is_a?(Symbol)
|
27
|
+
name = object
|
28
|
+
else
|
29
|
+
name = object.to_s
|
30
|
+
end
|
31
|
+
|
32
|
+
@@state[name] ||= {}
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.clear
|
36
|
+
@@state.clear
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.init
|
40
|
+
@@state = {}
|
41
|
+
end
|
42
|
+
|
43
|
+
init
|
44
|
+
|
45
|
+
def self.load
|
46
|
+
Puppet.settings.use(:main) unless FileTest.directory?(Puppet[:statedir])
|
47
|
+
filename = Puppet[:statefile]
|
48
|
+
|
49
|
+
unless Puppet::FileSystem.exist?(filename)
|
50
|
+
init if @@state.nil?
|
51
|
+
return
|
52
|
+
end
|
53
|
+
unless File.file?(filename)
|
54
|
+
Puppet.warning(_("Checksumfile %{filename} is not a file, ignoring") % { filename: filename })
|
55
|
+
return
|
56
|
+
end
|
57
|
+
Puppet::Util.benchmark(:debug, "Loaded state in %{seconds} seconds") do
|
58
|
+
@@state = Puppet::Util::Yaml.safe_load_file(filename, [Symbol, Time])
|
59
|
+
rescue Puppet::Util::Yaml::YamlLoadError => detail
|
60
|
+
Puppet.err _("Checksumfile %{filename} is corrupt (%{detail}); replacing") % { filename: filename, detail: detail }
|
61
|
+
|
62
|
+
begin
|
63
|
+
File.rename(filename, filename + ".bad")
|
64
|
+
rescue
|
65
|
+
raise Puppet::Error, _("Could not rename corrupt %{filename}; remove manually") % { filename: filename }, detail.backtrace
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
unless @@state.is_a?(Hash)
|
70
|
+
Puppet.err _("State got corrupted")
|
71
|
+
init
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.stateinspect
|
76
|
+
@@state.inspect
|
77
|
+
end
|
78
|
+
|
79
|
+
def self.store
|
80
|
+
Puppet.debug "Storing state"
|
81
|
+
|
82
|
+
Puppet.info _("Creating state file %{file}") % { file: Puppet[:statefile] } unless Puppet::FileSystem.exist?(Puppet[:statefile])
|
83
|
+
|
84
|
+
if Puppet[:statettl] == 0 || Puppet[:statettl] == Float::INFINITY
|
85
|
+
Puppet.debug "Not pruning old state cache entries"
|
86
|
+
else
|
87
|
+
Puppet::Util.benchmark(:debug, "Pruned old state cache entries in %{seconds} seconds") do
|
88
|
+
ttl_cutoff = Time.now - Puppet[:statettl]
|
89
|
+
|
90
|
+
@@state.reject! do |k, _v|
|
91
|
+
@@state[k][:checked] && @@state[k][:checked] < ttl_cutoff
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
Puppet::Util.benchmark(:debug, "Stored state in %{seconds} seconds") do
|
97
|
+
Puppet::Util::Yaml.dump(@@state, Puppet[:statefile])
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,167 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../puppet/util/warnings'
|
4
|
+
require 'forwardable'
|
5
|
+
require 'etc'
|
6
|
+
|
7
|
+
module Puppet::Util::SUIDManager
|
8
|
+
include Puppet::Util::Warnings
|
9
|
+
extend Forwardable
|
10
|
+
|
11
|
+
# Note groups= is handled specially due to a bug in OS X 10.6, 10.7,
|
12
|
+
# and probably upcoming releases...
|
13
|
+
to_delegate_to_process = [:euid=, :euid, :egid=, :egid, :uid=, :uid, :gid=, :gid, :groups]
|
14
|
+
|
15
|
+
to_delegate_to_process.each do |method|
|
16
|
+
def_delegator Process, method
|
17
|
+
module_function method
|
18
|
+
end
|
19
|
+
|
20
|
+
def osx_maj_ver
|
21
|
+
return @osx_maj_ver unless @osx_maj_ver.nil?
|
22
|
+
|
23
|
+
@osx_maj_ver = Puppet.runtime[:facter].value('os.macosx.version.major') || false
|
24
|
+
end
|
25
|
+
module_function :osx_maj_ver
|
26
|
+
|
27
|
+
def groups=(grouplist)
|
28
|
+
Process.groups = grouplist
|
29
|
+
rescue Errno::EINVAL => e
|
30
|
+
# We catch Errno::EINVAL as some operating systems (OS X in particular) can
|
31
|
+
# cause troubles when using Process#groups= to change *this* user / process
|
32
|
+
# list of supplementary groups membership. This is done via Ruby's function
|
33
|
+
# "static VALUE proc_setgroups(VALUE obj, VALUE ary)" which is effectively
|
34
|
+
# a wrapper for "int setgroups(size_t size, const gid_t *list)" (part of SVr4
|
35
|
+
# and 4.3BSD but not in POSIX.1-2001) that fails and sets errno to EINVAL.
|
36
|
+
#
|
37
|
+
# This does not appear to be a problem with Ruby but rather an issue on the
|
38
|
+
# operating system side. Therefore we catch the exception and look whether
|
39
|
+
# we run under OS X or not -- if so, then we acknowledge the problem and
|
40
|
+
# re-throw the exception otherwise.
|
41
|
+
if !osx_maj_ver || osx_maj_ver.empty?
|
42
|
+
raise e
|
43
|
+
end
|
44
|
+
end
|
45
|
+
module_function :groups=
|
46
|
+
|
47
|
+
def self.root?
|
48
|
+
if Puppet::Util::Platform.windows?
|
49
|
+
require_relative '../../puppet/util/windows/user'
|
50
|
+
Puppet::Util::Windows::User.admin?
|
51
|
+
else
|
52
|
+
Process.uid == 0
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Methods to handle changing uid/gid of the running process. In general,
|
57
|
+
# these will noop or fail on Windows, and require root to change to anything
|
58
|
+
# but the current uid/gid (which is a noop).
|
59
|
+
|
60
|
+
# Runs block setting euid and egid if provided then restoring original ids.
|
61
|
+
# If running on Windows or without root, the block will be run with the
|
62
|
+
# current euid/egid.
|
63
|
+
def asuser(new_uid = nil, new_gid = nil)
|
64
|
+
return yield if Puppet::Util::Platform.windows?
|
65
|
+
return yield unless root?
|
66
|
+
return yield unless new_uid or new_gid
|
67
|
+
|
68
|
+
old_euid = euid
|
69
|
+
old_egid = egid
|
70
|
+
begin
|
71
|
+
change_privileges(new_uid, new_gid, false)
|
72
|
+
|
73
|
+
yield
|
74
|
+
ensure
|
75
|
+
change_privileges(new_uid ? old_euid : nil, old_egid, false)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
module_function :asuser
|
79
|
+
|
80
|
+
# If `permanently` is set, will permanently change the uid/gid of the
|
81
|
+
# process. If not, it will only set the euid/egid. If only uid is supplied,
|
82
|
+
# the primary group of the supplied gid will be used. If only gid is
|
83
|
+
# supplied, only gid will be changed. This method will fail if used on
|
84
|
+
# Windows.
|
85
|
+
def change_privileges(uid = nil, gid = nil, permanently = false)
|
86
|
+
return unless uid or gid
|
87
|
+
|
88
|
+
unless gid
|
89
|
+
uid = convert_xid(:uid, uid)
|
90
|
+
gid = Etc.getpwuid(uid).gid
|
91
|
+
end
|
92
|
+
|
93
|
+
change_group(gid, permanently)
|
94
|
+
change_user(uid, permanently) if uid
|
95
|
+
end
|
96
|
+
module_function :change_privileges
|
97
|
+
|
98
|
+
# Changes the egid of the process if `permanently` is not set, otherwise
|
99
|
+
# changes gid. This method will fail if used on Windows, or attempting to
|
100
|
+
# change to a different gid without root.
|
101
|
+
def change_group(group, permanently = false)
|
102
|
+
gid = convert_xid(:gid, group)
|
103
|
+
raise Puppet::Error, _("No such group %{group}") % { group: group } unless gid
|
104
|
+
|
105
|
+
return if Process.egid == gid
|
106
|
+
|
107
|
+
if permanently
|
108
|
+
Process::GID.change_privilege(gid)
|
109
|
+
else
|
110
|
+
Process.egid = gid
|
111
|
+
end
|
112
|
+
end
|
113
|
+
module_function :change_group
|
114
|
+
|
115
|
+
# As change_group, but operates on uids. If changing user permanently,
|
116
|
+
# supplementary groups will be set the to default groups for the new uid.
|
117
|
+
def change_user(user, permanently = false)
|
118
|
+
uid = convert_xid(:uid, user)
|
119
|
+
raise Puppet::Error, _("No such user %{user}") % { user: user } unless uid
|
120
|
+
|
121
|
+
return if Process.euid == uid
|
122
|
+
|
123
|
+
if permanently
|
124
|
+
# If changing uid, we must be root. So initgroups first here.
|
125
|
+
initgroups(uid)
|
126
|
+
|
127
|
+
Process::UID.change_privilege(uid)
|
128
|
+
elsif Process.euid == 0
|
129
|
+
# We must be root to initgroups, so initgroups before dropping euid if
|
130
|
+
# we're root, otherwise elevate euid before initgroups.
|
131
|
+
# change euid (to root) first.
|
132
|
+
initgroups(uid)
|
133
|
+
Process.euid = uid
|
134
|
+
else
|
135
|
+
Process.euid = uid
|
136
|
+
initgroups(uid)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
module_function :change_user
|
140
|
+
|
141
|
+
# Make sure the passed argument is a number.
|
142
|
+
def convert_xid(type, id)
|
143
|
+
return id if id.is_a? Integer
|
144
|
+
|
145
|
+
map = { :gid => :group, :uid => :user }
|
146
|
+
raise ArgumentError, _("Invalid id type %{type}") % { type: type } unless map.include?(type)
|
147
|
+
|
148
|
+
ret = Puppet::Util.send(type, id)
|
149
|
+
if ret.nil?
|
150
|
+
raise Puppet::Error, _("Invalid %{klass}: %{id}") % { klass: map[type], id: id }
|
151
|
+
end
|
152
|
+
|
153
|
+
ret
|
154
|
+
end
|
155
|
+
module_function :convert_xid
|
156
|
+
|
157
|
+
# Initialize primary and supplemental groups to those of the target user. We
|
158
|
+
# take the UID and manually look up their details in the system database,
|
159
|
+
# including username and primary group. This method will fail on Windows, or
|
160
|
+
# if used without root to initgroups of another user.
|
161
|
+
def initgroups(uid)
|
162
|
+
pwent = Etc.getpwuid(uid)
|
163
|
+
Process.initgroups(pwent.name, pwent.gid)
|
164
|
+
end
|
165
|
+
|
166
|
+
module_function :initgroups
|
167
|
+
end
|