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
@@ -58,7 +58,7 @@ module Puppet::ModuleTool
|
|
58
58
|
merge_dependencies(data) if data['dependencies']
|
59
59
|
|
60
60
|
@data.merge!(data)
|
61
|
-
|
61
|
+
self
|
62
62
|
end
|
63
63
|
|
64
64
|
# Validates the name and version_requirement for a dependency, then creates
|
@@ -102,7 +102,11 @@ module Puppet::ModuleTool
|
|
102
102
|
data = @data.dup.merge('dependencies' => dependencies)
|
103
103
|
|
104
104
|
contents = data.keys.map do |k|
|
105
|
-
value =
|
105
|
+
value = begin
|
106
|
+
Puppet::Util::Json.dump(data[k], :pretty => true)
|
107
|
+
rescue
|
108
|
+
data[k].to_json
|
109
|
+
end
|
106
110
|
%Q("#{k}": #{value})
|
107
111
|
end
|
108
112
|
|
@@ -121,7 +125,7 @@ module Puppet::ModuleTool
|
|
121
125
|
# Do basic validation and parsing of the name parameter.
|
122
126
|
def process_name(data)
|
123
127
|
validate_name(data['name'])
|
124
|
-
author, @module_name = data['name'].split(
|
128
|
+
author, @module_name = data['name'].split(%r{[-/]}, 2)
|
125
129
|
|
126
130
|
data['author'] ||= author if @data['author'] == DEFAULTS['author']
|
127
131
|
end
|
@@ -139,7 +143,7 @@ module Puppet::ModuleTool
|
|
139
143
|
# GitHub, we can predict sensible defaults for both project_page and
|
140
144
|
# issues_url.
|
141
145
|
def process_source(data)
|
142
|
-
if data['source'] =~ %r
|
146
|
+
if data['source'] =~ %r{://}
|
143
147
|
source_uri = URI.parse(data['source'])
|
144
148
|
else
|
145
149
|
source_uri = URI.parse("http://#{data['source']}")
|
@@ -149,10 +153,10 @@ module Puppet::ModuleTool
|
|
149
153
|
source_uri.scheme = 'https'
|
150
154
|
source_uri.path.sub!(/\.git$/, '')
|
151
155
|
data['project_page'] ||= @data['project_page'] || source_uri.to_s
|
152
|
-
data['issues_url'] ||= @data['issues_url'] || source_uri.to_s.sub(
|
156
|
+
data['issues_url'] ||= @data['issues_url'] || source_uri.to_s.sub(%r{/*$}, '') + '/issues'
|
153
157
|
end
|
154
158
|
rescue URI::Error
|
155
|
-
|
159
|
+
nil
|
156
160
|
end
|
157
161
|
|
158
162
|
# Validates and parses the dependencies.
|
@@ -167,9 +171,9 @@ module Puppet::ModuleTool
|
|
167
171
|
|
168
172
|
# Validates that the given module name is both namespaced and well-formed.
|
169
173
|
def validate_name(name)
|
170
|
-
return if name =~
|
174
|
+
return if name =~ %r{\A[a-z0-9]+[-/][a-z][a-z0-9_]*\Z}i
|
171
175
|
|
172
|
-
namespace, modname = name.split(
|
176
|
+
namespace, modname = name.split(%r{[-/]}, 2)
|
173
177
|
modname = :namespace_missing if namespace == ''
|
174
178
|
|
175
179
|
err = case modname
|
@@ -13,7 +13,8 @@ module Puppet::ModuleTool::Shared
|
|
13
13
|
@installed[mod_name] << mod
|
14
14
|
d = @local["#{mod_name}@#{mod.version}"]
|
15
15
|
(mod.dependencies || []).each do |hash|
|
16
|
-
name
|
16
|
+
name = hash['name']
|
17
|
+
conditions = hash['version_requirement']
|
17
18
|
name = name.tr('/', '-')
|
18
19
|
d[name] = conditions
|
19
20
|
@conditions[name] << {
|
@@ -37,7 +38,11 @@ module Puppet::ModuleTool::Shared
|
|
37
38
|
mod_name, releases = pair
|
38
39
|
mod_name = mod_name.tr('/', '-')
|
39
40
|
releases.each do |rel|
|
40
|
-
semver =
|
41
|
+
semver = begin
|
42
|
+
SemanticPuppet::Version.parse(rel['version'])
|
43
|
+
rescue
|
44
|
+
SemanticPuppet::Version::MIN
|
45
|
+
end
|
41
46
|
@versions[mod_name] << { :vstring => rel['version'], :semver => semver }
|
42
47
|
@versions[mod_name].sort_by! { |a| a[:semver] }
|
43
48
|
@urls["#{mod_name}@#{rel['version']}"] = rel['file']
|
@@ -55,14 +60,14 @@ module Puppet::ModuleTool::Shared
|
|
55
60
|
return :latest
|
56
61
|
end
|
57
62
|
|
58
|
-
|
63
|
+
:best
|
59
64
|
end
|
60
65
|
|
61
66
|
def annotated_version(mod, versions)
|
62
67
|
if versions.empty?
|
63
|
-
|
68
|
+
implicit_version(mod)
|
64
69
|
else
|
65
|
-
|
70
|
+
"#{implicit_version(mod)}: #{versions.last}"
|
66
71
|
end
|
67
72
|
end
|
68
73
|
|
@@ -78,10 +83,16 @@ module Puppet::ModuleTool::Shared
|
|
78
83
|
}
|
79
84
|
|
80
85
|
if forced?
|
81
|
-
range =
|
86
|
+
range = begin
|
87
|
+
Puppet::Module.parse_range(@version)
|
88
|
+
rescue
|
89
|
+
Puppet::Module.parse_range('>= 0.0.0')
|
90
|
+
end
|
82
91
|
else
|
83
92
|
range = (@conditions[mod]).map do |r|
|
84
|
-
Puppet::Module.parse_range(r[:dependency])
|
93
|
+
Puppet::Module.parse_range(r[:dependency])
|
94
|
+
rescue
|
95
|
+
Puppet::Module.parse_range('>= 0.0.0')
|
85
96
|
end.inject(&:&)
|
86
97
|
end
|
87
98
|
|
@@ -89,7 +100,7 @@ module Puppet::ModuleTool::Shared
|
|
89
100
|
next if range === seen[mod][:semver]
|
90
101
|
|
91
102
|
req_module = @module_name
|
92
|
-
req_versions = @versions[
|
103
|
+
req_versions = @versions[@module_name.to_s].map { |v| v[:semver] }
|
93
104
|
raise InvalidDependencyCycleError,
|
94
105
|
:module_name => mod,
|
95
106
|
:source => (source + [{ :name => mod, :version => source.last[:dependency] }]),
|
@@ -110,14 +121,14 @@ module Puppet::ModuleTool::Shared
|
|
110
121
|
@conditions.each { |_, conds| conds.delete_if { |c| c[:module] == mod } }
|
111
122
|
end
|
112
123
|
|
113
|
-
versions = @versions[
|
124
|
+
versions = @versions[mod.to_s].select { |h| range === h[:semver] }
|
114
125
|
valid_versions = versions.select { |x| x[:semver].special == '' }
|
115
126
|
valid_versions = versions if valid_versions.empty?
|
116
127
|
|
117
128
|
version = valid_versions.last
|
118
129
|
unless version
|
119
130
|
req_module = @module_name
|
120
|
-
req_versions = @versions[
|
131
|
+
req_versions = @versions[@module_name.to_s].map { |v| v[:semver] }
|
121
132
|
raise NoVersionsSatisfyError,
|
122
133
|
:requested_name => req_module,
|
123
134
|
:requested_version => @version || annotated_version(req_module, req_versions),
|
@@ -135,7 +146,11 @@ module Puppet::ModuleTool::Shared
|
|
135
146
|
:action => action,
|
136
147
|
:previous_version => @installed[mod].empty? ? nil : @installed[mod].first.version,
|
137
148
|
:file => @urls["#{mod}@#{version[:vstring]}"],
|
138
|
-
:path => action == :install
|
149
|
+
:path => if action == :install
|
150
|
+
@options[:target_dir]
|
151
|
+
else
|
152
|
+
@installed[mod].empty? ? @options[:target_dir] : @installed[mod].first.modulepath
|
153
|
+
end,
|
139
154
|
:dependencies => []
|
140
155
|
}
|
141
156
|
end
|
@@ -143,7 +158,7 @@ module Puppet::ModuleTool::Shared
|
|
143
158
|
deps = @remote["#{mod[:module]}@#{mod[:version][:vstring]}"].sort_by(&:first)
|
144
159
|
mod[:dependencies] = resolve_constraints(deps, source + [{ :name => mod[:module], :version => mod[:version][:vstring] }], seen, :install)
|
145
160
|
end unless @ignore_dependencies
|
146
|
-
|
161
|
+
dependencies
|
147
162
|
end
|
148
163
|
|
149
164
|
def download_tarballs(graph, default_path, forge)
|
data/lib/puppet/module_tool.rb
CHANGED
@@ -13,7 +13,7 @@ module Puppet
|
|
13
13
|
|
14
14
|
# Directory and names that should not be checksummed.
|
15
15
|
ARTIFACTS = ['pkg', /^\./, /^~/, /^#/, 'coverage', 'checksums.json', 'REVISION']
|
16
|
-
FULL_MODULE_NAME_PATTERN =
|
16
|
+
FULL_MODULE_NAME_PATTERN = %r{\A([^-/|.]+)[-|/](.+)\z}
|
17
17
|
REPOSITORY_URL = Puppet.settings[:module_repository]
|
18
18
|
|
19
19
|
# Is this a directory that shouldn't be checksummed?
|
@@ -35,7 +35,7 @@ module Puppet
|
|
35
35
|
def self.username_and_modname_from(full_module_name)
|
36
36
|
matcher = full_module_name.match(FULL_MODULE_NAME_PATTERN)
|
37
37
|
if matcher
|
38
|
-
|
38
|
+
matcher.captures
|
39
39
|
else
|
40
40
|
raise ArgumentError, _("Not a valid full name: %{full_module_name}") % { full_module_name: full_module_name }
|
41
41
|
end
|
@@ -87,7 +87,7 @@ module Puppet
|
|
87
87
|
str << branch
|
88
88
|
end
|
89
89
|
|
90
|
-
|
90
|
+
str
|
91
91
|
end
|
92
92
|
|
93
93
|
def self.build_tree(mods, dir)
|
@@ -102,7 +102,7 @@ module Puppet
|
|
102
102
|
mod[:text] = "#{mod[:name]} (#{colorize(:cyan, version_string)})"
|
103
103
|
mod[:text] += " [#{mod[:path]}]" unless mod[:path].to_s == dir.to_s
|
104
104
|
|
105
|
-
deps =
|
105
|
+
deps = mod[:dependencies] || []
|
106
106
|
deps.sort_by! { |a| a[:name] }
|
107
107
|
build_tree(deps, dir)
|
108
108
|
end
|
@@ -7,7 +7,7 @@ module Puppet::Network # :nodoc:
|
|
7
7
|
attr_accessor :name, :ip, :authenticated, :handler, :method
|
8
8
|
|
9
9
|
def authenticated?
|
10
|
-
|
10
|
+
authenticated
|
11
11
|
end
|
12
12
|
|
13
13
|
# A common way of talking about the full call. Individual servers
|
@@ -20,11 +20,13 @@ module Puppet::Network # :nodoc:
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def initialize(name, ip, authenticated)
|
23
|
-
@name
|
23
|
+
@name = name
|
24
|
+
@ip = ip
|
25
|
+
@authenticated = authenticated
|
24
26
|
end
|
25
27
|
|
26
28
|
def to_s
|
27
|
-
"#{
|
29
|
+
"#{name}(#{ip})"
|
28
30
|
end
|
29
31
|
end
|
30
32
|
end
|
@@ -14,7 +14,7 @@ class Puppet::Network::Format
|
|
14
14
|
value = @options.delete(name)
|
15
15
|
value = default if value.nil?
|
16
16
|
|
17
|
-
|
17
|
+
send(name.to_s + "=", value)
|
18
18
|
end
|
19
19
|
|
20
20
|
def initialize(name, options = {}, &block)
|
@@ -111,6 +111,6 @@ class Puppet::Network::Format
|
|
111
111
|
|
112
112
|
method = send(name)
|
113
113
|
|
114
|
-
|
114
|
+
(type == :class ? klass.respond_to?(method) : klass.method_defined?(method))
|
115
115
|
end
|
116
116
|
end
|
@@ -36,7 +36,7 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
|
|
36
36
|
indirection, method, key, params = uri2indirection(request.method, request.path, request.params)
|
37
37
|
certificate = request.client_cert
|
38
38
|
|
39
|
-
|
39
|
+
unless indirection.allow_remote_requests?
|
40
40
|
# TODO: should we tell the user we found an indirection but it doesn't
|
41
41
|
# allow remote requests, or just pretend there's no handler at all? what
|
42
42
|
# are the security implications for the former?
|
@@ -62,9 +62,7 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
|
|
62
62
|
environment = params.delete(:environment)
|
63
63
|
|
64
64
|
if indirection_name !~ /^\w+$/
|
65
|
-
raise Puppet::Network::HTTP::Error::HTTPBadRequestError
|
66
|
-
_("The indirection name must be purely alphanumeric, not '%{indirection_name}'") % { indirection_name: indirection_name }
|
67
|
-
)
|
65
|
+
raise Puppet::Network::HTTP::Error::HTTPBadRequestError, _("The indirection name must be purely alphanumeric, not '%{indirection_name}'") % { indirection_name: indirection_name }
|
68
66
|
end
|
69
67
|
|
70
68
|
# this also depluralizes the indirection_name if it is a search
|
@@ -73,29 +71,23 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
|
|
73
71
|
# check whether this indirection matches the prefix and version in the
|
74
72
|
# request
|
75
73
|
if url_prefix != IndirectionType.url_prefix_for(indirection_name)
|
76
|
-
raise Puppet::Network::HTTP::Error::HTTPBadRequestError
|
77
|
-
_("Indirection '%{indirection_name}' does not match url prefix '%{url_prefix}'") % { indirection_name: indirection_name, url_prefix: url_prefix }
|
78
|
-
)
|
74
|
+
raise Puppet::Network::HTTP::Error::HTTPBadRequestError, _("Indirection '%{indirection_name}' does not match url prefix '%{url_prefix}'") % { indirection_name: indirection_name, url_prefix: url_prefix }
|
79
75
|
end
|
80
76
|
|
81
77
|
indirection = Puppet::Indirector::Indirection.instance(indirection_name.to_sym)
|
82
|
-
|
78
|
+
unless indirection
|
83
79
|
raise Puppet::Network::HTTP::Error::HTTPNotFoundError.new(
|
84
80
|
_("Could not find indirection '%{indirection_name}'") % { indirection_name: indirection_name },
|
85
81
|
Puppet::Network::HTTP::Issues::HANDLER_NOT_FOUND
|
86
82
|
)
|
87
83
|
end
|
88
84
|
|
89
|
-
|
90
|
-
raise Puppet::Network::HTTP::Error::HTTPBadRequestError
|
91
|
-
_("An environment parameter must be specified")
|
92
|
-
)
|
85
|
+
unless environment
|
86
|
+
raise Puppet::Network::HTTP::Error::HTTPBadRequestError, _("An environment parameter must be specified")
|
93
87
|
end
|
94
88
|
|
95
|
-
|
96
|
-
raise Puppet::Network::HTTP::Error::HTTPBadRequestError
|
97
|
-
_("The environment must be purely alphanumeric, not '%{environment}'") % { environment: environment }
|
98
|
-
)
|
89
|
+
unless Puppet::Node::Environment.valid_name?(environment)
|
90
|
+
raise Puppet::Network::HTTP::Error::HTTPBadRequestError, _("The environment must be purely alphanumeric, not '%{environment}'") % { environment: environment }
|
99
91
|
end
|
100
92
|
|
101
93
|
configured_environment = Puppet.lookup(:environments).get(environment)
|
@@ -105,17 +97,13 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
|
|
105
97
|
end
|
106
98
|
|
107
99
|
if configured_environment.nil? && indirection.terminus.require_environment?
|
108
|
-
raise Puppet::Network::HTTP::Error::HTTPNotFoundError
|
109
|
-
_("Could not find environment '%{environment}'") % { environment: environment }
|
110
|
-
)
|
100
|
+
raise Puppet::Network::HTTP::Error::HTTPNotFoundError, _("Could not find environment '%{environment}'") % { environment: environment }
|
111
101
|
end
|
112
102
|
|
113
103
|
params.delete(:bucket_path)
|
114
104
|
|
115
105
|
if key == "" or key.nil?
|
116
|
-
raise Puppet::Network::HTTP::Error::HTTPBadRequestError
|
117
|
-
_("No request key specified in %{uri}") % { uri: uri }
|
118
|
-
)
|
106
|
+
raise Puppet::Network::HTTP::Error::HTTPBadRequestError, _("No request key specified in %{uri}") % { uri: uri }
|
119
107
|
end
|
120
108
|
|
121
109
|
[indirection, method, key, params]
|
@@ -196,19 +184,17 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
|
|
196
184
|
def first_response_formatter_for(model, request, key, &block)
|
197
185
|
formats = accepted_response_formatters_for(model, request)
|
198
186
|
formatter = formats.find do |format|
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
raise Puppet::Network::FormatHandler::FormatError.new(msg)
|
209
|
-
end
|
210
|
-
false
|
187
|
+
yield format
|
188
|
+
true
|
189
|
+
rescue Puppet::Network::FormatHandler::FormatError => err
|
190
|
+
msg = _("Failed to serialize %{model} for '%{key}': %{detail}") %
|
191
|
+
{ model: model, key: key, detail: err }
|
192
|
+
if Puppet[:allow_pson_serialization]
|
193
|
+
Puppet.warning(msg)
|
194
|
+
else
|
195
|
+
raise Puppet::Network::FormatHandler::FormatError, msg
|
211
196
|
end
|
197
|
+
false
|
212
198
|
end
|
213
199
|
|
214
200
|
return formatter if formatter
|
@@ -239,9 +225,7 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
|
|
239
225
|
begin
|
240
226
|
return model_class.convert_from(formatter.name.to_s, data)
|
241
227
|
rescue => e
|
242
|
-
raise Puppet::Network::HTTP::Error::HTTPBadRequestError.
|
243
|
-
_("The request body is invalid: %{message}") % { message: e.message }
|
244
|
-
)
|
228
|
+
raise Puppet::Network::HTTP::Error::HTTPBadRequestError, _("The request body is invalid: %{message}") % { message: e.message }
|
245
229
|
end
|
246
230
|
end
|
247
231
|
|
@@ -253,22 +237,18 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
|
|
253
237
|
end
|
254
238
|
|
255
239
|
def indirection_method(http_method, indirection)
|
256
|
-
raise Puppet::Network::HTTP::Error::HTTPMethodNotAllowedError
|
257
|
-
_("No support for http method %{http_method}") % { http_method: http_method }
|
258
|
-
) unless METHOD_MAP[http_method]
|
240
|
+
raise Puppet::Network::HTTP::Error::HTTPMethodNotAllowedError, _("No support for http method %{http_method}") % { http_method: http_method } unless METHOD_MAP[http_method]
|
259
241
|
|
260
242
|
method = METHOD_MAP[http_method][plurality(indirection)]
|
261
243
|
unless method
|
262
|
-
raise Puppet::Network::HTTP::Error::HTTPBadRequestError
|
263
|
-
_("No support for plurality %{indirection} for %{http_method} operations") % { indirection: plurality(indirection), http_method: http_method }
|
264
|
-
)
|
244
|
+
raise Puppet::Network::HTTP::Error::HTTPBadRequestError, _("No support for plurality %{indirection} for %{http_method} operations") % { indirection: plurality(indirection), http_method: http_method }
|
265
245
|
end
|
266
246
|
|
267
247
|
method
|
268
248
|
end
|
269
249
|
|
270
250
|
def self.pluralize(indirection)
|
271
|
-
|
251
|
+
(indirection == "status" ? "statuses" : indirection + "s")
|
272
252
|
end
|
273
253
|
private_class_method :pluralize
|
274
254
|
|
@@ -245,7 +245,7 @@ class Puppet::Network::HTTP::Connection
|
|
245
245
|
end
|
246
246
|
|
247
247
|
def to_url(path)
|
248
|
-
if path =~
|
248
|
+
if path =~ %r{^https?://}
|
249
249
|
# The old Connection class accepts a URL as the request path, and sends
|
250
250
|
# it in "absolute-form" in the request line, e.g. GET https://puppet:8140/.
|
251
251
|
# See https://httpwg.org/specs/rfc7230.html#absolute-form. It just so happens
|
@@ -13,7 +13,7 @@ module Puppet::Network::HTTP::Handler
|
|
13
13
|
|
14
14
|
# These shouldn't be allowed to be set by clients
|
15
15
|
# in the query string, for security reasons.
|
16
|
-
DISALLOWED_KEYS = [
|
16
|
+
DISALLOWED_KEYS = %w[node ip]
|
17
17
|
|
18
18
|
def register(routes)
|
19
19
|
# There's got to be a simpler way to do this, right?
|
@@ -21,7 +21,7 @@ module Puppet::Network::HTTP::Handler
|
|
21
21
|
routes.each { |r| dupes[r.path_matcher] = (dupes[r.path_matcher] || 0) + 1 }
|
22
22
|
dupes = dupes.filter_map { |pm, count| pm if count > 1 }
|
23
23
|
if dupes.count > 0
|
24
|
-
raise ArgumentError, _("Given multiple routes with identical path regexes: %{regexes}") % { regexes: dupes.map
|
24
|
+
raise ArgumentError, _("Given multiple routes with identical path regexes: %{regexes}") % { regexes: dupes.map(&:inspect).join(', ') }
|
25
25
|
end
|
26
26
|
|
27
27
|
@routes = routes
|
@@ -107,14 +107,10 @@ module Puppet::Network::HTTP::Handler
|
|
107
107
|
|
108
108
|
def find_route_or_raise(request)
|
109
109
|
route = @routes.find { |r| r.matches?(request) }
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
_("No route for %{request} %{path}") % { request: request.method, path: request.path },
|
115
|
-
HANDLER_NOT_FOUND
|
116
|
-
)
|
117
|
-
end
|
110
|
+
route || raise(Puppet::Network::HTTP::Error::HTTPNotFoundError.new(
|
111
|
+
_("No route for %{request} %{path}") % { request: request.method, path: request.path },
|
112
|
+
HANDLER_NOT_FOUND
|
113
|
+
))
|
118
114
|
end
|
119
115
|
|
120
116
|
def set_puppet_version_header(response)
|
@@ -178,7 +174,7 @@ module Puppet::Network::HTTP::Handler
|
|
178
174
|
end
|
179
175
|
|
180
176
|
def allowed_parameter?(name)
|
181
|
-
|
177
|
+
!(name.nil? || name.empty? || DISALLOWED_KEYS.include?(name))
|
182
178
|
end
|
183
179
|
|
184
180
|
def parse_parameter_value(param, value)
|
@@ -205,7 +201,7 @@ module Puppet::Network::HTTP::Handler
|
|
205
201
|
end
|
206
202
|
|
207
203
|
def configure_profiler(request_headers, request_params)
|
208
|
-
if
|
204
|
+
if request_headers.has_key?(Puppet::Network::HTTP::HEADER_ENABLE_PROFILING.downcase) or Puppet[:profile]
|
209
205
|
Puppet::Util::Profiler.add_profiler(Puppet::Util::Profiler::Aggregate.new(Puppet.method(:info), request_params.object_id))
|
210
206
|
end
|
211
207
|
end
|
@@ -78,6 +78,6 @@ Puppet::Network::HTTP::Request = Struct.new(:headers, :params, :method, :path, :
|
|
78
78
|
|
79
79
|
def valid_network_format?(format)
|
80
80
|
# YAML in network requests is not supported. See http://links.puppet.com/deprecate_yaml_on_network
|
81
|
-
format
|
81
|
+
!format.nil? && format.name != :yaml && format.name != :b64_zlib_yaml
|
82
82
|
end
|
83
83
|
end
|
@@ -28,39 +28,39 @@ class Puppet::Network::HTTP::Route
|
|
28
28
|
|
29
29
|
def get(*handlers)
|
30
30
|
@method_handlers[:GET] = handlers
|
31
|
-
|
31
|
+
self
|
32
32
|
end
|
33
33
|
|
34
34
|
def head(*handlers)
|
35
35
|
@method_handlers[:HEAD] = handlers
|
36
|
-
|
36
|
+
self
|
37
37
|
end
|
38
38
|
|
39
39
|
def options(*handlers)
|
40
40
|
@method_handlers[:OPTIONS] = handlers
|
41
|
-
|
41
|
+
self
|
42
42
|
end
|
43
43
|
|
44
44
|
def post(*handlers)
|
45
45
|
@method_handlers[:POST] = handlers
|
46
|
-
|
46
|
+
self
|
47
47
|
end
|
48
48
|
|
49
49
|
def put(*handlers)
|
50
50
|
@method_handlers[:PUT] = handlers
|
51
|
-
|
51
|
+
self
|
52
52
|
end
|
53
53
|
|
54
54
|
def delete(*handlers)
|
55
55
|
@method_handlers[:DELETE] = handlers
|
56
|
-
|
56
|
+
self
|
57
57
|
end
|
58
58
|
|
59
59
|
def any(*handlers)
|
60
60
|
@method_handlers.each do |method, _registered_handlers|
|
61
61
|
@method_handlers[method] = handlers
|
62
62
|
end
|
63
|
-
|
63
|
+
self
|
64
64
|
end
|
65
65
|
|
66
66
|
def chain(*routes)
|
@@ -69,14 +69,14 @@ class Puppet::Network::HTTP::Route
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def matches?(request)
|
72
|
-
Puppet.debug { "Evaluating match for #{
|
72
|
+
Puppet.debug { "Evaluating match for #{inspect}" }
|
73
73
|
if match(request.routing_path)
|
74
74
|
return true
|
75
75
|
else
|
76
76
|
Puppet.debug { "Did not match path (#{request.routing_path.inspect})" }
|
77
77
|
end
|
78
78
|
|
79
|
-
|
79
|
+
false
|
80
80
|
end
|
81
81
|
|
82
82
|
def process(request, response)
|