puppet 8.5.1-universal-darwin → 8.7.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 +6 -2
- data/Gemfile.lock +55 -48
- data/Rakefile +45 -22
- data/examples/hiera/README.md +68 -57
- data/examples/hiera/data/common.yaml +12 -0
- data/examples/hiera/data/dc1.yaml +6 -0
- data/examples/hiera/hiera.yaml +15 -0
- data/examples/hiera/modules/ntp/data/common.yaml +4 -0
- data/examples/hiera/modules/ntp/hiera.yaml +9 -0
- data/examples/hiera/modules/ntp/manifests/config.pp +16 -4
- data/examples/hiera/modules/ntp/templates/ntp.conf.epp +3 -0
- data/examples/hiera/modules/users/manifests/common.pp +7 -2
- data/examples/hiera/modules/users/manifests/dc1.pp +7 -2
- data/examples/hiera/site.pp +1 -1
- data/ext/project_data.yaml +0 -45
- 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 +4 -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/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 +5 -5
- 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/module_data_provider.rb +9 -9
- 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 +1 -1
- 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/aix_object.rb +1 -1
- 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 +32 -11
- 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/xbps.rb +127 -0
- 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/scheduler/splay_job.rb +9 -0
- 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 +51 -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 +60 -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 +18 -19
- 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/com.rb +2 -2
- 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/locales/puppet.pot +604 -600
- 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 +23 -27
- data/examples/hiera/etc/hiera.yaml +0 -15
- data/examples/hiera/etc/hieradb/common.yaml +0 -3
- data/examples/hiera/etc/hieradb/dc1.yaml +0 -6
- data/examples/hiera/etc/hieradb/development.yaml +0 -2
- data/examples/hiera/etc/puppet.conf +0 -3
- data/examples/hiera/modules/data/manifests/common.pp +0 -4
- data/examples/hiera/modules/ntp/manifests/data.pp +0 -4
- data/examples/hiera/modules/ntp/templates/ntp.conf.erb +0 -3
- data/examples/hiera/modules/users/manifests/development.pp +0 -4
- data/tasks/benchmark.rake +0 -180
- data/tasks/cfpropertylist.rake +0 -15
- data/tasks/ci.rake +0 -24
- data/tasks/generate_ast_model.rake +0 -90
- data/tasks/generate_cert_fixtures.rake +0 -199
- data/tasks/manpages.rake +0 -67
- data/tasks/memwalk.rake +0 -195
- data/tasks/parallel.rake +0 -410
- data/tasks/parser.rake +0 -22
- data/tasks/yard.rake +0 -59
@@ -51,7 +51,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
51
51
|
def find(request)
|
52
52
|
facts = extract_facts_from_request(request)
|
53
53
|
|
54
|
-
save_facts_from_request(facts, request)
|
54
|
+
save_facts_from_request(facts, request) unless facts.nil?
|
55
55
|
|
56
56
|
node = node_from_request(facts, request)
|
57
57
|
node.trusted_data = Puppet.lookup(:trusted_information) { Puppet::Context::TrustedInformation.local(node) }.to_h
|
@@ -89,7 +89,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
89
89
|
|
90
90
|
# filter-out a catalog to remove exported resources
|
91
91
|
def filter(catalog)
|
92
|
-
return catalog.filter
|
92
|
+
return catalog.filter(&:virtual?) if catalog.respond_to?(:filter)
|
93
93
|
|
94
94
|
catalog
|
95
95
|
end
|
@@ -120,9 +120,9 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
120
120
|
when 'pson'
|
121
121
|
# We unescape here because the corresponding code in Puppet::Configurer::FactHandler encodes with Puppet::Util.uri_query_encode
|
122
122
|
# PSON is deprecated, but continue to accept from older agents
|
123
|
-
|
123
|
+
Puppet::Node::Facts.convert_from('pson', CGI.unescape(facts))
|
124
124
|
when 'application/json'
|
125
|
-
|
125
|
+
Puppet::Node::Facts.convert_from('json', CGI.unescape(facts))
|
126
126
|
else
|
127
127
|
raise ArgumentError, _("Unsupported facts format")
|
128
128
|
end
|
@@ -139,9 +139,9 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
139
139
|
# If no match is found, return nil.
|
140
140
|
def common_checksum_type(agent_checksum_type)
|
141
141
|
if agent_checksum_type
|
142
|
-
agent_checksum_types = agent_checksum_type.split('.').map
|
142
|
+
agent_checksum_types = agent_checksum_type.split('.').map(&:to_sym)
|
143
143
|
checksum_type = agent_checksum_types.drop_while do |type|
|
144
|
-
|
144
|
+
!known_checksum_types.include? type
|
145
145
|
end.first
|
146
146
|
end
|
147
147
|
checksum_type
|
@@ -156,24 +156,23 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
156
156
|
source_as_uri = URI.parse(Puppet::Util.uri_encode(source))
|
157
157
|
server = source_as_uri.host
|
158
158
|
port = ":#{source_as_uri.port}" if source_as_uri.port
|
159
|
-
|
159
|
+
"puppet://#{server}#{port}/#{path}"
|
160
160
|
end
|
161
161
|
|
162
162
|
# Helper method to decide if a file resource's metadata can be inlined.
|
163
163
|
# Also used to profile/log reasons for not inlining.
|
164
164
|
def inlineable?(resource, sources)
|
165
|
-
|
166
|
-
when resource[:ensure] == 'absent'
|
165
|
+
if resource[:ensure] == 'absent'
|
167
166
|
# TRANSLATORS Inlining refers to adding additional metadata (in this case we are not inlining)
|
168
|
-
|
169
|
-
|
167
|
+
Puppet::Util::Profiler.profile(_("Not inlining absent resource"), [:compiler, :static_compile_inlining, :skipped_file_metadata, :absent]) { false }
|
168
|
+
elsif sources.empty?
|
170
169
|
# TRANSLATORS Inlining refers to adding additional metadata (in this case we are not inlining)
|
171
|
-
|
172
|
-
|
170
|
+
Puppet::Util::Profiler.profile(_("Not inlining resource without sources"), [:compiler, :static_compile_inlining, :skipped_file_metadata, :no_sources]) { false }
|
171
|
+
elsif !(sources.all? { |source| source =~ /^puppet:/ })
|
173
172
|
# TRANSLATORS Inlining refers to adding additional metadata (in this case we are not inlining)
|
174
|
-
|
173
|
+
Puppet::Util::Profiler.profile(_("Not inlining unsupported source scheme"), [:compiler, :static_compile_inlining, :skipped_file_metadata, :unsupported_scheme]) { false }
|
175
174
|
else
|
176
|
-
|
175
|
+
true
|
177
176
|
end
|
178
177
|
end
|
179
178
|
|
@@ -185,8 +184,8 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
185
184
|
|
186
185
|
location = Puppet::Module::FILETYPES['files']
|
187
186
|
|
188
|
-
!!(source_as_uri.path =~
|
189
|
-
metadata.full_path =~
|
187
|
+
!!(source_as_uri.path =~ %r{^/modules/} &&
|
188
|
+
metadata.full_path =~ %r{#{environment_path}/[^/]+/[^/]+/#{location}/.+})
|
190
189
|
end
|
191
190
|
|
192
191
|
# Helper method to log file resources that could not be inlined because they
|
@@ -237,32 +236,32 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
237
236
|
source = Puppet::Type.type(:file).attrclass(:source).normalize(source)
|
238
237
|
|
239
238
|
list_of_data = Puppet::FileServing::Metadata.indirection.search(source, options)
|
240
|
-
|
241
|
-
basedir_meta = list_of_data.find { |meta| meta.relative_path == '.' }
|
242
|
-
devfail "FileServing::Metadata search should always return the root search path" if basedir_meta.nil?
|
243
|
-
|
244
|
-
if !inlineable_metadata?(basedir_meta, source, environment_path)
|
245
|
-
# If any source is not in the environment path, skip inlining this resource.
|
246
|
-
log_file_outside_environment
|
247
|
-
sources_in_environment = false
|
248
|
-
break
|
249
|
-
end
|
239
|
+
next unless list_of_data
|
250
240
|
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
241
|
+
basedir_meta = list_of_data.find { |meta| meta.relative_path == '.' }
|
242
|
+
devfail "FileServing::Metadata search should always return the root search path" if basedir_meta.nil?
|
243
|
+
|
244
|
+
unless inlineable_metadata?(basedir_meta, source, environment_path)
|
245
|
+
# If any source is not in the environment path, skip inlining this resource.
|
246
|
+
log_file_outside_environment
|
247
|
+
sources_in_environment = false
|
248
|
+
break
|
249
|
+
end
|
259
250
|
|
260
|
-
|
261
|
-
|
262
|
-
if
|
263
|
-
|
251
|
+
base_content_uri = get_content_uri(basedir_meta, source, environment_path)
|
252
|
+
list_of_data.each do |metadata|
|
253
|
+
if metadata.relative_path == '.'
|
254
|
+
metadata.content_uri = base_content_uri
|
255
|
+
else
|
256
|
+
metadata.content_uri = "#{base_content_uri}/#{metadata.relative_path}"
|
264
257
|
end
|
265
258
|
end
|
259
|
+
|
260
|
+
source_to_metadatas[source] = list_of_data
|
261
|
+
# Optimize for returning less data if sourceselect is first
|
262
|
+
if resource[:sourceselect] == 'first' || resource[:sourceselect].nil?
|
263
|
+
break
|
264
|
+
end
|
266
265
|
end
|
267
266
|
|
268
267
|
if sources_in_environment && !source_to_metadatas.empty?
|
@@ -282,11 +281,11 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
282
281
|
source = Puppet::Type.type(:file).attrclass(:source).normalize(source)
|
283
282
|
|
284
283
|
data = Puppet::FileServing::Metadata.indirection.find(source, options)
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
284
|
+
next unless data
|
285
|
+
|
286
|
+
metadata = data
|
287
|
+
metadata.source = source
|
288
|
+
break
|
290
289
|
end
|
291
290
|
|
292
291
|
raise _("Could not get metadata for %{resource}") % { resource: resource[:source] } unless metadata
|
@@ -443,7 +442,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
443
442
|
"serverip" => "networking.ip",
|
444
443
|
"serverip6" => "networking.ip6" }.each do |var, fact|
|
445
444
|
value = Puppet.runtime[:facter].value(fact)
|
446
|
-
|
445
|
+
unless value.nil?
|
447
446
|
@server_facts[var] = value
|
448
447
|
end
|
449
448
|
end
|
@@ -16,12 +16,14 @@ class Puppet::Resource::Catalog::Rest < Puppet::Indirector::REST
|
|
16
16
|
session = Puppet.lookup(:http_session)
|
17
17
|
api = session.route_to(:puppet)
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
unless Puppet.settings[:skip_logging_catalog_request_destination]
|
20
|
+
ip_address = begin
|
21
|
+
" (#{Resolv.getaddress(api.url.host)})"
|
22
|
+
rescue Resolv::ResolvError
|
23
|
+
nil
|
24
|
+
end
|
25
|
+
Puppet.notice("Requesting catalog from #{api.url.host}:#{api.url.port}#{ip_address}")
|
23
26
|
end
|
24
|
-
Puppet.notice("Requesting catalog from #{api.url.host}:#{api.url.port}#{ip_address}")
|
25
27
|
|
26
28
|
_, catalog = api.post_catalog(
|
27
29
|
request.key,
|
@@ -4,5 +4,5 @@ require_relative '../../../puppet/indirector/store_configs'
|
|
4
4
|
require_relative '../../../puppet/resource/catalog'
|
5
5
|
|
6
6
|
class Puppet::Resource::Catalog::StoreConfigs < Puppet::Indirector::StoreConfigs
|
7
|
-
desc
|
7
|
+
desc 'Part of the "storeconfigs" feature. Should not be directly set by end users.'
|
8
8
|
end
|
@@ -25,9 +25,9 @@ class Puppet::Indirector::Exec < Puppet::Indirector::Terminus
|
|
25
25
|
|
26
26
|
if output =~ /\A\s*\Z/ # all whitespace
|
27
27
|
Puppet.debug { "Empty response for #{name} from #{self.name} terminus" }
|
28
|
-
|
28
|
+
nil
|
29
29
|
else
|
30
|
-
|
30
|
+
output
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -32,11 +32,11 @@ class Puppet::Indirector::Face < Puppet::Face
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def self.indirections
|
35
|
-
Puppet::Indirector::Indirection.instances.collect
|
35
|
+
Puppet::Indirector::Indirection.instances.collect(&:to_s).sort
|
36
36
|
end
|
37
37
|
|
38
38
|
def self.terminus_classes(indirection)
|
39
|
-
Puppet::Indirector::Terminus.terminus_classes(indirection.to_sym).collect
|
39
|
+
Puppet::Indirector::Terminus.terminus_classes(indirection.to_sym).collect(&:to_s).sort
|
40
40
|
end
|
41
41
|
|
42
42
|
def call_indirection_method(method, key, options)
|
@@ -53,7 +53,7 @@ class Puppet::Indirector::Face < Puppet::Face
|
|
53
53
|
raise RuntimeError, message, detail.backtrace
|
54
54
|
end
|
55
55
|
|
56
|
-
|
56
|
+
result
|
57
57
|
end
|
58
58
|
|
59
59
|
action :destroy do
|
@@ -134,11 +134,9 @@ class Puppet::Indirector::Face < Puppet::Face
|
|
134
134
|
end
|
135
135
|
|
136
136
|
def set_terminus(from)
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
raise detail, msg, detail.backtrace
|
142
|
-
end
|
137
|
+
indirection.terminus_class = from
|
138
|
+
rescue => detail
|
139
|
+
msg = _("Could not set '%{indirection}' terminus to '%{from}' (%{detail}); valid terminus types are %{types}") % { indirection: indirection.name, from: from, detail: detail, types: self.class.terminus_classes(indirection.name).join(", ") }
|
140
|
+
raise detail, msg, detail.backtrace
|
143
141
|
end
|
144
142
|
end
|
@@ -57,7 +57,7 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
57
57
|
def self.setup_search_paths(request)
|
58
58
|
# Add any per-module fact directories to facter's search path
|
59
59
|
dirs = request.environment.modulepath.collect do |dir|
|
60
|
-
[
|
60
|
+
%w[lib plugins].map do |subdirectory|
|
61
61
|
Dir.glob("#{dir}/*/#{subdirectory}/facter")
|
62
62
|
end
|
63
63
|
end.flatten + Puppet[:factpath].split(File::PATH_SEPARATOR)
|
@@ -85,11 +85,11 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
85
85
|
# Add any per-module external fact directories to facter's external search path
|
86
86
|
dirs = []
|
87
87
|
request.environment.modules.each do |m|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
88
|
+
next unless m.has_external_facts?
|
89
|
+
|
90
|
+
dir = m.plugin_fact_directory
|
91
|
+
Puppet.debug { "Loading external facts from #{dir}" }
|
92
|
+
dirs << dir
|
93
93
|
end
|
94
94
|
|
95
95
|
# Add system external fact directory if it exists
|
@@ -4,7 +4,7 @@ require_relative '../../../puppet/node/facts'
|
|
4
4
|
require_relative '../../../puppet/indirector/store_configs'
|
5
5
|
|
6
6
|
class Puppet::Node::Facts::StoreConfigs < Puppet::Indirector::StoreConfigs
|
7
|
-
desc
|
7
|
+
desc 'Part of the "storeconfigs" feature. Should not be directly set by end users.'
|
8
8
|
|
9
9
|
def allow_remote_requests?
|
10
10
|
false
|
@@ -31,7 +31,7 @@ module Puppet::FileBucketFile
|
|
31
31
|
raise _("could not find diff_with %{diff}") % { diff: request.options[:diff_with] } unless Puppet::FileSystem.exist?(other_contents_file)
|
32
32
|
raise _("Unable to diff on this platform") unless Puppet[:diff] != ""
|
33
33
|
|
34
|
-
|
34
|
+
diff(Puppet::FileSystem.path_string(contents_file), Puppet::FileSystem.path_string(other_contents_file))
|
35
35
|
else
|
36
36
|
# TRANSLATORS "FileBucket" should not be translated
|
37
37
|
Puppet.info _("FileBucket read %{checksum}") % { checksum: checksum }
|
@@ -64,14 +64,14 @@ module Puppet::FileBucketFile
|
|
64
64
|
msg = ''.dup
|
65
65
|
# Get all files with mtime between 'from' and 'to'
|
66
66
|
Pathname.new(request.options[:bucket_path]).find { |item|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
67
|
+
next unless item.file? and item.basename.to_s == "paths"
|
68
|
+
|
69
|
+
filenames = item.read.strip.split("\n")
|
70
|
+
filestat = Time.parse(item.stat.mtime.to_s)
|
71
|
+
next unless from <= filestat and filestat <= to
|
72
|
+
|
73
|
+
filenames.each do |filename|
|
74
|
+
bucket[filename] += [[item.stat.mtime, item.parent.basename]]
|
75
75
|
end
|
76
76
|
}
|
77
77
|
# Sort the results
|
@@ -88,7 +88,7 @@ module Puppet::FileBucketFile
|
|
88
88
|
msg += "#{chksum} #{date} #{filename}\n"
|
89
89
|
}
|
90
90
|
}
|
91
|
-
|
91
|
+
model.new(msg)
|
92
92
|
end
|
93
93
|
|
94
94
|
def head(request)
|
@@ -125,7 +125,7 @@ module Puppet::FileBucketFile
|
|
125
125
|
# given its possible that request.options[:bucket_path] or Puppet[:bucketdir]
|
126
126
|
# contained characters in an encoding that are not represented the
|
127
127
|
# same way when the bytes are decoded as UTF-8, continue using system encoding
|
128
|
-
Puppet::FileSystem.open(paths_file,
|
128
|
+
Puppet::FileSystem.open(paths_file, 0o640, 'a+:external') do |f|
|
129
129
|
path_match(f, files_original_path)
|
130
130
|
end
|
131
131
|
end
|
@@ -137,7 +137,7 @@ module Puppet::FileBucketFile
|
|
137
137
|
file_handle.each_line do |line|
|
138
138
|
return true if line.chomp == files_original_path
|
139
139
|
end
|
140
|
-
|
140
|
+
false
|
141
141
|
end
|
142
142
|
|
143
143
|
# @param bucket_file [Puppet::FileBucket::File] IO object representing
|
@@ -152,7 +152,7 @@ module Puppet::FileBucketFile
|
|
152
152
|
# existing and new backup
|
153
153
|
# @api private
|
154
154
|
def save_to_disk(bucket_file, files_original_path, contents_file, paths_file)
|
155
|
-
Puppet::Util.withumask(
|
155
|
+
Puppet::Util.withumask(0o007) do
|
156
156
|
unless Puppet::FileSystem.dir_exist?(paths_file)
|
157
157
|
Puppet::FileSystem.dir_mkpath(paths_file)
|
158
158
|
end
|
@@ -161,14 +161,14 @@ module Puppet::FileBucketFile
|
|
161
161
|
# given its possible that request.options[:bucket_path] or Puppet[:bucketdir]
|
162
162
|
# contained characters in an encoding that are not represented the
|
163
163
|
# same way when the bytes are decoded as UTF-8, continue using system encoding
|
164
|
-
Puppet::FileSystem.exclusive_open(paths_file,
|
164
|
+
Puppet::FileSystem.exclusive_open(paths_file, 0o640, 'a+:external') do |f|
|
165
165
|
if Puppet::FileSystem.exist?(contents_file)
|
166
166
|
if verify_identical_file(contents_file, bucket_file)
|
167
167
|
# TRANSLATORS "FileBucket" should not be translated
|
168
168
|
Puppet.info _("FileBucket got a duplicate file %{file_checksum}") % { file_checksum: bucket_file.checksum }
|
169
169
|
# Don't touch the contents file on Windows, since we can't update the
|
170
170
|
# mtime of read-only files there.
|
171
|
-
|
171
|
+
unless Puppet::Util::Platform.windows?
|
172
172
|
Puppet::FileSystem.touch(contents_file)
|
173
173
|
end
|
174
174
|
elsif contents_file_matches_checksum?(contents_file, bucket_file.checksum_data, bucket_file.checksum_type)
|
@@ -202,7 +202,7 @@ module Puppet::FileBucketFile
|
|
202
202
|
end
|
203
203
|
|
204
204
|
def request_to_checksum_and_path(request)
|
205
|
-
checksum_type, checksum, path = request.key.split(
|
205
|
+
checksum_type, checksum, path = request.key.split(%r{/}, 3)
|
206
206
|
if path == '' # Treat "md5/<checksum>/" like "md5/<checksum>"
|
207
207
|
path = nil
|
208
208
|
end
|
@@ -257,7 +257,7 @@ module Puppet::FileBucketFile
|
|
257
257
|
# @return [void]
|
258
258
|
# @api private
|
259
259
|
def copy_bucket_file_to_contents_file(contents_file, bucket_file)
|
260
|
-
Puppet::FileSystem.replace_file(contents_file,
|
260
|
+
Puppet::FileSystem.replace_file(contents_file, 0o440) do |of|
|
261
261
|
# PUP-1044 writes all of the contents
|
262
262
|
bucket_file.stream() do |src|
|
263
263
|
FileUtils.copy_stream(src, of)
|
@@ -13,7 +13,7 @@ module Puppet::FileBucketFile
|
|
13
13
|
api.head_filebucket_file(
|
14
14
|
request.key,
|
15
15
|
environment: request.environment.to_s,
|
16
|
-
bucket_path: request.options[:bucket_path]
|
16
|
+
bucket_path: request.options[:bucket_path]
|
17
17
|
)
|
18
18
|
rescue Puppet::HTTP::ResponseError => e
|
19
19
|
return nil if e.response.code == 404
|
@@ -31,7 +31,7 @@ module Puppet::FileBucketFile
|
|
31
31
|
diff_with: request.options[:diff_with],
|
32
32
|
list_all: request.options[:list_all],
|
33
33
|
fromdate: request.options[:fromdate],
|
34
|
-
todate: request.options[:todate]
|
34
|
+
todate: request.options[:todate]
|
35
35
|
)
|
36
36
|
filebucket_file
|
37
37
|
rescue Puppet::HTTP::ResponseError => e
|
@@ -44,7 +44,7 @@ module Puppet::FileBucketFile
|
|
44
44
|
api.put_filebucket_file(
|
45
45
|
request.key,
|
46
46
|
body: request.instance.render,
|
47
|
-
environment: request.environment.to_s
|
47
|
+
environment: request.environment.to_s
|
48
48
|
)
|
49
49
|
rescue Puppet::HTTP::ResponseError => e
|
50
50
|
raise convert_to_http_error(e.response)
|
@@ -17,7 +17,7 @@ class Puppet::Indirector::FileContent::Rest < Puppet::Indirector::REST
|
|
17
17
|
|
18
18
|
api.get_file_content(
|
19
19
|
path: Puppet::Util.uri_unescape(url.path),
|
20
|
-
environment: request.environment.to_s
|
20
|
+
environment: request.environment.to_s
|
21
21
|
) do |data|
|
22
22
|
content << data
|
23
23
|
end
|
@@ -46,7 +46,7 @@ class Puppet::Indirector::FileMetadata::Rest < Puppet::Indirector::REST
|
|
46
46
|
ignore: request.options[:ignore],
|
47
47
|
links: request.options[:links],
|
48
48
|
checksum_type: request.options[:checksum_type],
|
49
|
-
source_permissions: request.options[:source_permissions]
|
49
|
+
source_permissions: request.options[:source_permissions]
|
50
50
|
)
|
51
51
|
file_metadatas
|
52
52
|
rescue Puppet::HTTP::ResponseError => e
|
@@ -9,7 +9,7 @@ require 'hiera/scope'
|
|
9
9
|
# Use `Puppet::DataBinding.indirection.terminus(:hiera)` instead.
|
10
10
|
class Puppet::Indirector::Hiera < Puppet::Indirector::Terminus
|
11
11
|
def initialize(*args)
|
12
|
-
|
12
|
+
unless Puppet.features.hiera?
|
13
13
|
# TRANSLATORS "Hiera" is the name of a code library and should not be translated
|
14
14
|
raise _("Hiera terminus not supported without hiera library")
|
15
15
|
end
|
@@ -26,7 +26,7 @@ class Puppet::Indirector::Indirection
|
|
26
26
|
# Return a list of all known indirections. Used to generate the
|
27
27
|
# reference.
|
28
28
|
def self.instances
|
29
|
-
@@indirections.collect
|
29
|
+
@@indirections.collect(&:name)
|
30
30
|
end
|
31
31
|
|
32
32
|
# Find an indirected model by name. This is provided so that Terminus classes
|
@@ -121,10 +121,10 @@ class Puppet::Indirector::Indirection
|
|
121
121
|
def set_global_setting(setting, value)
|
122
122
|
case setting
|
123
123
|
when :cache_class
|
124
|
-
validate_terminus_class(value)
|
124
|
+
validate_terminus_class(value) unless value.nil?
|
125
125
|
@cache_class = Puppet::ThreadLocal.new(value)
|
126
126
|
when :terminus_class
|
127
|
-
validate_terminus_class(value)
|
127
|
+
validate_terminus_class(value) unless value.nil?
|
128
128
|
@terminus_class = Puppet::ThreadLocal.new(value)
|
129
129
|
when :terminus_setting
|
130
130
|
@terminus_setting = Puppet::ThreadLocal.new(value)
|
@@ -135,13 +135,13 @@ class Puppet::Indirector::Indirection
|
|
135
135
|
|
136
136
|
# Set up our request object.
|
137
137
|
def request(*args)
|
138
|
-
Puppet::Indirector::Request.new(
|
138
|
+
Puppet::Indirector::Request.new(name, *args)
|
139
139
|
end
|
140
140
|
|
141
141
|
# Return the singleton terminus for this indirection.
|
142
142
|
def terminus(terminus_name = nil)
|
143
143
|
# Get the name of the terminus.
|
144
|
-
raise Puppet::DevError, _("No terminus specified for %{name}; cannot redirect") % { name:
|
144
|
+
raise Puppet::DevError, _("No terminus specified for %{name}; cannot redirect") % { name: name } unless terminus_name ||= terminus_class
|
145
145
|
|
146
146
|
termini[terminus_name] ||= make_terminus(terminus_name)
|
147
147
|
end
|
@@ -158,11 +158,11 @@ class Puppet::Indirector::Indirection
|
|
158
158
|
# Determine the terminus class.
|
159
159
|
def terminus_class
|
160
160
|
unless @terminus_class.value
|
161
|
-
setting =
|
161
|
+
setting = terminus_setting
|
162
162
|
if setting
|
163
163
|
self.terminus_class = Puppet.settings[setting]
|
164
164
|
else
|
165
|
-
raise Puppet::DevError, _("No terminus class nor terminus setting was provided for indirection %{name}") % { name:
|
165
|
+
raise Puppet::DevError, _("No terminus class nor terminus setting was provided for indirection %{name}") % { name: name }
|
166
166
|
end
|
167
167
|
end
|
168
168
|
@terminus_class.value
|
@@ -184,9 +184,9 @@ class Puppet::Indirector::Indirection
|
|
184
184
|
raise ArgumentError, _("Invalid terminus name %{terminus_class}") % { terminus_class: terminus_class.inspect }
|
185
185
|
end
|
186
186
|
|
187
|
-
unless Puppet::Indirector::Terminus.terminus_class(
|
187
|
+
unless Puppet::Indirector::Terminus.terminus_class(name, terminus_class)
|
188
188
|
raise ArgumentError, _("Could not find terminus %{terminus_class} for indirection %{name}") %
|
189
|
-
{ terminus_class: terminus_class, name:
|
189
|
+
{ terminus_class: terminus_class, name: name }
|
190
190
|
end
|
191
191
|
end
|
192
192
|
|
@@ -201,7 +201,7 @@ class Puppet::Indirector::Indirection
|
|
201
201
|
instance = cache.find(request(:find, key, nil, options))
|
202
202
|
return nil unless instance
|
203
203
|
|
204
|
-
Puppet.info _("Expiring the %{cache} cache of %{instance}") % { cache:
|
204
|
+
Puppet.info _("Expiring the %{cache} cache of %{instance}") % { cache: name, instance: instance.name }
|
205
205
|
|
206
206
|
# Set an expiration date in the past
|
207
207
|
instance.expiration = Time.now - 60
|
@@ -220,7 +220,7 @@ class Puppet::Indirector::Indirection
|
|
220
220
|
terminus = prepare(request)
|
221
221
|
|
222
222
|
result = find_in_cache(request)
|
223
|
-
if
|
223
|
+
if !result.nil?
|
224
224
|
result
|
225
225
|
elsif request.ignore_terminus?
|
226
226
|
nil
|
@@ -228,10 +228,10 @@ class Puppet::Indirector::Indirection
|
|
228
228
|
# Otherwise, return the result from the terminus, caching if
|
229
229
|
# appropriate.
|
230
230
|
result = terminus.find(request)
|
231
|
-
|
232
|
-
result.expiration ||=
|
231
|
+
unless result.nil?
|
232
|
+
result.expiration ||= expiration if result.respond_to?(:expiration)
|
233
233
|
if cache? && !request.ignore_cache_save?
|
234
|
-
Puppet.info _("Caching %{indirection} for %{request}") % { indirection:
|
234
|
+
Puppet.info _("Caching %{indirection} for %{request}") % { indirection: name, request: request.key }
|
235
235
|
begin
|
236
236
|
cache.save request(:save, key, result, options)
|
237
237
|
rescue => detail
|
@@ -242,13 +242,11 @@ class Puppet::Indirector::Indirection
|
|
242
242
|
|
243
243
|
filtered = result
|
244
244
|
if terminus.respond_to?(:filter)
|
245
|
-
Puppet::Util::Profiler.profile(_("Filtered result for %{indirection} %{request}") % { indirection:
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
raise detail
|
251
|
-
end
|
245
|
+
Puppet::Util::Profiler.profile(_("Filtered result for %{indirection} %{request}") % { indirection: name, request: request.key }, [:indirector, :filter, name, request.key]) do
|
246
|
+
filtered = terminus.filter(result)
|
247
|
+
rescue Puppet::Error => detail
|
248
|
+
Puppet.log_exception(detail)
|
249
|
+
raise detail
|
252
250
|
end
|
253
251
|
end
|
254
252
|
filtered
|
@@ -273,14 +271,14 @@ class Puppet::Indirector::Indirection
|
|
273
271
|
return nil unless cached
|
274
272
|
|
275
273
|
if cached.expired?
|
276
|
-
Puppet.info _("Not using expired %{indirection} for %{request} from cache; expired at %{expiration}") % { indirection:
|
274
|
+
Puppet.info _("Not using expired %{indirection} for %{request} from cache; expired at %{expiration}") % { indirection: name, request: request.key, expiration: cached.expiration }
|
277
275
|
return nil
|
278
276
|
end
|
279
277
|
|
280
|
-
Puppet.debug { "Using cached #{
|
278
|
+
Puppet.debug { "Using cached #{name} for #{request.key}" }
|
281
279
|
cached
|
282
280
|
rescue => detail
|
283
|
-
Puppet.log_exception(detail, _("Cached %{indirection} for %{request} failed: %{detail}") % { indirection:
|
281
|
+
Puppet.log_exception(detail, _("Cached %{indirection} for %{request} failed: %{detail}") % { indirection: name, request: request.key, detail: detail })
|
284
282
|
nil
|
285
283
|
end
|
286
284
|
|
@@ -311,9 +309,9 @@ class Puppet::Indirector::Indirection
|
|
311
309
|
result.each do |instance|
|
312
310
|
next unless instance.respond_to? :expiration
|
313
311
|
|
314
|
-
instance.expiration ||=
|
312
|
+
instance.expiration ||= expiration
|
315
313
|
end
|
316
|
-
|
314
|
+
result
|
317
315
|
end
|
318
316
|
end
|
319
317
|
|
@@ -323,7 +321,7 @@ class Puppet::Indirector::Indirection
|
|
323
321
|
request = request(:save, key, instance, options)
|
324
322
|
terminus = prepare(request)
|
325
323
|
|
326
|
-
result = terminus.save(request)
|
324
|
+
result = terminus.save(request) unless request.ignore_terminus?
|
327
325
|
|
328
326
|
# If caching is enabled, save our document there
|
329
327
|
cache.save(request) if cache? && !request.ignore_cache_save?
|
@@ -373,9 +371,9 @@ class Puppet::Indirector::Indirection
|
|
373
371
|
# Create a new terminus instance.
|
374
372
|
def make_terminus(terminus_class)
|
375
373
|
# Load our terminus class.
|
376
|
-
klass = Puppet::Indirector::Terminus.terminus_class(
|
374
|
+
klass = Puppet::Indirector::Terminus.terminus_class(name, terminus_class)
|
377
375
|
unless klass
|
378
|
-
raise ArgumentError, _("Could not find terminus %{terminus_class} for indirection %{indirection}") % { terminus_class: terminus_class, indirection:
|
376
|
+
raise ArgumentError, _("Could not find terminus %{terminus_class} for indirection %{indirection}") % { terminus_class: terminus_class, indirection: name }
|
379
377
|
end
|
380
378
|
|
381
379
|
klass.new
|
@@ -16,16 +16,16 @@ class Puppet::Indirector::JSON < Puppet::Indirector::Terminus
|
|
16
16
|
filename = path(request.key)
|
17
17
|
FileUtils.mkdir_p(File.dirname(filename))
|
18
18
|
|
19
|
-
Puppet::FileSystem.replace_file(filename,
|
19
|
+
Puppet::FileSystem.replace_file(filename, 0o660) { |f| f.print to_json(request.instance).force_encoding(Encoding::BINARY) }
|
20
20
|
rescue TypeError => detail
|
21
|
-
Puppet.log_exception(detail, _("Could not save %{json} %{request}: %{detail}") % { json:
|
21
|
+
Puppet.log_exception(detail, _("Could not save %{json} %{request}: %{detail}") % { json: name, request: request.key, detail: detail })
|
22
22
|
end
|
23
23
|
|
24
24
|
def destroy(request)
|
25
25
|
Puppet::FileSystem.unlink(path(request.key))
|
26
26
|
rescue => detail
|
27
27
|
unless detail.is_a? Errno::ENOENT
|
28
|
-
raise Puppet::Error, _("Could not destroy %{json} %{request}: %{detail}") % { json:
|
28
|
+
raise Puppet::Error, _("Could not destroy %{json} %{request}: %{detail}") % { json: name, request: request.key, detail: detail }, detail.backtrace
|
29
29
|
end
|
30
30
|
|
31
31
|
1 # emulate success...
|
@@ -66,7 +66,7 @@ class Puppet::Indirector::JSON < Puppet::Indirector::Terminus
|
|
66
66
|
end
|
67
67
|
|
68
68
|
begin
|
69
|
-
|
69
|
+
from_json(json)
|
70
70
|
rescue => detail
|
71
71
|
raise Puppet::Error, _("Could not parse JSON data for %{name} %{key}: %{detail}") % { name: indirection.name, key: key, detail: detail }, detail.backtrace
|
72
72
|
end
|