puppet 7.4.0-x64-mingw32 → 7.8.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +2 -2
- data/Gemfile +2 -1
- data/Gemfile.lock +30 -24
- data/ext/osx/puppet.plist +2 -0
- data/install.rb +11 -11
- data/lib/hiera_puppet.rb +1 -1
- data/lib/puppet.rb +37 -37
- data/lib/puppet/agent.rb +6 -6
- data/lib/puppet/agent/disabler.rb +1 -1
- data/lib/puppet/agent/locker.rb +2 -2
- data/lib/puppet/application.rb +6 -6
- data/lib/puppet/application/agent.rb +18 -11
- data/lib/puppet/application/apply.rb +6 -5
- data/lib/puppet/application/catalog.rb +1 -1
- data/lib/puppet/application/config.rb +1 -1
- data/lib/puppet/application/describe.rb +1 -1
- data/lib/puppet/application/device.rb +8 -7
- data/lib/puppet/application/doc.rb +7 -7
- data/lib/puppet/application/epp.rb +2 -2
- data/lib/puppet/application/face_base.rb +2 -2
- data/lib/puppet/application/facts.rb +1 -1
- data/lib/puppet/application/filebucket.rb +2 -2
- data/lib/puppet/application/generate.rb +1 -1
- data/lib/puppet/application/help.rb +1 -1
- data/lib/puppet/application/indirection_base.rb +1 -1
- data/lib/puppet/application/lookup.rb +6 -6
- data/lib/puppet/application/module.rb +1 -1
- data/lib/puppet/application/node.rb +1 -1
- data/lib/puppet/application/parser.rb +2 -2
- data/lib/puppet/application/plugin.rb +1 -1
- data/lib/puppet/application/report.rb +1 -1
- data/lib/puppet/application/resource.rb +3 -2
- data/lib/puppet/application/script.rb +6 -5
- data/lib/puppet/application/ssl.rb +13 -2
- data/lib/puppet/application_support.rb +4 -4
- data/lib/puppet/compilable_resource_type.rb +1 -1
- data/lib/puppet/concurrent/lock.rb +1 -1
- data/lib/puppet/configurer.rb +4 -4
- data/lib/puppet/configurer/downloader.rb +4 -3
- data/lib/puppet/configurer/fact_handler.rb +3 -3
- data/lib/puppet/configurer/plugin_handler.rb +1 -1
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/confine/boolean.rb +1 -1
- data/lib/puppet/confine/exists.rb +1 -1
- data/lib/puppet/confine/false.rb +1 -1
- data/lib/puppet/confine/feature.rb +1 -1
- data/lib/puppet/confine/true.rb +1 -1
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/confine_collection.rb +1 -1
- data/lib/puppet/confiner.rb +1 -1
- data/lib/puppet/context.rb +2 -2
- data/lib/puppet/context/trusted_information.rb +1 -1
- data/lib/puppet/daemon.rb +2 -2
- data/lib/puppet/data_binding.rb +1 -1
- data/lib/puppet/datatypes/error.rb +1 -1
- data/lib/puppet/defaults.rb +18 -12
- data/lib/puppet/environments.rb +17 -2
- data/lib/puppet/etc.rb +1 -1
- data/lib/puppet/external/pson/common.rb +1 -1
- data/lib/puppet/external/pson/pure.rb +3 -3
- data/lib/puppet/face.rb +1 -1
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +2 -2
- data/lib/puppet/face/epp.rb +6 -6
- data/lib/puppet/face/facts.rb +2 -2
- data/lib/puppet/face/generate.rb +2 -2
- data/lib/puppet/face/help.rb +3 -3
- data/lib/puppet/face/module.rb +3 -3
- data/lib/puppet/face/module/install.rb +2 -2
- data/lib/puppet/face/node.rb +1 -1
- data/lib/puppet/face/parser.rb +4 -4
- data/lib/puppet/face/plugin.rb +2 -2
- data/lib/puppet/face/report.rb +1 -1
- data/lib/puppet/face/resource.rb +1 -1
- data/lib/puppet/feature/base.rb +2 -2
- data/lib/puppet/feature/bolt.rb +1 -1
- data/lib/puppet/feature/cfpropertylist.rb +1 -1
- data/lib/puppet/feature/eventlog.rb +1 -1
- data/lib/puppet/feature/hiera_eyaml.rb +1 -1
- data/lib/puppet/feature/hocon.rb +1 -1
- data/lib/puppet/feature/libuser.rb +2 -2
- data/lib/puppet/feature/msgpack.rb +1 -1
- data/lib/puppet/feature/pe_license.rb +1 -1
- data/lib/puppet/feature/selinux.rb +1 -1
- data/lib/puppet/feature/ssh.rb +1 -1
- data/lib/puppet/feature/telnet.rb +1 -1
- data/lib/puppet/feature/zlib.rb +1 -1
- data/lib/puppet/ffi/posix.rb +2 -2
- data/lib/puppet/ffi/posix/constants.rb +1 -1
- data/lib/puppet/ffi/posix/functions.rb +1 -1
- data/lib/puppet/ffi/windows.rb +4 -4
- data/lib/puppet/ffi/windows/api_types.rb +3 -3
- data/lib/puppet/ffi/windows/constants.rb +1 -1
- data/lib/puppet/ffi/windows/functions.rb +1 -1
- data/lib/puppet/ffi/windows/structs.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +4 -4
- data/lib/puppet/file_bucket/file.rb +3 -3
- data/lib/puppet/file_serving/base.rb +2 -2
- data/lib/puppet/file_serving/configuration.rb +10 -10
- data/lib/puppet/file_serving/configuration/parser.rb +2 -2
- data/lib/puppet/file_serving/content.rb +3 -3
- data/lib/puppet/file_serving/fileset.rb +16 -4
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +6 -6
- data/lib/puppet/file_serving/mount.rb +4 -4
- data/lib/puppet/file_serving/mount/file.rb +1 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -1
- data/lib/puppet/file_serving/mount/modules.rb +1 -1
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -1
- data/lib/puppet/file_serving/mount/plugins.rb +1 -1
- data/lib/puppet/file_serving/mount/tasks.rb +1 -1
- data/lib/puppet/file_serving/terminus_helper.rb +2 -2
- data/lib/puppet/file_serving/terminus_selector.rb +1 -1
- data/lib/puppet/file_system.rb +9 -9
- data/lib/puppet/file_system/jruby.rb +1 -1
- data/lib/puppet/file_system/memory_file.rb +8 -1
- data/lib/puppet/file_system/path_pattern.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/file_system/windows.rb +4 -2
- data/lib/puppet/forge.rb +5 -5
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/errors.rb +3 -3
- data/lib/puppet/forge/repository.rb +4 -4
- data/lib/puppet/functions.rb +1 -1
- data/lib/puppet/functions/all.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/capitalize.rb +2 -2
- data/lib/puppet/functions/downcase.rb +2 -2
- data/lib/puppet/functions/get.rb +5 -5
- data/lib/puppet/functions/group_by.rb +13 -5
- data/lib/puppet/functions/lest.rb +1 -1
- data/lib/puppet/functions/new.rb +100 -100
- data/lib/puppet/functions/partition.rb +12 -4
- data/lib/puppet/functions/require.rb +5 -5
- data/lib/puppet/functions/sort.rb +3 -3
- data/lib/puppet/functions/tree_each.rb +7 -9
- data/lib/puppet/functions/type.rb +4 -4
- data/lib/puppet/functions/upcase.rb +2 -2
- data/lib/puppet/functions/versioncmp.rb +1 -1
- data/lib/puppet/generate/models/type/type.rb +1 -1
- data/lib/puppet/generate/type.rb +2 -2
- data/lib/puppet/gettext/config.rb +3 -3
- data/lib/puppet/gettext/module_translations.rb +1 -1
- data/lib/puppet/graph.rb +6 -6
- data/lib/puppet/graph/simple_graph.rb +2 -2
- data/lib/puppet/http.rb +26 -26
- data/lib/puppet/http/factory.rb +6 -2
- data/lib/puppet/http/proxy.rb +1 -1
- data/lib/puppet/http/resolver/server_list.rb +15 -4
- data/lib/puppet/http/service/compiler.rb +73 -1
- data/lib/puppet/http/service/file_server.rb +3 -2
- data/lib/puppet/indirector.rb +5 -5
- data/lib/puppet/indirector/catalog/compiler.rb +7 -6
- data/lib/puppet/indirector/catalog/json.rb +2 -2
- data/lib/puppet/indirector/catalog/msgpack.rb +2 -2
- data/lib/puppet/indirector/catalog/rest.rb +2 -2
- data/lib/puppet/indirector/catalog/store_configs.rb +2 -2
- data/lib/puppet/indirector/catalog/yaml.rb +2 -2
- data/lib/puppet/indirector/code.rb +1 -1
- data/lib/puppet/indirector/data_binding/hiera.rb +1 -1
- data/lib/puppet/indirector/data_binding/none.rb +1 -1
- data/lib/puppet/indirector/direct_file_server.rb +2 -2
- data/lib/puppet/indirector/envelope.rb +1 -1
- data/lib/puppet/indirector/errors.rb +1 -1
- data/lib/puppet/indirector/exec.rb +2 -2
- data/lib/puppet/indirector/face.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +2 -2
- data/lib/puppet/indirector/facts/json.rb +3 -3
- data/lib/puppet/indirector/facts/memory.rb +2 -2
- data/lib/puppet/indirector/facts/network_device.rb +2 -2
- data/lib/puppet/indirector/facts/rest.rb +2 -2
- data/lib/puppet/indirector/facts/store_configs.rb +2 -2
- data/lib/puppet/indirector/facts/yaml.rb +3 -3
- data/lib/puppet/indirector/file_bucket_file/file.rb +4 -4
- data/lib/puppet/indirector/file_bucket_file/rest.rb +2 -2
- data/lib/puppet/indirector/file_bucket_file/selector.rb +1 -1
- data/lib/puppet/indirector/file_content.rb +1 -1
- data/lib/puppet/indirector/file_content/file.rb +3 -3
- data/lib/puppet/indirector/file_content/file_server.rb +3 -3
- data/lib/puppet/indirector/file_content/rest.rb +3 -3
- data/lib/puppet/indirector/file_content/selector.rb +4 -4
- data/lib/puppet/indirector/file_metadata.rb +1 -1
- data/lib/puppet/indirector/file_metadata/file.rb +3 -3
- data/lib/puppet/indirector/file_metadata/file_server.rb +3 -3
- data/lib/puppet/indirector/file_metadata/http.rb +3 -3
- data/lib/puppet/indirector/file_metadata/rest.rb +4 -3
- data/lib/puppet/indirector/file_metadata/selector.rb +4 -4
- data/lib/puppet/indirector/file_server.rb +4 -4
- data/lib/puppet/indirector/generic_http.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +1 -1
- data/lib/puppet/indirector/indirection.rb +5 -5
- data/lib/puppet/indirector/json.rb +2 -2
- data/lib/puppet/indirector/memory.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +2 -2
- data/lib/puppet/indirector/node/exec.rb +2 -2
- data/lib/puppet/indirector/node/json.rb +2 -2
- data/lib/puppet/indirector/node/memory.rb +2 -2
- data/lib/puppet/indirector/node/msgpack.rb +2 -2
- data/lib/puppet/indirector/node/plain.rb +2 -2
- data/lib/puppet/indirector/node/rest.rb +2 -2
- data/lib/puppet/indirector/node/store_configs.rb +2 -2
- data/lib/puppet/indirector/node/yaml.rb +2 -2
- data/lib/puppet/indirector/none.rb +1 -1
- data/lib/puppet/indirector/plain.rb +1 -1
- data/lib/puppet/indirector/report/json.rb +2 -2
- data/lib/puppet/indirector/report/msgpack.rb +2 -2
- data/lib/puppet/indirector/report/processor.rb +3 -3
- data/lib/puppet/indirector/report/rest.rb +1 -1
- data/lib/puppet/indirector/report/yaml.rb +2 -2
- data/lib/puppet/indirector/request.rb +3 -3
- data/lib/puppet/indirector/resource/ral.rb +1 -1
- data/lib/puppet/indirector/resource/store_configs.rb +2 -2
- data/lib/puppet/indirector/terminus.rb +5 -5
- data/lib/puppet/indirector/yaml.rb +2 -2
- data/lib/puppet/info_service.rb +3 -3
- data/lib/puppet/info_service/class_information_service.rb +3 -3
- data/lib/puppet/info_service/plan_information_service.rb +1 -1
- data/lib/puppet/info_service/task_information_service.rb +1 -1
- data/lib/puppet/interface.rb +10 -10
- data/lib/puppet/interface/documentation.rb +1 -1
- data/lib/puppet/loaders.rb +21 -25
- data/lib/puppet/metatype/manager.rb +3 -3
- data/lib/puppet/module.rb +5 -4
- data/lib/puppet/module/plan.rb +1 -1
- data/lib/puppet/module/task.rb +1 -1
- data/lib/puppet/module_tool.rb +10 -10
- data/lib/puppet/module_tool/applications.rb +7 -7
- data/lib/puppet/module_tool/applications/application.rb +2 -2
- data/lib/puppet/module_tool/applications/checksummer.rb +2 -2
- data/lib/puppet/module_tool/applications/installer.rb +7 -7
- data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
- data/lib/puppet/module_tool/applications/upgrader.rb +5 -5
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/contents_description.rb +1 -1
- data/lib/puppet/module_tool/dependency.rb +2 -2
- data/lib/puppet/module_tool/errors.rb +6 -6
- data/lib/puppet/module_tool/install_directory.rb +2 -2
- data/lib/puppet/module_tool/installed_modules.rb +2 -2
- data/lib/puppet/module_tool/local_tarball.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +3 -3
- data/lib/puppet/module_tool/tar.rb +4 -4
- data/lib/puppet/network/format.rb +1 -1
- data/lib/puppet/network/format_handler.rb +3 -3
- data/lib/puppet/network/format_support.rb +1 -1
- data/lib/puppet/network/formats.rb +2 -2
- data/lib/puppet/network/http.rb +17 -14
- data/lib/puppet/network/http/api.rb +11 -7
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master.rb +3 -2
- data/lib/puppet/network/http/api/master/v3.rb +2 -25
- data/lib/puppet/network/http/api/master/v3/environments.rb +2 -33
- data/lib/puppet/network/http/api/server.rb +10 -0
- data/lib/puppet/network/http/api/server/v3.rb +39 -0
- data/lib/puppet/network/http/api/server/v3/environments.rb +48 -0
- data/lib/puppet/network/http/connection.rb +1 -1
- data/lib/puppet/network/http/error.rb +1 -1
- data/lib/puppet/network/http/handler.rb +3 -3
- data/lib/puppet/network/http_pool.rb +1 -1
- data/lib/puppet/node.rb +3 -3
- data/lib/puppet/node/environment.rb +15 -8
- data/lib/puppet/node/facts.rb +3 -3
- data/lib/puppet/pal/pal_api.rb +10 -10
- data/lib/puppet/pal/pal_impl.rb +3 -3
- data/lib/puppet/parameter.rb +4 -4
- data/lib/puppet/parameter/boolean.rb +1 -1
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/path.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parameter/value_collection.rb +1 -1
- data/lib/puppet/parser.rb +10 -10
- data/lib/puppet/parser/ast.rb +8 -8
- data/lib/puppet/parser/ast/hostclass.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +2 -2
- data/lib/puppet/parser/catalog_compiler.rb +2 -2
- data/lib/puppet/parser/compiler.rb +5 -5
- data/lib/puppet/parser/e4_parser_adapter.rb +1 -1
- data/lib/puppet/parser/functions.rb +4 -4
- data/lib/puppet/parser/functions/digest.rb +1 -1
- data/lib/puppet/parser/functions/file.rb +1 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +14 -6
- data/lib/puppet/parser/functions/versioncmp.rb +1 -1
- data/lib/puppet/parser/parser_factory.rb +2 -2
- data/lib/puppet/parser/resource.rb +3 -3
- data/lib/puppet/parser/scope.rb +3 -3
- data/lib/puppet/parser/script_compiler.rb +2 -2
- data/lib/puppet/parser/templatewrapper.rb +2 -2
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/plugins/configuration.rb +5 -5
- data/lib/puppet/pops.rb +57 -57
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +7 -7
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/loader/base_loader.rb +42 -32
- data/lib/puppet/pops/loader/dependency_loader.rb +2 -2
- data/lib/puppet/pops/loader/loader.rb +15 -5
- data/lib/puppet/pops/loader/module_loaders.rb +8 -8
- data/lib/puppet/pops/loader/predefined_loader.rb +4 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +1 -1
- data/lib/puppet/pops/loader/static_loader.rb +4 -0
- data/lib/puppet/pops/loader/task_instantiator.rb +1 -1
- data/lib/puppet/pops/loaders.rb +4 -4
- data/lib/puppet/pops/lookup/invocation.rb +1 -1
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/model/pn_transformer.rb +1 -1
- data/lib/puppet/pops/parser/eparser.rb +2 -2
- data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
- data/lib/puppet/pops/parser/lexer2.rb +5 -9
- data/lib/puppet/pops/parser/lexer_support.rb +1 -1
- data/lib/puppet/pops/parser/parser_support.rb +4 -4
- data/lib/puppet/pops/puppet_stack.rb +1 -1
- data/lib/puppet/pops/serialization/json.rb +1 -1
- data/lib/puppet/pops/serialization/json_path.rb +1 -1
- data/lib/puppet/pops/time/timespan.rb +1 -1
- data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -2
- data/lib/puppet/pops/types/p_sensitive_type.rb +10 -0
- data/lib/puppet/pops/types/p_type_set_type.rb +1 -1
- data/lib/puppet/pops/types/string_converter.rb +1 -1
- data/lib/puppet/pops/types/type_calculator.rb +1 -1
- data/lib/puppet/pops/types/type_formatter.rb +1 -1
- data/lib/puppet/pops/types/type_parser.rb +1 -1
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/pops/validation/checker4_0.rb +1 -2
- data/lib/puppet/property.rb +3 -3
- data/lib/puppet/property/boolean.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/property/keyvalue.rb +1 -1
- data/lib/puppet/property/list.rb +1 -1
- data/lib/puppet/property/ordered_list.rb +1 -1
- data/lib/puppet/provider.rb +2 -2
- data/lib/puppet/provider/confine.rb +2 -2
- data/lib/puppet/provider/exec.rb +2 -2
- data/lib/puppet/provider/exec/posix.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/file/posix.rb +1 -1
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/group/aix.rb +1 -1
- data/lib/puppet/provider/group/directoryservice.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +2 -2
- data/lib/puppet/provider/group/ldap.rb +1 -1
- data/lib/puppet/provider/group/pw.rb +1 -1
- data/lib/puppet/provider/group/windows_adsi.rb +1 -1
- data/lib/puppet/provider/ldap.rb +2 -2
- data/lib/puppet/provider/nameservice.rb +1 -1
- data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
- data/lib/puppet/provider/nameservice/objectadd.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +1 -1
- data/lib/puppet/provider/package.rb +1 -1
- data/lib/puppet/provider/package/aix.rb +2 -2
- data/lib/puppet/provider/package/appdmg.rb +2 -2
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +5 -5
- data/lib/puppet/provider/package/dnfmodule.rb +2 -2
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +3 -3
- data/lib/puppet/provider/package/hpux.rb +1 -1
- data/lib/puppet/provider/package/macports.rb +2 -2
- data/lib/puppet/provider/package/nim.rb +13 -8
- data/lib/puppet/provider/package/openbsd.rb +1 -1
- data/lib/puppet/provider/package/opkg.rb +1 -1
- data/lib/puppet/provider/package/pacman.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +3 -3
- data/lib/puppet/provider/package/pkg.rb +2 -2
- data/lib/puppet/provider/package/pkgdmg.rb +3 -3
- data/lib/puppet/provider/package/pkgin.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/portupgrade.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +12 -1
- data/lib/puppet/provider/package/puppetserver_gem.rb +0 -0
- data/lib/puppet/provider/package/rpm.rb +2 -2
- data/lib/puppet/provider/package/sun.rb +1 -1
- data/lib/puppet/provider/package/windows.rb +3 -3
- data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
- data/lib/puppet/provider/package/windows/msi_package.rb +1 -1
- data/lib/puppet/provider/package/windows/package.rb +4 -4
- data/lib/puppet/provider/package/yum.rb +6 -6
- data/lib/puppet/provider/package/zypper.rb +3 -3
- data/lib/puppet/provider/package_targetable.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +3 -3
- data/lib/puppet/provider/service/base.rb +6 -4
- data/lib/puppet/provider/service/daemontools.rb +0 -1
- data/lib/puppet/provider/service/debian.rb +3 -5
- data/lib/puppet/provider/service/freebsd.rb +1 -1
- data/lib/puppet/provider/service/init.rb +1 -1
- data/lib/puppet/provider/service/launchd.rb +9 -3
- data/lib/puppet/provider/service/service.rb +28 -3
- data/lib/puppet/provider/service/smf.rb +0 -24
- data/lib/puppet/provider/service/src.rb +2 -2
- data/lib/puppet/provider/service/systemd.rb +18 -8
- data/lib/puppet/provider/service/windows.rb +38 -0
- data/lib/puppet/provider/user/aix.rb +2 -2
- data/lib/puppet/provider/user/directoryservice.rb +26 -13
- data/lib/puppet/provider/user/ldap.rb +1 -1
- data/lib/puppet/provider/user/openbsd.rb +1 -1
- data/lib/puppet/provider/user/pw.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +2 -2
- data/lib/puppet/provider/user/useradd.rb +12 -5
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/indirection.rb +4 -4
- data/lib/puppet/reference/report.rb +1 -1
- data/lib/puppet/reports.rb +1 -1
- data/lib/puppet/reports/http.rb +2 -2
- data/lib/puppet/reports/log.rb +1 -1
- data/lib/puppet/reports/store.rb +2 -2
- data/lib/puppet/resource.rb +4 -4
- data/lib/puppet/resource/catalog.rb +5 -5
- data/lib/puppet/resource/status.rb +2 -2
- data/lib/puppet/resource/type.rb +4 -4
- data/lib/puppet/resource/type_collection.rb +4 -4
- data/lib/puppet/runtime.rb +1 -1
- data/lib/puppet/scheduler.rb +4 -4
- data/lib/puppet/settings.rb +31 -30
- data/lib/puppet/settings/autosign_setting.rb +1 -1
- data/lib/puppet/settings/base_setting.rb +2 -2
- data/lib/puppet/settings/certificate_revocation_setting.rb +1 -1
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +1 -0
- data/lib/puppet/settings/errors.rb +1 -1
- data/lib/puppet/settings/priority_setting.rb +3 -3
- data/lib/puppet/ssl.rb +11 -11
- data/lib/puppet/ssl/base.rb +3 -3
- data/lib/puppet/ssl/certificate.rb +1 -1
- data/lib/puppet/ssl/certificate_request.rb +2 -2
- data/lib/puppet/ssl/certificate_request_attributes.rb +2 -2
- data/lib/puppet/ssl/oids.rb +1 -1
- data/lib/puppet/ssl/openssl_loader.rb +1 -1
- data/lib/puppet/ssl/ssl_context.rb +1 -1
- data/lib/puppet/ssl/ssl_provider.rb +1 -1
- data/lib/puppet/ssl/state_machine.rb +2 -2
- data/lib/puppet/ssl/verifier.rb +5 -1
- data/lib/puppet/syntax_checkers/base64.rb +1 -1
- data/lib/puppet/syntax_checkers/epp.rb +1 -1
- data/lib/puppet/syntax_checkers/json.rb +1 -1
- data/lib/puppet/syntax_checkers/pp.rb +1 -1
- data/lib/puppet/transaction.rb +11 -11
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/event.rb +4 -4
- data/lib/puppet/transaction/event_manager.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +2 -2
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +14 -14
- data/lib/puppet/type/component.rb +3 -3
- data/lib/puppet/type/file.rb +37 -19
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/checksum_value.rb +2 -2
- data/lib/puppet/type/file/content.rb +2 -2
- data/lib/puppet/type/file/data_sync.rb +2 -2
- data/lib/puppet/type/file/ensure.rb +1 -1
- data/lib/puppet/type/file/group.rb +1 -1
- data/lib/puppet/type/file/mode.rb +1 -1
- data/lib/puppet/type/file/selcontext.rb +2 -2
- data/lib/puppet/type/file/source.rb +4 -4
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/group.rb +2 -2
- data/lib/puppet/type/package.rb +2 -2
- data/lib/puppet/type/resources.rb +2 -2
- data/lib/puppet/type/service.rb +18 -38
- data/lib/puppet/type/tidy.rb +24 -5
- data/lib/puppet/type/user.rb +42 -24
- data/lib/puppet/util.rb +43 -34
- data/lib/puppet/util/at_fork.rb +3 -3
- data/lib/puppet/util/at_fork/solaris.rb +1 -1
- data/lib/puppet/util/autoload.rb +4 -4
- data/lib/puppet/util/checksums.rb +3 -3
- data/lib/puppet/util/colors.rb +1 -1
- data/lib/puppet/util/command_line.rb +6 -6
- data/lib/puppet/util/command_line/puppet_option_parser.rb +2 -2
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/feature.rb +2 -2
- data/lib/puppet/util/filetype.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +1 -1
- data/lib/puppet/util/inifile.rb +2 -2
- data/lib/puppet/util/instance_loader.rb +3 -3
- data/lib/puppet/util/json_lockfile.rb +1 -1
- data/lib/puppet/util/ldap/connection.rb +1 -1
- data/lib/puppet/util/ldap/generator.rb +1 -1
- data/lib/puppet/util/ldap/manager.rb +3 -3
- data/lib/puppet/util/limits.rb +1 -1
- data/lib/puppet/util/log.rb +6 -6
- data/lib/puppet/util/log/destinations.rb +1 -1
- data/lib/puppet/util/logging.rb +2 -2
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/monkey_patches.rb +14 -3
- data/lib/puppet/util/network_device/base.rb +3 -3
- data/lib/puppet/util/network_device/config.rb +2 -2
- data/lib/puppet/util/network_device/transport.rb +1 -1
- data/lib/puppet/util/network_device/transport/base.rb +2 -2
- data/lib/puppet/util/package/version/range.rb +6 -6
- data/lib/puppet/util/package/version/range/eq.rb +1 -1
- data/lib/puppet/util/package/version/range/gt.rb +1 -1
- data/lib/puppet/util/package/version/range/gt_eq.rb +1 -1
- data/lib/puppet/util/package/version/range/lt.rb +1 -1
- data/lib/puppet/util/package/version/range/lt_eq.rb +1 -1
- data/lib/puppet/util/package/version/range/min_max.rb +1 -1
- data/lib/puppet/util/package/version/range/simple.rb +1 -1
- data/lib/puppet/util/package/version/rpm.rb +1 -1
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/plist.rb +1 -1
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/util/profiler.rb +3 -3
- data/lib/puppet/util/profiler/aggregate.rb +2 -2
- data/lib/puppet/util/profiler/object_counts.rb +1 -1
- data/lib/puppet/util/profiler/wall_clock.rb +1 -1
- data/lib/puppet/util/provider_features.rb +2 -2
- data/lib/puppet/util/rdoc.rb +2 -2
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
- data/lib/puppet/util/rdoc/parser.rb +6 -6
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +2 -2
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/selinux.rb +30 -4
- data/lib/puppet/util/skip_tags.rb +1 -1
- data/lib/puppet/util/storage.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +2 -2
- data/lib/puppet/util/symbolic_file_mode.rb +1 -1
- data/lib/puppet/util/tag_set.rb +1 -1
- data/lib/puppet/util/tagging.rb +1 -1
- data/lib/puppet/util/watched_file.rb +1 -1
- data/lib/puppet/util/watcher.rb +3 -3
- data/lib/puppet/util/windows.rb +20 -20
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +47 -1
- data/lib/puppet/util/windows/daemon.rb +1 -1
- data/lib/puppet/util/windows/error.rb +2 -2
- data/lib/puppet/util/windows/file.rb +1 -1
- data/lib/puppet/util/windows/monkey_patches/process.rb +2 -2
- data/lib/puppet/util/windows/principal.rb +10 -3
- data/lib/puppet/util/windows/process.rb +2 -2
- data/lib/puppet/util/windows/registry.rb +1 -1
- data/lib/puppet/util/windows/root_certs.rb +2 -2
- data/lib/puppet/util/windows/security.rb +1 -1
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/service.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +5 -3
- data/lib/puppet/util/windows/user.rb +1 -1
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +4 -4
- data/lib/puppet/x509/cert_provider.rb +1 -1
- data/lib/puppet/x509/pem_store.rb +1 -1
- data/lib/puppet_pal.rb +2 -2
- data/locales/puppet.pot +183 -175
- data/man/man5/puppet.conf.5 +266 -240
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +5 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/ssl/127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/127.0.0.1.pem +52 -31
- data/spec/fixtures/ssl/bad-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/ca.pem +57 -35
- data/spec/fixtures/ssl/crl.pem +28 -18
- data/spec/fixtures/ssl/ec-key.pem +11 -11
- data/spec/fixtures/ssl/ec.pem +33 -24
- data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
- data/spec/fixtures/ssl/encrypted-key.pem +108 -58
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +28 -19
- data/spec/fixtures/ssl/intermediate-agent.pem +57 -36
- data/spec/fixtures/ssl/intermediate-crl.pem +31 -21
- data/spec/fixtures/ssl/intermediate.pem +57 -36
- data/spec/fixtures/ssl/pluto-key.pem +107 -57
- data/spec/fixtures/ssl/pluto.pem +52 -30
- data/spec/fixtures/ssl/request-key.pem +107 -57
- data/spec/fixtures/ssl/request.pem +47 -26
- data/spec/fixtures/ssl/revoked-key.pem +107 -57
- data/spec/fixtures/ssl/revoked.pem +52 -30
- data/spec/fixtures/ssl/signed-key.pem +107 -57
- data/spec/fixtures/ssl/signed.pem +52 -30
- data/spec/fixtures/ssl/tampered-cert.pem +52 -30
- data/spec/fixtures/ssl/tampered-csr.pem +47 -26
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +50 -29
- data/spec/fixtures/ssl/unknown-ca-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-ca.pem +55 -33
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +9 -0
- data/spec/integration/application/plugin_spec.rb +1 -1
- data/spec/integration/application/resource_spec.rb +30 -0
- data/spec/integration/http/client_spec.rb +12 -0
- data/spec/integration/indirector/direct_file_server_spec.rb +1 -3
- data/spec/integration/parser/collection_spec.rb +10 -0
- data/spec/integration/type/file_spec.rb +5 -5
- data/spec/integration/util/windows/adsi_spec.rb +18 -0
- data/spec/integration/util/windows/principal_spec.rb +21 -0
- data/spec/integration/util/windows/registry_spec.rb +6 -0
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/files.rb +1 -1
- data/spec/shared_contexts/provider.rb +16 -0
- data/spec/spec_helper.rb +11 -1
- data/spec/unit/application/agent_spec.rb +7 -2
- data/spec/unit/application/facts_spec.rb +5 -5
- data/spec/unit/application/ssl_spec.rb +23 -0
- data/spec/unit/configurer/downloader_spec.rb +6 -0
- data/spec/unit/configurer_spec.rb +23 -0
- data/spec/unit/environments_spec.rb +164 -88
- data/spec/unit/file_bucket/dipper_spec.rb +1 -1
- data/spec/unit/file_serving/fileset_spec.rb +60 -0
- data/spec/unit/file_system_spec.rb +9 -0
- data/spec/unit/functions4_spec.rb +17 -8
- data/spec/unit/gettext/config_spec.rb +12 -0
- data/spec/unit/http/factory_spec.rb +19 -0
- data/spec/unit/http/service/compiler_spec.rb +123 -0
- data/spec/unit/indirector/catalog/compiler_spec.rb +14 -10
- data/spec/unit/module_spec.rb +1 -1
- data/spec/unit/network/http/api/master_spec.rb +38 -0
- data/spec/unit/network/http/api/{master → server}/v3/environments_spec.rb +2 -2
- data/spec/unit/network/http/api/{master → server}/v3_spec.rb +19 -19
- data/spec/unit/network/http/api_spec.rb +11 -11
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -1
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
- data/spec/unit/pops/lookup/context_spec.rb +1 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +0 -4
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
- data/spec/unit/pops/types/type_parser_spec.rb +2 -1
- data/spec/unit/pops/validator/validator_spec.rb +20 -43
- data/spec/unit/provider/package/dnfmodule_spec.rb +13 -4
- data/spec/unit/provider/package/gem_spec.rb +3 -1
- data/spec/unit/provider/package/nim_spec.rb +42 -0
- data/spec/unit/provider/package/pip2_spec.rb +3 -1
- data/spec/unit/provider/package/pip3_spec.rb +3 -1
- data/spec/unit/provider/package/pip_spec.rb +3 -1
- data/spec/unit/provider/package/pkg_spec.rb +44 -44
- data/spec/unit/provider/package/puppet_gem_spec.rb +31 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +2 -0
- data/spec/unit/provider/service/base_spec.rb +8 -8
- data/spec/unit/provider/service/bsd_spec.rb +0 -4
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +15 -17
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +19 -14
- data/spec/unit/provider/service/init_spec.rb +29 -20
- data/spec/unit/provider/service/launchd_spec.rb +10 -12
- data/spec/unit/provider/service/openbsd_spec.rb +21 -35
- data/spec/unit/provider/service/openrc_spec.rb +15 -14
- data/spec/unit/provider/service/openwrt_spec.rb +3 -1
- data/spec/unit/provider/service/redhat_spec.rb +20 -19
- data/spec/unit/provider/service/smf_spec.rb +6 -5
- data/spec/unit/provider/service/src_spec.rb +5 -10
- data/spec/unit/provider/service/systemd_spec.rb +80 -29
- data/spec/unit/provider/service/upstart_spec.rb +25 -20
- data/spec/unit/provider/service/windows_spec.rb +202 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +67 -35
- data/spec/unit/provider/user/useradd_spec.rb +21 -6
- data/spec/unit/resource/catalog_spec.rb +1 -1
- data/spec/unit/ssl/state_machine_spec.rb +19 -5
- data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -2
- data/spec/unit/transaction_spec.rb +18 -20
- data/spec/unit/type/file/selinux_spec.rb +3 -3
- data/spec/unit/type/service_spec.rb +59 -188
- data/spec/unit/type/tidy_spec.rb +17 -7
- data/spec/unit/type/user_spec.rb +45 -0
- data/spec/unit/util/at_fork_spec.rb +9 -9
- data/spec/unit/util/posix_spec.rb +1 -1
- data/spec/unit/util/selinux_spec.rb +87 -16
- data/spec/unit/util/windows/sid_spec.rb +6 -0
- data/tasks/generate_cert_fixtures.rake +2 -2
- metadata +17 -16
- data/spec/lib/matchers/include.rb +0 -27
- data/spec/lib/matchers/include_spec.rb +0 -32
- data/spec/unit/pops/parser/parse_application_spec.rb +0 -13
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -23
- data/spec/unit/pops/parser/parse_site_spec.rb +0 -43
@@ -7,7 +7,7 @@
|
|
7
7
|
# possibly via a `prefetchV2` method that could take a better data structure.)
|
8
8
|
#
|
9
9
|
# In addition, `Puppet::Provider::Package::properties` calls `query` in the provider.
|
10
|
-
|
10
|
+
require_relative '../../puppet/provider/package'
|
11
11
|
|
12
12
|
# But `query` in the provider depends upon whether a `command` attribute is defined for the resource.
|
13
13
|
# This is a Catch-22.
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require_relative '../../puppet'
|
2
|
+
require_relative '../../puppet/util/filetype'
|
3
|
+
require_relative '../../puppet/util/fileparsing'
|
4
4
|
|
5
5
|
# This provider can be used as the parent class for a provider that
|
6
6
|
# parses and generates files. Its content must be loaded via the
|
@@ -68,10 +68,10 @@ Puppet::Type.type(:service).provide :base, :parent => :service do
|
|
68
68
|
def status
|
69
69
|
if @resource[:status] or statuscmd
|
70
70
|
# Don't fail when the exit status is not 0.
|
71
|
-
|
71
|
+
status = service_command(:status, false)
|
72
72
|
|
73
73
|
# Explicitly calling exitstatus to facilitate testing
|
74
|
-
if
|
74
|
+
if status.exitstatus == 0
|
75
75
|
return :running
|
76
76
|
else
|
77
77
|
return :stopped
|
@@ -93,7 +93,8 @@ Puppet::Type.type(:service).provide :base, :parent => :service do
|
|
93
93
|
|
94
94
|
# Run the 'start' parameter command, or the specified 'startcmd'.
|
95
95
|
def start
|
96
|
-
|
96
|
+
service_command(:start)
|
97
|
+
nil
|
97
98
|
end
|
98
99
|
|
99
100
|
# The command used to start. Generated if the 'binary' argument
|
@@ -114,7 +115,8 @@ Puppet::Type.type(:service).provide :base, :parent => :service do
|
|
114
115
|
# This method will generally not be overridden by submodules.
|
115
116
|
def stop
|
116
117
|
if @resource[:stop] or stopcmd
|
117
|
-
|
118
|
+
service_command(:stop)
|
119
|
+
nil
|
118
120
|
else
|
119
121
|
pid = getpid
|
120
122
|
unless pid
|
@@ -128,7 +128,6 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
|
|
128
128
|
if resource[:manifest]
|
129
129
|
Puppet.notice "Configuring #{resource[:name]}"
|
130
130
|
command = [ resource[:manifest], resource[:name] ]
|
131
|
-
#texecute("setupservice", command)
|
132
131
|
system("#{command}")
|
133
132
|
end
|
134
133
|
rescue Puppet::ExecutionFailure => detail
|
@@ -34,16 +34,14 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def enabled?
|
37
|
-
|
38
|
-
# to determine exit status. https://projects.puppetlabs.com/issues/2538
|
39
|
-
system("/usr/sbin/invoke-rc.d", "--quiet", "--query", @resource[:name], "start")
|
37
|
+
status = execute(["/usr/sbin/invoke-rc.d", "--quiet", "--query", @resource[:name], "start"], :failonfail => false)
|
40
38
|
|
41
39
|
# 104 is the exit status when you query start an enabled service.
|
42
40
|
# 106 is the exit status when the policy layer supplies a fallback action
|
43
41
|
# See x-man-page://invoke-rc.d
|
44
|
-
if [104, 106].include?(
|
42
|
+
if [104, 106].include?(status.exitstatus)
|
45
43
|
return :true
|
46
|
-
elsif [101, 105].include?(
|
44
|
+
elsif [101, 105].include?(status.exitstatus)
|
47
45
|
# 101 is action not allowed, which means we have to do the check manually.
|
48
46
|
# 105 is unknown, which generally means the initscript does not support query
|
49
47
|
# The debian policy states that the initscript should support methods of query
|
@@ -74,7 +74,7 @@ Puppet::Type.type(:service).provide :freebsd, :parent => :init do
|
|
74
74
|
if Puppet::FileSystem.exist?(filename)
|
75
75
|
s = File.read(filename)
|
76
76
|
if s.gsub!(/^(#{rcvar}(_enable)?)=\"?(YES|NO)\"?/, "\\1=\"#{yesno}\"")
|
77
|
-
|
77
|
+
Puppet::FileSystem.replace_file(filename) { |f| f << s }
|
78
78
|
self.debug("Replaced in #{filename}")
|
79
79
|
success = true
|
80
80
|
end
|
@@ -170,7 +170,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
|
|
170
170
|
(@resource[:hasrestart] == :true) && [initscript, :restart]
|
171
171
|
end
|
172
172
|
|
173
|
-
def
|
173
|
+
def service_execute(type, command, fof = true, squelch = false, combine = true)
|
174
174
|
if type == :start && Facter.value(:osfamily) == "Solaris"
|
175
175
|
command = ["/usr/bin/ctrun -l child", command].flatten.join(" ")
|
176
176
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative '../../../puppet/util/plist'
|
2
2
|
Puppet::Type.type(:service).provide :launchd, :parent => :base do
|
3
3
|
desc <<-'EOT'
|
4
4
|
This provider manages jobs with `launchd`, which is the default service
|
@@ -262,7 +262,10 @@ Puppet::Type.type(:service).provide :launchd, :parent => :base do
|
|
262
262
|
# conditionally enable at load, then disable by modifying the plist file
|
263
263
|
# directly.
|
264
264
|
def start
|
265
|
-
|
265
|
+
if resource[:start]
|
266
|
+
service_command(:start)
|
267
|
+
return nil
|
268
|
+
end
|
266
269
|
job_path, _ = plist_from_label(resource[:name])
|
267
270
|
did_enable_job = false
|
268
271
|
cmds = []
|
@@ -285,7 +288,10 @@ Puppet::Type.type(:service).provide :launchd, :parent => :base do
|
|
285
288
|
|
286
289
|
|
287
290
|
def stop
|
288
|
-
|
291
|
+
if resource[:stop]
|
292
|
+
service_command(:stop)
|
293
|
+
return nil
|
294
|
+
end
|
289
295
|
job_path, _ = plist_from_label(resource[:name])
|
290
296
|
did_disable_job = false
|
291
297
|
cmds = []
|
@@ -8,7 +8,8 @@ Puppet::Type.type(:service).provide :service do
|
|
8
8
|
# How to restart the process.
|
9
9
|
def restart
|
10
10
|
if @resource[:restart] or restartcmd
|
11
|
-
|
11
|
+
service_command(:restart)
|
12
|
+
nil
|
12
13
|
else
|
13
14
|
self.stop
|
14
15
|
self.start
|
@@ -19,7 +20,7 @@ Puppet::Type.type(:service).provide :service do
|
|
19
20
|
def restartcmd
|
20
21
|
end
|
21
22
|
|
22
|
-
#
|
23
|
+
# @deprecated because the exit status is not returned, use service_execute instead
|
23
24
|
def texecute(type, command, fof = true, squelch = false, combine = true)
|
24
25
|
begin
|
25
26
|
execute(command, :failonfail => fof, :override_locale => false, :squelch => squelch, :combine => combine)
|
@@ -29,7 +30,7 @@ Puppet::Type.type(:service).provide :service do
|
|
29
30
|
nil
|
30
31
|
end
|
31
32
|
|
32
|
-
#
|
33
|
+
# @deprecated because the exitstatus is not returned, use service_command instead
|
33
34
|
def ucommand(type, fof = true)
|
34
35
|
c = @resource[type]
|
35
36
|
if c
|
@@ -39,5 +40,29 @@ Puppet::Type.type(:service).provide :service do
|
|
39
40
|
end
|
40
41
|
texecute(type, cmd, fof)
|
41
42
|
end
|
43
|
+
|
44
|
+
# Execute a command, failing the resource if the command fails.
|
45
|
+
#
|
46
|
+
# @return [Puppet::Util::Execution::ProcessOutput]
|
47
|
+
def service_execute(type, command, fof = true, squelch = false, combine = true)
|
48
|
+
begin
|
49
|
+
execute(command, :failonfail => fof, :override_locale => false, :squelch => squelch, :combine => combine)
|
50
|
+
rescue Puppet::ExecutionFailure => detail
|
51
|
+
@resource.fail Puppet::Error, "Could not #{type} #{@resource.ref}: #{detail}", detail
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Use either a specified command or the default for our provider.
|
56
|
+
#
|
57
|
+
# @return [Puppet::Util::Execution::ProcessOutput]
|
58
|
+
def service_command(type, fof = true)
|
59
|
+
c = @resource[type]
|
60
|
+
if c
|
61
|
+
cmd = [c]
|
62
|
+
else
|
63
|
+
cmd = [send("#{type}cmd")].flatten
|
64
|
+
end
|
65
|
+
service_execute(type, cmd, fof)
|
66
|
+
end
|
42
67
|
end
|
43
68
|
|
@@ -77,30 +77,6 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
|
|
77
77
|
raise Puppet::Error.new( "Cannot config #{@resource[:name]} to enable it: #{detail}", detail )
|
78
78
|
end
|
79
79
|
|
80
|
-
# Returns the service's FMRI. We fail if multiple FMRIs correspond to
|
81
|
-
# @resource[:name].
|
82
|
-
#
|
83
|
-
# If the service does not exist or we fail to get any FMRIs from svcs,
|
84
|
-
# this method will raise a Puppet::ExecutionFailure
|
85
|
-
def service_fmri
|
86
|
-
return @fmri if @fmri
|
87
|
-
|
88
|
-
# `svcs -l` is better to use because we can detect service instances
|
89
|
-
# that have not yet been activated or enabled (i.e. it lets us detect
|
90
|
-
# services that svcadm has not yet touched). `svcs -H -o fmri` is a bit
|
91
|
-
# more limited.
|
92
|
-
lines = svcs("-l", @resource[:name]).chomp.lines.to_a
|
93
|
-
lines.select! { |line| line =~ /^fmri/ }
|
94
|
-
fmris = lines.map! { |line| line.split(' ')[-1].chomp }
|
95
|
-
unless fmris.length == 1
|
96
|
-
raise Puppet::Error.new(
|
97
|
-
"Failed to get #{@resource[:name]}'s FMRI: The pattern '#{@resource[:name]}' matches multiple FMRIs! These are the FMRIs it matches: #{fmris.join(', ')}"
|
98
|
-
)
|
99
|
-
end
|
100
|
-
|
101
|
-
@fmri = fmris.first
|
102
|
-
end
|
103
|
-
|
104
80
|
# Returns the service's FMRI. We fail if multiple FMRIs correspond to
|
105
81
|
# @resource[:name].
|
106
82
|
#
|
@@ -53,8 +53,8 @@ Puppet::Type.type(:service).provide :src, :parent => :base do
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def enabled?
|
56
|
-
execute([command(:lsitab), @resource[:name]], {:failonfail => false, :combine => true})
|
57
|
-
|
56
|
+
output = execute([command(:lsitab), @resource[:name]], {:failonfail => false, :combine => true})
|
57
|
+
output.exitstatus == 0 ? :true : :false
|
58
58
|
end
|
59
59
|
|
60
60
|
def enable
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Manage systemd services using systemctl
|
2
2
|
|
3
|
-
|
3
|
+
require_relative '../../../puppet/file_system'
|
4
4
|
|
5
5
|
Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
6
6
|
desc "Manages `systemd` services using `systemctl`.
|
@@ -30,7 +30,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
30
30
|
def self.instances
|
31
31
|
i = []
|
32
32
|
output = systemctl('list-unit-files', '--type', 'service', '--full', '--all', '--no-pager')
|
33
|
-
output.scan(/^(\S+)\s+(disabled|enabled|masked|indirect|bad|static)\s*$/i).each do |m|
|
33
|
+
output.scan(/^(\S+)\s+(disabled|enabled|masked|indirect|bad|static)\s*([^-]\S+)?\s*$/i).each do |m|
|
34
34
|
Puppet.debug("#{m[0]} marked as bad by `systemctl`. It is recommended to be further checked.") if m[1] == "bad"
|
35
35
|
i << new(:name => m[0])
|
36
36
|
end
|
@@ -45,8 +45,13 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
45
45
|
def enabled_insync?(current)
|
46
46
|
case cached_enabled?[:output]
|
47
47
|
when 'static'
|
48
|
-
|
49
|
-
|
48
|
+
# masking static services is OK, but enabling/disabling them is not
|
49
|
+
if @resource[:enable] == :mask
|
50
|
+
current == @resource[:enable]
|
51
|
+
else
|
52
|
+
Puppet.debug("Unable to enable or disable static service #{@resource[:name]}")
|
53
|
+
return true
|
54
|
+
end
|
50
55
|
when 'indirect'
|
51
56
|
Puppet.debug("Service #{@resource[:name]} is in 'indirect' state and cannot be enabled/disabled")
|
52
57
|
return true
|
@@ -119,10 +124,10 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
119
124
|
# whether it is enabled or not. See PUP-5016 for more details.
|
120
125
|
#
|
121
126
|
def debian_enabled?
|
122
|
-
|
123
|
-
if [104, 106].include?(
|
127
|
+
status = execute(["/usr/sbin/invoke-rc.d", "--quiet", "--query", @resource[:name], "start"], :failonfail => false)
|
128
|
+
if [104, 106].include?(status.exitstatus)
|
124
129
|
return :true
|
125
|
-
elsif [101, 105].include?(
|
130
|
+
elsif [101, 105].include?(status.exitstatus)
|
126
131
|
# 101 is action not allowed, which means we have to do the check manually.
|
127
132
|
# 105 is unknown, which generally means the initscript does not support query
|
128
133
|
# The debian policy states that the initscript should support methods of query
|
@@ -159,10 +164,15 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
159
164
|
end
|
160
165
|
|
161
166
|
def mask
|
162
|
-
|
167
|
+
disable if exist?
|
163
168
|
systemctl_change_enable(:mask)
|
164
169
|
end
|
165
170
|
|
171
|
+
def exist?
|
172
|
+
result = execute([command(:systemctl), 'cat', '--', @resource[:name]], :failonfail => false)
|
173
|
+
result.exitstatus == 0
|
174
|
+
end
|
175
|
+
|
166
176
|
def unmask
|
167
177
|
systemctl_change_enable(:unmask)
|
168
178
|
end
|
@@ -128,17 +128,55 @@ Puppet::Type.type(:service).provide :windows, :parent => :service do
|
|
128
128
|
services
|
129
129
|
end
|
130
130
|
|
131
|
+
def logonaccount_insync?(current)
|
132
|
+
@normalized_logon_account ||= normalize_logonaccount
|
133
|
+
@resource[:logonaccount] = @normalized_logon_account
|
134
|
+
|
135
|
+
insync = @resource[:logonaccount] == current
|
136
|
+
self.logonpassword = @resource[:logonpassword] if insync
|
137
|
+
insync
|
138
|
+
end
|
139
|
+
|
131
140
|
def logonaccount
|
132
141
|
return unless Puppet::Util::Windows::Service.exists?(@resource[:name])
|
133
142
|
Puppet::Util::Windows::Service.logon_account(@resource[:name])
|
134
143
|
end
|
135
144
|
|
136
145
|
def logonaccount=(value)
|
146
|
+
validate_logon_credentials
|
137
147
|
Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {logon_account: value, logon_password: @resource[:logonpassword]})
|
138
148
|
restart if @resource[:ensure] == :running && [:running, :paused].include?(status)
|
139
149
|
end
|
140
150
|
|
141
151
|
def logonpassword=(value)
|
152
|
+
validate_logon_credentials
|
142
153
|
Puppet::Util::Windows::Service.set_startup_configuration(@resource[:name], options: {logon_password: value})
|
143
154
|
end
|
155
|
+
|
156
|
+
private
|
157
|
+
|
158
|
+
def normalize_logonaccount
|
159
|
+
logon_account = @resource[:logonaccount].sub(/^\.\\/, "#{Puppet::Util::Windows::ADSI.computer_name}\\")
|
160
|
+
return 'LocalSystem' if Puppet::Util::Windows::User::localsystem?(logon_account)
|
161
|
+
|
162
|
+
@logonaccount_information ||= Puppet::Util::Windows::SID.name_to_principal(logon_account)
|
163
|
+
return logon_account unless @logonaccount_information
|
164
|
+
return ".\\#{@logonaccount_information.account}" if @logonaccount_information.domain == Puppet::Util::Windows::ADSI.computer_name
|
165
|
+
@logonaccount_information.domain_account
|
166
|
+
end
|
167
|
+
|
168
|
+
def validate_logon_credentials
|
169
|
+
unless Puppet::Util::Windows::User::localsystem?(@normalized_logon_account)
|
170
|
+
raise Puppet::Error.new("\"#{@normalized_logon_account}\" is not a valid account") unless @logonaccount_information && [:SidTypeUser, :SidTypeWellKnownGroup].include?(@logonaccount_information.account_type)
|
171
|
+
|
172
|
+
user_rights = Puppet::Util::Windows::User::get_rights(@logonaccount_information.domain_account) unless Puppet::Util::Windows::User::default_system_account?(@normalized_logon_account)
|
173
|
+
raise Puppet::Error.new("\"#{@normalized_logon_account}\" has the 'Log On As A Service' right set to denied.") if user_rights =~ /SeDenyServiceLogonRight/
|
174
|
+
raise Puppet::Error.new("\"#{@normalized_logon_account}\" is missing the 'Log On As A Service' right.") unless user_rights.nil? || user_rights =~ /SeServiceLogonRight/
|
175
|
+
end
|
176
|
+
|
177
|
+
is_a_predefined_local_account = Puppet::Util::Windows::User::default_system_account?(@normalized_logon_account) || @normalized_logon_account == 'LocalSystem'
|
178
|
+
account_info = @normalized_logon_account.split("\\")
|
179
|
+
able_to_logon = Puppet::Util::Windows::User.password_is?(account_info[1], @resource[:logonpassword], account_info[0]) unless is_a_predefined_local_account
|
180
|
+
raise Puppet::Error.new("The given password is invalid for user '#{@normalized_logon_account}'.") unless is_a_predefined_local_account || able_to_logon
|
181
|
+
end
|
144
182
|
end
|
@@ -9,8 +9,8 @@
|
|
9
9
|
#
|
10
10
|
# See https://puppet.com/docs/puppet/latest/provider_development.html
|
11
11
|
# for more information
|
12
|
-
|
13
|
-
|
12
|
+
require_relative '../../../puppet/provider/aix_object'
|
13
|
+
require_relative '../../../puppet/util/posix'
|
14
14
|
require 'tempfile'
|
15
15
|
require 'date'
|
16
16
|
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require_relative '../../../puppet'
|
2
|
+
require_relative '../../../puppet/util/plist' if Puppet.features.cfpropertylist?
|
3
3
|
require 'base64'
|
4
4
|
|
5
5
|
Puppet::Type.type(:user).provide :directoryservice do
|
@@ -435,7 +435,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
435
435
|
['home', 'uid', 'gid', 'comment', 'shell'].each do |setter_method|
|
436
436
|
define_method("#{setter_method}=") do |value|
|
437
437
|
if @property_hash[setter_method.intern]
|
438
|
-
if
|
438
|
+
if %w(home uid).include?(setter_method)
|
439
439
|
raise Puppet::Error, "OS X version #{self.class.get_os_version} does not allow changing #{setter_method} using puppet"
|
440
440
|
end
|
441
441
|
begin
|
@@ -536,6 +536,14 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
536
536
|
if (shadow_hash_data.class == Hash) && (shadow_hash_data.has_key?('SALTED-SHA512'))
|
537
537
|
shadow_hash_data.delete('SALTED-SHA512')
|
538
538
|
end
|
539
|
+
|
540
|
+
# Starting with macOS 11 Big Sur, the AuthenticationAuthority field
|
541
|
+
# could be missing entirely and without it the managed user cannot log in
|
542
|
+
if needs_sha512_pbkdf2_authentication_authority_to_be_added?(users_plist)
|
543
|
+
Puppet.debug("Adding 'SALTED-SHA512-PBKDF2' AuthenticationAuthority key for ShadowHash to user '#{@resource.name}'")
|
544
|
+
merge_attribute_with_dscl('Users', @resource.name, 'AuthenticationAuthority', ERB::Util.html_escape(SHA512_PBKDF2_AUTHENTICATION_AUTHORITY))
|
545
|
+
end
|
546
|
+
|
539
547
|
set_salted_pbkdf2(users_plist, shadow_hash_data, 'entropy', value)
|
540
548
|
end
|
541
549
|
end
|
@@ -562,6 +570,17 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
562
570
|
end
|
563
571
|
end
|
564
572
|
|
573
|
+
# This method will check if authentication_authority key of a user's plist
|
574
|
+
# needs SALTED_SHA512_PBKDF2 to be added. This is a valid case for macOS 11 (Big Sur)
|
575
|
+
# where users created with `dscl` started to have this field missing
|
576
|
+
def needs_sha512_pbkdf2_authentication_authority_to_be_added?(users_plist)
|
577
|
+
authority = users_plist['authentication_authority']
|
578
|
+
return false if Puppet::Util::Package.versioncmp(self.class.get_os_version, '11.0.0') < 0 && authority && authority.include?(SHA512_PBKDF2_AUTHENTICATION_AUTHORITY)
|
579
|
+
|
580
|
+
Puppet.debug("User '#{@resource.name}' is missing the 'SALTED-SHA512-PBKDF2' AuthenticationAuthority key for ShadowHash")
|
581
|
+
true
|
582
|
+
end
|
583
|
+
|
565
584
|
# This method will embed the binary plist data comprising the user's
|
566
585
|
# password hash (and Salt/Iterations value if the OS is 10.8 or greater)
|
567
586
|
# into the ShadowHashData key of the user's plist.
|
@@ -572,11 +591,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
572
591
|
else
|
573
592
|
users_plist['ShadowHashData'] = [binary_plist]
|
574
593
|
end
|
575
|
-
|
576
|
-
write_users_plist_to_disk(users_plist)
|
577
|
-
else
|
578
|
-
write_and_import_shadow_hash_data(users_plist['ShadowHashData'].first)
|
579
|
-
end
|
594
|
+
write_and_import_shadow_hash_data(users_plist['ShadowHashData'].first)
|
580
595
|
end
|
581
596
|
|
582
597
|
# This method writes the ShadowHashData plist in a temporary file,
|
@@ -652,9 +667,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
652
667
|
set_shadow_hash_data(users_plist, binary_plist)
|
653
668
|
end
|
654
669
|
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
Puppet::Util::Plist.write_plist_file(users_plist, "#{users_plist_dir}/#{@resource.name}.plist", :binary)
|
659
|
-
end
|
670
|
+
private
|
671
|
+
|
672
|
+
SHA512_PBKDF2_AUTHENTICATION_AUTHORITY = ';ShadowHash;HASHLIST:<SALTED-SHA512-PBKDF2,SRP-RFC5054-4096-SHA512-PBKDF2>'
|
660
673
|
end
|