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
data/lib/puppet/http/proxy.rb
CHANGED
@@ -6,7 +6,7 @@ require_relative '../../puppet/ssl/openssl_loader'
|
|
6
6
|
module Puppet::HTTP::Proxy
|
7
7
|
def self.proxy(uri)
|
8
8
|
if http_proxy_host && !no_proxy?(uri)
|
9
|
-
Net::HTTP.new(uri.host, uri.port,
|
9
|
+
Net::HTTP.new(uri.host, uri.port, http_proxy_host, http_proxy_port, http_proxy_user, http_proxy_password)
|
10
10
|
else
|
11
11
|
http = Net::HTTP.new(uri.host, uri.port, nil, nil, nil, nil)
|
12
12
|
# Net::HTTP defaults the proxy port even though we said not to
|
@@ -24,7 +24,7 @@ module Puppet::HTTP::Proxy
|
|
24
24
|
rescue URI::InvalidURIError
|
25
25
|
return nil
|
26
26
|
end
|
27
|
-
|
27
|
+
nil
|
28
28
|
end
|
29
29
|
|
30
30
|
# The documentation around the format of the no_proxy variable seems
|
@@ -56,11 +56,11 @@ module Puppet::HTTP::Proxy
|
|
56
56
|
# If this no_proxy entry specifies a port, we want to match it against
|
57
57
|
# the destination port. Otherwise just match hosts.
|
58
58
|
if port
|
59
|
-
no_proxy_regex =
|
59
|
+
no_proxy_regex = /#{host}:#{port}$/
|
60
60
|
dest_string = "#{dest.host}:#{dest.port}"
|
61
61
|
else
|
62
|
-
no_proxy_regex =
|
63
|
-
dest_string =
|
62
|
+
no_proxy_regex = /#{host}$/
|
63
|
+
dest_string = dest.host.to_s
|
64
64
|
end
|
65
65
|
|
66
66
|
if no_proxy_regex.match(dest_string)
|
@@ -68,11 +68,11 @@ module Puppet::HTTP::Proxy
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
|
71
|
+
false
|
72
72
|
end
|
73
73
|
|
74
74
|
def self.http_proxy_host
|
75
|
-
env =
|
75
|
+
env = http_proxy_env
|
76
76
|
|
77
77
|
if env and env.host
|
78
78
|
return env.host
|
@@ -82,21 +82,21 @@ module Puppet::HTTP::Proxy
|
|
82
82
|
return nil
|
83
83
|
end
|
84
84
|
|
85
|
-
|
85
|
+
Puppet.settings[:http_proxy_host]
|
86
86
|
end
|
87
87
|
|
88
88
|
def self.http_proxy_port
|
89
|
-
env =
|
89
|
+
env = http_proxy_env
|
90
90
|
|
91
91
|
if env and env.port
|
92
92
|
return env.port
|
93
93
|
end
|
94
94
|
|
95
|
-
|
95
|
+
Puppet.settings[:http_proxy_port]
|
96
96
|
end
|
97
97
|
|
98
98
|
def self.http_proxy_user
|
99
|
-
env =
|
99
|
+
env = http_proxy_env
|
100
100
|
|
101
101
|
if env and env.user
|
102
102
|
return env.user
|
@@ -106,11 +106,11 @@ module Puppet::HTTP::Proxy
|
|
106
106
|
return nil
|
107
107
|
end
|
108
108
|
|
109
|
-
|
109
|
+
Puppet.settings[:http_proxy_user]
|
110
110
|
end
|
111
111
|
|
112
112
|
def self.http_proxy_password
|
113
|
-
env =
|
113
|
+
env = http_proxy_env
|
114
114
|
|
115
115
|
if env and env.password
|
116
116
|
return env.password
|
@@ -120,7 +120,7 @@ module Puppet::HTTP::Proxy
|
|
120
120
|
return nil
|
121
121
|
end
|
122
122
|
|
123
|
-
|
123
|
+
Puppet.settings[:http_proxy_password]
|
124
124
|
end
|
125
125
|
|
126
126
|
def self.no_proxy
|
@@ -134,6 +134,6 @@ module Puppet::HTTP::Proxy
|
|
134
134
|
return nil
|
135
135
|
end
|
136
136
|
|
137
|
-
|
137
|
+
Puppet.settings[:no_proxy]
|
138
138
|
end
|
139
139
|
end
|
@@ -43,7 +43,7 @@ class Puppet::HTTP::Redirector
|
|
43
43
|
#
|
44
44
|
# @api private
|
45
45
|
def redirect_to(request, response, redirects)
|
46
|
-
raise Puppet::HTTP::TooManyRedirects
|
46
|
+
raise Puppet::HTTP::TooManyRedirects, request.uri if redirects >= @redirect_limit
|
47
47
|
|
48
48
|
location = parse_location(response)
|
49
49
|
url = request.uri.merge(location)
|
@@ -56,6 +56,10 @@ class Puppet::HTTP::Redirector
|
|
56
56
|
next if header.casecmp('Authorization').zero? && request.uri.host.casecmp(location.host) != 0
|
57
57
|
next if header.casecmp('Cookie').zero? && request.uri.host.casecmp(location.host) != 0
|
58
58
|
end
|
59
|
+
# Allow Net::HTTP to set its own Accept-Encoding header to avoid errors with HTTP compression.
|
60
|
+
# See https://github.com/puppetlabs/puppet/issues/9143
|
61
|
+
next if header.casecmp('Accept-Encoding').zero?
|
62
|
+
|
59
63
|
new_request[header] = value
|
60
64
|
end
|
61
65
|
|
@@ -74,7 +78,7 @@ class Puppet::HTTP::Redirector
|
|
74
78
|
|
75
79
|
def parse_location(response)
|
76
80
|
location = response['location']
|
77
|
-
raise Puppet::HTTP::ProtocolError
|
81
|
+
raise Puppet::HTTP::ProtocolError, _("Location response header is missing") unless location
|
78
82
|
|
79
83
|
URI.parse(location)
|
80
84
|
rescue URI::InvalidURIError => e
|
data/lib/puppet/http/resolver.rb
CHANGED
@@ -42,9 +42,9 @@ class Puppet::HTTP::Resolver
|
|
42
42
|
# @api public
|
43
43
|
def check_connection?(session, service, ssl_context: nil)
|
44
44
|
service.connect(ssl_context: ssl_context)
|
45
|
-
|
45
|
+
true
|
46
46
|
rescue Puppet::HTTP::ConnectionError => e
|
47
47
|
Puppet.log_exception(e, "Connection to #{service.url} failed, trying next route: #{e.message}")
|
48
|
-
|
48
|
+
false
|
49
49
|
end
|
50
50
|
end
|
@@ -48,7 +48,7 @@ class Puppet::HTTP::RetryAfterHandler
|
|
48
48
|
#
|
49
49
|
# @api private
|
50
50
|
def retry_after_interval(request, response, retries)
|
51
|
-
raise Puppet::HTTP::TooManyRetryAfters
|
51
|
+
raise Puppet::HTTP::TooManyRetryAfters, request.uri if retries >= @retry_limit
|
52
52
|
|
53
53
|
retry_after = response['Retry-After']
|
54
54
|
return nil unless retry_after
|
@@ -72,7 +72,7 @@ class Puppet::HTTP::RetryAfterHandler
|
|
72
72
|
seconds = (tm.to_time - DateTime.now.to_time).to_i
|
73
73
|
[seconds, 0].max
|
74
74
|
rescue ArgumentError
|
75
|
-
raise Puppet::HTTP::ProtocolError
|
75
|
+
raise Puppet::HTTP::ProtocolError, _("Failed to parse Retry-After header '%{retry_after}' as an integer or RFC 2822 date") % { retry_after: retry_after }
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
@@ -124,7 +124,7 @@ class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
|
|
124
124
|
options: { ssl_context: ssl_context }
|
125
125
|
)
|
126
126
|
|
127
|
-
raise ArgumentError
|
127
|
+
raise ArgumentError, _('SSL context must contain a client certificate.') unless ssl_context.client_cert
|
128
128
|
|
129
129
|
process_response(response)
|
130
130
|
|
@@ -118,7 +118,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
118
118
|
body,
|
119
119
|
headers: headers,
|
120
120
|
# for legacy reasons we always send environment as a query parameter too
|
121
|
-
params: { environment: environment }
|
121
|
+
params: { environment: environment }
|
122
122
|
)
|
123
123
|
|
124
124
|
if (compiler = response['X-Puppet-Compiler-Name'])
|
@@ -163,9 +163,9 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
163
163
|
#
|
164
164
|
def post_catalog4(certname, persistence:, environment:, facts: nil, trusted_facts: nil, transaction_uuid: nil, job_id: nil, options: nil)
|
165
165
|
unless persistence.is_a?(Hash) && (missing = [:facts, :catalog] - persistence.keys.map(&:to_sym)).empty?
|
166
|
-
raise ArgumentError
|
166
|
+
raise ArgumentError, "The 'persistence' hash is missing the keys: #{missing.join(', ')}"
|
167
167
|
end
|
168
|
-
raise ArgumentError
|
168
|
+
raise ArgumentError, "Facts must be a Hash not a #{facts.class}" unless facts.nil? || facts.is_a?(Hash)
|
169
169
|
|
170
170
|
body = {
|
171
171
|
certname: certname,
|
@@ -248,7 +248,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
248
248
|
with_base_url("/facts/#{name}"),
|
249
249
|
serialize(formatter, facts),
|
250
250
|
headers: headers,
|
251
|
-
params: { environment: environment }
|
251
|
+
params: { environment: environment }
|
252
252
|
)
|
253
253
|
|
254
254
|
process_response(response)
|
@@ -11,7 +11,7 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
|
|
11
11
|
API = '/puppet/v3'
|
12
12
|
|
13
13
|
# @return [RegEx] RegEx used to determine if a path contains a leading slash
|
14
|
-
PATH_REGEX =
|
14
|
+
PATH_REGEX = %r{^/}
|
15
15
|
|
16
16
|
# Use `Puppet::HTTP::Session.route_to(:fileserver)` to create or get an instance of this class.
|
17
17
|
#
|
@@ -47,7 +47,7 @@ class Puppet::HTTP::Service::Report < Puppet::HTTP::Service
|
|
47
47
|
with_base_url("/report/#{name}"),
|
48
48
|
serialize(formatter, report),
|
49
49
|
headers: headers,
|
50
|
-
params: { environment: environment }
|
50
|
+
params: { environment: environment }
|
51
51
|
)
|
52
52
|
|
53
53
|
# override parent's process_response handling
|
@@ -56,7 +56,7 @@ class Puppet::HTTP::Service::Report < Puppet::HTTP::Service
|
|
56
56
|
if response.success?
|
57
57
|
response
|
58
58
|
else
|
59
|
-
raise Puppet::HTTP::ResponseError
|
59
|
+
raise Puppet::HTTP::ResponseError, response
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
data/lib/puppet/http/service.rb
CHANGED
@@ -129,30 +129,26 @@ class Puppet::HTTP::Service
|
|
129
129
|
|
130
130
|
def formatter_for_response(response)
|
131
131
|
header = response['Content-Type']
|
132
|
-
raise Puppet::HTTP::ProtocolError
|
132
|
+
raise Puppet::HTTP::ProtocolError, _("No content type in http response; cannot parse") unless header
|
133
133
|
|
134
134
|
header.gsub!(/\s*;.*$/, '') # strip any charset
|
135
135
|
|
136
136
|
formatter = Puppet::Network::FormatHandler.mime(header)
|
137
|
-
raise Puppet::HTTP::ProtocolError
|
137
|
+
raise Puppet::HTTP::ProtocolError, "Content-Type is unsupported" if EXCLUDED_FORMATS.include?(formatter.name)
|
138
138
|
|
139
139
|
formatter
|
140
140
|
end
|
141
141
|
|
142
142
|
def serialize(formatter, object)
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
raise Puppet::HTTP::SerializationError.new("Failed to serialize #{object.class} to #{formatter.name}: #{err.message}", err)
|
147
|
-
end
|
143
|
+
formatter.render(object)
|
144
|
+
rescue => err
|
145
|
+
raise Puppet::HTTP::SerializationError.new("Failed to serialize #{object.class} to #{formatter.name}: #{err.message}", err)
|
148
146
|
end
|
149
147
|
|
150
148
|
def serialize_multiple(formatter, object)
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
raise Puppet::HTTP::SerializationError.new("Failed to serialize multiple #{object.class} to #{formatter.name}: #{err.message}", err)
|
155
|
-
end
|
149
|
+
formatter.render_multiple(object)
|
150
|
+
rescue => err
|
151
|
+
raise Puppet::HTTP::SerializationError.new("Failed to serialize multiple #{object.class} to #{formatter.name}: #{err.message}", err)
|
156
152
|
end
|
157
153
|
|
158
154
|
def deserialize(response, model)
|
@@ -176,6 +172,6 @@ class Puppet::HTTP::Service
|
|
176
172
|
def process_response(response)
|
177
173
|
@session.process_response(response)
|
178
174
|
|
179
|
-
raise Puppet::HTTP::ResponseError
|
175
|
+
raise Puppet::HTTP::ResponseError, response unless response.success?
|
180
176
|
end
|
181
177
|
end
|
data/lib/puppet/http/session.rb
CHANGED
@@ -52,7 +52,7 @@ class Puppet::HTTP::Session
|
|
52
52
|
raise ArgumentError, "Unknown service #{name}" unless Puppet::HTTP::Service.valid_name?(name)
|
53
53
|
|
54
54
|
# short circuit if explicit URL host & port given
|
55
|
-
if url && url.host
|
55
|
+
if url && !url.host.nil? && !url.host.empty?
|
56
56
|
service = Puppet::HTTP::Service.create_service(@client, self, name, url.host, url.port)
|
57
57
|
service.connect(ssl_context: ssl_context)
|
58
58
|
return service
|
data/lib/puppet/http/site.rb
CHANGED
@@ -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
|