puppet 6.16.0-x64-mingw32 → 6.20.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +2 -16
- data/Gemfile +6 -2
- data/Gemfile.lock +40 -36
- data/README.md +3 -4
- data/Rakefile +4 -12
- data/lib/puppet/agent.rb +2 -2
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +10 -6
- data/lib/puppet/application/agent.rb +23 -6
- data/lib/puppet/application/apply.rb +20 -21
- data/lib/puppet/application/device.rb +1 -0
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +2 -2
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/script.rb +1 -0
- data/lib/puppet/application_support.rb +7 -0
- data/lib/puppet/configurer.rb +70 -20
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +113 -46
- data/lib/puppet/environments.rb +84 -59
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +56 -16
- data/lib/puppet/face/epp.rb +12 -2
- data/lib/puppet/face/facts.rb +60 -0
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/status.rb +1 -1
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/ffi/posix.rb +10 -0
- data/lib/puppet/ffi/posix/constants.rb +14 -0
- data/lib/puppet/ffi/posix/functions.rb +24 -0
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +13 -1
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +4 -4
- data/lib/puppet/file_system/uniquefile.rb +8 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +3 -7
- data/lib/puppet/functions/epp.rb +1 -0
- data/lib/puppet/functions/inline_epp.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +1 -0
- data/lib/puppet/http/client.rb +6 -1
- data/lib/puppet/http/redirector.rb +9 -7
- data/lib/puppet/http/resolver.rb +5 -8
- data/lib/puppet/http/resolver/server_list.rb +18 -36
- data/lib/puppet/http/resolver/settings.rb +4 -4
- data/lib/puppet/http/resolver/srv.rb +5 -5
- data/lib/puppet/http/response.rb +19 -0
- data/lib/puppet/http/service.rb +3 -1
- data/lib/puppet/http/service/compiler.rb +1 -1
- data/lib/puppet/http/service/file_server.rb +1 -1
- data/lib/puppet/http/service/puppetserver.rb +39 -0
- data/lib/puppet/http/session.rb +5 -4
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/yaml.rb +4 -59
- data/lib/puppet/indirector/file_content/rest.rb +1 -1
- data/lib/puppet/indirector/file_metadata/http.rb +25 -5
- data/lib/puppet/indirector/file_metadata/rest.rb +2 -2
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +5 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/json.rb +8 -0
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/request.rb +5 -5
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/module_tool/applications/installer.rb +48 -2
- data/lib/puppet/module_tool/errors/shared.rb +17 -2
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/formats.rb +2 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/connection_adapter.rb +6 -4
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/pal_impl.rb +90 -13
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +7 -6
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
- data/lib/puppet/parser/compiler.rb +1 -1
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +4 -1
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +27 -8
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +18 -11
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/validation/checker4_0.rb +29 -15
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +38 -0
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/puppet_gem.rb +5 -0
- data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
- data/lib/puppet/provider/package/yum.rb +2 -1
- data/lib/puppet/provider/package/zypper.rb +3 -0
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +3 -3
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +11 -4
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reference/configuration.rb +6 -5
- data/lib/puppet/reports/http.rb +2 -0
- data/lib/puppet/resource.rb +2 -1
- data/lib/puppet/resource/type.rb +10 -1
- data/lib/puppet/rest/route.rb +2 -2
- data/lib/puppet/settings.rb +63 -21
- data/lib/puppet/settings/alias_setting.rb +37 -0
- data/lib/puppet/settings/base_setting.rb +26 -2
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +18 -13
- data/lib/puppet/transaction.rb +2 -2
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +12 -8
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +15 -7
- data/lib/puppet/type/file.rb +40 -15
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +32 -12
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/service.rb +53 -0
- data/lib/puppet/type/user.rb +18 -3
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/autoload.rb +10 -15
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/connection.rb +8 -8
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/fact_dif.rb +62 -0
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/posix.rb +54 -5
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +5 -1
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/api_types.rb +60 -33
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +43 -26
- data/lib/puppet/util/windows/user.rb +242 -8
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +501 -443
- data/man/man5/puppet.conf.5 +70 -24
- data/man/man8/puppet-agent.8 +8 -5
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +6 -6
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +2 -2
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +32 -1
- data/man/man8/puppet-filebucket.8 +3 -3
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +7 -4
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +4 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +2 -2
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet-status.8 +2 -2
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
- data/spec/integration/application/agent_spec.rb +263 -54
- data/spec/integration/application/apply_spec.rb +168 -149
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +70 -21
- data/spec/integration/application/help_spec.rb +42 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +53 -3
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +20 -3
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/network/http_pool_spec.rb +26 -9
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/resource/type_collection_spec.rb +2 -6
- data/spec/integration/transaction_spec.rb +4 -9
- data/spec/integration/type/file_spec.rb +1 -1
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +5 -3
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/registry_spec.rb +7 -17
- data/spec/integration/util/windows/user_spec.rb +47 -5
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +8 -0
- data/spec/lib/puppet_spec/settings.rb +6 -1
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/spec_helper.rb +1 -4
- data/spec/unit/agent_spec.rb +8 -6
- data/spec/unit/application/agent_spec.rb +3 -5
- data/spec/unit/application/config_spec.rb +224 -4
- data/spec/unit/application/doc_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +41 -10
- data/spec/unit/application/filebucket_spec.rb +0 -2
- data/spec/unit/application/man_spec.rb +52 -0
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +15 -2
- data/spec/unit/application_spec.rb +60 -13
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer_spec.rb +86 -37
- data/spec/unit/confine/feature_spec.rb +1 -1
- data/spec/unit/confine_spec.rb +10 -3
- data/spec/unit/context/trusted_information_spec.rb +10 -4
- data/spec/unit/defaults_spec.rb +20 -1
- data/spec/unit/environments_spec.rb +176 -32
- data/spec/unit/face/config_spec.rb +65 -12
- data/spec/unit/face/node_spec.rb +2 -13
- data/spec/unit/file_serving/configuration/parser_spec.rb +0 -1
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- data/spec/unit/file_serving/metadata_spec.rb +3 -3
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
- data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +18 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/forge/module_release_spec.rb +2 -7
- data/spec/unit/functions/inline_epp_spec.rb +26 -1
- data/spec/unit/http/client_spec.rb +64 -9
- data/spec/unit/http/resolver_spec.rb +24 -5
- data/spec/unit/http/response_spec.rb +6 -0
- data/spec/unit/http/service/ca_spec.rb +2 -3
- data/spec/unit/http/service/compiler_spec.rb +51 -3
- data/spec/unit/http/service/file_server_spec.rb +2 -3
- data/spec/unit/http/service/puppetserver_spec.rb +82 -0
- data/spec/unit/http/service/report_spec.rb +2 -3
- data/spec/unit/http/service_spec.rb +1 -2
- data/spec/unit/http/session_spec.rb +8 -21
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/face_spec.rb +0 -1
- data/spec/unit/indirector/facts/facter_spec.rb +0 -1
- data/spec/unit/indirector/facts/json_spec.rb +255 -0
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
- data/spec/unit/indirector/file_metadata/http_spec.rb +27 -0
- data/spec/unit/indirector/indirection_spec.rb +8 -12
- data/spec/unit/indirector/json_spec.rb +8 -8
- data/spec/unit/indirector/key/file_spec.rb +0 -1
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/json_spec.rb +33 -0
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
- data/spec/unit/indirector/report/yaml_spec.rb +72 -8
- data/spec/unit/indirector/request_spec.rb +5 -5
- data/spec/unit/indirector/rest_spec.rb +1 -1
- data/spec/unit/indirector/status/rest_spec.rb +1 -1
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/authconfig_spec.rb +0 -3
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -10
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/connection_spec.rb +42 -32
- data/spec/unit/network/http/handler_spec.rb +0 -5
- data/spec/unit/node/environment_spec.rb +18 -1
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +3 -19
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/resource_spec.rb +14 -8
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/parser/templatewrapper_spec.rb +4 -3
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- data/spec/unit/property_spec.rb +1 -0
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/nameservice_spec.rb +66 -65
- data/spec/unit/provider/package/apt_spec.rb +76 -3
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/base_spec.rb +6 -5
- data/spec/unit/provider/package/dpkg_spec.rb +22 -7
- data/spec/unit/provider/package/openbsd_spec.rb +2 -0
- data/spec/unit/provider/package/pacman_spec.rb +18 -12
- data/spec/unit/provider/package/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/pip_spec.rb +6 -11
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
- data/spec/unit/provider/package/yum_spec.rb +31 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/bsd_spec.rb +5 -1
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +3 -5
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +4 -5
- data/spec/unit/provider/service/init_spec.rb +45 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +2 -1
- data/spec/unit/provider/service/smf_spec.rb +1 -1
- data/spec/unit/provider/service/src_spec.rb +3 -5
- data/spec/unit/provider/service/systemd_spec.rb +3 -6
- data/spec/unit/provider/service/upstart_spec.rb +4 -5
- data/spec/unit/provider/service/windows_spec.rb +50 -14
- data/spec/unit/provider/user/aix_spec.rb +5 -0
- data/spec/unit/provider/user/hpux_spec.rb +1 -1
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/pw_spec.rb +2 -0
- data/spec/unit/provider/user/useradd_spec.rb +23 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/provider_spec.rb +8 -10
- data/spec/unit/puppet_pal_2pec.rb +40 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource/capability_finder_spec.rb +6 -1
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +14 -13
- data/spec/unit/rest/route_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +576 -239
- data/spec/unit/ssl/base_spec.rb +0 -1
- data/spec/unit/ssl/host_spec.rb +0 -5
- data/spec/unit/ssl/ssl_provider_spec.rb +82 -50
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
- data/spec/unit/transaction/event_manager_spec.rb +14 -11
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +3 -1
- data/spec/unit/transaction_spec.rb +13 -4
- data/spec/unit/type/file/content_spec.rb +0 -1
- data/spec/unit/type/file/selinux_spec.rb +0 -2
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/file_spec.rb +122 -102
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/group_spec.rb +13 -6
- data/spec/unit/type/resources_spec.rb +7 -7
- data/spec/unit/type/service_spec.rb +210 -1
- data/spec/unit/type/tidy_spec.rb +0 -1
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +52 -2
- data/spec/unit/util/at_fork_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +5 -1
- data/spec/unit/util/backups_spec.rb +1 -2
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/execution_spec.rb +15 -11
- data/spec/unit/util/inifile_spec.rb +6 -14
- data/spec/unit/util/log_spec.rb +8 -7
- data/spec/unit/util/logging_spec.rb +3 -3
- data/spec/unit/util/posix_spec.rb +363 -15
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +6 -6
- data/spec/unit/util/selinux_spec.rb +76 -52
- data/spec/unit/util/storage_spec.rb +3 -1
- data/spec/unit/util/suidmanager_spec.rb +44 -41
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util_spec.rb +16 -9
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- metadata +52 -53
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -51
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/integration/test/test_helper_spec.rb +0 -31
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/face/module_spec.rb +0 -3
- data/spec/unit/man_spec.rb +0 -31
@@ -131,8 +131,54 @@ module Puppet::ModuleTool
|
|
131
131
|
begin
|
132
132
|
Puppet.info _("Resolving dependencies ...")
|
133
133
|
releases = SemanticPuppet::Dependency.resolve(graph)
|
134
|
-
rescue SemanticPuppet::Dependency::UnsatisfiableGraph
|
135
|
-
|
134
|
+
rescue SemanticPuppet::Dependency::UnsatisfiableGraph => e
|
135
|
+
unsatisfied = nil
|
136
|
+
|
137
|
+
if e.respond_to?(:unsatisfied)
|
138
|
+
constraints = {}
|
139
|
+
# If the module we're installing satisfies all its
|
140
|
+
# dependencies, but would break an already installed
|
141
|
+
# module that depends on it, show what would break.
|
142
|
+
if name == e.unsatisfied
|
143
|
+
graph.constraints[name].each do |mod, range, _|
|
144
|
+
next unless mod.split.include?('constraint')
|
145
|
+
|
146
|
+
# If the user requested a specific version or range,
|
147
|
+
# only show the modules with non-intersecting ranges
|
148
|
+
if options[:version]
|
149
|
+
requested_range = SemanticPuppet::VersionRange.parse(options[:version])
|
150
|
+
constraint_range = SemanticPuppet::VersionRange.parse(range)
|
151
|
+
|
152
|
+
if requested_range.intersection(constraint_range) == SemanticPuppet::VersionRange::EMPTY_RANGE
|
153
|
+
constraints[mod.split.first] = range
|
154
|
+
end
|
155
|
+
else
|
156
|
+
constraints[mod.split.first] = range
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
# If the module fails to satisfy one of its
|
161
|
+
# dependencies, show the unsatisfiable module
|
162
|
+
else
|
163
|
+
unsatisfied_range = graph.dependencies[name].max.constraints[e.unsatisfied].first[1]
|
164
|
+
constraints[e.unsatisfied] = unsatisfied_range
|
165
|
+
end
|
166
|
+
|
167
|
+
installed_module = @environment.module_by_forge_name(e.unsatisfied.tr('-', '/'))
|
168
|
+
current_version = installed_module.version if installed_module
|
169
|
+
|
170
|
+
unsatisfied = {
|
171
|
+
:name => e.unsatisfied,
|
172
|
+
:constraints => constraints,
|
173
|
+
:current_version => current_version
|
174
|
+
}
|
175
|
+
end
|
176
|
+
|
177
|
+
raise NoVersionsSatisfyError, results.merge(
|
178
|
+
:requested_name => name,
|
179
|
+
:requested_version => options[:version] || graph.dependencies[name].max.version.to_s,
|
180
|
+
:unsatisfied => unsatisfied
|
181
|
+
)
|
136
182
|
end
|
137
183
|
|
138
184
|
unless forced?
|
@@ -7,6 +7,7 @@ module Puppet::ModuleTool::Errors
|
|
7
7
|
@installed_version = options[:installed_version]
|
8
8
|
@conditions = options[:conditions]
|
9
9
|
@action = options[:action]
|
10
|
+
@unsatisfied = options[:unsatisfied]
|
10
11
|
|
11
12
|
super _("Could not %{action} '%{module_name}' (%{version}); no version satisfies all dependencies") % { action: @action, module_name: @requested_name, version: vstring }
|
12
13
|
end
|
@@ -14,9 +15,23 @@ module Puppet::ModuleTool::Errors
|
|
14
15
|
def multiline
|
15
16
|
message = []
|
16
17
|
message << _("Could not %{action} module '%{module_name}' (%{version})") % { action: @action, module_name: @requested_name, version: vstring }
|
17
|
-
|
18
|
+
|
19
|
+
if @unsatisfied
|
20
|
+
message << _(" The requested version cannot satisfy one or more of the following installed modules:")
|
21
|
+
if @unsatisfied[:current_version]
|
22
|
+
message << _(" %{name}, installed: %{current_version}, expected: %{constraints}") % { name: @unsatisfied[:name], current_version: @unsatisfied[:current_version], constraints: @unsatisfied[:constraints][@unsatisfied[:name]] }
|
23
|
+
else
|
24
|
+
@unsatisfied[:constraints].each do |mod, range|
|
25
|
+
message << _(" %{mod}, expects '%{name}': %{range}") % { mod: mod, name: @requested_name, range: range }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
message << _("")
|
29
|
+
else
|
30
|
+
message << _(" The requested version cannot satisfy all dependencies")
|
31
|
+
end
|
32
|
+
|
18
33
|
#TRANSLATORS `puppet module %{action} --ignore-dependencies` is a command line and should not be translated
|
19
|
-
message << _("
|
34
|
+
message << _(" Use `puppet module %{action} '%{module_name}' --ignore-dependencies` to %{action} only this module") % { action: @action, module_name: @requested_name }
|
20
35
|
message.join("\n")
|
21
36
|
end
|
22
37
|
end
|
@@ -49,7 +49,7 @@ module Puppet::Network::FormatSupport
|
|
49
49
|
|
50
50
|
result = put_preferred_format_first(result).map(&:name)
|
51
51
|
|
52
|
-
Puppet.debug "#{friendly_name} supports formats: #{result.join(' ')}"
|
52
|
+
Puppet.debug { "#{friendly_name} supports formats: #{result.join(' ')}" }
|
53
53
|
|
54
54
|
result
|
55
55
|
end
|
@@ -81,7 +81,7 @@ module Puppet::Network::FormatSupport
|
|
81
81
|
}
|
82
82
|
|
83
83
|
if preferred.empty?
|
84
|
-
Puppet.debug "Value of 'preferred_serialization_format' (#{preferred_format}) is invalid for #{friendly_name}, using default (#{list.first.name})"
|
84
|
+
Puppet.debug { "Value of 'preferred_serialization_format' (#{preferred_format}) is invalid for #{friendly_name}, using default (#{list.first.name})" }
|
85
85
|
else
|
86
86
|
list = preferred + list.reject { |format|
|
87
87
|
format.mime.end_with?(preferred_format)
|
@@ -255,7 +255,8 @@ Puppet::Network::FormatHandler.create_serialized_formats(:rich_data_msgpack, mim
|
|
255
255
|
end
|
256
256
|
|
257
257
|
def supported?(klass)
|
258
|
-
|
258
|
+
suitable? &&
|
259
|
+
klass == Puppet::Resource::Catalog &&
|
259
260
|
Puppet.lookup(:current_environment).rich_data?
|
260
261
|
end
|
261
262
|
end
|
@@ -218,7 +218,7 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
|
|
218
218
|
return formatter if formatter
|
219
219
|
|
220
220
|
raise Puppet::Network::HTTP::Error::HTTPNotAcceptableError.new(
|
221
|
-
_("No supported formats are acceptable (Accept: %{accepted_formats})") % { accepted_formats: formats },
|
221
|
+
_("No supported formats are acceptable (Accept: %{accepted_formats})") % { accepted_formats: formats.map(&:mime).join(', ') },
|
222
222
|
Puppet::Network::HTTP::Issues::UNSUPPORTED_FORMAT)
|
223
223
|
end
|
224
224
|
|
@@ -1,8 +1,11 @@
|
|
1
1
|
require 'puppet/util/json'
|
2
2
|
require 'puppet/parser/environment_compiler'
|
3
3
|
|
4
|
+
# @deprecated application orchestration will be removed in puppet 7
|
4
5
|
class Puppet::Network::HTTP::API::Master::V3::Environment
|
5
6
|
def call(request, response)
|
7
|
+
Puppet.deprecation_warning("Application orchestration is deprecated. See https://puppet.com/docs/puppet/5.5/deprecated_language.html")
|
8
|
+
|
6
9
|
env_name = request.routing_path.split('/').last
|
7
10
|
env = Puppet.lookup(:environments).get(env_name)
|
8
11
|
code_id = request.params[:code_id]
|
@@ -149,12 +149,14 @@ class Puppet::Network::HTTP::ConnectionAdapter < Puppet::Network::HTTP::Connecti
|
|
149
149
|
# though clients are only supposed to send them to proxies, so the proxy knows
|
150
150
|
# what upstream server to CONNECT to. This method creates a URL using the
|
151
151
|
# scheme/host/port that the connection was created with, and appends the path
|
152
|
-
#
|
152
|
+
# and query portions of the absolute-form. The resulting request will use "origin-form"
|
153
153
|
# as it should have done all along.
|
154
|
-
|
155
|
-
URI("#{@site.addr}/#{normalize_path(
|
154
|
+
abs_form = URI(path)
|
155
|
+
url = URI("#{@site.addr}/#{normalize_path(abs_form.path)}")
|
156
|
+
url.query = abs_form.query if abs_form.query
|
157
|
+
url
|
156
158
|
else
|
157
|
-
URI("#{@site.addr}/#{
|
159
|
+
URI("#{@site.addr}/#{normalize_path(path)}")
|
158
160
|
end
|
159
161
|
end
|
160
162
|
|
@@ -67,11 +67,11 @@ class Puppet::Network::HTTP::Route
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def matches?(request)
|
70
|
-
Puppet.debug
|
70
|
+
Puppet.debug { "Evaluating match for #{self.inspect}" }
|
71
71
|
if match(request.routing_path)
|
72
72
|
return true
|
73
73
|
else
|
74
|
-
Puppet.debug
|
74
|
+
Puppet.debug { "Did not match path (#{request.routing_path.inspect})" }
|
75
75
|
end
|
76
76
|
return false
|
77
77
|
end
|
@@ -266,7 +266,7 @@ class Puppet::Node::Environment
|
|
266
266
|
# @param name [String] The module name
|
267
267
|
# @return [Puppet::Module, nil] The module if found, else nil
|
268
268
|
def module(name)
|
269
|
-
|
269
|
+
modules_by_name[name]
|
270
270
|
end
|
271
271
|
|
272
272
|
# Locate a module instance by the full forge name (EG authorname/module)
|
@@ -298,7 +298,7 @@ class Puppet::Node::Environment
|
|
298
298
|
if @modules.nil?
|
299
299
|
module_references = []
|
300
300
|
project = Puppet.lookup(:bolt_project) { nil }
|
301
|
-
seen_modules = if project
|
301
|
+
seen_modules = if project && project.load_as_module?
|
302
302
|
module_references << project.to_h
|
303
303
|
{ project.name => true }
|
304
304
|
else
|
@@ -327,6 +327,12 @@ class Puppet::Node::Environment
|
|
327
327
|
@modules
|
328
328
|
end
|
329
329
|
|
330
|
+
# @api private
|
331
|
+
def modules_by_name
|
332
|
+
@modules_by_name ||= Hash[modules.map { |mod| [mod.name, mod] }]
|
333
|
+
end
|
334
|
+
private :modules_by_name
|
335
|
+
|
330
336
|
# Generate a warning if the given directory in a module path entry is named `lib`.
|
331
337
|
#
|
332
338
|
# @api private
|
@@ -335,9 +341,10 @@ class Puppet::Node::Environment
|
|
335
341
|
# @param name [String] The directory name
|
336
342
|
def warn_about_mistaken_path(path, name)
|
337
343
|
if name == "lib"
|
338
|
-
Puppet.debug
|
339
|
-
|
340
|
-
|
344
|
+
Puppet.debug {
|
345
|
+
"Warning: Found directory named 'lib' in module path ('#{path}/lib'); unless you \
|
346
|
+
are expecting to load a module named 'lib', your module path may be set incorrectly."
|
347
|
+
}
|
341
348
|
end
|
342
349
|
end
|
343
350
|
|
data/lib/puppet/node/facts.rb
CHANGED
@@ -116,8 +116,25 @@ class Puppet::Node::Facts
|
|
116
116
|
@timestamp = Time.now
|
117
117
|
end
|
118
118
|
|
119
|
+
def to_yaml
|
120
|
+
facts_to_display = Psych.parse_stream(YAML.dump(self))
|
121
|
+
quote_special_strings(facts_to_display)
|
122
|
+
end
|
123
|
+
|
119
124
|
private
|
120
125
|
|
126
|
+
def quote_special_strings(fact_hash)
|
127
|
+
fact_hash.grep(Psych::Nodes::Scalar).each do |node|
|
128
|
+
next unless node.value =~ /:/
|
129
|
+
|
130
|
+
node.plain = false
|
131
|
+
node.quoted = true
|
132
|
+
node.style = Psych::Nodes::Scalar::DOUBLE_QUOTED
|
133
|
+
end
|
134
|
+
|
135
|
+
fact_hash.yaml
|
136
|
+
end
|
137
|
+
|
121
138
|
def sanitize_fact(fact)
|
122
139
|
if fact.is_a? Hash then
|
123
140
|
ret = {}
|
data/lib/puppet/pal/pal_impl.rb
CHANGED
@@ -49,6 +49,7 @@ module Pal
|
|
49
49
|
# If given at the environment level, the facts given here are merged with higher priority.
|
50
50
|
# @param variables [Hash] optional map of fully qualified variable name to value. If given at the environment level, the variables
|
51
51
|
# given here are merged with higher priority.
|
52
|
+
# @param set_local_facts [Boolean] when true, the $facts, $server_facts, and $trusted variables are set for the scope.
|
52
53
|
# @param block [Proc] the block performing operations on compiler
|
53
54
|
# @return [Object] what the block returns
|
54
55
|
# @yieldparam [Puppet::Pal::ScriptCompiler] compiler, a ScriptCompiler to perform operations on.
|
@@ -57,8 +58,9 @@ module Pal
|
|
57
58
|
configured_by_env: false,
|
58
59
|
manifest_file: nil,
|
59
60
|
code_string: nil,
|
60
|
-
facts:
|
61
|
-
variables:
|
61
|
+
facts: {},
|
62
|
+
variables: {},
|
63
|
+
set_local_facts: true,
|
62
64
|
&block
|
63
65
|
)
|
64
66
|
# TRANSLATORS: do not translate variable name strings in these assertions
|
@@ -91,7 +93,14 @@ module Pal
|
|
91
93
|
|
92
94
|
# If manifest_file is nil, the #main method will use the env configured manifest
|
93
95
|
# to do things in the block while a Script Compiler is in effect
|
94
|
-
main(
|
96
|
+
main(
|
97
|
+
manifest: manifest_file,
|
98
|
+
facts: facts,
|
99
|
+
variables: variables,
|
100
|
+
internal_compiler_class: :script,
|
101
|
+
set_local_facts: set_local_facts,
|
102
|
+
&block
|
103
|
+
)
|
95
104
|
ensure
|
96
105
|
Puppet[:tasks] = previous_tasks_value
|
97
106
|
Puppet[:code] = previous_code_value
|
@@ -155,8 +164,9 @@ module Pal
|
|
155
164
|
configured_by_env: false,
|
156
165
|
manifest_file: nil,
|
157
166
|
code_string: nil,
|
158
|
-
facts:
|
159
|
-
variables:
|
167
|
+
facts: {},
|
168
|
+
variables: {},
|
169
|
+
target_variables: {},
|
160
170
|
&block
|
161
171
|
)
|
162
172
|
# TRANSLATORS: do not translate variable name strings in these assertions
|
@@ -191,7 +201,15 @@ module Pal
|
|
191
201
|
|
192
202
|
# If manifest_file is nil, the #main method will use the env configured manifest
|
193
203
|
# to do things in the block while a Script Compiler is in effect
|
194
|
-
main(
|
204
|
+
main(
|
205
|
+
manifest: manifest_file,
|
206
|
+
facts: facts,
|
207
|
+
variables: variables,
|
208
|
+
target_variables: target_variables,
|
209
|
+
internal_compiler_class: :catalog,
|
210
|
+
set_local_facts: false,
|
211
|
+
&block
|
212
|
+
)
|
195
213
|
ensure
|
196
214
|
# Clean up after ourselves
|
197
215
|
Puppet[:tasks] = previous_tasks_value
|
@@ -379,7 +397,14 @@ module Pal
|
|
379
397
|
# Picks up information from the puppet context and configures a script compiler which is given to
|
380
398
|
# the provided block
|
381
399
|
#
|
382
|
-
def self.main(
|
400
|
+
def self.main(
|
401
|
+
manifest: nil,
|
402
|
+
facts: {},
|
403
|
+
variables: {},
|
404
|
+
target_variables: {},
|
405
|
+
internal_compiler_class: nil,
|
406
|
+
set_local_facts: true
|
407
|
+
)
|
383
408
|
# Configure the load path
|
384
409
|
env = Puppet.lookup(:pal_env)
|
385
410
|
env.each_plugin_directory do |dir|
|
@@ -395,14 +420,11 @@ module Pal
|
|
395
420
|
pal_variables = Puppet.lookup(:pal_variables)
|
396
421
|
|
397
422
|
overrides = {}
|
423
|
+
|
398
424
|
unless facts.nil? || facts.empty?
|
399
425
|
pal_facts = pal_facts.merge(facts)
|
400
426
|
overrides[:pal_facts] = pal_facts
|
401
427
|
end
|
402
|
-
unless variables.nil? || variables.empty?
|
403
|
-
pal_variables = pal_variables.merge(variables)
|
404
|
-
overrides[:pal_variables] = pal_variables
|
405
|
-
end
|
406
428
|
|
407
429
|
prepare_node_facts(node, pal_facts)
|
408
430
|
|
@@ -434,15 +456,38 @@ module Pal
|
|
434
456
|
overrides[:pal_catalog_compiler] = overrides[:pal_compiler] = pal_compiler
|
435
457
|
end
|
436
458
|
|
459
|
+
# When scripting the trusted data are always local; default is to set them anyway
|
460
|
+
# When compiling for a catalog, the catalog compiler does this
|
461
|
+
if set_local_facts
|
462
|
+
compiler.topscope.set_trusted(node.trusted_data)
|
463
|
+
|
464
|
+
# Server facts are always about the local node's version etc.
|
465
|
+
compiler.topscope.set_server_facts(node.server_facts)
|
466
|
+
|
467
|
+
# Set $facts for the node running the script
|
468
|
+
facts_hash = node.facts.nil? ? {} : node.facts.values
|
469
|
+
compiler.topscope.set_facts(facts_hash)
|
470
|
+
|
471
|
+
# create the $settings:: variables
|
472
|
+
compiler.topscope.merge_settings(node.environment.name, false)
|
473
|
+
end
|
474
|
+
|
437
475
|
# Make compiler available to Puppet#lookup and injection in functions
|
438
476
|
# TODO: The compiler instances should be available under non PAL use as well!
|
439
477
|
# TRANSLATORS: Do not translate, symbolic name
|
440
478
|
Puppet.override(overrides, "PAL::with_#{internal_compiler_class}_compiler") do
|
441
479
|
compiler.compile do | compiler_yield |
|
442
|
-
# In case the
|
480
|
+
# In case the variables passed to the compiler are PCore types defined in modules, they
|
443
481
|
# need to be deserialized and added from within the this scope, so that loaders are
|
444
482
|
# available during deserizlization.
|
445
|
-
|
483
|
+
pal_variables = Puppet::Pops::Serialization::FromDataConverter.convert(pal_variables)
|
484
|
+
variables = Puppet::Pops::Serialization::FromDataConverter.convert(variables)
|
485
|
+
|
486
|
+
# Merge together target variables and plan variables. This will also shadow any
|
487
|
+
# collisions with facts and emit a warning.
|
488
|
+
topscope_vars = pal_variables.merge(merge_vars(target_variables, variables, node.facts.values))
|
489
|
+
|
490
|
+
add_variables(compiler.topscope, topscope_vars)
|
446
491
|
# wrap the internal compiler to prevent it from leaking in the PAL API
|
447
492
|
if block_given?
|
448
493
|
yield(pal_compiler)
|
@@ -462,6 +507,38 @@ module Pal
|
|
462
507
|
end
|
463
508
|
private_class_method :main
|
464
509
|
|
510
|
+
# Warn and remove variables that will be shadowed by facts of the same
|
511
|
+
# name, which are set in scope earlier.
|
512
|
+
def self.merge_vars(target_vars, vars, facts)
|
513
|
+
# First, shadow plan and target variables by facts of the same name
|
514
|
+
vars = shadow_vars(facts || {}, vars, 'fact', 'plan variable')
|
515
|
+
target_vars = shadow_vars(facts || {}, target_vars, 'fact', 'target variable')
|
516
|
+
# Then, shadow target variables by plan variables of the same name
|
517
|
+
target_vars = shadow_vars(vars, target_vars, 'plan variable', 'target variable')
|
518
|
+
|
519
|
+
target_vars.merge(vars)
|
520
|
+
end
|
521
|
+
private_class_method :merge_vars
|
522
|
+
|
523
|
+
def self.shadow_vars(vars, other_vars, vars_type, other_vars_type)
|
524
|
+
collisions, valid = other_vars.partition do |k, _|
|
525
|
+
vars.include?(k)
|
526
|
+
end
|
527
|
+
|
528
|
+
if collisions.any?
|
529
|
+
names = collisions.map { |k, _| "$#{k}" }.join(', ')
|
530
|
+
plural = collisions.length == 1 ? '' : 's'
|
531
|
+
|
532
|
+
Puppet.warning(
|
533
|
+
"#{other_vars_type.capitalize}#{plural} #{names} will be overridden by "\
|
534
|
+
"#{vars_type}#{plural} of the same name in the apply block"
|
535
|
+
)
|
536
|
+
end
|
537
|
+
|
538
|
+
valid.to_h
|
539
|
+
end
|
540
|
+
private_class_method :shadow_vars
|
541
|
+
|
465
542
|
def self.create_internal_compiler(compiler_class_reference, node)
|
466
543
|
case compiler_class_reference
|
467
544
|
when :script
|
data/lib/puppet/parameter.rb
CHANGED
@@ -429,7 +429,7 @@ class Puppet::Parameter
|
|
429
429
|
begin
|
430
430
|
ret = unsafe_munge(value)
|
431
431
|
rescue Puppet::Error => detail
|
432
|
-
Puppet.debug "Reraising #{detail}"
|
432
|
+
Puppet.debug { "Reraising #{detail}" }
|
433
433
|
raise
|
434
434
|
rescue => detail
|
435
435
|
raise Puppet::DevError, _("Munging failed for value %{value} in class %{class_name}: %{detail}") % { value: value.inspect, class_name: self.name, detail: detail }, detail.backtrace
|
@@ -17,17 +17,17 @@ class Puppet::Parser::AST::Leaf < Puppet::Parser::AST
|
|
17
17
|
@value.to_s unless @value.nil?
|
18
18
|
end
|
19
19
|
|
20
|
-
def initialize(value: nil,
|
20
|
+
def initialize(value: nil, file: nil, line: nil, pos: nil)
|
21
21
|
@value = value
|
22
|
-
super(
|
22
|
+
super(file: file, line: line, pos: pos)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
# Host names, either fully qualified or just the short name, or even a regex
|
27
27
|
#
|
28
28
|
class Puppet::Parser::AST::HostName < Puppet::Parser::AST::Leaf
|
29
|
-
def initialize(
|
30
|
-
super
|
29
|
+
def initialize(value: nil, file: nil, line: nil, pos: nil)
|
30
|
+
super(value: value, file: file, line: line, pos: pos)
|
31
31
|
|
32
32
|
# Note that this is an AST::Regex, not a Regexp
|
33
33
|
unless @value.is_a?(Regex)
|
@@ -50,8 +50,9 @@ class Puppet::Parser::AST::HostName < Puppet::Parser::AST::Leaf
|
|
50
50
|
end
|
51
51
|
|
52
52
|
class Puppet::Parser::AST::Regex < Puppet::Parser::AST::Leaf
|
53
|
-
def initialize(
|
54
|
-
super
|
53
|
+
def initialize(value: nil, file: nil, line: nil, pos: nil)
|
54
|
+
super(value: value, file: file, line: line, pos: pos)
|
55
|
+
|
55
56
|
# transform value from hash options unless it is already a regular expression
|
56
57
|
@value = Regexp.new(@value) unless @value.is_a?(Regexp)
|
57
58
|
end
|