puppet 8.5.0-universal-darwin → 8.6.0-universal-darwin
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 +4 -4
- data/Gemfile.lock +29 -26
- data/ext/windows/service/daemon.rb +49 -55
- data/lib/hiera/scope.rb +3 -3
- data/lib/hiera_puppet.rb +1 -1
- data/lib/puppet/agent/disabler.rb +1 -1
- data/lib/puppet/application/agent.rb +2 -2
- data/lib/puppet/application/apply.rb +2 -2
- data/lib/puppet/application/describe.rb +6 -6
- data/lib/puppet/application/device.rb +99 -100
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/face_base.rb +7 -7
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/lookup.rb +5 -5
- data/lib/puppet/application/resource.rb +10 -3
- data/lib/puppet/application/ssl.rb +3 -3
- data/lib/puppet/application.rb +16 -18
- data/lib/puppet/coercion.rb +1 -1
- data/lib/puppet/configurer/downloader.rb +9 -4
- data/lib/puppet/configurer/fact_handler.rb +12 -13
- data/lib/puppet/configurer.rb +16 -18
- data/lib/puppet/confine/feature.rb +1 -1
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine_collection.rb +1 -1
- data/lib/puppet/confiner.rb +2 -2
- data/lib/puppet/daemon.rb +3 -3
- data/lib/puppet/datatypes.rb +5 -6
- data/lib/puppet/defaults.rb +14 -8
- data/lib/puppet/environments.rb +3 -7
- data/lib/puppet/error.rb +3 -3
- data/lib/puppet/external/dot.rb +42 -34
- data/lib/puppet/face/catalog/select.rb +1 -1
- data/lib/puppet/face/epp.rb +7 -9
- data/lib/puppet/face/help.rb +12 -12
- data/lib/puppet/face/module/changes.rb +1 -3
- data/lib/puppet/face/module/list.rb +37 -37
- data/lib/puppet/face/node/clean.rb +1 -1
- data/lib/puppet/face/parser.rb +6 -8
- data/lib/puppet/face/report.rb +5 -7
- data/lib/puppet/facter_impl.rb +1 -1
- data/lib/puppet/feature/base.rb +9 -11
- data/lib/puppet/feature/pe_license.rb +1 -1
- data/lib/puppet/feature/ssh.rb +1 -1
- data/lib/puppet/feature/telnet.rb +3 -5
- data/lib/puppet/feature/zlib.rb +1 -1
- data/lib/puppet/ffi/windows/constants.rb +1 -1
- data/lib/puppet/ffi/windows/functions.rb +2 -2
- data/lib/puppet/ffi/windows/structs.rb +3 -3
- data/lib/puppet/file_bucket/dipper.rb +4 -4
- data/lib/puppet/file_bucket/file.rb +4 -4
- data/lib/puppet/file_serving/base.rb +5 -5
- data/lib/puppet/file_serving/configuration/parser.rb +9 -9
- data/lib/puppet/file_serving/configuration.rb +3 -3
- data/lib/puppet/file_serving/fileset.rb +13 -13
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +13 -9
- data/lib/puppet/file_serving/mount/file.rb +6 -6
- data/lib/puppet/file_serving/mount/locales.rb +2 -4
- data/lib/puppet/file_serving/mount/pluginfacts.rb +2 -4
- data/lib/puppet/file_serving/mount/plugins.rb +2 -4
- data/lib/puppet/file_serving/mount.rb +1 -1
- data/lib/puppet/file_system/file_impl.rb +3 -3
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/path_pattern.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +17 -16
- data/lib/puppet/file_system/windows.rb +26 -18
- data/lib/puppet/forge/cache.rb +2 -2
- data/lib/puppet/forge/errors.rb +1 -1
- data/lib/puppet/forge/repository.rb +2 -2
- data/lib/puppet/forge.rb +13 -19
- data/lib/puppet/functions/abs.rb +2 -2
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/compare.rb +2 -2
- data/lib/puppet/functions/contain.rb +1 -1
- data/lib/puppet/functions/defined.rb +2 -2
- data/lib/puppet/functions/dig.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +11 -13
- data/lib/puppet/functions/get.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +3 -5
- data/lib/puppet/functions/import.rb +1 -1
- data/lib/puppet/functions/json_data.rb +4 -6
- data/lib/puppet/functions/max.rb +2 -2
- data/lib/puppet/functions/min.rb +2 -2
- data/lib/puppet/functions/new.rb +1 -1
- data/lib/puppet/functions/reduce.rb +6 -10
- data/lib/puppet/functions/regsubst.rb +2 -2
- data/lib/puppet/functions/require.rb +1 -1
- data/lib/puppet/functions/yaml_data.rb +11 -13
- data/lib/puppet/functions.rb +32 -37
- data/lib/puppet/generate/type.rb +2 -2
- data/lib/puppet/gettext/config.rb +9 -9
- data/lib/puppet/graph/rb_tree_map.rb +31 -23
- data/lib/puppet/graph/relationship_graph.rb +12 -12
- data/lib/puppet/graph/simple_graph.rb +8 -10
- data/lib/puppet/http/client.rb +1 -1
- data/lib/puppet/http/dns.rb +4 -4
- data/lib/puppet/http/external_client.rb +1 -1
- data/lib/puppet/http/factory.rb +1 -1
- data/lib/puppet/http/proxy.rb +15 -15
- data/lib/puppet/http/redirector.rb +6 -2
- data/lib/puppet/http/resolver.rb +2 -2
- data/lib/puppet/http/retry_after_handler.rb +2 -2
- data/lib/puppet/http/service/ca.rb +1 -1
- data/lib/puppet/http/service/compiler.rb +4 -4
- data/lib/puppet/http/service/file_server.rb +1 -1
- data/lib/puppet/http/service/report.rb +2 -2
- data/lib/puppet/http/service.rb +9 -13
- data/lib/puppet/http/session.rb +1 -1
- data/lib/puppet/http/site.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +44 -45
- data/lib/puppet/indirector/catalog/rest.rb +7 -5
- data/lib/puppet/indirector/catalog/store_configs.rb +1 -1
- data/lib/puppet/indirector/exec.rb +2 -2
- data/lib/puppet/indirector/face.rb +7 -9
- data/lib/puppet/indirector/fact_search.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +6 -6
- data/lib/puppet/indirector/facts/json.rb +1 -1
- data/lib/puppet/indirector/facts/store_configs.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +17 -17
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -3
- data/lib/puppet/indirector/file_content/rest.rb +1 -1
- data/lib/puppet/indirector/file_metadata/rest.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +1 -1
- data/lib/puppet/indirector/indirection.rb +27 -29
- data/lib/puppet/indirector/json.rb +4 -4
- data/lib/puppet/indirector/memory.rb +2 -2
- data/lib/puppet/indirector/msgpack.rb +5 -5
- data/lib/puppet/indirector/node/store_configs.rb +1 -1
- data/lib/puppet/indirector/none.rb +1 -1
- data/lib/puppet/indirector/report/json.rb +1 -1
- data/lib/puppet/indirector/report/yaml.rb +1 -1
- data/lib/puppet/indirector/request.rb +4 -4
- data/lib/puppet/indirector/resource/ral.rb +2 -4
- data/lib/puppet/indirector/resource/store_configs.rb +1 -1
- data/lib/puppet/indirector/terminus.rb +4 -4
- data/lib/puppet/indirector/yaml.rb +3 -3
- data/lib/puppet/info_service/class_information_service.rb +5 -8
- data/lib/puppet/info_service/task_information_service.rb +6 -7
- data/lib/puppet/interface/action.rb +5 -5
- data/lib/puppet/interface/action_manager.rb +5 -5
- data/lib/puppet/interface/documentation.rb +5 -5
- data/lib/puppet/interface/face_collection.rb +7 -7
- data/lib/puppet/interface/option.rb +2 -2
- data/lib/puppet/interface/option_manager.rb +6 -6
- data/lib/puppet/interface.rb +4 -4
- data/lib/puppet/metatype/manager.rb +2 -2
- data/lib/puppet/module/plan.rb +10 -10
- data/lib/puppet/module/task.rb +8 -8
- data/lib/puppet/module.rb +39 -41
- data/lib/puppet/module_tool/applications/application.rb +10 -8
- data/lib/puppet/module_tool/applications/installer.rb +53 -50
- data/lib/puppet/module_tool/applications/unpacker.rb +6 -8
- data/lib/puppet/module_tool/applications/upgrader.rb +37 -34
- data/lib/puppet/module_tool/checksums.rb +2 -2
- data/lib/puppet/module_tool/dependency.rb +1 -1
- data/lib/puppet/module_tool/errors/base.rb +1 -1
- data/lib/puppet/module_tool/install_directory.rb +1 -1
- data/lib/puppet/module_tool/local_tarball.rb +3 -5
- data/lib/puppet/module_tool/metadata.rb +12 -8
- data/lib/puppet/module_tool/shared_behaviors.rb +27 -12
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/module_tool.rb +4 -4
- data/lib/puppet/network/client_request.rb +5 -3
- data/lib/puppet/network/format.rb +2 -2
- data/lib/puppet/network/format_support.rb +1 -1
- data/lib/puppet/network/formats.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +24 -44
- data/lib/puppet/network/http/api/server/v3.rb +1 -1
- data/lib/puppet/network/http/connection.rb +1 -1
- data/lib/puppet/network/http/handler.rb +8 -12
- data/lib/puppet/network/http/request.rb +1 -1
- data/lib/puppet/network/http/route.rb +9 -9
- data/lib/puppet/node/environment.rb +21 -23
- data/lib/puppet/node/facts.rb +1 -1
- data/lib/puppet/node.rb +5 -5
- data/lib/puppet/pal/json_catalog_encoder.rb +1 -1
- data/lib/puppet/pal/pal_impl.rb +48 -50
- data/lib/puppet/pal/plan_signature.rb +1 -1
- data/lib/puppet/pal/task_signature.rb +1 -1
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/value.rb +2 -2
- data/lib/puppet/parameter/value_collection.rb +7 -7
- data/lib/puppet/parameter.rb +8 -9
- data/lib/puppet/parser/ast/block_expression.rb +2 -2
- data/lib/puppet/parser/ast/hostclass.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +3 -4
- data/lib/puppet/parser/ast/resource.rb +4 -4
- data/lib/puppet/parser/ast/resourceparam.rb +4 -4
- data/lib/puppet/parser/ast.rb +14 -15
- data/lib/puppet/parser/compiler.rb +26 -28
- data/lib/puppet/parser/functions/create_resources.rb +3 -3
- data/lib/puppet/parser/functions/fail.rb +1 -1
- data/lib/puppet/parser/functions/generate.rb +2 -2
- data/lib/puppet/parser/functions/tag.rb +1 -1
- data/lib/puppet/parser/functions.rb +2 -2
- data/lib/puppet/parser/relationship.rb +3 -1
- data/lib/puppet/parser/resource/param.rb +2 -2
- data/lib/puppet/parser/resource.rb +23 -23
- data/lib/puppet/parser/scope.rb +10 -10
- data/lib/puppet/parser/script_compiler.rb +1 -1
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +10 -12
- data/lib/puppet/parser.rb +1 -1
- data/lib/puppet/pops/adaptable.rb +1 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +8 -8
- data/lib/puppet/pops/evaluator/callable_signature.rb +4 -4
- data/lib/puppet/pops/evaluator/collector_transformer.rb +4 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +7 -7
- data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +6 -6
- data/lib/puppet/pops/evaluator/compare_operator.rb +10 -10
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +1 -1
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +56 -60
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +4 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/functions/dispatcher.rb +3 -3
- data/lib/puppet/pops/functions/function.rb +14 -16
- data/lib/puppet/pops/issue_reporter.rb +2 -2
- data/lib/puppet/pops/label_provider.rb +2 -2
- data/lib/puppet/pops/loader/dependency_loader.rb +3 -3
- data/lib/puppet/pops/loader/loader.rb +4 -4
- data/lib/puppet/pops/loader/loader_paths.rb +3 -3
- data/lib/puppet/pops/loader/module_loaders.rb +11 -11
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -1
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -1
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +5 -1
- data/lib/puppet/pops/loader/static_loader.rb +3 -3
- data/lib/puppet/pops/loaders.rb +3 -3
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +1 -1
- data/lib/puppet/pops/lookup/explainer.rb +2 -2
- data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +15 -11
- data/lib/puppet/pops/lookup/interpolation.rb +3 -3
- data/lib/puppet/pops/lookup/key_recorder.rb +1 -1
- data/lib/puppet/pops/lookup/location_resolver.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +7 -7
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +6 -6
- data/lib/puppet/pops/migration/migration_checker.rb +1 -1
- data/lib/puppet/pops/model/ast_transformer.rb +9 -11
- data/lib/puppet/pops/model/factory.rb +4 -5
- data/lib/puppet/pops/parser/epp_parser.rb +2 -2
- data/lib/puppet/pops/parser/epp_support.rb +1 -1
- data/lib/puppet/pops/parser/evaluating_parser.rb +2 -2
- data/lib/puppet/pops/parser/heredoc_support.rb +4 -4
- data/lib/puppet/pops/parser/interpolation_support.rb +3 -3
- data/lib/puppet/pops/parser/lexer2.rb +20 -12
- data/lib/puppet/pops/parser/lexer_support.rb +1 -1
- data/lib/puppet/pops/parser/locator.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +12 -14
- data/lib/puppet/pops/parser/pn_parser.rb +3 -3
- data/lib/puppet/pops/parser/slurp_support.rb +8 -8
- data/lib/puppet/pops/patterns.rb +12 -12
- data/lib/puppet/pops/pcore.rb +1 -1
- data/lib/puppet/pops/pn.rb +2 -2
- data/lib/puppet/pops/puppet_stack.rb +1 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +1 -1
- data/lib/puppet/pops/serialization/abstract_reader.rb +2 -2
- data/lib/puppet/pops/serialization/abstract_writer.rb +3 -3
- data/lib/puppet/pops/time/timestamp.rb +1 -1
- data/lib/puppet/pops/types/class_loader.rb +4 -6
- data/lib/puppet/pops/types/iterable.rb +1 -1
- data/lib/puppet/pops/types/p_binary_type.rb +1 -1
- data/lib/puppet/pops/types/p_init_type.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +5 -5
- data/lib/puppet/pops/types/p_object_type_extension.rb +4 -6
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +1 -1
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +10 -10
- data/lib/puppet/pops/types/p_uri_type.rb +4 -4
- data/lib/puppet/pops/types/recursion_guard.rb +4 -4
- data/lib/puppet/pops/types/ruby_generator.rb +2 -2
- data/lib/puppet/pops/types/string_converter.rb +12 -8
- data/lib/puppet/pops/types/tree_iterators.rb +4 -6
- data/lib/puppet/pops/types/type_calculator.rb +10 -10
- data/lib/puppet/pops/types/type_factory.rb +7 -3
- data/lib/puppet/pops/types/type_formatter.rb +22 -24
- data/lib/puppet/pops/types/type_mismatch_describer.rb +24 -24
- data/lib/puppet/pops/types/types.rb +28 -24
- data/lib/puppet/pops/utils.rb +38 -42
- data/lib/puppet/pops/validation/checker4_0.rb +10 -10
- data/lib/puppet/pops/validation/tasks_checker.rb +1 -1
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +2 -0
- data/lib/puppet/pops/validation.rb +4 -4
- data/lib/puppet/pops/visitor.rb +2 -2
- data/lib/puppet/property/ensure.rb +12 -14
- data/lib/puppet/property/keyvalue.rb +4 -4
- data/lib/puppet/property/list.rb +4 -4
- data/lib/puppet/property/ordered_list.rb +1 -1
- data/lib/puppet/property.rb +31 -33
- data/lib/puppet/provider/exec.rb +2 -2
- data/lib/puppet/provider/file/posix.rb +19 -17
- data/lib/puppet/provider/file/windows.rb +13 -19
- data/lib/puppet/provider/group/directoryservice.rb +3 -2
- data/lib/puppet/provider/group/groupadd.rb +4 -4
- data/lib/puppet/provider/group/windows_adsi.rb +2 -2
- data/lib/puppet/provider/nameservice/directoryservice.rb +29 -29
- data/lib/puppet/provider/nameservice/objectadd.rb +2 -4
- data/lib/puppet/provider/nameservice/pw.rb +1 -2
- data/lib/puppet/provider/nameservice.rb +8 -8
- data/lib/puppet/provider/package/aix.rb +19 -19
- 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 +18 -18
- data/lib/puppet/provider/package/aptitude.rb +1 -3
- data/lib/puppet/provider/package/aptrpm.rb +9 -9
- data/lib/puppet/provider/package/blastwave.rb +10 -14
- data/lib/puppet/provider/package/dnfmodule.rb +3 -3
- data/lib/puppet/provider/package/dpkg.rb +11 -13
- data/lib/puppet/provider/package/fink.rb +14 -14
- data/lib/puppet/provider/package/freebsd.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +12 -14
- data/lib/puppet/provider/package/macports.rb +2 -2
- data/lib/puppet/provider/package/nim.rb +10 -10
- data/lib/puppet/provider/package/openbsd.rb +22 -22
- data/lib/puppet/provider/package/opkg.rb +6 -6
- data/lib/puppet/provider/package/pacman.rb +35 -29
- data/lib/puppet/provider/package/pip.rb +25 -24
- data/lib/puppet/provider/package/pkg.rb +15 -15
- data/lib/puppet/provider/package/pkgdmg.rb +10 -10
- data/lib/puppet/provider/package/pkgin.rb +2 -2
- data/lib/puppet/provider/package/pkgng.rb +5 -5
- data/lib/puppet/provider/package/pkgutil.rb +17 -21
- data/lib/puppet/provider/package/portage.rb +59 -61
- data/lib/puppet/provider/package/ports.rb +12 -11
- data/lib/puppet/provider/package/portupgrade.rb +35 -35
- data/lib/puppet/provider/package/puppetserver_gem.rb +10 -9
- data/lib/puppet/provider/package/rpm.rb +26 -26
- data/lib/puppet/provider/package/rug.rb +7 -9
- data/lib/puppet/provider/package/sun.rb +4 -4
- data/lib/puppet/provider/package/up2date.rb +5 -7
- data/lib/puppet/provider/package/urpmi.rb +6 -6
- data/lib/puppet/provider/package/windows/exe_package.rb +7 -7
- data/lib/puppet/provider/package/windows/msi_package.rb +3 -3
- data/lib/puppet/provider/package/windows/package.rb +2 -2
- data/lib/puppet/provider/package/windows.rb +3 -5
- data/lib/puppet/provider/package/yum.rb +33 -37
- data/lib/puppet/provider/package/zypper.rb +12 -14
- data/lib/puppet/provider/package.rb +1 -1
- data/lib/puppet/provider/package_targetable.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +9 -9
- data/lib/puppet/provider/service/base.rb +16 -21
- data/lib/puppet/provider/service/bsd.rb +4 -4
- data/lib/puppet/provider/service/daemontools.rb +31 -31
- data/lib/puppet/provider/service/debian.rb +6 -6
- data/lib/puppet/provider/service/freebsd.rb +36 -36
- data/lib/puppet/provider/service/gentoo.rb +6 -6
- data/lib/puppet/provider/service/init.rb +19 -19
- data/lib/puppet/provider/service/launchd.rb +22 -22
- data/lib/puppet/provider/service/openbsd.rb +10 -10
- data/lib/puppet/provider/service/openrc.rb +1 -1
- data/lib/puppet/provider/service/openwrt.rb +3 -3
- data/lib/puppet/provider/service/rcng.rb +3 -3
- data/lib/puppet/provider/service/redhat.rb +4 -4
- data/lib/puppet/provider/service/runit.rb +6 -6
- data/lib/puppet/provider/service/service.rb +5 -7
- data/lib/puppet/provider/service/smf.rb +28 -27
- data/lib/puppet/provider/service/src.rb +7 -7
- data/lib/puppet/provider/service/systemd.rb +31 -37
- data/lib/puppet/provider/service/upstart.rb +17 -17
- data/lib/puppet/provider/service/windows.rb +7 -7
- data/lib/puppet/provider/user/aix.rb +4 -2
- data/lib/puppet/provider/user/directoryservice.rb +34 -36
- data/lib/puppet/provider/user/hpux.rb +10 -14
- data/lib/puppet/provider/user/pw.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +16 -18
- data/lib/puppet/provider/user/useradd.rb +7 -7
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider.rb +8 -8
- data/lib/puppet/reference/indirection.rb +3 -0
- data/lib/puppet/reference/metaparameter.rb +1 -1
- data/lib/puppet/reference/providers.rb +3 -3
- data/lib/puppet/reference/type.rb +1 -1
- data/lib/puppet/relationship.rb +4 -5
- data/lib/puppet/reports/http.rb +1 -1
- data/lib/puppet/reports/log.rb +2 -2
- data/lib/puppet/reports/store.rb +4 -4
- data/lib/puppet/reports.rb +2 -2
- data/lib/puppet/resource/catalog.rb +16 -16
- data/lib/puppet/resource/status.rb +3 -3
- data/lib/puppet/resource/type.rb +8 -8
- data/lib/puppet/resource/type_collection.rb +1 -1
- data/lib/puppet/resource.rb +41 -41
- data/lib/puppet/scheduler/scheduler.rb +1 -1
- data/lib/puppet/settings/alias_setting.rb +3 -5
- data/lib/puppet/settings/base_setting.rb +11 -11
- data/lib/puppet/settings/boolean_setting.rb +2 -2
- data/lib/puppet/settings/config_file.rb +5 -4
- data/lib/puppet/settings/duration_setting.rb +2 -2
- data/lib/puppet/settings/environment_conf.rb +3 -3
- data/lib/puppet/settings/file_or_directory_setting.rb +2 -2
- data/lib/puppet/settings/file_setting.rb +11 -11
- data/lib/puppet/settings/ini_file.rb +3 -3
- data/lib/puppet/settings/port_setting.rb +1 -1
- data/lib/puppet/settings/priority_setting.rb +2 -2
- data/lib/puppet/settings/ttl_setting.rb +2 -2
- data/lib/puppet/settings/value_translator.rb +8 -8
- data/lib/puppet/settings.rb +65 -70
- data/lib/puppet/ssl/base.rb +2 -4
- data/lib/puppet/ssl/certificate_request.rb +18 -22
- data/lib/puppet/ssl/certificate_request_attributes.rb +3 -3
- data/lib/puppet/ssl/oids.rb +2 -2
- data/lib/puppet/ssl/openssl_loader.rb +4 -4
- data/lib/puppet/syntax_checkers/base64.rb +3 -3
- data/lib/puppet/syntax_checkers/epp.rb +3 -3
- data/lib/puppet/syntax_checkers/json.rb +3 -3
- data/lib/puppet/syntax_checkers/pp.rb +3 -3
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/event.rb +2 -2
- data/lib/puppet/transaction/event_manager.rb +5 -5
- data/lib/puppet/transaction/persistence.rb +12 -14
- data/lib/puppet/transaction/report.rb +4 -4
- data/lib/puppet/transaction/resource_harness.rb +2 -2
- data/lib/puppet/transaction.rb +14 -18
- data/lib/puppet/type/component.rb +3 -3
- data/lib/puppet/type/exec.rb +43 -45
- data/lib/puppet/type/file/checksum_value.rb +1 -1
- data/lib/puppet/type/file/content.rb +6 -6
- data/lib/puppet/type/file/ctime.rb +2 -2
- data/lib/puppet/type/file/data_sync.rb +3 -3
- data/lib/puppet/type/file/ensure.rb +16 -15
- data/lib/puppet/type/file/mode.rb +9 -9
- data/lib/puppet/type/file/mtime.rb +2 -2
- data/lib/puppet/type/file/selcontext.rb +14 -14
- data/lib/puppet/type/file/source.rb +19 -21
- data/lib/puppet/type/file/target.rb +11 -11
- data/lib/puppet/type/file.rb +21 -21
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/group.rb +3 -3
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +4 -4
- data/lib/puppet/type/resources.rb +6 -6
- data/lib/puppet/type/schedule.rb +9 -9
- data/lib/puppet/type/service.rb +6 -8
- data/lib/puppet/type/tidy.rb +22 -24
- data/lib/puppet/type/user.rb +13 -13
- data/lib/puppet/type.rb +76 -88
- data/lib/puppet/util/at_fork/solaris.rb +33 -37
- data/lib/puppet/util/autoload.rb +2 -2
- data/lib/puppet/util/backups.rb +9 -9
- data/lib/puppet/util/character_encoding.rb +7 -6
- data/lib/puppet/util/checksums.rb +2 -2
- data/lib/puppet/util/classgen.rb +8 -8
- data/lib/puppet/util/colors.rb +1 -1
- data/lib/puppet/util/command_line/puppet_option_parser.rb +1 -1
- data/lib/puppet/util/command_line/trollop.rb +42 -46
- data/lib/puppet/util/command_line.rb +2 -2
- data/lib/puppet/util/constant_inflector.rb +2 -2
- data/lib/puppet/util/diff.rb +19 -21
- data/lib/puppet/util/docs.rb +2 -2
- data/lib/puppet/util/errors.rb +9 -9
- data/lib/puppet/util/execution.rb +32 -9
- data/lib/puppet/util/feature.rb +1 -1
- data/lib/puppet/util/fileparsing.rb +12 -16
- data/lib/puppet/util/filetype.rb +36 -40
- data/lib/puppet/util/inifile.rb +6 -12
- data/lib/puppet/util/ldap/connection.rb +1 -1
- data/lib/puppet/util/ldap/manager.rb +10 -12
- data/lib/puppet/util/lockfile.rb +6 -8
- data/lib/puppet/util/log/destination.rb +2 -2
- data/lib/puppet/util/log/destinations.rb +4 -4
- data/lib/puppet/util/log.rb +12 -9
- data/lib/puppet/util/logging.rb +11 -11
- data/lib/puppet/util/metric.rb +3 -3
- data/lib/puppet/util/monkey_patches.rb +5 -7
- data/lib/puppet/util/network_device/config.rb +3 -3
- data/lib/puppet/util/package/version/debian.rb +27 -28
- data/lib/puppet/util/package/version/pip.rb +5 -5
- data/lib/puppet/util/package/version/range/eq.rb +1 -1
- data/lib/puppet/util/package/version/rpm.rb +1 -1
- data/lib/puppet/util/package.rb +2 -2
- data/lib/puppet/util/pidlock.rb +2 -2
- data/lib/puppet/util/platform.rb +1 -1
- data/lib/puppet/util/plist.rb +8 -10
- data/lib/puppet/util/posix.rb +17 -17
- data/lib/puppet/util/profiler/aggregate.rb +1 -1
- data/lib/puppet/util/provider_features.rb +3 -3
- data/lib/puppet/util/rdoc/code_objects.rb +3 -3
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +63 -64
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +23 -23
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +12 -12
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
- data/lib/puppet/util/rdoc/parser.rb +1 -1
- data/lib/puppet/util/reference.rb +13 -9
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rpm_compare.rb +17 -18
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/selinux.rb +7 -7
- data/lib/puppet/util/storage.rb +10 -12
- data/lib/puppet/util/suidmanager.rb +18 -19
- data/lib/puppet/util/symbolic_file_mode.rb +71 -75
- data/lib/puppet/util/tag_set.rb +2 -2
- data/lib/puppet/util/tagging.rb +8 -10
- data/lib/puppet/util/terminal.rb +4 -4
- data/lib/puppet/util/user_attr.rb +7 -7
- data/lib/puppet/util/watcher.rb +3 -5
- data/lib/puppet/util/windows/access_control_list.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +42 -42
- data/lib/puppet/util/windows/daemon.rb +64 -68
- data/lib/puppet/util/windows/error.rb +2 -2
- data/lib/puppet/util/windows/file.rb +18 -25
- data/lib/puppet/util/windows/monkey_patches/process.rb +1 -1
- data/lib/puppet/util/windows/principal.rb +8 -8
- data/lib/puppet/util/windows/process.rb +16 -28
- data/lib/puppet/util/windows/registry.rb +16 -15
- data/lib/puppet/util/windows/root_certs.rb +2 -2
- data/lib/puppet/util/windows/security.rb +31 -31
- data/lib/puppet/util/windows/service.rb +11 -11
- data/lib/puppet/util/windows/sid.rb +8 -8
- data/lib/puppet/util/windows/user.rb +18 -20
- data/lib/puppet/util/yaml.rb +1 -1
- data/lib/puppet/util.rb +55 -46
- data/lib/puppet/version.rb +2 -2
- data/lib/puppet/x509/pem_store.rb +1 -1
- data/lib/puppet.rb +3 -3
- data/man/man5/puppet.conf.5 +10 -2
- 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 +5 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- metadata +2 -2
@@ -22,15 +22,15 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
22
22
|
defaultfor 'os.family' => :suse
|
23
23
|
defaultfor 'os.family' => :coreos
|
24
24
|
defaultfor 'os.family' => :gentoo
|
25
|
-
notdefaultfor 'os.name' => :amazon, 'os.release.major' => [
|
26
|
-
defaultfor 'os.name' => :amazon, 'os.release.major' => [
|
25
|
+
notdefaultfor 'os.name' => :amazon, 'os.release.major' => %w[2017 2018]
|
26
|
+
defaultfor 'os.name' => :amazon, 'os.release.major' => %w[2 2023]
|
27
27
|
defaultfor 'os.name' => :debian
|
28
|
-
notdefaultfor 'os.name' => :debian, 'os.release.major' => [
|
28
|
+
notdefaultfor 'os.name' => :debian, 'os.release.major' => %w[5 6 7] # These are using the "debian" method
|
29
29
|
defaultfor 'os.name' => :LinuxMint
|
30
|
-
notdefaultfor 'os.name' => :LinuxMint, 'os.release.major' => [
|
30
|
+
notdefaultfor 'os.name' => :LinuxMint, 'os.release.major' => %w[10 11 12 13 14 15 16 17] # These are using upstart
|
31
31
|
defaultfor 'os.name' => :ubuntu
|
32
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' => [
|
33
|
+
defaultfor 'os.name' => :cumuluslinux, 'os.release.major' => %w[3 4]
|
34
34
|
|
35
35
|
def self.instances
|
36
36
|
i = []
|
@@ -39,9 +39,9 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
39
39
|
Puppet.debug("#{m[0]} marked as bad by `systemctl`. It is recommended to be further checked.") if m[1] == "bad"
|
40
40
|
i << new(:name => m[0])
|
41
41
|
end
|
42
|
-
|
42
|
+
i
|
43
43
|
rescue Puppet::ExecutionFailure
|
44
|
-
|
44
|
+
[]
|
45
45
|
end
|
46
46
|
|
47
47
|
# Static services cannot be enabled or disabled manually. Indirect services
|
@@ -55,11 +55,11 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
55
55
|
current == @resource[:enable]
|
56
56
|
else
|
57
57
|
Puppet.debug("Unable to enable or disable static service #{@resource[:name]}")
|
58
|
-
|
58
|
+
true
|
59
59
|
end
|
60
60
|
when 'indirect'
|
61
61
|
Puppet.debug("Service #{@resource[:name]} is in 'indirect' state and cannot be enabled/disabled")
|
62
|
-
|
62
|
+
true
|
63
63
|
else
|
64
64
|
current == @resource[:enable]
|
65
65
|
end
|
@@ -72,8 +72,8 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
72
72
|
# @param action [String,Symbol] One of 'enable', 'disable', 'mask' or 'unmask'
|
73
73
|
def systemctl_change_enable(action)
|
74
74
|
output = systemctl(action, '--', @resource[:name])
|
75
|
-
rescue
|
76
|
-
raise Puppet::Error, "Could not #{action} #{
|
75
|
+
rescue => e
|
76
|
+
raise Puppet::Error, "Could not #{action} #{name}: #{output}", e.backtrace
|
77
77
|
ensure
|
78
78
|
@cached_enabled = nil
|
79
79
|
end
|
@@ -115,14 +115,14 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
115
115
|
|
116
116
|
# The indirect state indicates that the unit is not enabled.
|
117
117
|
return :false if output == 'indirect'
|
118
|
-
return :true if
|
118
|
+
return :true if code == 0
|
119
119
|
|
120
|
-
if
|
120
|
+
if output.empty? && (code > 0) && Puppet.runtime[:facter].value('os.family').casecmp('debian').zero?
|
121
121
|
ret = debian_enabled?
|
122
122
|
return ret if ret
|
123
123
|
end
|
124
124
|
|
125
|
-
|
125
|
+
:false
|
126
126
|
end
|
127
127
|
|
128
128
|
# This method is required for Debian systems due to the way the SysVInit-Systemd
|
@@ -133,7 +133,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
133
133
|
def debian_enabled?
|
134
134
|
status = execute(["/usr/sbin/invoke-rc.d", "--quiet", "--query", @resource[:name], "start"], :failonfail => false)
|
135
135
|
if [104, 106].include?(status.exitstatus)
|
136
|
-
|
136
|
+
:true
|
137
137
|
elsif [101, 105].include?(status.exitstatus)
|
138
138
|
# 101 is action not allowed, which means we have to do the check manually.
|
139
139
|
# 105 is unknown, which generally means the initscript does not support query
|
@@ -141,12 +141,12 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
141
141
|
# For those that do not, perform the checks manually
|
142
142
|
# http://www.debian.org/doc/debian-policy/ch-opersys.html
|
143
143
|
if get_start_link_count >= 4
|
144
|
-
|
144
|
+
:true
|
145
145
|
else
|
146
|
-
|
146
|
+
:false
|
147
147
|
end
|
148
148
|
else
|
149
|
-
|
149
|
+
:false
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
@@ -166,7 +166,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
166
166
|
end
|
167
167
|
|
168
168
|
def enable
|
169
|
-
|
169
|
+
unmask
|
170
170
|
systemctl_change_enable(:enable)
|
171
171
|
end
|
172
172
|
|
@@ -189,7 +189,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
189
189
|
end
|
190
190
|
|
191
191
|
def startcmd
|
192
|
-
|
192
|
+
unmask
|
193
193
|
[command(:systemctl), "start", '--', @resource[:name]]
|
194
194
|
end
|
195
195
|
|
@@ -202,29 +202,23 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
|
|
202
202
|
end
|
203
203
|
|
204
204
|
def restart
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
raise Puppet::Error.new(prepare_error_message(@resource[:name], 'restart', e))
|
210
|
-
end
|
205
|
+
daemon_reload?
|
206
|
+
super
|
207
|
+
rescue Puppet::Error => e
|
208
|
+
raise Puppet::Error, prepare_error_message(@resource[:name], 'restart', e)
|
211
209
|
end
|
212
210
|
|
213
211
|
def start
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
raise Puppet::Error.new(prepare_error_message(@resource[:name], 'start', e))
|
219
|
-
end
|
212
|
+
daemon_reload?
|
213
|
+
super
|
214
|
+
rescue Puppet::Error => e
|
215
|
+
raise Puppet::Error, prepare_error_message(@resource[:name], 'start', e)
|
220
216
|
end
|
221
217
|
|
222
218
|
def stop
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
raise Puppet::Error.new(prepare_error_message(@resource[:name], 'stop', e))
|
227
|
-
end
|
219
|
+
super
|
220
|
+
rescue Puppet::Error => e
|
221
|
+
raise Puppet::Error, prepare_error_message(@resource[:name], 'stop', e)
|
228
222
|
end
|
229
223
|
|
230
224
|
def prepare_error_message(name, action, exception)
|
@@ -15,11 +15,11 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
15
15
|
Puppet.runtime[:facter].value('os.name') == 'Ubuntu',
|
16
16
|
(Puppet.runtime[:facter].value('os.family') == 'RedHat' and Puppet.runtime[:facter].value('os.release.full') =~ /^6\./),
|
17
17
|
(Puppet.runtime[:facter].value('os.name') == 'Amazon' and Puppet.runtime[:facter].value('os.release.major') =~ /\d{4}/),
|
18
|
-
Puppet.runtime[:facter].value('os.name') == 'LinuxMint'
|
18
|
+
Puppet.runtime[:facter].value('os.name') == 'LinuxMint'
|
19
19
|
]
|
20
20
|
|
21
21
|
defaultfor 'os.name' => :ubuntu, 'os.release.major' => ["10.04", "12.04", "14.04", "14.10"]
|
22
|
-
defaultfor 'os.name' => :LinuxMint, 'os.release.major' => [
|
22
|
+
defaultfor 'os.name' => :LinuxMint, 'os.release.major' => %w[10 11 12 13 14 15 16 17]
|
23
23
|
|
24
24
|
commands :start => "/sbin/start",
|
25
25
|
:stop => "/sbin/stop",
|
@@ -54,7 +54,7 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
54
54
|
has_feature :enableable
|
55
55
|
|
56
56
|
def self.instances
|
57
|
-
|
57
|
+
get_services(excludes) # Take exclude list from init provider
|
58
58
|
end
|
59
59
|
|
60
60
|
def self.excludes
|
@@ -77,11 +77,11 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
77
77
|
# network-interface (lo) start/running
|
78
78
|
# network-interface (eth0) start/running
|
79
79
|
# network-interface-security start/running
|
80
|
-
matcher = line.match(/^(network-interface)\s\(([
|
80
|
+
matcher = line.match(/^(network-interface)\s\(([^)]+)\)/)
|
81
81
|
name = if matcher
|
82
82
|
"#{matcher[1]} INTERFACE=#{matcher[2]}"
|
83
83
|
else
|
84
|
-
matcher = line.match(/^(network-interface-security)\s\(([
|
84
|
+
matcher = line.match(/^(network-interface-security)\s\(([^)]+)\)/)
|
85
85
|
if matcher
|
86
86
|
"#{matcher[1]} JOB=#{matcher[2]}"
|
87
87
|
else
|
@@ -99,7 +99,7 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def upstart_version
|
102
|
-
@upstart_version ||= initctl("--version").match(/initctl \(upstart ([
|
102
|
+
@upstart_version ||= initctl("--version").match(/initctl \(upstart ([^)]*)\)/)[1]
|
103
103
|
end
|
104
104
|
|
105
105
|
# Where is our override script?
|
@@ -117,7 +117,7 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
117
117
|
return fqname
|
118
118
|
end
|
119
119
|
|
120
|
-
|
120
|
+
debug("Could not find #{name}#{suffix} in #{path}")
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
@@ -125,7 +125,7 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
125
125
|
end
|
126
126
|
|
127
127
|
def enabled?
|
128
|
-
return super
|
128
|
+
return super unless is_upstart?
|
129
129
|
|
130
130
|
script_contents = read_script_from(initscript)
|
131
131
|
if version_is_pre_0_6_7
|
@@ -138,7 +138,7 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
138
138
|
end
|
139
139
|
|
140
140
|
def enable
|
141
|
-
return super
|
141
|
+
return super unless is_upstart?
|
142
142
|
|
143
143
|
script_text = read_script_from(initscript)
|
144
144
|
if version_is_pre_0_9_0
|
@@ -149,7 +149,7 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
149
149
|
end
|
150
150
|
|
151
151
|
def disable
|
152
|
-
return super
|
152
|
+
return super unless is_upstart?
|
153
153
|
|
154
154
|
script_text = read_script_from(initscript)
|
155
155
|
if version_is_pre_0_6_7
|
@@ -185,17 +185,17 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
185
185
|
end
|
186
186
|
|
187
187
|
output = status_exec(@resource[:name].split)
|
188
|
-
if output =~ /
|
189
|
-
|
188
|
+
if output =~ %r{start/}
|
189
|
+
:running
|
190
190
|
else
|
191
|
-
|
191
|
+
:stopped
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
195
|
private
|
196
196
|
|
197
197
|
def is_upstart?(script = initscript)
|
198
|
-
Puppet::FileSystem.exist?(script) && script.match(
|
198
|
+
Puppet::FileSystem.exist?(script) && script.match(%r{/etc/init/\S+\.conf})
|
199
199
|
end
|
200
200
|
|
201
201
|
def version_is_pre_0_6_7
|
@@ -213,9 +213,9 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
213
213
|
def enabled_pre_0_6_7?(script_text)
|
214
214
|
# Upstart version < 0.6.7 means no manual stanza.
|
215
215
|
if script_text.match(START_ON)
|
216
|
-
|
216
|
+
:true
|
217
217
|
else
|
218
|
-
|
218
|
+
:false
|
219
219
|
end
|
220
220
|
end
|
221
221
|
|
@@ -378,7 +378,7 @@ Puppet::Type.type(:service).provide :upstart, :parent => :debian do
|
|
378
378
|
end
|
379
379
|
|
380
380
|
def write_script_to(file, text)
|
381
|
-
Puppet::Util.replace_file(file,
|
381
|
+
Puppet::Util.replace_file(file, 0o644) do |f|
|
382
382
|
f.write(text)
|
383
383
|
end
|
384
384
|
end
|
@@ -56,7 +56,7 @@ Puppet::Type.type(:service).provide :windows, :parent => :service do
|
|
56
56
|
when :SERVICE_DISABLED
|
57
57
|
:false
|
58
58
|
else
|
59
|
-
raise Puppet::Error
|
59
|
+
raise Puppet::Error, _("Unknown start type: %{start_type}") % { start_type: start_type }
|
60
60
|
end
|
61
61
|
rescue => detail
|
62
62
|
raise Puppet::Error.new(_("Cannot get start type %{resource_name}, error was: %{detail}") % { resource_name: @resource[:name], detail: detail }, detail)
|
@@ -73,7 +73,7 @@ Puppet::Type.type(:service).provide :windows, :parent => :service do
|
|
73
73
|
if enabled? == :false
|
74
74
|
# If disabled and not managing enable, respect disabled and fail.
|
75
75
|
if @resource[:enable].nil?
|
76
|
-
raise Puppet::Error
|
76
|
+
raise Puppet::Error, _("Will not start disabled service %{resource_name} without managing enable. Specify 'enable => false' to override.") % { resource_name: @resource[:name] }
|
77
77
|
# Otherwise start. If enable => false, we will later sync enable and
|
78
78
|
# disable the service again.
|
79
79
|
elsif @resource[:enable] == :true
|
@@ -101,7 +101,7 @@ Puppet::Type.type(:service).provide :windows, :parent => :service do
|
|
101
101
|
when :SERVICE_RUNNING, :SERVICE_CONTINUE_PENDING, :SERVICE_START_PENDING
|
102
102
|
:running
|
103
103
|
else
|
104
|
-
raise Puppet::Error
|
104
|
+
raise Puppet::Error, _("Unknown service state '%{current_state}' for service '%{resource_name}'") % { current_state: current_state, resource_name: @resource[:name] }
|
105
105
|
end
|
106
106
|
debug("Service #{@resource[:name]} is #{current_state}")
|
107
107
|
state
|
@@ -164,16 +164,16 @@ Puppet::Type.type(:service).provide :windows, :parent => :service do
|
|
164
164
|
|
165
165
|
def validate_logon_credentials
|
166
166
|
unless Puppet::Util::Windows::User.localsystem?(@normalized_logon_account)
|
167
|
-
raise Puppet::Error
|
167
|
+
raise Puppet::Error, "\"#{@normalized_logon_account}\" is not a valid account" unless @logonaccount_information && [:SidTypeUser, :SidTypeWellKnownGroup].include?(@logonaccount_information.account_type)
|
168
168
|
|
169
169
|
user_rights = Puppet::Util::Windows::User.get_rights(@logonaccount_information.domain_account) unless Puppet::Util::Windows::User.default_system_account?(@normalized_logon_account)
|
170
|
-
raise Puppet::Error
|
171
|
-
raise Puppet::Error
|
170
|
+
raise Puppet::Error, "\"#{@normalized_logon_account}\" has the 'Log On As A Service' right set to denied." if user_rights =~ /SeDenyServiceLogonRight/
|
171
|
+
raise Puppet::Error, "\"#{@normalized_logon_account}\" is missing the 'Log On As A Service' right." unless user_rights.nil? || user_rights =~ /SeServiceLogonRight/
|
172
172
|
end
|
173
173
|
|
174
174
|
is_a_predefined_local_account = Puppet::Util::Windows::User.default_system_account?(@normalized_logon_account) || @normalized_logon_account == 'LocalSystem'
|
175
175
|
account_info = @normalized_logon_account.split("\\")
|
176
176
|
able_to_logon = Puppet::Util::Windows::User.password_is?(account_info[1], @resource[:logonpassword], account_info[0]) unless is_a_predefined_local_account
|
177
|
-
raise Puppet::Error
|
177
|
+
raise Puppet::Error, "The given password is invalid for user '#{@normalized_logon_account}'." unless is_a_predefined_local_account || able_to_logon
|
178
178
|
end
|
179
179
|
end
|
@@ -72,8 +72,10 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
|
|
72
72
|
return :absent
|
73
73
|
end
|
74
74
|
|
75
|
-
month
|
76
|
-
|
75
|
+
month = match_obj[1]
|
76
|
+
day = match_obj[2]
|
77
|
+
year = match_obj[-1]
|
78
|
+
"20#{year}-#{month}-#{day}"
|
77
79
|
end
|
78
80
|
|
79
81
|
# We do some validation before-hand to ensure the value's an Array,
|
@@ -87,14 +87,14 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
87
87
|
# display its output.
|
88
88
|
def self.instances
|
89
89
|
get_all_users.collect do |user|
|
90
|
-
|
90
|
+
new(generate_attribute_hash(user))
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
94
|
# Return an array of hashes containing information about every user on
|
95
95
|
# the system.
|
96
96
|
def self.get_all_users
|
97
|
-
Puppet::Util::Plist.parse_plist(dscl
|
97
|
+
Puppet::Util::Plist.parse_plist(dscl('-plist', '.', 'readall', '/Users'))
|
98
98
|
end
|
99
99
|
|
100
100
|
# This method accepts an individual user plist, passed as a hash, and
|
@@ -171,7 +171,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
171
171
|
# of the local groups on the machine.
|
172
172
|
def self.get_list_of_groups
|
173
173
|
# rubocop:disable Naming/MemoizedInstanceVariableName
|
174
|
-
@groups ||= Puppet::Util::Plist.parse_plist(dscl
|
174
|
+
@groups ||= Puppet::Util::Plist.parse_plist(dscl('-plist', '.', 'readall', '/Groups'))
|
175
175
|
# rubocop:enable Naming/MemoizedInstanceVariableName
|
176
176
|
end
|
177
177
|
|
@@ -179,7 +179,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
179
179
|
# value. The value returned is the first item within the array returned
|
180
180
|
# from dscl
|
181
181
|
def self.get_attribute_from_dscl(path, username, keyname)
|
182
|
-
Puppet::Util::Plist.parse_plist(dscl
|
182
|
+
Puppet::Util::Plist.parse_plist(dscl('-plist', '.', 'read', "/#{path}/#{username}", keyname))
|
183
183
|
end
|
184
184
|
|
185
185
|
# The plist embedded in the ShadowHashData key is a binary plist. The
|
@@ -205,7 +205,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
205
205
|
# The salted-SHA512 password hash in 10.7 is stored in the 'SALTED-SHA512'
|
206
206
|
# key as binary data. That data is extracted and converted to a hex string.
|
207
207
|
def self.get_salted_sha512(embedded_binary_plist)
|
208
|
-
embedded_binary_plist['SALTED-SHA512'].
|
208
|
+
embedded_binary_plist['SALTED-SHA512'].unpack1("H*")
|
209
209
|
end
|
210
210
|
|
211
211
|
# This method reads the passed embedded_binary_plist hash and returns values
|
@@ -216,11 +216,11 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
216
216
|
case field
|
217
217
|
when 'salt', 'entropy'
|
218
218
|
value = embedded_binary_plist['SALTED-SHA512-PBKDF2'][field]
|
219
|
-
if value
|
219
|
+
if value.nil?
|
220
220
|
raise Puppet::Error, "Invalid #{field} given for user #{user_name}"
|
221
221
|
end
|
222
222
|
|
223
|
-
value.
|
223
|
+
value.unpack1('H*')
|
224
224
|
when 'iterations'
|
225
225
|
Integer(embedded_binary_plist['SALTED-SHA512-PBKDF2'][field])
|
226
226
|
else
|
@@ -234,7 +234,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
234
234
|
password_hash = nil
|
235
235
|
password_hash_file = "#{password_hash_dir}/#{guid}"
|
236
236
|
if Puppet::FileSystem.exist?(password_hash_file) and File.file?(password_hash_file)
|
237
|
-
raise Puppet::Error, "Could not read password hash file at #{password_hash_file}"
|
237
|
+
raise Puppet::Error, "Could not read password hash file at #{password_hash_file}" unless File.readable?(password_hash_file)
|
238
238
|
|
239
239
|
f = File.new(password_hash_file)
|
240
240
|
password_hash = f.read
|
@@ -300,22 +300,22 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
300
300
|
# For the :password and :groups properties, call the setter methods
|
301
301
|
# to enforce those values. For everything else, use dscl with the
|
302
302
|
# ns_to_ds_attribute_map to set the appropriate values.
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
else
|
317
|
-
create_attribute_with_dscl('Users', @resource.name, self.class.ns_to_ds_attribute_map[attribute], value)
|
303
|
+
next unless value != "" and !value.nil?
|
304
|
+
|
305
|
+
case attribute
|
306
|
+
when :password
|
307
|
+
self.password = value
|
308
|
+
when :iterations
|
309
|
+
self.iterations = value
|
310
|
+
when :salt
|
311
|
+
self.salt = value
|
312
|
+
when :groups
|
313
|
+
value.split(',').each do |group|
|
314
|
+
merge_attribute_with_dscl('Groups', group, 'GroupMembership', @resource.name)
|
315
|
+
merge_attribute_with_dscl('Groups', group, 'GroupMembers', @guid)
|
318
316
|
end
|
317
|
+
else
|
318
|
+
create_attribute_with_dscl('Users', @resource.name, self.class.ns_to_ds_attribute_map[attribute], value)
|
319
319
|
end
|
320
320
|
end
|
321
321
|
end
|
@@ -395,7 +395,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
395
395
|
# we have to treat the ds cache just like you would in the password=
|
396
396
|
# method.
|
397
397
|
def iterations=(value)
|
398
|
-
if
|
398
|
+
if Puppet::Util::Package.versioncmp(self.class.get_os_version, '10.7') > 0
|
399
399
|
assert_full_pbkdf2_password
|
400
400
|
|
401
401
|
sleep 3
|
@@ -412,12 +412,12 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
412
412
|
# we have to treat the ds cache just like you would in the password=
|
413
413
|
# method.
|
414
414
|
def salt=(value)
|
415
|
-
if
|
415
|
+
if Puppet::Util::Package.versioncmp(self.class.get_os_version, '10.15') >= 0
|
416
416
|
if value.length != 64
|
417
417
|
self.fail "macOS versions 10.15 and higher require the salt to be 32-bytes. Since Puppet's user resource requires the value to be hex encoded, the length of the salt's string must be 64. Please check your salt and try again."
|
418
418
|
end
|
419
419
|
end
|
420
|
-
if
|
420
|
+
if Puppet::Util::Package.versioncmp(self.class.get_os_version, '10.7') > 0
|
421
421
|
assert_full_pbkdf2_password
|
422
422
|
|
423
423
|
sleep 3
|
@@ -448,10 +448,10 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
448
448
|
# In the event that the user doesn't HAVE a value for the attribute, the
|
449
449
|
# provider should use the -create option with dscl to add the attribute value
|
450
450
|
# for the user record
|
451
|
-
[
|
451
|
+
%w[home uid gid comment shell].each do |setter_method|
|
452
452
|
define_method("#{setter_method}=") do |value|
|
453
453
|
if @property_hash[setter_method.intern]
|
454
|
-
if %w
|
454
|
+
if %w[home uid].include?(setter_method)
|
455
455
|
raise Puppet::Error, "OS X version #{self.class.get_os_version} does not allow changing #{setter_method} using puppet"
|
456
456
|
end
|
457
457
|
|
@@ -479,7 +479,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
479
479
|
def assert_full_pbkdf2_password
|
480
480
|
missing = [:password, :salt, :iterations].select { |parameter| @resource[parameter].nil? }
|
481
481
|
|
482
|
-
|
482
|
+
unless missing.empty?
|
483
483
|
raise Puppet::Error, "OS X versions > 10\.7 use PBKDF2 password hashes, which requires all three of salt, iterations, and password hash. This resource is missing: #{missing.join(', ')}."
|
484
484
|
end
|
485
485
|
end
|
@@ -503,11 +503,9 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
503
503
|
end
|
504
504
|
|
505
505
|
def set_attribute_with_dscl(dscl_command, path, username, keyname, value)
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
raise Puppet::Error, "Could not set the dscl #{keyname} key with value: #{value} - #{detail.inspect}", detail.backtrace
|
510
|
-
end
|
506
|
+
dscl '.', dscl_command, "/#{path}/#{username}", keyname, value
|
507
|
+
rescue Puppet::ExecutionFailure => detail
|
508
|
+
raise Puppet::Error, "Could not set the dscl #{keyname} key with value: #{value} - #{detail.inspect}", detail.backtrace
|
511
509
|
end
|
512
510
|
|
513
511
|
# Create the new user with dscl
|
@@ -549,7 +547,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
549
547
|
# variable IS a Hash and contains the 'SALTED-SHA512' key (indicating an
|
550
548
|
# older 10.7-style password hash), it will be deleted and a newer
|
551
549
|
# 10.8-style (PBKDF2) password hash will be generated.
|
552
|
-
if
|
550
|
+
if shadow_hash_data.instance_of?(Hash) && shadow_hash_data.has_key?('SALTED-SHA512')
|
553
551
|
shadow_hash_data.delete('SALTED-SHA512')
|
554
552
|
end
|
555
553
|
|
@@ -661,7 +659,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
661
659
|
# the user's plist itself, and the shadow_hash_data hash containing the
|
662
660
|
# existing PBKDF2 values.
|
663
661
|
def set_salted_pbkdf2(users_plist, shadow_hash_data, field, value)
|
664
|
-
shadow_hash_data
|
662
|
+
shadow_hash_data ||= Hash.new
|
665
663
|
shadow_hash_data['SALTED-SHA512-PBKDF2'] = Hash.new unless shadow_hash_data['SALTED-SHA512-PBKDF2']
|
666
664
|
case field
|
667
665
|
when 'salt', 'entropy'
|
@@ -40,7 +40,7 @@ Puppet::Type.type(:user).provide :hpuxuseradd, :parent => :useradd do
|
|
40
40
|
cmd << "/usr/lbin/modprpw"
|
41
41
|
cmd << "-v"
|
42
42
|
cmd << "-l"
|
43
|
-
cmd <<
|
43
|
+
cmd << resource.name.to_s
|
44
44
|
end
|
45
45
|
cmd
|
46
46
|
end
|
@@ -48,14 +48,14 @@ Puppet::Type.type(:user).provide :hpuxuseradd, :parent => :useradd do
|
|
48
48
|
def password
|
49
49
|
# Password management routine for trusted and non-trusted systems
|
50
50
|
# temp=""
|
51
|
-
while ent = Etc.getpwent()
|
51
|
+
while ent = Etc.getpwent() # rubocop:disable Lint/AssignmentInCondition
|
52
52
|
if ent.name == resource.name
|
53
53
|
temp = ent.name
|
54
54
|
break
|
55
55
|
end
|
56
56
|
end
|
57
57
|
Etc.endpwent()
|
58
|
-
|
58
|
+
unless temp
|
59
59
|
return nil
|
60
60
|
end
|
61
61
|
|
@@ -66,17 +66,17 @@ Puppet::Type.type(:user).provide :hpuxuseradd, :parent => :useradd do
|
|
66
66
|
if File.file?(file_name)
|
67
67
|
# Found the tcb user for the specific user, now get passwd
|
68
68
|
File.open(file_name).each do |line|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
69
|
+
next unless line =~ /u_pwd/
|
70
|
+
|
71
|
+
temp_passwd = line.split(":")[1].split("=")[1]
|
72
|
+
ent.passwd = temp_passwd
|
73
|
+
return ent.passwd
|
74
74
|
end
|
75
75
|
else
|
76
76
|
debug "No trusted computing user file #{file_name} found."
|
77
77
|
end
|
78
78
|
else
|
79
|
-
|
79
|
+
ent.passwd
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
@@ -84,11 +84,7 @@ Puppet::Type.type(:user).provide :hpuxuseradd, :parent => :useradd do
|
|
84
84
|
# Check to see if the HP-UX box is running in trusted compute mode
|
85
85
|
# UID for root should always be 0
|
86
86
|
trusted_sys = exec_getprpw('root', '-m uid')
|
87
|
-
|
88
|
-
return true
|
89
|
-
else
|
90
|
-
return false
|
91
|
-
end
|
87
|
+
trusted_sys.chomp == "uid=0"
|
92
88
|
end
|
93
89
|
|
94
90
|
def exec_getprpw(user, opts)
|
@@ -96,7 +96,7 @@ Puppet::Type.type(:user).provide :pw, :parent => Puppet::Provider::NameService::
|
|
96
96
|
|
97
97
|
# Get expiry from system and convert to Puppet-style date
|
98
98
|
def expiry
|
99
|
-
expiry =
|
99
|
+
expiry = get(:expiry)
|
100
100
|
expiry = :absent if expiry == 0
|
101
101
|
|
102
102
|
if expiry != :absent
|
@@ -76,7 +76,7 @@ Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd, :source =>
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def command(cmd)
|
79
|
-
cmd =
|
79
|
+
cmd = "role_#{cmd}".intern if is_role? or (!exists? and @resource[:ensure] == :role)
|
80
80
|
super(cmd)
|
81
81
|
end
|
82
82
|
|
@@ -221,25 +221,23 @@ Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd, :source =>
|
|
221
221
|
# data, but it is still terrible. We still skip platform locking, so a
|
222
222
|
# concurrent `vipw -s` session will have no idea we risk data loss.
|
223
223
|
def password=(cryptopw)
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
line = line_arr.join(':')
|
237
|
-
end
|
238
|
-
fh.print line
|
224
|
+
shadow = File.read(target_file_path)
|
225
|
+
|
226
|
+
# Go Mifune loves the race here where we can lose data because
|
227
|
+
# /etc/shadow changed between reading it and writing it.
|
228
|
+
# --daniel 2012-02-05
|
229
|
+
Puppet::Util.replace_file(target_file_path, 0o640) do |fh|
|
230
|
+
shadow.each_line do |line|
|
231
|
+
line_arr = line.split(':')
|
232
|
+
if line_arr[0] == @resource[:name]
|
233
|
+
line_arr[1] = cryptopw
|
234
|
+
line_arr[2] = (Date.today - Date.new(1970, 1, 1)).to_i.to_s
|
235
|
+
line = line_arr.join(':')
|
239
236
|
end
|
237
|
+
fh.print line
|
240
238
|
end
|
241
|
-
rescue => detail
|
242
|
-
self.fail Puppet::Error, "Could not write replace #{target_file_path}: #{detail}", detail
|
243
239
|
end
|
240
|
+
rescue => detail
|
241
|
+
self.fail Puppet::Error, "Could not write replace #{target_file_path}: #{detail}", detail
|
244
242
|
end
|
245
243
|
end
|