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,322 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'timeout'
|
4
|
+
|
5
|
+
# Solaris 10 SMF-style services.
|
6
|
+
Puppet::Type.type(:service).provide :smf, :parent => :base do
|
7
|
+
desc <<-EOT
|
8
|
+
Support for Sun's new Service Management Framework.
|
9
|
+
|
10
|
+
When managing the enable property, this provider will try to preserve
|
11
|
+
the previous ensure state per the enableable semantics. On Solaris,
|
12
|
+
enabling a service starts it up while disabling a service stops it. Thus,
|
13
|
+
there's a chance for this provider to execute two operations when managing
|
14
|
+
the enable property. For example, if enable is set to true and the ensure
|
15
|
+
state is stopped, this provider will manage the service using two operations:
|
16
|
+
one to enable the service which will start it up, and another to stop the
|
17
|
+
service (without affecting its enabled status).
|
18
|
+
|
19
|
+
By specifying `manifest => "/path/to/service.xml"`, the SMF manifest will
|
20
|
+
be imported if it does not exist.
|
21
|
+
EOT
|
22
|
+
|
23
|
+
defaultfor 'os.family' => :solaris
|
24
|
+
|
25
|
+
confine 'os.family' => :solaris
|
26
|
+
|
27
|
+
commands :adm => "/usr/sbin/svcadm",
|
28
|
+
:svcs => "/usr/bin/svcs",
|
29
|
+
:svccfg => "/usr/sbin/svccfg"
|
30
|
+
|
31
|
+
has_feature :refreshable
|
32
|
+
|
33
|
+
def self.instances
|
34
|
+
service_instances = svcs("-H", "-o", "state,fmri").split("\n")
|
35
|
+
|
36
|
+
# Puppet does not manage services in the legacy_run state, so filter those out.
|
37
|
+
service_instances.reject! { |line| line =~ /^legacy_run/ }
|
38
|
+
|
39
|
+
service_instances.collect! do |line|
|
40
|
+
state, fmri = line.split(/\s+/)
|
41
|
+
|
42
|
+
status = case state
|
43
|
+
when /online/; :running
|
44
|
+
when /maintenance/; :maintenance
|
45
|
+
when /degraded/; :degraded
|
46
|
+
else :stopped
|
47
|
+
end
|
48
|
+
new({ :name => fmri, :ensure => status })
|
49
|
+
end
|
50
|
+
|
51
|
+
service_instances
|
52
|
+
end
|
53
|
+
|
54
|
+
def initialize(*args)
|
55
|
+
super(*args)
|
56
|
+
|
57
|
+
# This hash contains the properties we need to sync. in our flush method.
|
58
|
+
#
|
59
|
+
# TODO (PUP-9051): Should we use @property_hash here? It seems like
|
60
|
+
# @property_hash should be empty by default and is something we can
|
61
|
+
# control so I think so?
|
62
|
+
@properties_to_sync = {}
|
63
|
+
end
|
64
|
+
|
65
|
+
def service_exists?
|
66
|
+
service_fmri
|
67
|
+
true
|
68
|
+
rescue Puppet::ExecutionFailure
|
69
|
+
false
|
70
|
+
end
|
71
|
+
|
72
|
+
def setup_service
|
73
|
+
return unless @resource[:manifest]
|
74
|
+
return if service_exists?
|
75
|
+
|
76
|
+
Puppet.notice("Importing #{@resource[:manifest]} for #{@resource[:name]}")
|
77
|
+
svccfg(:import, @resource[:manifest])
|
78
|
+
rescue Puppet::ExecutionFailure => detail
|
79
|
+
raise Puppet::Error.new("Cannot config #{@resource[:name]} to enable it: #{detail}", detail)
|
80
|
+
end
|
81
|
+
|
82
|
+
# Returns the service's FMRI. We fail if multiple FMRIs correspond to
|
83
|
+
# @resource[:name].
|
84
|
+
#
|
85
|
+
# If the service does not exist or we fail to get any FMRIs from svcs,
|
86
|
+
# this method will raise a Puppet::Error
|
87
|
+
def service_fmri
|
88
|
+
return @fmri if @fmri
|
89
|
+
|
90
|
+
# `svcs -l` is better to use because we can detect service instances
|
91
|
+
# that have not yet been activated or enabled (i.e. it lets us detect
|
92
|
+
# services that svcadm has not yet touched). `svcs -H -o fmri` is a bit
|
93
|
+
# more limited.
|
94
|
+
lines = svcs("-l", @resource[:name]).chomp.lines.to_a
|
95
|
+
lines.select! { |line| line =~ /^fmri/ }
|
96
|
+
fmris = lines.map! { |line| line.split(' ')[-1].chomp }
|
97
|
+
unless fmris.length == 1
|
98
|
+
raise Puppet::Error, _("Failed to get the FMRI of the %{service} service: The pattern '%{service}' matches multiple FMRIs! These are the FMRIs it matches: %{all_fmris}") % { service: @resource[:name], all_fmris: fmris.join(', ') }
|
99
|
+
end
|
100
|
+
|
101
|
+
@fmri = fmris.first
|
102
|
+
end
|
103
|
+
|
104
|
+
# Returns true if the provider supports incomplete services.
|
105
|
+
def supports_incomplete_services?
|
106
|
+
Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value('os.release.full'), '11.1') >= 0
|
107
|
+
end
|
108
|
+
|
109
|
+
# Returns true if the service is complete. A complete service is a service that
|
110
|
+
# has the general/complete property defined.
|
111
|
+
def complete_service?
|
112
|
+
unless supports_incomplete_services?
|
113
|
+
raise Puppet::Error, _("Cannot query if the %{service} service is complete: The concept of complete/incomplete services was introduced in Solaris 11.1. You are on a Solaris %{release} machine.") % { service: @resource[:name], release: Puppet.runtime[:facter].value('os.release.full') }
|
114
|
+
end
|
115
|
+
|
116
|
+
return @complete_service if @complete_service
|
117
|
+
|
118
|
+
# We need to use the service's FMRI when querying its config. because
|
119
|
+
# general/complete is an instance-specific property.
|
120
|
+
fmri = service_fmri
|
121
|
+
|
122
|
+
# Check if the general/complete property is defined. If it is undefined,
|
123
|
+
# then svccfg will not print anything to the console.
|
124
|
+
property_defn = svccfg("-s", fmri, "listprop", "general/complete").chomp
|
125
|
+
@complete_service = !property_defn.empty?
|
126
|
+
end
|
127
|
+
|
128
|
+
def enable
|
129
|
+
@properties_to_sync[:enable] = true
|
130
|
+
end
|
131
|
+
|
132
|
+
def enabled?
|
133
|
+
return :false unless service_exists?
|
134
|
+
|
135
|
+
_property, _type, value = svccfg("-s", service_fmri, "listprop", "general/enabled").split(' ')
|
136
|
+
value == 'true' ? :true : :false
|
137
|
+
end
|
138
|
+
|
139
|
+
def disable
|
140
|
+
@properties_to_sync[:enable] = false
|
141
|
+
end
|
142
|
+
|
143
|
+
def restartcmd
|
144
|
+
if Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value('os.release.full'), '11.2') >= 0
|
145
|
+
[command(:adm), :restart, "-s", service_fmri]
|
146
|
+
else
|
147
|
+
# Synchronous restart only supported in Solaris 11.2 and above
|
148
|
+
[command(:adm), :restart, service_fmri]
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def service_states
|
153
|
+
# Gets the current and next state of the service. We have a next state because SMF
|
154
|
+
# manages services asynchronously. If there is no 'next' state, svcs will put a '-'
|
155
|
+
# to indicate as such.
|
156
|
+
current_state, next_state = svcs("-H", "-o", "state,nstate", service_fmri).chomp.split(' ')
|
157
|
+
|
158
|
+
{
|
159
|
+
:current => current_state,
|
160
|
+
:next => next_state == "-" ? nil : next_state
|
161
|
+
}
|
162
|
+
end
|
163
|
+
|
164
|
+
# Wait for the service to transition into the specified state before returning.
|
165
|
+
# This is necessary due to the asynchronous nature of SMF services.
|
166
|
+
# desired_states should include only online, offline, disabled, or uninitialized.
|
167
|
+
# See PUP-5474 for long-term solution to this issue.
|
168
|
+
def wait(*desired_states)
|
169
|
+
Timeout.timeout(60) do
|
170
|
+
loop do
|
171
|
+
states = service_states
|
172
|
+
break if desired_states.include?(states[:current]) && states[:next].nil?
|
173
|
+
|
174
|
+
Kernel.sleep(1)
|
175
|
+
end
|
176
|
+
end
|
177
|
+
rescue Timeout::Error
|
178
|
+
raise Puppet::Error, "Timed out waiting for #{@resource[:name]} to transition states"
|
179
|
+
end
|
180
|
+
|
181
|
+
def start
|
182
|
+
@properties_to_sync[:ensure] = :running
|
183
|
+
end
|
184
|
+
|
185
|
+
def stop
|
186
|
+
@properties_to_sync[:ensure] = :stopped
|
187
|
+
end
|
188
|
+
|
189
|
+
def restart
|
190
|
+
# Wait for the service to actually start before returning.
|
191
|
+
super
|
192
|
+
wait('online')
|
193
|
+
end
|
194
|
+
|
195
|
+
def status
|
196
|
+
return super if @resource[:status]
|
197
|
+
|
198
|
+
begin
|
199
|
+
if supports_incomplete_services?
|
200
|
+
unless complete_service?
|
201
|
+
debug _("The %{service} service is incomplete so its status will be reported as :stopped. See `svcs -xv %{fmri}` for more details.") % { service: @resource[:name], fmri: service_fmri }
|
202
|
+
|
203
|
+
return :stopped
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
# Get the current state and the next state. If there is a next state,
|
208
|
+
# use that for the state comparison.
|
209
|
+
states = service_states
|
210
|
+
state = states[:next] || states[:current]
|
211
|
+
rescue Puppet::ExecutionFailure => e
|
212
|
+
# TODO (PUP-8957): Should this be set back to INFO ?
|
213
|
+
debug "Could not get status on service #{name} #{e}"
|
214
|
+
return :stopped
|
215
|
+
end
|
216
|
+
|
217
|
+
case state
|
218
|
+
when "online"
|
219
|
+
:running
|
220
|
+
when "offline", "disabled", "uninitialized"
|
221
|
+
:stopped
|
222
|
+
when "maintenance"
|
223
|
+
:maintenance
|
224
|
+
when "degraded"
|
225
|
+
:degraded
|
226
|
+
when "legacy_run"
|
227
|
+
raise Puppet::Error,
|
228
|
+
"Cannot manage legacy services through SMF"
|
229
|
+
else
|
230
|
+
raise Puppet::Error,
|
231
|
+
"Unmanageable state '#{state}' on service #{name}"
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
# Helper that encapsulates the clear + svcadm [enable|disable]
|
236
|
+
# logic in one place. Makes it easy to test things out and also
|
237
|
+
# cleans up flush's code.
|
238
|
+
def maybe_clear_service_then_svcadm(cur_state, subcmd, flags)
|
239
|
+
# If the cur_state is maint or degraded, then we need to clear the service
|
240
|
+
# before we enable or disable it.
|
241
|
+
adm('clear', service_fmri) if [:maintenance, :degraded].include?(cur_state)
|
242
|
+
adm(subcmd, flags, service_fmri)
|
243
|
+
end
|
244
|
+
|
245
|
+
# The flush method is necessary for the SMF provider because syncing the enable and ensure
|
246
|
+
# properties are not independent operations like they are in most of our other service
|
247
|
+
# providers.
|
248
|
+
def flush
|
249
|
+
# We append the "_" because ensure is a Ruby keyword, and it is good to keep property
|
250
|
+
# variable names consistent with each other.
|
251
|
+
enable_ = @properties_to_sync[:enable]
|
252
|
+
ensure_ = @properties_to_sync[:ensure]
|
253
|
+
|
254
|
+
# All of the relevant properties are in sync., so we do not need to do
|
255
|
+
# anything here.
|
256
|
+
return if enable_.nil? and ensure_.nil?
|
257
|
+
|
258
|
+
# Set-up our service so that we know it will exist and so we can collect its fmri. Also
|
259
|
+
# simplifies the code. For a nonexistent service, one of enable or ensure will be true
|
260
|
+
# here (since we're syncing them), so we can fail early if setup_service fails.
|
261
|
+
setup_service
|
262
|
+
fmri = service_fmri
|
263
|
+
|
264
|
+
# Useful constants for operations involving multiple states
|
265
|
+
stopped = %w[offline disabled uninitialized]
|
266
|
+
|
267
|
+
# Get the current state of the service.
|
268
|
+
cur_state = status
|
269
|
+
|
270
|
+
if enable_.nil?
|
271
|
+
# Only ensure needs to be syncd. The -t flag tells svcadm to temporarily
|
272
|
+
# enable/disable the service, where the temporary status is gone upon
|
273
|
+
# reboot. This is exactly what we want, because we do not want to touch
|
274
|
+
# the enable property.
|
275
|
+
if ensure_ == :stopped
|
276
|
+
maybe_clear_service_then_svcadm(cur_state, 'disable', '-st')
|
277
|
+
wait(*stopped)
|
278
|
+
else # ensure == :running
|
279
|
+
maybe_clear_service_then_svcadm(cur_state, 'enable', '-rst')
|
280
|
+
wait('online')
|
281
|
+
end
|
282
|
+
|
283
|
+
return
|
284
|
+
end
|
285
|
+
|
286
|
+
# Here, enable is being syncd. svcadm starts the service if we enable it, or shuts it down if we
|
287
|
+
# disable it. However, we want our service to be in a final state, which is either whatever the
|
288
|
+
# new ensured value is, or what our original state was prior to enabling it.
|
289
|
+
#
|
290
|
+
# NOTE: Even if you try to set the general/enabled property with svccfg, SMF will still
|
291
|
+
# try to start or shut down the service. Plus, setting general/enabled with svccfg does not
|
292
|
+
# enable the service's dependencies, while svcadm handles this correctly.
|
293
|
+
#
|
294
|
+
# NOTE: We're treating :running and :degraded the same. The reason is b/c an SMF managed service
|
295
|
+
# can only enter the :degraded state if it is online. Since disabling the service also shuts it
|
296
|
+
# off, we cannot set it back to the :degraded state. Thus, it is best to lump :running and :degraded
|
297
|
+
# into the same category to maintain a consistent postcondition on the service's final state when
|
298
|
+
# enabling and disabling it.
|
299
|
+
final_state = ensure_ || cur_state
|
300
|
+
final_state = :running if final_state == :degraded
|
301
|
+
|
302
|
+
if enable_
|
303
|
+
maybe_clear_service_then_svcadm(cur_state, 'enable', '-rs')
|
304
|
+
else
|
305
|
+
maybe_clear_service_then_svcadm(cur_state, 'disable', '-s')
|
306
|
+
end
|
307
|
+
|
308
|
+
# We're safe with 'whens' here since self.status already errors on any
|
309
|
+
# unmanageable states.
|
310
|
+
case final_state
|
311
|
+
when :running
|
312
|
+
adm('enable', '-rst', fmri) unless enable_
|
313
|
+
wait('online')
|
314
|
+
when :stopped
|
315
|
+
adm('disable', '-st', fmri) if enable_
|
316
|
+
wait(*stopped)
|
317
|
+
when :maintenance
|
318
|
+
adm('mark', '-I', 'maintenance', fmri)
|
319
|
+
wait('maintenance')
|
320
|
+
end
|
321
|
+
end
|
322
|
+
end
|
@@ -0,0 +1,147 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'timeout'
|
4
|
+
|
5
|
+
# AIX System Resource controller (SRC)
|
6
|
+
Puppet::Type.type(:service).provide :src, :parent => :base do
|
7
|
+
desc "Support for AIX's System Resource controller.
|
8
|
+
|
9
|
+
Services are started/stopped based on the `stopsrc` and `startsrc`
|
10
|
+
commands, and some services can be refreshed with `refresh` command.
|
11
|
+
|
12
|
+
Enabling and disabling services is not supported, as it requires
|
13
|
+
modifications to `/etc/inittab`. Starting and stopping groups of subsystems
|
14
|
+
is not yet supported.
|
15
|
+
"
|
16
|
+
|
17
|
+
defaultfor 'os.name' => :aix
|
18
|
+
confine 'os.name' => :aix
|
19
|
+
|
20
|
+
optional_commands :stopsrc => "/usr/bin/stopsrc",
|
21
|
+
:startsrc => "/usr/bin/startsrc",
|
22
|
+
:refresh => "/usr/bin/refresh",
|
23
|
+
:lssrc => "/usr/bin/lssrc",
|
24
|
+
:lsitab => "/usr/sbin/lsitab",
|
25
|
+
:mkitab => "/usr/sbin/mkitab",
|
26
|
+
:rmitab => "/usr/sbin/rmitab",
|
27
|
+
:chitab => "/usr/sbin/chitab"
|
28
|
+
|
29
|
+
has_feature :refreshable
|
30
|
+
|
31
|
+
def self.instances
|
32
|
+
services = lssrc('-S')
|
33
|
+
services.split("\n").reject { |x| x.strip.start_with? '#' }.collect do |line|
|
34
|
+
data = line.split(':')
|
35
|
+
service_name = data[0]
|
36
|
+
new(:name => service_name)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def startcmd
|
41
|
+
[command(:startsrc), "-s", @resource[:name]]
|
42
|
+
end
|
43
|
+
|
44
|
+
def stopcmd
|
45
|
+
[command(:stopsrc), "-s", @resource[:name]]
|
46
|
+
end
|
47
|
+
|
48
|
+
def default_runlevel
|
49
|
+
"2"
|
50
|
+
end
|
51
|
+
|
52
|
+
def default_action
|
53
|
+
"once"
|
54
|
+
end
|
55
|
+
|
56
|
+
def enabled?
|
57
|
+
output = execute([command(:lsitab), @resource[:name]], { :failonfail => false, :combine => true })
|
58
|
+
output.exitstatus == 0 ? :true : :false
|
59
|
+
end
|
60
|
+
|
61
|
+
def enable
|
62
|
+
mkitab("%s:%s:%s:%s" % [@resource[:name], default_runlevel, default_action, startcmd.join(" ")])
|
63
|
+
end
|
64
|
+
|
65
|
+
def disable
|
66
|
+
rmitab(@resource[:name])
|
67
|
+
end
|
68
|
+
|
69
|
+
# Wait for the service to transition into the specified state before returning.
|
70
|
+
# This is necessary due to the asynchronous nature of AIX services.
|
71
|
+
# desired_state should either be :running or :stopped.
|
72
|
+
def wait(desired_state)
|
73
|
+
Timeout.timeout(60) do
|
74
|
+
loop do
|
75
|
+
status = self.status
|
76
|
+
break if status == desired_state.to_sym
|
77
|
+
|
78
|
+
sleep(1)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
rescue Timeout::Error
|
82
|
+
raise Puppet::Error, "Timed out waiting for #{@resource[:name]} to transition states"
|
83
|
+
end
|
84
|
+
|
85
|
+
def start
|
86
|
+
super
|
87
|
+
wait(:running)
|
88
|
+
end
|
89
|
+
|
90
|
+
def stop
|
91
|
+
super
|
92
|
+
wait(:stopped)
|
93
|
+
end
|
94
|
+
|
95
|
+
def restart
|
96
|
+
execute([command(:lssrc), "-Ss", @resource[:name]]).each_line do |line|
|
97
|
+
args = line.split(":")
|
98
|
+
|
99
|
+
next unless args[0] == @resource[:name]
|
100
|
+
|
101
|
+
# Subsystems with the -K flag can get refreshed (HUPed)
|
102
|
+
# While subsystems with -S (signals) must be stopped/started
|
103
|
+
method = args[11]
|
104
|
+
do_refresh = case method
|
105
|
+
when "-K" then :true
|
106
|
+
when "-S" then :false
|
107
|
+
else self.fail("Unknown service communication method #{method}")
|
108
|
+
end
|
109
|
+
|
110
|
+
begin
|
111
|
+
if do_refresh == :true
|
112
|
+
execute([command(:refresh), "-s", @resource[:name]])
|
113
|
+
else
|
114
|
+
stop
|
115
|
+
start
|
116
|
+
end
|
117
|
+
return :true
|
118
|
+
rescue Puppet::ExecutionFailure => detail
|
119
|
+
raise Puppet::Error.new("Unable to restart service #{@resource[:name]}, error was: #{detail}", detail)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
self.fail("No such service found")
|
123
|
+
rescue Puppet::ExecutionFailure => detail
|
124
|
+
raise Puppet::Error.new("Cannot get status of #{@resource[:name]}, error was: #{detail}", detail)
|
125
|
+
end
|
126
|
+
|
127
|
+
def status
|
128
|
+
execute([command(:lssrc), "-s", @resource[:name]]).each_line do |line|
|
129
|
+
args = line.split
|
130
|
+
|
131
|
+
# This is the header line
|
132
|
+
next unless args[0] == @resource[:name]
|
133
|
+
|
134
|
+
# PID is the 3rd field, but inoperative subsystems
|
135
|
+
# skip this so split doesn't work right
|
136
|
+
state = case args[-1]
|
137
|
+
when "active" then :running
|
138
|
+
when "inoperative" then :stopped
|
139
|
+
end
|
140
|
+
Puppet.debug("Service #{@resource[:name]} is #{args[-1]}")
|
141
|
+
return state
|
142
|
+
end
|
143
|
+
rescue Puppet::ExecutionFailure => detail
|
144
|
+
debug(detail.message)
|
145
|
+
:stopped
|
146
|
+
end
|
147
|
+
end
|
@@ -0,0 +1,232 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Manage systemd services using systemctl
|
4
|
+
|
5
|
+
require_relative '../../../puppet/file_system'
|
6
|
+
|
7
|
+
Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
8
|
+
desc "Manages `systemd` services using `systemctl`.
|
9
|
+
|
10
|
+
Because `systemd` defaults to assuming the `.service` unit type, the suffix
|
11
|
+
may be omitted. Other unit types (such as `.path`) may be managed by
|
12
|
+
providing the proper suffix."
|
13
|
+
|
14
|
+
commands :systemctl => "systemctl"
|
15
|
+
|
16
|
+
confine :true => Puppet::FileSystem.exist?('/proc/1/comm') && Puppet::FileSystem.read('/proc/1/comm').include?('systemd')
|
17
|
+
|
18
|
+
defaultfor 'os.family' => [:archlinux]
|
19
|
+
defaultfor 'os.family' => :redhat
|
20
|
+
notdefaultfor 'os.name' => :redhat, 'os.release.major' => (4..6).to_a # Use the "RedHat" service provider
|
21
|
+
defaultfor 'os.family' => :redhat, 'os.name' => :fedora
|
22
|
+
defaultfor 'os.family' => :suse
|
23
|
+
defaultfor 'os.family' => :coreos
|
24
|
+
defaultfor 'os.family' => :gentoo
|
25
|
+
notdefaultfor 'os.name' => :amazon, 'os.release.major' => %w[2017 2018]
|
26
|
+
defaultfor 'os.name' => :amazon, 'os.release.major' => %w[2 2023]
|
27
|
+
defaultfor 'os.name' => :debian
|
28
|
+
notdefaultfor 'os.name' => :debian, 'os.release.major' => %w[5 6 7] # These are using the "debian" method
|
29
|
+
defaultfor 'os.name' => :LinuxMint
|
30
|
+
notdefaultfor 'os.name' => :LinuxMint, 'os.release.major' => %w[10 11 12 13 14 15 16 17] # These are using upstart
|
31
|
+
defaultfor 'os.name' => :ubuntu
|
32
|
+
notdefaultfor 'os.name' => :ubuntu, 'os.release.major' => ["10.04", "12.04", "14.04", "14.10"] # These are using upstart
|
33
|
+
defaultfor 'os.name' => :cumuluslinux, 'os.release.major' => %w[3 4]
|
34
|
+
defaultfor 'os.name' => :raspbian, 'os.release.major' => %w[12]
|
35
|
+
|
36
|
+
def self.instances
|
37
|
+
i = []
|
38
|
+
output = systemctl('list-unit-files', '--type', 'service', '--full', '--all', '--no-pager')
|
39
|
+
output.scan(/^(\S+)\s+(disabled|enabled|masked|indirect|bad|static)\s*([^-]\S+)?\s*$/i).each do |m|
|
40
|
+
Puppet.debug("#{m[0]} marked as bad by `systemctl`. It is recommended to be further checked.") if m[1] == "bad"
|
41
|
+
i << new(:name => m[0])
|
42
|
+
end
|
43
|
+
i
|
44
|
+
rescue Puppet::ExecutionFailure
|
45
|
+
[]
|
46
|
+
end
|
47
|
+
|
48
|
+
# Static services cannot be enabled or disabled manually. Indirect services
|
49
|
+
# should not be enabled or disabled due to limitations in systemd (see
|
50
|
+
# https://github.com/systemd/systemd/issues/6681).
|
51
|
+
def enabled_insync?(current)
|
52
|
+
case cached_enabled?[:output]
|
53
|
+
when 'static'
|
54
|
+
# masking static services is OK, but enabling/disabling them is not
|
55
|
+
if @resource[:enable] == :mask
|
56
|
+
current == @resource[:enable]
|
57
|
+
else
|
58
|
+
Puppet.debug("Unable to enable or disable static service #{@resource[:name]}")
|
59
|
+
true
|
60
|
+
end
|
61
|
+
when 'indirect'
|
62
|
+
Puppet.debug("Service #{@resource[:name]} is in 'indirect' state and cannot be enabled/disabled")
|
63
|
+
true
|
64
|
+
else
|
65
|
+
current == @resource[:enable]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# This helper ensures that the enable state cache is always reset
|
70
|
+
# after a systemctl enable operation. A particular service state is not guaranteed
|
71
|
+
# after such an operation, so the cache must be emptied to prevent inconsistencies
|
72
|
+
# in the provider's believed state of the service and the actual state.
|
73
|
+
# @param action [String,Symbol] One of 'enable', 'disable', 'mask' or 'unmask'
|
74
|
+
def systemctl_change_enable(action)
|
75
|
+
output = systemctl(action, '--', @resource[:name])
|
76
|
+
rescue => e
|
77
|
+
raise Puppet::Error, "Could not #{action} #{name}: #{output}", e.backtrace
|
78
|
+
ensure
|
79
|
+
@cached_enabled = nil
|
80
|
+
end
|
81
|
+
|
82
|
+
def disable
|
83
|
+
systemctl_change_enable(:disable)
|
84
|
+
end
|
85
|
+
|
86
|
+
def get_start_link_count
|
87
|
+
# Start links don't include '.service'. Just search for the service name.
|
88
|
+
if @resource[:name] =~ /\.service/
|
89
|
+
link_name = @resource[:name].split('.')[0]
|
90
|
+
else
|
91
|
+
link_name = @resource[:name]
|
92
|
+
end
|
93
|
+
|
94
|
+
Dir.glob("/etc/rc*.d/S??#{link_name}").length
|
95
|
+
end
|
96
|
+
|
97
|
+
def cached_enabled?
|
98
|
+
return @cached_enabled if @cached_enabled
|
99
|
+
|
100
|
+
cmd = [command(:systemctl), 'is-enabled', '--', @resource[:name]]
|
101
|
+
result = execute(cmd, :failonfail => false)
|
102
|
+
@cached_enabled = { output: result.chomp, exitcode: result.exitstatus }
|
103
|
+
end
|
104
|
+
|
105
|
+
def enabled?
|
106
|
+
output = cached_enabled?[:output]
|
107
|
+
code = cached_enabled?[:exitcode]
|
108
|
+
|
109
|
+
# The masked state is equivalent to the disabled state in terms of
|
110
|
+
# comparison so we only care to check if it is masked if we want to keep
|
111
|
+
# it masked.
|
112
|
+
#
|
113
|
+
# We only return :mask if we're trying to mask the service. This prevents
|
114
|
+
# flapping when simply trying to disable a masked service.
|
115
|
+
return :mask if (@resource[:enable] == :mask) && (output == 'masked')
|
116
|
+
|
117
|
+
# The indirect state indicates that the unit is not enabled.
|
118
|
+
return :false if output == 'indirect'
|
119
|
+
return :true if code == 0
|
120
|
+
|
121
|
+
if output.empty? && (code > 0) && Puppet.runtime[:facter].value('os.family').casecmp('debian').zero?
|
122
|
+
ret = debian_enabled?
|
123
|
+
return ret if ret
|
124
|
+
end
|
125
|
+
|
126
|
+
:false
|
127
|
+
end
|
128
|
+
|
129
|
+
# This method is required for Debian systems due to the way the SysVInit-Systemd
|
130
|
+
# compatibility layer works. When we are trying to manage a service which does not
|
131
|
+
# have a Systemd unit file, we need to go through the old init script to determine
|
132
|
+
# whether it is enabled or not. See PUP-5016 for more details.
|
133
|
+
#
|
134
|
+
def debian_enabled?
|
135
|
+
status = execute(["/usr/sbin/invoke-rc.d", "--quiet", "--query", @resource[:name], "start"], :failonfail => false)
|
136
|
+
if [104, 106].include?(status.exitstatus)
|
137
|
+
:true
|
138
|
+
elsif [101, 105].include?(status.exitstatus)
|
139
|
+
# 101 is action not allowed, which means we have to do the check manually.
|
140
|
+
# 105 is unknown, which generally means the initscript does not support query
|
141
|
+
# The debian policy states that the initscript should support methods of query
|
142
|
+
# For those that do not, perform the checks manually
|
143
|
+
# http://www.debian.org/doc/debian-policy/ch-opersys.html
|
144
|
+
if get_start_link_count >= 4
|
145
|
+
:true
|
146
|
+
else
|
147
|
+
:false
|
148
|
+
end
|
149
|
+
else
|
150
|
+
:false
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
# Define the daemon_reload? function to check if the unit is requiring to trigger a "systemctl daemon-reload"
|
155
|
+
# If the unit file is flagged with NeedDaemonReload=yes, then a systemd daemon-reload will be run.
|
156
|
+
# If multiple unit files have been updated, the first one flagged will trigger the daemon-reload for all of them.
|
157
|
+
# The others will be then flagged with NeedDaemonReload=no. So the command will run only once in a puppet run.
|
158
|
+
# This function is called only on start & restart unit options.
|
159
|
+
# Reference: (PUP-3483) Systemd provider doesn't scan for changed units
|
160
|
+
def daemon_reload?
|
161
|
+
cmd = [command(:systemctl), 'show', '--property=NeedDaemonReload', '--', @resource[:name]]
|
162
|
+
daemon_reload = execute(cmd, :failonfail => false).strip.split('=').last
|
163
|
+
if daemon_reload == 'yes'
|
164
|
+
daemon_reload_cmd = [command(:systemctl), 'daemon-reload']
|
165
|
+
execute(daemon_reload_cmd, :failonfail => false)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
def enable
|
170
|
+
unmask
|
171
|
+
systemctl_change_enable(:enable)
|
172
|
+
end
|
173
|
+
|
174
|
+
def mask
|
175
|
+
disable if exist?
|
176
|
+
systemctl_change_enable(:mask)
|
177
|
+
end
|
178
|
+
|
179
|
+
def exist?
|
180
|
+
result = execute([command(:systemctl), 'cat', '--', @resource[:name]], :failonfail => false)
|
181
|
+
result.exitstatus == 0
|
182
|
+
end
|
183
|
+
|
184
|
+
def unmask
|
185
|
+
systemctl_change_enable(:unmask)
|
186
|
+
end
|
187
|
+
|
188
|
+
def restartcmd
|
189
|
+
[command(:systemctl), "restart", '--', @resource[:name]]
|
190
|
+
end
|
191
|
+
|
192
|
+
def startcmd
|
193
|
+
unmask
|
194
|
+
[command(:systemctl), "start", '--', @resource[:name]]
|
195
|
+
end
|
196
|
+
|
197
|
+
def stopcmd
|
198
|
+
[command(:systemctl), "stop", '--', @resource[:name]]
|
199
|
+
end
|
200
|
+
|
201
|
+
def statuscmd
|
202
|
+
[command(:systemctl), "is-active", '--', @resource[:name]]
|
203
|
+
end
|
204
|
+
|
205
|
+
def restart
|
206
|
+
daemon_reload?
|
207
|
+
super
|
208
|
+
rescue Puppet::Error => e
|
209
|
+
raise Puppet::Error, prepare_error_message(@resource[:name], 'restart', e)
|
210
|
+
end
|
211
|
+
|
212
|
+
def start
|
213
|
+
daemon_reload?
|
214
|
+
super
|
215
|
+
rescue Puppet::Error => e
|
216
|
+
raise Puppet::Error, prepare_error_message(@resource[:name], 'start', e)
|
217
|
+
end
|
218
|
+
|
219
|
+
def stop
|
220
|
+
super
|
221
|
+
rescue Puppet::Error => e
|
222
|
+
raise Puppet::Error, prepare_error_message(@resource[:name], 'stop', e)
|
223
|
+
end
|
224
|
+
|
225
|
+
def prepare_error_message(name, action, exception)
|
226
|
+
error_return = "Systemd #{action} for #{name} failed!\n"
|
227
|
+
journalctl_command = "journalctl -n 50 --since '5 minutes ago' -u #{name} --no-pager"
|
228
|
+
Puppet.debug("Running journalctl command to get logs for systemd #{action} failure: #{journalctl_command}")
|
229
|
+
journalctl_output = execute(journalctl_command)
|
230
|
+
error_return << "journalctl log for #{name}:\n#{journalctl_output}"
|
231
|
+
end
|
232
|
+
end
|