puppet 6.16.0-x86-mingw32 → 6.20.0-x86-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
@@ -0,0 +1,37 @@
|
|
1
|
+
class Puppet::Settings::AliasSetting
|
2
|
+
attr_reader :name, :alias_name
|
3
|
+
|
4
|
+
def initialize(args = {})
|
5
|
+
@name = args[:name]
|
6
|
+
@alias_name = args[:alias_for]
|
7
|
+
@alias_for = Puppet.settings.setting(alias_name)
|
8
|
+
end
|
9
|
+
|
10
|
+
def optparse_args
|
11
|
+
args = @alias_for.optparse_args
|
12
|
+
args[0].gsub!(alias_name.to_s, name.to_s)
|
13
|
+
args
|
14
|
+
end
|
15
|
+
|
16
|
+
def getopt_args
|
17
|
+
args = @alias_for.getopt_args
|
18
|
+
args[0].gsub!(alias_name.to_s, name.to_s)
|
19
|
+
args
|
20
|
+
end
|
21
|
+
|
22
|
+
def type
|
23
|
+
:alias
|
24
|
+
end
|
25
|
+
|
26
|
+
def method_missing(method, *args)
|
27
|
+
begin
|
28
|
+
alias_for.send(method, *args)
|
29
|
+
rescue => e
|
30
|
+
Puppet.log_exception(self.class, e.message)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
attr_reader :alias_for
|
37
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'set'
|
1
2
|
require 'puppet/settings/errors'
|
2
3
|
|
3
4
|
# The base setting type
|
@@ -5,27 +6,50 @@ class Puppet::Settings::BaseSetting
|
|
5
6
|
attr_accessor :name, :desc, :section, :default, :call_hook
|
6
7
|
attr_reader :short, :deprecated
|
7
8
|
|
9
|
+
# Hooks are called during different parts of the settings lifecycle:
|
10
|
+
#
|
11
|
+
# * :on_write_only - This is the default hook type. The hook will be called
|
12
|
+
# if its value is set in `main` or programmatically. If its value is set in
|
13
|
+
# a section that doesn't match the application's run mode, it will be
|
14
|
+
# ignored entirely. If the section does match the run mode, the value will
|
15
|
+
# be used, but the hook will not be called!
|
16
|
+
#
|
17
|
+
# * :on_define_and_write - The hook behaves the same as above, except it is
|
18
|
+
# also called immediately when the setting is defined in
|
19
|
+
# {Puppet::Settings.define_settings}. In that case, the hook receives the
|
20
|
+
# default value as specified.
|
21
|
+
#
|
22
|
+
# * :on_initialize_and_write - The hook will be called if the value is set in
|
23
|
+
# `main`, the section that matches the run mode, or programmatically.
|
24
|
+
#
|
25
|
+
HOOK_TYPES = Set.new([:on_define_and_write, :on_initialize_and_write, :on_write_only]).freeze
|
26
|
+
|
8
27
|
def self.available_call_hook_values
|
9
|
-
|
28
|
+
HOOK_TYPES.to_a
|
10
29
|
end
|
11
30
|
|
31
|
+
# Registers a hook to be called later based on the type of hook specified in `value`.
|
32
|
+
#
|
33
|
+
# @param value [Symbol] One of {HOOK_TYPES}
|
12
34
|
def call_hook=(value)
|
13
35
|
if value.nil?
|
14
36
|
#TRANSLATORS ':%{name}', ':call_hook', and ':on_write_only' should not be translated
|
15
37
|
Puppet.warning _("Setting :%{name} :call_hook is nil, defaulting to :on_write_only") % { name: name }
|
16
38
|
value = :on_write_only
|
17
39
|
end
|
18
|
-
unless
|
40
|
+
unless HOOK_TYPES.include?(value)
|
19
41
|
#TRANSLATORS 'call_hook' is a Puppet option name and should not be translated
|
20
42
|
raise ArgumentError, _("Invalid option %{value} for call_hook") % { value: value }
|
21
43
|
end
|
22
44
|
@call_hook = value
|
23
45
|
end
|
24
46
|
|
47
|
+
# @see {HOOK_TYPES}
|
25
48
|
def call_hook_on_define?
|
26
49
|
call_hook == :on_define_and_write
|
27
50
|
end
|
28
51
|
|
52
|
+
# @see {HOOK_TYPES}
|
29
53
|
def call_hook_on_initialize?
|
30
54
|
call_hook == :on_initialize_and_write
|
31
55
|
end
|
@@ -22,9 +22,9 @@ module Puppet::SSL
|
|
22
22
|
# This is an idiom to initialize a Struct from keyword
|
23
23
|
# arguments. Ruby 2.5 introduced `keyword_init: true` for
|
24
24
|
# that purpose, but we need to support older versions.
|
25
|
-
def initialize(
|
25
|
+
def initialize(kwargs = {})
|
26
26
|
super({})
|
27
|
-
DEFAULTS.merge(kwargs).each { |k,v| self[k] = v }
|
27
|
+
DEFAULTS.merge(**kwargs).each { |k,v| self[k] = v }
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -46,13 +46,32 @@ class Puppet::SSL::SSLProvider
|
|
46
46
|
# perform revocation checking.
|
47
47
|
#
|
48
48
|
# @param cacerts [Array<OpenSSL::X509::Certificate>] Array of trusted CA certs
|
49
|
+
# @param path [String, nil] A file containing additional trusted CA certs.
|
49
50
|
# @return [Puppet::SSL::SSLContext] A context to use to create connections
|
50
51
|
# @raise (see #create_context)
|
51
52
|
# @api private
|
52
|
-
def create_system_context(cacerts:)
|
53
|
+
def create_system_context(cacerts:, path: Puppet[:ssl_trust_store])
|
53
54
|
store = create_x509_store(cacerts, [], false)
|
54
55
|
store.set_default_paths
|
55
56
|
|
57
|
+
if path
|
58
|
+
stat = Puppet::FileSystem.stat(path)
|
59
|
+
if stat
|
60
|
+
if stat.ftype == 'file'
|
61
|
+
# don't add empty files as ruby/openssl will raise
|
62
|
+
if stat.size > 0
|
63
|
+
begin
|
64
|
+
store.add_file(path)
|
65
|
+
rescue => e
|
66
|
+
Puppet.err(_("Failed to add '%{path}' as a trusted CA file: %{detail}" % { path: path, detail: e.message }, e))
|
67
|
+
end
|
68
|
+
end
|
69
|
+
else
|
70
|
+
Puppet.warning(_("The 'ssl_trust_store' setting does not refer to a file and will be ignored: '%{path}'" % { path: path }))
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
56
75
|
Puppet::SSL::SSLContext.new(store: store, cacerts: cacerts, crls: [], revocation: false).freeze
|
57
76
|
end
|
58
77
|
|
@@ -104,7 +104,7 @@ class Puppet::SSL::Validator::DefaultValidator #< class Puppet::SSL::Validator
|
|
104
104
|
crl = store_context.current_crl
|
105
105
|
if crl
|
106
106
|
if crl.last_update && crl.last_update < Time.now + FIVE_MINUTES_AS_SECONDS
|
107
|
-
Puppet.debug
|
107
|
+
Puppet.debug { "Ignoring CRL not yet valid, current time #{Time.now.utc}, CRL last updated #{crl.last_update.utc}" }
|
108
108
|
preverify_ok = true
|
109
109
|
else
|
110
110
|
@verify_errors << "#{error_string} for #{crl.issuer.to_utf8}"
|
@@ -68,7 +68,14 @@ module Puppet::Test
|
|
68
68
|
# any individual tests.
|
69
69
|
# @return nil
|
70
70
|
def self.before_all_tests()
|
71
|
-
#
|
71
|
+
# The process environment is a shared, persistent resource.
|
72
|
+
# Can't use Puppet.features.microsoft_windows? as it may be mocked out in a test. This can cause test recurring test failures
|
73
|
+
if (!!File::ALT_SEPARATOR)
|
74
|
+
mode = :windows
|
75
|
+
else
|
76
|
+
mode = :posix
|
77
|
+
end
|
78
|
+
$old_env = Puppet::Util.get_environment(mode)
|
72
79
|
end
|
73
80
|
|
74
81
|
# Call this method once, at the end of a test run, when no more tests
|
@@ -113,20 +120,14 @@ module Puppet::Test
|
|
113
120
|
indirections = Puppet::Indirector::Indirection.send(:class_variable_get, :@@indirections)
|
114
121
|
indirections.each do |indirector|
|
115
122
|
$saved_indirection_state[indirector.name] = {
|
116
|
-
|
117
|
-
|
123
|
+
:@terminus_class => indirector.instance_variable_get(:@terminus_class).value,
|
124
|
+
:@cache_class => indirector.instance_variable_get(:@cache_class).value,
|
125
|
+
# dup the termini hash so termini created and registered during
|
126
|
+
# the test aren't stored in our saved_indirection_state
|
127
|
+
:@termini => indirector.instance_variable_get(:@termini).dup
|
118
128
|
}
|
119
129
|
end
|
120
130
|
|
121
|
-
# The process environment is a shared, persistent resource.
|
122
|
-
# Can't use Puppet.features.microsoft_windows? as it may be mocked out in a test. This can cause test recurring test failures
|
123
|
-
if (!!File::ALT_SEPARATOR)
|
124
|
-
mode = :windows
|
125
|
-
else
|
126
|
-
mode = :posix
|
127
|
-
end
|
128
|
-
$old_env = Puppet::Util.get_environment(mode)
|
129
|
-
|
130
131
|
# So is the load_path
|
131
132
|
$old_load_path = $LOAD_PATH.dup
|
132
133
|
|
@@ -178,7 +179,11 @@ module Puppet::Test
|
|
178
179
|
indirections = Puppet::Indirector::Indirection.send(:class_variable_get, :@@indirections)
|
179
180
|
indirections.each do |indirector|
|
180
181
|
$saved_indirection_state.fetch(indirector.name, {}).each do |variable, value|
|
181
|
-
|
182
|
+
if variable == :@termini
|
183
|
+
indirector.instance_variable_set(variable, value)
|
184
|
+
else
|
185
|
+
indirector.instance_variable_get(variable).value = value
|
186
|
+
end
|
182
187
|
end
|
183
188
|
end
|
184
189
|
$saved_indirection_state = nil
|
data/lib/puppet/transaction.rb
CHANGED
@@ -202,7 +202,7 @@ class Puppet::Transaction
|
|
202
202
|
# mark the end of transaction evaluate.
|
203
203
|
report.transaction_completed = true
|
204
204
|
|
205
|
-
Puppet.debug "Finishing transaction #{object_id}"
|
205
|
+
Puppet.debug { "Finishing transaction #{object_id}" }
|
206
206
|
end
|
207
207
|
|
208
208
|
# Wraps application run state check to flag need to interrupt processing
|
@@ -373,7 +373,7 @@ class Puppet::Transaction
|
|
373
373
|
type_name = provider_class.resource_type.name
|
374
374
|
return if @prefetched_providers[type_name][provider_class.name] ||
|
375
375
|
@prefetch_failed_providers[type_name][provider_class.name]
|
376
|
-
Puppet.debug "Prefetching #{provider_class.name} resources for #{type_name}"
|
376
|
+
Puppet.debug { "Prefetching #{provider_class.name} resources for #{type_name}" }
|
377
377
|
begin
|
378
378
|
provider_class.prefetch(resources)
|
379
379
|
rescue LoadError, Puppet::MissingCommand => detail
|
@@ -62,7 +62,7 @@ class Puppet::Transaction::Persistence
|
|
62
62
|
result = nil
|
63
63
|
Puppet::Util.benchmark(:debug, _("Loaded transaction store file in %{seconds} seconds")) do
|
64
64
|
begin
|
65
|
-
result = Puppet::Util::Yaml.safe_load_file(filename, [Symbol])
|
65
|
+
result = Puppet::Util::Yaml.safe_load_file(filename, [Symbol, Time])
|
66
66
|
rescue Puppet::Util::Yaml::YamlLoadError => detail
|
67
67
|
Puppet.log_exception(detail, _("Transaction store file %{filename} is corrupt (%{detail}); replacing") % { filename: filename, detail: detail })
|
68
68
|
|
@@ -63,9 +63,11 @@ class Puppet::Transaction::Report
|
|
63
63
|
# or 'on_failure'
|
64
64
|
attr_accessor :cached_catalog_status
|
65
65
|
|
66
|
-
# Contains the name and port of the
|
66
|
+
# Contains the name and port of the server that was successfully contacted
|
67
67
|
# @return [String] a string of the format 'servername:port'
|
68
|
-
attr_accessor :
|
68
|
+
attr_accessor :server_used
|
69
|
+
alias :master_used :server_used
|
70
|
+
alias :master_used= :server_used=
|
69
71
|
|
70
72
|
# The host name for which the report is generated
|
71
73
|
# @return [String] the host name
|
@@ -122,7 +124,7 @@ class Puppet::Transaction::Report
|
|
122
124
|
|
123
125
|
# @!attribute [r] corrective_change
|
124
126
|
# @return [Boolean] true if the report contains any events and resources that had
|
125
|
-
# corrective changes.
|
127
|
+
# corrective changes, including noop corrective changes.
|
126
128
|
attr_reader :corrective_change
|
127
129
|
|
128
130
|
# @return [Boolean] true if one or more resources attempted to generate
|
@@ -224,7 +226,7 @@ class Puppet::Transaction::Report
|
|
224
226
|
@external_times ||= {}
|
225
227
|
@host = Puppet[:node_name_value]
|
226
228
|
@time = start_time
|
227
|
-
@report_format =
|
229
|
+
@report_format = 11
|
228
230
|
@puppet_version = Puppet.version
|
229
231
|
@configuration_version = configuration_version
|
230
232
|
@transaction_uuid = transaction_uuid
|
@@ -232,7 +234,7 @@ class Puppet::Transaction::Report
|
|
232
234
|
@job_id = job_id
|
233
235
|
@catalog_uuid = nil
|
234
236
|
@cached_catalog_status = nil
|
235
|
-
@
|
237
|
+
@server_used = nil
|
236
238
|
@environment = environment
|
237
239
|
@status = 'failed' # assume failed until the report is finalized
|
238
240
|
@noop = Puppet[:noop]
|
@@ -256,8 +258,10 @@ class Puppet::Transaction::Report
|
|
256
258
|
@time = data['time']
|
257
259
|
@corrective_change = data['corrective_change']
|
258
260
|
|
259
|
-
if data['
|
260
|
-
@
|
261
|
+
if data['server_used']
|
262
|
+
@server_used = data['server_used']
|
263
|
+
elsif data['master_used']
|
264
|
+
@server_used = data['master_used']
|
261
265
|
end
|
262
266
|
|
263
267
|
if data['catalog_uuid']
|
@@ -322,7 +326,7 @@ class Puppet::Transaction::Report
|
|
322
326
|
}
|
323
327
|
|
324
328
|
# The following is include only when set
|
325
|
-
hash['master_used'] = @
|
329
|
+
hash['master_used'] = hash['server_used'] = @server_used unless @server_used.nil?
|
326
330
|
hash['catalog_uuid'] = @catalog_uuid unless @catalog_uuid.nil?
|
327
331
|
hash['code_id'] = @code_id unless @code_id.nil?
|
328
332
|
hash['job_id'] = @job_id unless @job_id.nil?
|
@@ -3,11 +3,39 @@ module Puppet::TrustedExternal
|
|
3
3
|
def retrieve(certname)
|
4
4
|
command = Puppet[:trusted_external_command]
|
5
5
|
return nil unless command
|
6
|
+
Puppet.debug { _("Retrieving trusted external data from %{command}") % {command: command} }
|
7
|
+
setting_type = Puppet.settings.setting(:trusted_external_command).type
|
8
|
+
if setting_type == :file
|
9
|
+
return fetch_data(command, certname)
|
10
|
+
end
|
11
|
+
# command is a directory. Thus, data is a hash of <basename> => <data> for
|
12
|
+
# each executable file in command. For example, if the files 'servicenow.rb',
|
13
|
+
# 'unicorn.sh' are in command, then data is the following hash:
|
14
|
+
# { 'servicenow' => <servicenow.rb output>, 'unicorn' => <unicorn.sh output> }
|
15
|
+
data = {}
|
16
|
+
Puppet::FileSystem.children(command).each do |file|
|
17
|
+
abs_path = Puppet::FileSystem.expand_path(file)
|
18
|
+
executable_file = Puppet::FileSystem.file?(abs_path) && Puppet::FileSystem.executable?(abs_path)
|
19
|
+
unless executable_file
|
20
|
+
Puppet.debug { _("Skipping non-executable file %{file}") % { file: abs_path } }
|
21
|
+
next
|
22
|
+
end
|
23
|
+
basename = file.basename(file.extname).to_s
|
24
|
+
unless data[basename].nil?
|
25
|
+
raise Puppet::Error, _("There is more than one '%{basename}' script in %{dir}") % { basename: basename, dir: command }
|
26
|
+
end
|
27
|
+
data[basename] = fetch_data(abs_path, certname)
|
28
|
+
end
|
29
|
+
data
|
30
|
+
end
|
31
|
+
module_function :retrieve
|
32
|
+
|
33
|
+
def fetch_data(command, certname)
|
6
34
|
result = Puppet::Util::Execution.execute([command, certname], {
|
7
35
|
:combine => false,
|
8
36
|
:failonfail => true,
|
9
37
|
})
|
10
38
|
JSON.parse(result)
|
11
39
|
end
|
12
|
-
module_function :
|
40
|
+
module_function :fetch_data
|
13
41
|
end
|
data/lib/puppet/type.rb
CHANGED
@@ -116,8 +116,10 @@ class Type
|
|
116
116
|
|
117
117
|
# Allow declaring that a type is actually a capability
|
118
118
|
class << self
|
119
|
+
# @deprecated application orchestration will be removed in puppet 7
|
119
120
|
attr_accessor :is_capability
|
120
121
|
|
122
|
+
# @deprecated application orchestration will be removed in puppet 7
|
121
123
|
def is_capability?
|
122
124
|
c = is_capability
|
123
125
|
c.nil? ? false : c
|
@@ -129,6 +131,8 @@ class Type
|
|
129
131
|
# represent application instances, this implementation always returns
|
130
132
|
# +false+. Having this method though makes code checking whether a
|
131
133
|
# resource is an application instance simpler
|
134
|
+
#
|
135
|
+
# @deprecated application orchestration will be removed in puppet 7
|
132
136
|
def self.application?
|
133
137
|
false
|
134
138
|
end
|
@@ -749,7 +753,7 @@ class Type
|
|
749
753
|
# @param options [Hash] options merged with a fixed set of options defined by this method, passed on to {Puppet::Transaction::Event}.
|
750
754
|
# @return [Puppet::Transaction::Event] the created event
|
751
755
|
def event(options = {})
|
752
|
-
Puppet::Transaction::Event.new({:resource => self, :file => file, :line => line, :tags => tags}.merge(options))
|
756
|
+
Puppet::Transaction::Event.new(**{:resource => self, :file => file, :line => line, :tags => tags}.merge(options))
|
753
757
|
end
|
754
758
|
|
755
759
|
# @return [Object, nil] Returns the 'should' (wanted state) value for a specified property, or nil if the
|
@@ -1205,15 +1209,17 @@ class Type
|
|
1205
1209
|
provider.instances.collect do |instance|
|
1206
1210
|
# We always want to use the "first" provider instance we find, unless the resource
|
1207
1211
|
# is already managed and has a different provider set
|
1208
|
-
|
1212
|
+
title = instance.respond_to?(:title) ? instance.title : instance.name
|
1213
|
+
other = provider_instances[title]
|
1209
1214
|
if other
|
1210
|
-
Puppet.debug
|
1211
|
-
[self.name.to_s.capitalize,
|
1215
|
+
Puppet.debug {
|
1216
|
+
"%s %s found in both %s and %s; skipping the %s version" % [self.name.to_s.capitalize, title, other.class.name, instance.class.name, instance.class.name]
|
1217
|
+
}
|
1212
1218
|
next
|
1213
1219
|
end
|
1214
|
-
provider_instances[
|
1220
|
+
provider_instances[title] = instance
|
1215
1221
|
|
1216
|
-
result = new(:name => instance.name, :provider => instance)
|
1222
|
+
result = new(:name => instance.name, :provider => instance, :title => title)
|
1217
1223
|
properties.each { |name| result.newattr(name) }
|
1218
1224
|
result
|
1219
1225
|
end
|
@@ -1714,6 +1720,7 @@ class Type
|
|
1714
1720
|
}
|
1715
1721
|
end
|
1716
1722
|
|
1723
|
+
# @deprecated application orchestration will be removed in puppet 7
|
1717
1724
|
newmetaparam(:export, :parent => RelationshipMetaparam, :attributes => {:direction => :out, :events => :NONE}) do
|
1718
1725
|
desc <<EOS
|
1719
1726
|
Export a capability resource.
|
@@ -1739,6 +1746,7 @@ web { server:
|
|
1739
1746
|
EOS
|
1740
1747
|
end
|
1741
1748
|
|
1749
|
+
# @deprecated application orchestration will be removed in puppet 7
|
1742
1750
|
newmetaparam(:consume, :parent => RelationshipMetaparam, :attributes => {:direction => :in, :events => :NONE}) do
|
1743
1751
|
desc <<EOS
|
1744
1752
|
Consume a capability resource.
|
@@ -1888,7 +1896,7 @@ end
|
|
1888
1896
|
name = name.intern
|
1889
1897
|
|
1890
1898
|
if unprovide(name)
|
1891
|
-
Puppet.debug "Reloading #{name} #{self.name} provider"
|
1899
|
+
Puppet.debug { "Reloading #{name} #{self.name} provider" }
|
1892
1900
|
end
|
1893
1901
|
|
1894
1902
|
pname = options[:parent]
|
data/lib/puppet/type/file.rb
CHANGED
@@ -116,9 +116,9 @@ Puppet::Type.newtype(:file) do
|
|
116
116
|
that sufficient disk space is available for the file backups. Generally, you
|
117
117
|
can implement this using one of the following two options:
|
118
118
|
- Use a `find` command and `crontab` entry to retain only the last X days
|
119
|
-
of file backups. For example
|
119
|
+
of file backups. For example:
|
120
120
|
|
121
|
-
```
|
121
|
+
```
|
122
122
|
find /opt/puppetlabs/server/data/puppetserver/bucket -type f -mtime +45 -atime +45 -print0 | xargs -0 rm
|
123
123
|
```
|
124
124
|
|
@@ -401,8 +401,12 @@ Puppet::Type.newtype(:file) do
|
|
401
401
|
end
|
402
402
|
end
|
403
403
|
|
404
|
-
|
405
|
-
|
404
|
+
# mutually exclusive ways to create files
|
405
|
+
CREATORS = [:content, :source, :target].freeze
|
406
|
+
|
407
|
+
# This is both "checksum types that can't be used with the content property"
|
408
|
+
# and "checksum types that are not digest based"
|
409
|
+
SOURCE_ONLY_CHECKSUMS = [:none, :ctime, :mtime].freeze
|
406
410
|
|
407
411
|
validate do
|
408
412
|
creator_count = 0
|
@@ -428,7 +432,7 @@ Puppet::Type.newtype(:file) do
|
|
428
432
|
@parameters[:content].value = @parameters[:checksum].sum(@parameters[:content].actual_content)
|
429
433
|
end
|
430
434
|
|
431
|
-
if self[:checksum] && self[:checksum_value] && !
|
435
|
+
if self[:checksum] && self[:checksum_value] && !valid_checksum?(self[:checksum], self[:checksum_value])
|
432
436
|
self.fail _("Checksum value '%{value}' is not a valid checksum type %{checksum}") % { value: self[:checksum_value], checksum: self[:checksum] }
|
433
437
|
end
|
434
438
|
|
@@ -930,7 +934,7 @@ Puppet::Type.newtype(:file) do
|
|
930
934
|
# that out.
|
931
935
|
end
|
932
936
|
|
933
|
-
fail_if_checksum_is_wrong(file.path, content_checksum)
|
937
|
+
fail_if_checksum_is_wrong(property, file.path, content_checksum)
|
934
938
|
end
|
935
939
|
else
|
936
940
|
umask = mode ? 000 : 022
|
@@ -1040,17 +1044,38 @@ Puppet::Type.newtype(:file) do
|
|
1040
1044
|
end
|
1041
1045
|
end
|
1042
1046
|
|
1043
|
-
# Should we validate the checksum of the file we're writing?
|
1044
|
-
def validate_checksum?
|
1045
|
-
self[:checksum] !~ /time/
|
1046
|
-
end
|
1047
|
-
|
1048
1047
|
# Make sure the file we wrote out is what we think it is.
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1048
|
+
# @param [Puppet::Parameter] property the param or property that wrote the file, or nil
|
1049
|
+
# @param [String] path to the file
|
1050
|
+
# @param [String] the checksum for the local file
|
1051
|
+
#
|
1052
|
+
# @api private
|
1053
|
+
#
|
1054
|
+
def fail_if_checksum_is_wrong(property, path, content_checksum)
|
1055
|
+
desired_checksum = desired_checksum(property, path)
|
1052
1056
|
|
1053
|
-
|
1057
|
+
if desired_checksum && content_checksum != desired_checksum
|
1058
|
+
self.fail _("File written to disk did not match desired checksum; discarding changes (%{content_checksum} vs %{desired_checksum})") % { content_checksum: content_checksum, desired_checksum: desired_checksum }
|
1059
|
+
end
|
1060
|
+
end
|
1061
|
+
|
1062
|
+
# Return the desired checksum or nil
|
1063
|
+
def desired_checksum(property, path)
|
1064
|
+
return if SOURCE_ONLY_CHECKSUMS.include?(self[:checksum])
|
1065
|
+
|
1066
|
+
if self[:checksum] && self[:checksum_value]
|
1067
|
+
"{#{self[:checksum]}}#{self[:checksum_value]}"
|
1068
|
+
elsif property && property.name == :source
|
1069
|
+
meta = property.metadata
|
1070
|
+
return unless meta
|
1071
|
+
|
1072
|
+
# due to HttpMetadata the checksum type may fallback to mtime, so recheck
|
1073
|
+
return if SOURCE_ONLY_CHECKSUMS.include?(meta.checksum_type)
|
1074
|
+
meta.checksum
|
1075
|
+
elsif property && property.name == :content
|
1076
|
+
str = property.actual_content
|
1077
|
+
str ? parameter(:checksum).sum(str) : nil
|
1078
|
+
end
|
1054
1079
|
end
|
1055
1080
|
|
1056
1081
|
def write_temporary_file?
|