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
@@ -9,7 +9,7 @@ Puppet::Type.type(:file).newparam(:checksum) do
|
|
9
9
|
|
10
10
|
The default checksum type is md5."
|
11
11
|
|
12
|
-
newvalues
|
12
|
+
newvalues(*Puppet::Util::Checksums.known_checksum_types)
|
13
13
|
|
14
14
|
defaultto do
|
15
15
|
Puppet[:digest_algorithm].to_sym
|
@@ -23,18 +23,18 @@ Puppet::Type.type(:file).newparam(:checksum) do
|
|
23
23
|
|
24
24
|
def sum(content)
|
25
25
|
content = content.is_a?(Puppet::Pops::Types::PBinaryType::Binary) ? content.binary_buffer : content
|
26
|
-
type = digest_algorithm
|
26
|
+
type = digest_algorithm
|
27
27
|
"{#{type}}" + send(type, content)
|
28
28
|
end
|
29
29
|
|
30
30
|
def sum_file(path)
|
31
|
-
type = digest_algorithm
|
31
|
+
type = digest_algorithm
|
32
32
|
method = type.to_s + "_file"
|
33
33
|
"{#{type}}" + send(method, path).to_s
|
34
34
|
end
|
35
35
|
|
36
36
|
def sum_stream(&block)
|
37
|
-
type = digest_algorithm
|
37
|
+
type = digest_algorithm
|
38
38
|
method = type.to_s + "_stream"
|
39
39
|
checksum = send(method, &block)
|
40
40
|
"{#{type}}#{checksum}"
|
@@ -23,7 +23,7 @@ module Puppet
|
|
23
23
|
* Fully qualified paths to locally available files (including files on NFS
|
24
24
|
shares or Windows mapped drives).
|
25
25
|
* `file:` URIs, which behave the same as local file paths.
|
26
|
-
* `http:` URIs, which point to files served by common web servers.
|
26
|
+
* `http(s):` URIs, which point to files served by common web servers.
|
27
27
|
|
28
28
|
The normal form of a `puppet:` URI is:
|
29
29
|
|
@@ -44,11 +44,26 @@ module Puppet
|
|
44
44
|
because HTTP servers do not transfer any metadata that translates to
|
45
45
|
ownership or permission details.
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
47
|
+
Puppet determines if file content is synchronized by computing a checksum
|
48
|
+
for the local file and comparing it against the `checksum_value`
|
49
|
+
parameter. If the `checksum_value` parameter is not specified for
|
50
|
+
`puppet` and `file` sources, Puppet computes a checksum based on its
|
51
|
+
`Puppet[:digest_algorithm]`. For `http(s)` sources, Puppet uses the
|
52
|
+
first HTTP header it recognizes out of the following list:
|
53
|
+
`X-Checksum-Sha256`, `X-Checksum-Sha1`, `X-Checksum-Md5` or `Content-MD5`.
|
54
|
+
If the server response does not include one of these headers, Puppet
|
55
|
+
defaults to using the `Last-Modified` header. Puppet updates the local
|
56
|
+
file if the header is newer than the modified time (mtime) of the local
|
57
|
+
file.
|
58
|
+
|
59
|
+
_HTTP_ URIs can include a user information component so that Puppet can
|
60
|
+
retrieve file metadata and content from HTTP servers that require HTTP Basic
|
61
|
+
authentication. For example `https://<user>:<pass>@<server>:<port>/path/to/file.`
|
62
|
+
|
63
|
+
When connecting to _HTTPS_ servers, Puppet trusts CA certificates in the
|
64
|
+
puppet-agent certificate bundle and the Puppet CA. You can configure Puppet
|
65
|
+
to trust additional CA certificates using the `Puppet[:ssl_trust_store]`
|
66
|
+
setting.
|
52
67
|
|
53
68
|
Multiple `source` values can be specified as an array, and Puppet will
|
54
69
|
use the first source that exists. This can be used to serve different
|
@@ -98,8 +113,8 @@ module Puppet
|
|
98
113
|
# Ruby 1.9.3 and earlier have a URI bug in URI
|
99
114
|
# to_s returns an ASCII string despite UTF-8 fragments
|
100
115
|
# since its escaped its safe to universally call encode
|
101
|
-
#
|
102
|
-
|
116
|
+
# Puppet::Util.uri_unescape always returns strings in the original encoding
|
117
|
+
Puppet::Util.uri_unescape(uri_string.encode(Encoding::UTF_8))
|
103
118
|
else
|
104
119
|
source
|
105
120
|
end
|
@@ -210,7 +225,7 @@ module Puppet
|
|
210
225
|
end
|
211
226
|
|
212
227
|
def port
|
213
|
-
(uri and uri.port) or Puppet.settings[:
|
228
|
+
(uri and uri.port) or Puppet.settings[:serverport]
|
214
229
|
end
|
215
230
|
|
216
231
|
def uri
|
@@ -278,7 +293,7 @@ module Puppet
|
|
278
293
|
api = session.route_to(:fileserver, url: url)
|
279
294
|
|
280
295
|
api.get_static_file_content(
|
281
|
-
path:
|
296
|
+
path: Puppet::Util.uri_unescape(url.path),
|
282
297
|
environment: resource.catalog.environment_instance.to_s,
|
283
298
|
code_id: resource.catalog.code_id,
|
284
299
|
&block
|
@@ -290,7 +305,7 @@ module Puppet
|
|
290
305
|
api = session.route_to(:fileserver, url: url)
|
291
306
|
|
292
307
|
api.get_file_content(
|
293
|
-
path:
|
308
|
+
path: Puppet::Util.uri_unescape(url.path),
|
294
309
|
environment: resource.catalog.environment_instance.to_s,
|
295
310
|
&block
|
296
311
|
)
|
@@ -307,7 +322,12 @@ module Puppet
|
|
307
322
|
|
308
323
|
def chunk_file_from_source(&block)
|
309
324
|
if uri.scheme =~ /^https?/
|
310
|
-
|
325
|
+
# Historically puppet has not encoded the http(s) source URL before parsing
|
326
|
+
# it, for example, if the path contains spaces, then it must be URL encoded
|
327
|
+
# as %20 in the manifest. Puppet behaves the same when retrieving file
|
328
|
+
# metadata via http(s), see Puppet::Indirector::FileMetadata::Http#find.
|
329
|
+
url = URI.parse(metadata.source)
|
330
|
+
get_from_http_source(url, &block)
|
311
331
|
elsif metadata.content_uri
|
312
332
|
content_url = URI.parse(Puppet::Util.uri_encode(metadata.content_uri))
|
313
333
|
get_from_content_uri_source(content_url, &block)
|
@@ -57,7 +57,7 @@ module Puppet
|
|
57
57
|
This setting is _only_ consulted if the `path` attribute is set to `false`.
|
58
58
|
|
59
59
|
If this attribute is not specified, the first entry in the `server_list`
|
60
|
-
configuration setting is used, followed by the value of the `
|
60
|
+
configuration setting is used, followed by the value of the `serverport`
|
61
61
|
setting if `server_list` is not set."
|
62
62
|
end
|
63
63
|
|
data/lib/puppet/type/notify.rb
CHANGED
@@ -4,12 +4,12 @@
|
|
4
4
|
|
5
5
|
module Puppet
|
6
6
|
Type.newtype(:notify) do
|
7
|
-
@doc = "Sends an arbitrary message to the agent run-time log. It's important to note that the notify resource type is not idempotent. As a result, notifications are shown as a change on every Puppet run."
|
7
|
+
@doc = "Sends an arbitrary message, specified as a string, to the agent run-time log. It's important to note that the notify resource type is not idempotent. As a result, notifications are shown as a change on every Puppet run."
|
8
8
|
|
9
9
|
apply_to_all
|
10
10
|
|
11
11
|
newproperty(:message, :idempotent => false) do
|
12
|
-
desc "The message to be sent to the log."
|
12
|
+
desc "The message to be sent to the log. Note that the value specified must be a string."
|
13
13
|
def sync
|
14
14
|
message = @sensitive ? 'Sensitive [value redacted]' : self.should
|
15
15
|
case @resource["withpath"]
|
data/lib/puppet/type/service.rb
CHANGED
@@ -47,6 +47,8 @@ module Puppet
|
|
47
47
|
|
48
48
|
feature :configurable_timeout, "The provider can specify a minumum timeout for syncing service properties"
|
49
49
|
|
50
|
+
feature :manages_logon_credentials, "The provider can specify the logon credentials used for a service"
|
51
|
+
|
50
52
|
newproperty(:enable, :required_features => :enableable) do
|
51
53
|
desc "Whether a service should be enabled to start at boot.
|
52
54
|
This property behaves differently depending on the platform;
|
@@ -116,6 +118,12 @@ module Puppet
|
|
116
118
|
end
|
117
119
|
|
118
120
|
def sync
|
121
|
+
property = @resource.property(:logonaccount)
|
122
|
+
if property
|
123
|
+
val = property.retrieve
|
124
|
+
property.sync unless property.safe_insync?(val)
|
125
|
+
end
|
126
|
+
|
119
127
|
event = super()
|
120
128
|
|
121
129
|
property = @resource.property(:enable)
|
@@ -128,6 +136,51 @@ module Puppet
|
|
128
136
|
end
|
129
137
|
end
|
130
138
|
|
139
|
+
newproperty(:logonaccount, :required_features => :manages_logon_credentials) do
|
140
|
+
desc "Specify an account for service logon"
|
141
|
+
|
142
|
+
munge do |value|
|
143
|
+
return value unless Puppet::Util::Platform.windows?
|
144
|
+
return 'LocalSystem' if Puppet::Util::Windows::User::localsystem?(value)
|
145
|
+
|
146
|
+
value.sub!(/^\.\\/, "#{Puppet::Util::Windows::ADSI.computer_name}\\")
|
147
|
+
user_information = Puppet::Util::Windows::SID.name_to_principal(value)
|
148
|
+
raise Puppet::Error.new("\"#{value}\" is not a valid account") unless user_information && [:SidTypeUser, :SidTypeWellKnownGroup].include?(user_information.account_type)
|
149
|
+
|
150
|
+
user_rights = Puppet::Util::Windows::User::get_rights(user_information.domain_account) unless Puppet::Util::Windows::User::default_system_account?(value)
|
151
|
+
raise Puppet::Error.new("\"#{user_information.domain_account}\" has the 'Log On As A Service' right set to denied.") if user_rights =~ /SeDenyServiceLogonRight/
|
152
|
+
raise Puppet::Error.new("\"#{user_information.domain_account}\" is missing the 'Log On As A Service' right.") unless user_rights.nil? || user_rights =~ /SeServiceLogonRight/
|
153
|
+
|
154
|
+
if user_information.domain == Puppet::Util::Windows::ADSI.computer_name
|
155
|
+
".\\#{user_information.account}"
|
156
|
+
else
|
157
|
+
user_information.domain_account
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
newparam(:logonpassword, :required_features => :manages_logon_credentials) do
|
163
|
+
desc "Specify a password for service logon. Default value is an empty string (when logonaccount is specified)."
|
164
|
+
|
165
|
+
validate do |value|
|
166
|
+
raise Puppet::Error.new(_"The 'logonaccount' parameter is mandatory when setting 'logonpassword'.") unless @resource[:logonaccount]
|
167
|
+
raise ArgumentError, _("Passwords cannot include ':'") if value.is_a?(String) and value.include?(":")
|
168
|
+
return unless Puppet::Util::Platform.windows?
|
169
|
+
|
170
|
+
is_a_predefined_local_account = Puppet::Util::Windows::User::default_system_account?(@resource[:logonaccount]) || @resource[:logonaccount] == 'LocalSystem'
|
171
|
+
|
172
|
+
account_info = @resource[:logonaccount].split("\\")
|
173
|
+
able_to_logon = Puppet::Util::Windows::User.password_is?(account_info[1], value, account_info[0]) unless is_a_predefined_local_account
|
174
|
+
|
175
|
+
raise Puppet::Error.new("The given password is invalid for user '#{@resource[:logonaccount]}'.") unless is_a_predefined_local_account || able_to_logon
|
176
|
+
|
177
|
+
provider.logonpassword=(value)
|
178
|
+
end
|
179
|
+
|
180
|
+
sensitive true
|
181
|
+
defaultto { @resource[:logonaccount] ? "" : nil }
|
182
|
+
end
|
183
|
+
|
131
184
|
newproperty(:flags, :required_features => :flaggable) do
|
132
185
|
desc "Specify a string of flags to pass to the startup script."
|
133
186
|
end
|
data/lib/puppet/type/user.rb
CHANGED
@@ -40,7 +40,10 @@ module Puppet
|
|
40
40
|
implement PBKDF2 passwords with salt properties."
|
41
41
|
|
42
42
|
feature :manages_solaris_rbac,
|
43
|
-
"The provider can manage
|
43
|
+
"The provider can manage normal users"
|
44
|
+
|
45
|
+
feature :manages_roles,
|
46
|
+
"The provider can manage roles"
|
44
47
|
|
45
48
|
feature :manages_expiry,
|
46
49
|
"The provider can manage the expiry date for a user."
|
@@ -97,6 +100,18 @@ module Puppet
|
|
97
100
|
return :absent
|
98
101
|
end
|
99
102
|
end
|
103
|
+
|
104
|
+
def sync
|
105
|
+
event = super
|
106
|
+
|
107
|
+
property = @resource.property(:roles)
|
108
|
+
if property
|
109
|
+
val = property.retrieve
|
110
|
+
property.sync unless property.safe_insync?(val)
|
111
|
+
end
|
112
|
+
|
113
|
+
event
|
114
|
+
end
|
100
115
|
end
|
101
116
|
|
102
117
|
newproperty(:home) do
|
@@ -493,7 +508,7 @@ module Puppet
|
|
493
508
|
provider.exists?
|
494
509
|
end
|
495
510
|
|
496
|
-
newproperty(:roles, :parent => Puppet::Property::List, :required_features => :
|
511
|
+
newproperty(:roles, :parent => Puppet::Property::List, :required_features => :manages_roles) do
|
497
512
|
desc "The roles the user has. Multiple roles should be
|
498
513
|
specified as an array."
|
499
514
|
|
@@ -520,7 +535,7 @@ module Puppet
|
|
520
535
|
end
|
521
536
|
|
522
537
|
reqs
|
523
|
-
end
|
538
|
+
end unless Puppet::Util::Platform.windows?
|
524
539
|
|
525
540
|
newparam(:role_membership) do
|
526
541
|
desc "Whether specified roles should be considered the **complete list**
|
data/lib/puppet/util.rb
CHANGED
@@ -27,7 +27,7 @@ module Util
|
|
27
27
|
extend Puppet::Util::SymbolicFileMode
|
28
28
|
|
29
29
|
def default_env
|
30
|
-
Puppet
|
30
|
+
Puppet.features.microsoft_windows? ?
|
31
31
|
:windows :
|
32
32
|
:posix
|
33
33
|
end
|
@@ -296,6 +296,11 @@ module Util
|
|
296
296
|
AbsolutePathWindows = %r!^(?:(?:[A-Z]:#{slash})|(?:#{slash}#{slash}#{label}#{slash}#{label})|(?:#{slash}#{slash}\?#{slash}#{label}))!io
|
297
297
|
AbsolutePathPosix = %r!^/!
|
298
298
|
def absolute_path?(path, platform=nil)
|
299
|
+
unless path.is_a?(String)
|
300
|
+
Puppet.warning("Cannot check if #{path} is an absolute path because it is a '#{path.class}' and not a String'")
|
301
|
+
return false
|
302
|
+
end
|
303
|
+
|
299
304
|
# Ruby only sets File::ALT_SEPARATOR on Windows and the Ruby standard
|
300
305
|
# library uses that to test what platform it's on. Normally in Puppet we
|
301
306
|
# would use Puppet.features.microsoft_windows?, but this method needs to
|
@@ -356,7 +361,7 @@ module Util
|
|
356
361
|
|
357
362
|
# CGI.unescape doesn't handle space rules properly in uri paths
|
358
363
|
# URI.unescape does, but returns strings in their original encoding
|
359
|
-
path =
|
364
|
+
path = uri_unescape(uri.path.encode(Encoding::UTF_8))
|
360
365
|
|
361
366
|
if Puppet::Util::Platform.windows? && uri.scheme == 'file'
|
362
367
|
if uri.host && !uri.host.empty?
|
@@ -460,7 +465,18 @@ module Util
|
|
460
465
|
# + should be left unencoded
|
461
466
|
# URI::parse and URI::Generic.build don't like paths encoded with CGI.escape
|
462
467
|
# URI.escape does not change / to %2F and : to %3A like CGI.escape
|
463
|
-
|
468
|
+
#
|
469
|
+
# URI.escape is obsolete in Ruby 2.7. Ignore this error until we're able to
|
470
|
+
# switch to a different escape mechanism. If this is JRuby, we can't mask
|
471
|
+
# the error message, because this isn't thread safe. JRuby shouldn't be
|
472
|
+
# using Ruby 2.7 or raising the warning anyway.
|
473
|
+
orig_verbose = $VERBOSE
|
474
|
+
$VERBOSE = nil unless Puppet::Util::Platform.jruby?
|
475
|
+
begin
|
476
|
+
encoded += URI.escape(parts[:path]) unless parts[:path].nil?
|
477
|
+
ensure
|
478
|
+
$VERBOSE = orig_verbose unless Puppet::Util::Platform.jruby?
|
479
|
+
end
|
464
480
|
|
465
481
|
# each query parameter
|
466
482
|
if !parts[:query].nil?
|
@@ -479,6 +495,15 @@ module Util
|
|
479
495
|
end
|
480
496
|
module_function :uri_encode
|
481
497
|
|
498
|
+
def uri_unescape(path)
|
499
|
+
orig_verbose = $VERBOSE
|
500
|
+
$VERBOSE = nil unless Puppet::Util::Platform.jruby?
|
501
|
+
return URI.unescape(path)
|
502
|
+
ensure
|
503
|
+
$VERBOSE = orig_verbose unless Puppet::Util::Platform.jruby?
|
504
|
+
end
|
505
|
+
module_function :uri_unescape
|
506
|
+
|
482
507
|
def safe_posix_fork(stdin=$stdin, stdout=$stdout, stderr=$stderr, &block)
|
483
508
|
child_pid = Kernel.fork do
|
484
509
|
STDIN.reopen(stdin)
|
@@ -734,6 +759,19 @@ module Util
|
|
734
759
|
Random.new(seed).rand(max)
|
735
760
|
end
|
736
761
|
module_function :deterministic_rand_int
|
762
|
+
|
763
|
+
# Executes a block of code, wrapped around Facter.load_external(false) and
|
764
|
+
# Facter.load_external(true) which will cause Facter to not evaluate external facts.
|
765
|
+
def skip_external_facts
|
766
|
+
return yield unless Facter.respond_to? :load_external
|
767
|
+
begin
|
768
|
+
Facter.load_external(false)
|
769
|
+
yield
|
770
|
+
ensure
|
771
|
+
Facter.load_external(true)
|
772
|
+
end
|
773
|
+
end
|
774
|
+
module_function :skip_external_facts
|
737
775
|
end
|
738
776
|
end
|
739
777
|
|
data/lib/puppet/util/autoload.rb
CHANGED
@@ -10,6 +10,14 @@ require 'puppet/concurrent/synchronized'
|
|
10
10
|
# @api private
|
11
11
|
class Puppet::Util::ModuleDirectoriesAdapter < Puppet::Pops::Adaptable::Adapter
|
12
12
|
attr_accessor :directories
|
13
|
+
|
14
|
+
def self.create_adapter(env)
|
15
|
+
adapter = super(env)
|
16
|
+
adapter.directories = env.modulepath.flat_map do |dir|
|
17
|
+
Dir.glob(File.join(dir, '*', 'lib'))
|
18
|
+
end
|
19
|
+
adapter
|
20
|
+
end
|
13
21
|
end
|
14
22
|
|
15
23
|
# Autoload paths, either based on names or all at once.
|
@@ -119,13 +127,7 @@ class Puppet::Util::Autoload
|
|
119
127
|
def module_directories(env)
|
120
128
|
raise ArgumentError, "Autoloader requires an environment" unless env
|
121
129
|
|
122
|
-
Puppet::Util::ModuleDirectoriesAdapter.adapt(env)
|
123
|
-
a.directories ||= env.modulepath.collect do |dir|
|
124
|
-
Dir.entries(dir).reject { |f| f =~ /^\./ }.collect { |f| File.join(dir, f, "lib") }
|
125
|
-
end.flatten.find_all do |d|
|
126
|
-
FileTest.directory?(d)
|
127
|
-
end
|
128
|
-
end.directories
|
130
|
+
Puppet::Util::ModuleDirectoriesAdapter.adapt(env).directories
|
129
131
|
end
|
130
132
|
|
131
133
|
# @api private
|
@@ -164,14 +166,7 @@ class Puppet::Util::Autoload
|
|
164
166
|
# Normalize a path. This converts ALT_SEPARATOR to SEPARATOR on Windows
|
165
167
|
# and eliminates unnecessary parts of a path.
|
166
168
|
def cleanpath(path)
|
167
|
-
|
168
|
-
# paths correctly on windows (c:\ and c:/ are treated as distinct) but
|
169
|
-
# we don't want to convert relative paths to absolute
|
170
|
-
if Puppet::Util.absolute_path?(path)
|
171
|
-
File.expand_path(path)
|
172
|
-
else
|
173
|
-
Pathname.new(path).cleanpath.to_s
|
174
|
-
end
|
169
|
+
Pathname.new(path).cleanpath.to_s
|
175
170
|
end
|
176
171
|
end
|
177
172
|
|
@@ -19,8 +19,9 @@ module Puppet::Util::CharacterEncoding
|
|
19
19
|
begin
|
20
20
|
if original_encoding == Encoding::UTF_8
|
21
21
|
if !string_copy.valid_encoding?
|
22
|
-
Puppet.debug
|
23
|
-
{ value: string.dump }
|
22
|
+
Puppet.debug {
|
23
|
+
_("%{value} is already labeled as UTF-8 but this encoding is invalid. It cannot be transcoded by Puppet.") % { value: string.dump }
|
24
|
+
}
|
24
25
|
end
|
25
26
|
# String is already valid UTF-8 - noop
|
26
27
|
return string_copy
|
@@ -40,8 +41,9 @@ module Puppet::Util::CharacterEncoding
|
|
40
41
|
# Catch both our own self-determined failure to transcode as well as any
|
41
42
|
# error on ruby's part, ie Encoding::UndefinedConversionError on a
|
42
43
|
# failure to encode!.
|
43
|
-
Puppet.debug
|
44
|
-
{ error: detail.inspect, value: string.dump }
|
44
|
+
Puppet.debug {
|
45
|
+
_("%{error}: %{value} cannot be transcoded by Puppet.") % { error: detail.inspect, value: string.dump }
|
46
|
+
}
|
45
47
|
return string_copy
|
46
48
|
end
|
47
49
|
end
|
@@ -67,7 +69,9 @@ module Puppet::Util::CharacterEncoding
|
|
67
69
|
if string_copy.force_encoding(Encoding::UTF_8).valid_encoding?
|
68
70
|
return string_copy
|
69
71
|
else
|
70
|
-
Puppet.debug
|
72
|
+
Puppet.debug {
|
73
|
+
_("%{value} is not valid UTF-8 and result of overriding encoding would be invalid.") % { value: string.dump }
|
74
|
+
}
|
71
75
|
# Set copy back to its original encoding before returning
|
72
76
|
return string_copy.force_encoding(original_encoding)
|
73
77
|
end
|
@@ -7,11 +7,26 @@ require 'time'
|
|
7
7
|
module Puppet::Util::Checksums
|
8
8
|
module_function
|
9
9
|
|
10
|
+
KNOWN_CHECKSUMS = [
|
11
|
+
:sha256, :sha256lite,
|
12
|
+
:md5, :md5lite,
|
13
|
+
:sha1, :sha1lite,
|
14
|
+
:sha512,
|
15
|
+
:sha384,
|
16
|
+
:sha224,
|
17
|
+
:mtime, :ctime, :none
|
18
|
+
].freeze
|
19
|
+
|
10
20
|
# It's not a good idea to use some of these in some contexts: for example, I
|
11
21
|
# wouldn't try bucketing a file using the :none checksum type.
|
12
22
|
def known_checksum_types
|
13
|
-
|
14
|
-
|
23
|
+
KNOWN_CHECKSUMS
|
24
|
+
end
|
25
|
+
|
26
|
+
def valid_checksum?(type, value)
|
27
|
+
!!send("#{type}?", value)
|
28
|
+
rescue NoMethodError
|
29
|
+
false
|
15
30
|
end
|
16
31
|
|
17
32
|
class FakeChecksum
|
@@ -223,7 +238,7 @@ module Puppet::Util::Checksums
|
|
223
238
|
|
224
239
|
# Return the :mtime timestamp of a file.
|
225
240
|
def mtime_file(filename)
|
226
|
-
Puppet::FileSystem.stat(filename).
|
241
|
+
Puppet::FileSystem.stat(filename).mtime
|
227
242
|
end
|
228
243
|
|
229
244
|
# by definition this doesn't exist
|
@@ -293,7 +308,7 @@ module Puppet::Util::Checksums
|
|
293
308
|
|
294
309
|
# Return the :ctime of a file.
|
295
310
|
def ctime_file(filename)
|
296
|
-
Puppet::FileSystem.stat(filename).
|
311
|
+
Puppet::FileSystem.stat(filename).ctime
|
297
312
|
end
|
298
313
|
|
299
314
|
def ctime_stream(&block)
|