puppet 6.15.0-universal-darwin → 6.19.1-universal-darwin
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 -7
- data/Gemfile +4 -2
- data/Gemfile.lock +29 -27
- data/README.md +3 -4
- data/Rakefile +4 -12
- data/lib/puppet.rb +32 -8
- data/lib/puppet/agent.rb +18 -4
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application/agent.rb +23 -8
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/configurer.rb +61 -21
- 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/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +119 -39
- data/lib/puppet/environments.rb +51 -10
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +46 -16
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/help.rb +29 -3
- data/lib/puppet/face/module/search.rb +5 -0
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/plugin.rb +1 -1
- data/lib/puppet/face/status.rb +1 -1
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +14 -2
- 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 +12 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +4 -7
- data/lib/puppet/functions/filter.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 +28 -12
- data/lib/puppet/http/external_client.rb +0 -6
- 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/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/yaml.rb +1 -1
- data/lib/puppet/indirector/file_content/http.rb +5 -0
- data/lib/puppet/indirector/file_content/rest.rb +1 -1
- data/lib/puppet/indirector/file_metadata/http.rb +28 -8
- 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 +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/request.rb +5 -5
- data/lib/puppet/indirector/rest.rb +7 -1
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/network/format_support.rb +2 -2
- 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/compression.rb +7 -0
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/connection_adapter.rb +184 -0
- data/lib/puppet/network/http/nocache_pool.rb +1 -0
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +2 -2
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +31 -4
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
- data/lib/puppet/parser/compiler.rb +29 -26
- 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/functions/filter.rb +1 -0
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- 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/evaluator_impl.rb +5 -5
- 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/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/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +38 -1
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dnfmodule.rb +24 -4
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/pip.rb +60 -37
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/portage.rb +2 -2
- 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 +9 -1
- data/lib/puppet/provider/package/zypper.rb +62 -1
- data/lib/puppet/provider/service/systemd.rb +21 -4
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +16 -5
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reports/http.rb +7 -3
- 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/runtime.rb +25 -2
- data/lib/puppet/settings.rb +43 -6
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- data/lib/puppet/ssl/state_machine.rb +33 -8
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/ssl/verifier_adapter.rb +9 -1
- data/lib/puppet/test/test_helper.rb +19 -14
- 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 +33 -13
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +16 -1
- data/lib/puppet/type/service.rb +59 -8
- data/lib/puppet/type/user.rb +19 -10
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/autoload.rb +10 -25
- 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/fileparsing.rb +2 -2
- data/lib/puppet/util/log/destinations.rb +1 -10
- data/lib/puppet/util/package/version/range.rb +4 -1
- data/lib/puppet/util/package/version/range/eq.rb +14 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -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 +541 -427
- data/man/man5/puppet.conf.5 +84 -19
- data/man/man8/puppet-agent.8 +7 -4
- data/man/man8/puppet-apply.8 +1 -1
- 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 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +6 -3
- 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 +4 -1
- data/man/man8/puppet-node.8 +4 -4
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- 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/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/dnfmodule/{dnf-module-list-enabled.txt → dnf-module-list.txt} +6 -0
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
- data/spec/integration/application/agent_spec.rb +202 -52
- data/spec/integration/application/apply_spec.rb +149 -149
- data/spec/integration/application/config_spec.rb +74 -0
- 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 +75 -2
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +27 -3
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/http/client_spec.rb +6 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/network/http_pool_spec.rb +73 -0
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +11 -0
- 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 +7 -2
- 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 -7
- data/spec/integration/util/windows/user_spec.rb +47 -5
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/https.rb +6 -0
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +8 -0
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/unit/agent_spec.rb +47 -1
- data/spec/unit/application/agent_spec.rb +7 -8
- 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/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 +9 -4
- 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_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +25 -2
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/environments_spec.rb +99 -32
- data/spec/unit/face/config_spec.rb +59 -1
- data/spec/unit/face/module/search_spec.rb +17 -0
- data/spec/unit/face/node_spec.rb +2 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- 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_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +29 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/http/client_spec.rb +74 -19
- data/spec/unit/http/external_client_spec.rb +9 -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 +2 -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 +0 -1
- data/spec/unit/http/session_spec.rb +8 -21
- data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +15 -14
- data/spec/unit/indirector/json_spec.rb +8 -8
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/unit/indirector/request_spec.rb +5 -5
- data/spec/unit/indirector/rest_spec.rb +14 -1
- data/spec/unit/indirector/status/rest_spec.rb +1 -1
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/connection_spec.rb +552 -190
- data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
- data/spec/unit/network/http_pool_spec.rb +63 -57
- data/spec/unit/network/http_spec.rb +1 -1
- data/spec/unit/node/environment_spec.rb +18 -1
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/scope_spec.rb +1 -1
- 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/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +77 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +25 -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/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/pip_spec.rb +42 -16
- data/spec/unit/provider/package/portage_spec.rb +5 -0
- 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 +47 -8
- data/spec/unit/provider/package/zypper_spec.rb +98 -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 +46 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openbsd_spec.rb +9 -0
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +2 -1
- data/spec/unit/provider/service/redhat_spec.rb +10 -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 +87 -19
- 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/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +30 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/puppet_pal_2pec.rb +40 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
- data/spec/unit/puppet_spec.rb +33 -0
- data/spec/unit/reports/http_spec.rb +1 -1
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource_spec.rb +3 -3
- data/spec/unit/rest/route_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +182 -22
- data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
- data/spec/unit/ssl/state_machine_spec.rb +52 -8
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +3 -1
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/file_spec.rb +122 -96
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/service_spec.rb +218 -8
- data/spec/unit/type/user_spec.rb +32 -3
- data/spec/unit/type_spec.rb +50 -0
- data/spec/unit/util/autoload_spec.rb +2 -1
- 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/log/destinations_spec.rb +1 -29
- data/spec/unit/util/package/version/range_spec.rb +22 -1
- data/spec/unit/util/run_mode_spec.rb +6 -6
- 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 +3 -3
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- data/tasks/manpages.rake +5 -35
- metadata +43 -49
- 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/man_spec.rb +0 -25
- data/spec/unit/man_spec.rb +0 -31
data/spec/unit/confine_spec.rb
CHANGED
@@ -54,10 +54,11 @@ describe Puppet::Confine do
|
|
54
54
|
end
|
55
55
|
|
56
56
|
it "should log failing confines with the label and message" do
|
57
|
+
Puppet[:log_level] = 'debug'
|
57
58
|
allow(@confine).to receive(:pass?).and_return(false)
|
58
59
|
expect(@confine).to receive(:message).and_return("My message")
|
59
60
|
expect(@confine).to receive(:label).and_return("Mylabel")
|
60
|
-
expect(Puppet).to receive(:debug).
|
61
|
+
expect(Puppet).to receive(:debug) { |&b| expect(b.call).to eq("Mylabel: My message") }
|
61
62
|
@confine.valid?
|
62
63
|
end
|
63
64
|
end
|
@@ -41,8 +41,12 @@ describe Puppet::Context::TrustedInformation, :unless => RUBY_PLATFORM == 'java'
|
|
41
41
|
}
|
42
42
|
|
43
43
|
def allow_external_trusted_data(certname, data)
|
44
|
-
|
45
|
-
|
44
|
+
command = 'generate_data.sh'
|
45
|
+
Puppet[:trusted_external_command] = command
|
46
|
+
# The expand_path bit is necessary b/c :trusted_external_command is a
|
47
|
+
# file_or_directory setting, and file_or_directory settings automatically
|
48
|
+
# expand the given path.
|
49
|
+
allow(Puppet::Util::Execution).to receive(:execute).with([File.expand_path(command), certname], anything).and_return(JSON.dump(data))
|
46
50
|
end
|
47
51
|
|
48
52
|
it "defaults external to an empty hash" do
|
@@ -90,6 +94,25 @@ describe Puppet::Context::TrustedInformation, :unless => RUBY_PLATFORM == 'java'
|
|
90
94
|
|
91
95
|
expect(trusted.external).to eq(external_data)
|
92
96
|
end
|
97
|
+
|
98
|
+
it 'does not run the trusted external command when creating a trusted context' do
|
99
|
+
Puppet[:trusted_external_command] = '/usr/bin/generate_data.sh'
|
100
|
+
|
101
|
+
expect(Puppet::Util::Execution).to receive(:execute).never
|
102
|
+
Puppet::Context::TrustedInformation.remote(true, 'cert name', cert)
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'only runs the trusted external command the first time it is invoked' do
|
106
|
+
command = 'generate_data.sh'
|
107
|
+
Puppet[:trusted_external_command] = command
|
108
|
+
|
109
|
+
# See allow_external_trusted_data to understand why expand_path is necessary
|
110
|
+
expect(Puppet::Util::Execution).to receive(:execute).with([File.expand_path(command), 'cert name'], anything).and_return(JSON.dump(external_data)).once
|
111
|
+
|
112
|
+
trusted = Puppet::Context::TrustedInformation.remote(true, 'cert name', cert)
|
113
|
+
trusted.external
|
114
|
+
trusted.external
|
115
|
+
end
|
93
116
|
end
|
94
117
|
|
95
118
|
context "when local" do
|
data/spec/unit/daemon_spec.rb
CHANGED
@@ -32,13 +32,17 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
|
|
32
32
|
let(:pidfile) { double("PidFile", :lock => true, :unlock => true, :file_path => 'fake.pid') }
|
33
33
|
let(:scheduler) { RecordingScheduler.new }
|
34
34
|
|
35
|
-
let(:daemon) { Puppet::Daemon.new(pidfile, scheduler) }
|
35
|
+
let(:daemon) { Puppet::Daemon.new(agent, pidfile, scheduler) }
|
36
36
|
|
37
37
|
before(:each) do
|
38
38
|
allow(Signal).to receive(:trap)
|
39
39
|
allow(daemon).to receive(:close_streams).and_return(nil)
|
40
40
|
end
|
41
41
|
|
42
|
+
it "should fail when no agent is provided" do
|
43
|
+
expect { Puppet::Daemon.new(nil, pidfile, scheduler) }.to raise_error(Puppet::DevError)
|
44
|
+
end
|
45
|
+
|
42
46
|
it "should reopen the Log logs when told to reopen logs" do
|
43
47
|
expect(Puppet::Util::Log).to receive(:reopen)
|
44
48
|
daemon.reopen_logs
|
@@ -72,65 +76,21 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
|
|
72
76
|
allow(daemon).to receive(:set_signal_traps)
|
73
77
|
end
|
74
78
|
|
75
|
-
it "should fail if it has neither agent nor server" do
|
76
|
-
expect { daemon.start }.to raise_error(Puppet::DevError)
|
77
|
-
end
|
78
|
-
|
79
79
|
it "should create its pidfile" do
|
80
80
|
expect(pidfile).to receive(:lock).and_return(true)
|
81
|
-
|
82
|
-
daemon.agent = agent
|
83
81
|
daemon.start
|
84
82
|
end
|
85
83
|
|
86
84
|
it "should fail if it cannot lock" do
|
87
85
|
expect(pidfile).to receive(:lock).and_return(false)
|
88
|
-
daemon.agent = agent
|
89
|
-
|
90
86
|
expect { daemon.start }.to raise_error(RuntimeError, "Could not create PID file: #{pidfile.file_path}")
|
91
87
|
end
|
92
88
|
|
93
|
-
it "should start its server if one is configured" do
|
94
|
-
daemon.server = server
|
95
|
-
|
96
|
-
expect(server).to receive(:start)
|
97
|
-
|
98
|
-
daemon.start
|
99
|
-
end
|
100
|
-
|
101
89
|
it "disables the reparse of configs if the filetimeout is 0" do
|
102
90
|
Puppet[:filetimeout] = 0
|
103
|
-
daemon.agent = agent
|
104
|
-
|
105
91
|
daemon.start
|
106
|
-
|
107
92
|
expect(scheduler.jobs[0]).not_to be_enabled
|
108
93
|
end
|
109
|
-
|
110
|
-
it "disables the agent run when there is no agent" do
|
111
|
-
Puppet[:filetimeout] = 0
|
112
|
-
daemon.server = server
|
113
|
-
|
114
|
-
daemon.start
|
115
|
-
|
116
|
-
expect(scheduler.jobs[1]).not_to be_enabled
|
117
|
-
end
|
118
|
-
|
119
|
-
it "waits for the server to shutdown when there is one" do
|
120
|
-
daemon.server = server
|
121
|
-
|
122
|
-
expect(server).to receive(:wait_for_shutdown)
|
123
|
-
|
124
|
-
daemon.start
|
125
|
-
end
|
126
|
-
|
127
|
-
it "waits for the server to shutdown when there is one" do
|
128
|
-
daemon.server = server
|
129
|
-
|
130
|
-
expect(server).to receive(:wait_for_shutdown)
|
131
|
-
|
132
|
-
daemon.start
|
133
|
-
end
|
134
94
|
end
|
135
95
|
|
136
96
|
describe "when stopping" do
|
@@ -146,14 +106,6 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
|
|
146
106
|
without_warnings { Puppet::Application = Puppet::Application.superclass }
|
147
107
|
end
|
148
108
|
|
149
|
-
it "should stop its server if one is configured" do
|
150
|
-
expect(server).to receive(:stop)
|
151
|
-
|
152
|
-
daemon.server = server
|
153
|
-
|
154
|
-
expect { daemon.stop }.to exit_with 0
|
155
|
-
end
|
156
|
-
|
157
109
|
it 'should request a stop from Puppet::Application' do
|
158
110
|
expect(Puppet::Application).to receive(:stop!)
|
159
111
|
expect { daemon.stop }.to exit_with 0
|
@@ -161,7 +113,6 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
|
|
161
113
|
|
162
114
|
it "should remove its pidfile" do
|
163
115
|
expect(pidfile).to receive(:unlock)
|
164
|
-
|
165
116
|
expect { daemon.stop }.to exit_with 0
|
166
117
|
end
|
167
118
|
|
@@ -188,8 +139,6 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
|
|
188
139
|
expect(agent).to receive(:run).with({:splay => false}).and_raise(Puppet::LockError, 'Failed to aquire lock')
|
189
140
|
expect(Puppet).to receive(:notice).with('Not triggering already-running agent')
|
190
141
|
|
191
|
-
daemon.agent = agent
|
192
|
-
|
193
142
|
daemon.reload
|
194
143
|
end
|
195
144
|
|
@@ -197,8 +146,6 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
|
|
197
146
|
expect(agent).to receive(:run).with({:splay => false})
|
198
147
|
expect(Puppet).not_to receive(:notice).with('Not triggering already-running agent')
|
199
148
|
|
200
|
-
daemon.agent = agent
|
201
|
-
|
202
149
|
daemon.reload
|
203
150
|
end
|
204
151
|
end
|
@@ -220,15 +167,11 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
|
|
220
167
|
|
221
168
|
it "should reexec itself if no agent is available" do
|
222
169
|
expect(daemon).to receive(:reexec)
|
223
|
-
|
224
170
|
daemon.restart
|
225
171
|
end
|
226
172
|
|
227
173
|
it "should reexec itself if the agent is not running" do
|
228
|
-
expect(agent).to receive(:running?).and_return(false)
|
229
|
-
daemon.agent = agent
|
230
174
|
expect(daemon).to receive(:reexec)
|
231
|
-
|
232
175
|
daemon.restart
|
233
176
|
end
|
234
177
|
end
|
@@ -247,14 +190,12 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
|
|
247
190
|
it "should shut down without exiting" do
|
248
191
|
daemon.argv = %w{foo}
|
249
192
|
expect(daemon).to receive(:stop).with(:exit => false)
|
250
|
-
|
251
193
|
daemon.reexec
|
252
194
|
end
|
253
195
|
|
254
196
|
it "should call 'exec' with the original executable and arguments" do
|
255
197
|
daemon.argv = %w{foo}
|
256
198
|
expect(daemon).to receive(:exec).with($0 + " foo")
|
257
|
-
|
258
199
|
daemon.reexec
|
259
200
|
end
|
260
201
|
end
|
@@ -436,25 +436,6 @@ config_version=$vardir/random/scripts
|
|
436
436
|
end
|
437
437
|
end
|
438
438
|
end
|
439
|
-
|
440
|
-
context "custom cache expiration service" do
|
441
|
-
it "consults the custom service to expire the cache" do
|
442
|
-
loader_from(:filesystem => [directory_tree],
|
443
|
-
:directory => directory_tree.children.first) do |loader|
|
444
|
-
service = ReplayExpirationService.new([true])
|
445
|
-
using_expiration_service(service) do
|
446
|
-
|
447
|
-
cached = Puppet::Environments::Cached.new(loader)
|
448
|
-
cached.get(:an_environment)
|
449
|
-
cached.get(:an_environment)
|
450
|
-
|
451
|
-
expect(service.created_envs).to include(:an_environment)
|
452
|
-
expect(service.expired_envs).to include(:an_environment)
|
453
|
-
expect(service.evicted_envs).to include(:an_environment)
|
454
|
-
end
|
455
|
-
end
|
456
|
-
end
|
457
|
-
end
|
458
439
|
end
|
459
440
|
end
|
460
441
|
|
@@ -645,6 +626,102 @@ config_version=$vardir/random/scripts
|
|
645
626
|
end
|
646
627
|
end
|
647
628
|
|
629
|
+
context "expiration policies" do
|
630
|
+
let(:service) { ReplayExpirationService.new }
|
631
|
+
|
632
|
+
# The environment named `:an_environment` will already be loaded when the
|
633
|
+
# block is yielded to
|
634
|
+
def with_environment_loaded(service, &block)
|
635
|
+
loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
636
|
+
using_expiration_service(service) do
|
637
|
+
cached = Puppet::Environments::Cached.new(loader)
|
638
|
+
cached.get!(:an_environment)
|
639
|
+
|
640
|
+
yield cached if block_given?
|
641
|
+
end
|
642
|
+
end
|
643
|
+
end
|
644
|
+
|
645
|
+
it "notifies when the environment is first created" do
|
646
|
+
with_environment_loaded(service)
|
647
|
+
|
648
|
+
expect(service.created_envs).to eq([:an_environment])
|
649
|
+
end
|
650
|
+
|
651
|
+
it "does not evict an unexpired environment" do
|
652
|
+
Puppet[:environment_timeout] = 'unlimited'
|
653
|
+
|
654
|
+
with_environment_loaded(service) do |cached|
|
655
|
+
cached.get!(:an_environment)
|
656
|
+
end
|
657
|
+
|
658
|
+
expect(service.created_envs).to eq([:an_environment])
|
659
|
+
expect(service.evicted_envs).to eq([])
|
660
|
+
end
|
661
|
+
|
662
|
+
it "evicts an expired environment" do
|
663
|
+
service = ReplayExpirationService.new
|
664
|
+
|
665
|
+
# The `Cached#clear_all_expired` method tries to optimize the case where
|
666
|
+
# no entries are expired. But if `Time.now < @next_expiration` and there is
|
667
|
+
# an expired entry, then the `service#expired?` method is called twice.
|
668
|
+
expect(service).to receive(:expired?).twice.and_return(true)
|
669
|
+
|
670
|
+
with_environment_loaded(service) do |cached|
|
671
|
+
cached.get!(:an_environment)
|
672
|
+
end
|
673
|
+
|
674
|
+
expect(service.created_envs).to eq([:an_environment, :an_environment])
|
675
|
+
expect(service.evicted_envs).to eq([:an_environment])
|
676
|
+
end
|
677
|
+
|
678
|
+
it "evicts an environment that hasn't been recently touched" do
|
679
|
+
Puppet[:environment_timeout] = 1
|
680
|
+
Puppet[:environment_timeout_mode] = :from_last_used
|
681
|
+
|
682
|
+
with_environment_loaded(service) do |cached|
|
683
|
+
future = Time.now + 60
|
684
|
+
expect(Time).to receive(:now).and_return(future).at_least(:once)
|
685
|
+
|
686
|
+
# this should cause the cached environment to be evicted and a new one created
|
687
|
+
cached.get!(:an_environment)
|
688
|
+
end
|
689
|
+
|
690
|
+
expect(service.created_envs).to eq([:an_environment, :an_environment])
|
691
|
+
expect(service.evicted_envs).to eq([:an_environment])
|
692
|
+
|
693
|
+
end
|
694
|
+
|
695
|
+
it "reuses an environment that was recently touched" do
|
696
|
+
Puppet[:environment_timeout] = 60
|
697
|
+
Puppet[:environment_timeout_mode] = :from_last_used
|
698
|
+
|
699
|
+
with_environment_loaded(service) do |cached|
|
700
|
+
# reuse the already cached environment
|
701
|
+
cached.get!(:an_environment)
|
702
|
+
end
|
703
|
+
|
704
|
+
expect(service.created_envs).to eq([:an_environment])
|
705
|
+
expect(service.evicted_envs).to eq([])
|
706
|
+
end
|
707
|
+
|
708
|
+
it "evicts a recently touched environment" do
|
709
|
+
Puppet[:environment_timeout] = 60
|
710
|
+
Puppet[:environment_timeout_mode] = :from_last_used
|
711
|
+
|
712
|
+
# see note above about "twice"
|
713
|
+
expect(service).to receive(:expired?).twice.and_return(true)
|
714
|
+
|
715
|
+
with_environment_loaded(service) do |cached|
|
716
|
+
# even though the environment was recently touched, it's been expired
|
717
|
+
cached.get!(:an_environment)
|
718
|
+
end
|
719
|
+
|
720
|
+
expect(service.created_envs).to eq([:an_environment, :an_environment])
|
721
|
+
expect(service.evicted_envs).to eq([:an_environment])
|
722
|
+
end
|
723
|
+
end
|
724
|
+
|
648
725
|
it "gets an environment.conf" do
|
649
726
|
loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
650
727
|
expect(Puppet::Environments::Cached.new(loader).get_conf(:an_environment)).to match_environment_conf(:an_environment).
|
@@ -746,31 +823,21 @@ config_version=$vardir/random/scripts
|
|
746
823
|
end
|
747
824
|
end
|
748
825
|
|
749
|
-
class ReplayExpirationService
|
750
|
-
attr_reader :created_envs, :
|
826
|
+
class ReplayExpirationService < Puppet::Environments::Cached::DefaultCacheExpirationService
|
827
|
+
attr_reader :created_envs, :evicted_envs
|
751
828
|
|
752
|
-
def initialize
|
829
|
+
def initialize
|
753
830
|
@created_envs = []
|
754
|
-
@expired_envs = []
|
755
831
|
@evicted_envs = []
|
756
|
-
@expiration_sequence = expiration_sequence
|
757
832
|
end
|
758
833
|
|
759
834
|
def created(env)
|
760
835
|
@created_envs << env.name
|
761
836
|
end
|
762
837
|
|
763
|
-
def expired?(env_name)
|
764
|
-
# make expired? idempotent
|
765
|
-
return true if @expired_envs.include? (env_name)
|
766
|
-
@expired_envs << env_name
|
767
|
-
@expiration_sequence.pop
|
768
|
-
end
|
769
|
-
|
770
838
|
def evicted(env_name)
|
771
839
|
@evicted_envs << env_name
|
772
840
|
end
|
773
841
|
end
|
774
|
-
|
775
842
|
end
|
776
843
|
end
|
@@ -200,6 +200,44 @@ trace = true
|
|
200
200
|
expect(Puppet::FileSystem).to receive(:open).with(path, nil, 'r+:UTF-8')
|
201
201
|
subject.set('foo', 'bar')
|
202
202
|
end
|
203
|
+
|
204
|
+
it "sets settings into the [server] section when setting [master] section settings" do
|
205
|
+
initial_contents = <<-CONFIG
|
206
|
+
[master]
|
207
|
+
setting = old_setting_value
|
208
|
+
untouched_setting = value
|
209
|
+
CONFIG
|
210
|
+
|
211
|
+
myinitialfile = StringIO.new(initial_contents)
|
212
|
+
allow(Puppet::FileSystem).to receive(:open).with(path, anything, anything).and_yield(myinitialfile)
|
213
|
+
|
214
|
+
expect {
|
215
|
+
subject.set('setting', 'new_setting_value', {:section => 'master'})
|
216
|
+
}.to output("Deleted setting from 'master': 'setting = old_setting_value', and adding it to 'server' section\n").to_stdout
|
217
|
+
modified_content = <<-CONFIG
|
218
|
+
[master]
|
219
|
+
untouched_setting = value
|
220
|
+
[server]
|
221
|
+
setting = new_setting_value
|
222
|
+
CONFIG
|
223
|
+
|
224
|
+
mymodifiedfile = StringIO.new(modified_content)
|
225
|
+
expect(myinitialfile.string).to match(mymodifiedfile.string)
|
226
|
+
end
|
227
|
+
|
228
|
+
it "setting [master] section settings, sets settings into [server] section instead" do
|
229
|
+
myinitialfile = StringIO.new("")
|
230
|
+
allow(Puppet::FileSystem).to receive(:open).with(path, anything, anything).and_yield(myinitialfile)
|
231
|
+
subject.set('setting_name', 'value', {:section => 'master'})
|
232
|
+
|
233
|
+
expected_content = <<-CONFIG
|
234
|
+
[server]
|
235
|
+
setting_name = value
|
236
|
+
CONFIG
|
237
|
+
|
238
|
+
myexpectedfile = StringIO.new(expected_content)
|
239
|
+
expect(myinitialfile.string).to match(myexpectedfile.string)
|
240
|
+
end
|
203
241
|
end
|
204
242
|
|
205
243
|
context 'when the puppet.conf file does not exist' do
|
@@ -234,7 +272,9 @@ trace = true
|
|
234
272
|
allow(Puppet::Settings::IniFile::Manipulator).to receive(:new).and_return(manipulator)
|
235
273
|
|
236
274
|
expect(manipulator).to receive(:delete).with('main', 'setting').and_return(' setting=value')
|
237
|
-
expect {
|
275
|
+
expect {
|
276
|
+
subject.delete('setting', {:section => 'main'})
|
277
|
+
}.to output("Deleted setting from 'main': 'setting=value'\n").to_stdout
|
238
278
|
end
|
239
279
|
|
240
280
|
it 'prints a warning when a setting is not found to delete' do
|
@@ -247,6 +287,24 @@ trace = true
|
|
247
287
|
expect(Puppet).to receive(:warning).with("No setting found in configuration file for section 'main' setting name 'setting'")
|
248
288
|
subject.delete('setting', {:section => 'main'})
|
249
289
|
end
|
290
|
+
|
291
|
+
['master', 'server'].each do |section|
|
292
|
+
describe "when deleting from [#{section}] section" do
|
293
|
+
it "deletes section values from both [server] and [master] sections" do
|
294
|
+
allow(Puppet::FileSystem).to receive(:open).with(path, anything, anything).and_yield(StringIO.new)
|
295
|
+
config = Puppet::Settings::IniFile.new([Puppet::Settings::IniFile::DefaultSection.new])
|
296
|
+
manipulator = Puppet::Settings::IniFile::Manipulator.new(config)
|
297
|
+
allow(Puppet::Settings::IniFile::Manipulator).to receive(:new).and_return(manipulator)
|
298
|
+
|
299
|
+
expect(manipulator).to receive(:delete).with('master', 'setting').and_return('setting=value')
|
300
|
+
expect(manipulator).to receive(:delete).with('server', 'setting').and_return('setting=value')
|
301
|
+
expect {
|
302
|
+
subject.delete('setting', {:section => section})
|
303
|
+
}.to output(/Deleted setting from 'master': 'setting'\nDeleted setting from 'server': 'setting'\n/).to_stdout
|
304
|
+
end
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
250
308
|
end
|
251
309
|
|
252
310
|
shared_examples_for :config_printing_a_section do |section|
|