puppet 6.17.0-x86-mingw32 → 7.1.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 +3 -4
- data/Gemfile.lock +32 -30
- data/README.md +2 -3
- data/Rakefile +4 -12
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -1
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +2 -14
- data/ext/redhat/puppet.spec.erb +0 -1
- data/ext/windows/service/daemon.rb +6 -5
- data/install.rb +21 -17
- data/lib/puppet.rb +11 -20
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +172 -98
- data/lib/puppet/application/agent.rb +8 -3
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/device.rb +100 -104
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +15 -11
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/application_support.rb +7 -0
- data/lib/puppet/configurer.rb +46 -19
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +116 -162
- data/lib/puppet/environments.rb +72 -62
- 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 +66 -6
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +10 -2
- data/lib/puppet/face/plugin.rb +5 -8
- 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/ffi/windows.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +3 -32
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- 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_system/file_impl.rb +3 -3
- data/lib/puppet/forge/repository.rb +0 -1
- 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/generate/models/type/type.rb +4 -1
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +23 -13
- data/lib/puppet/http/client.rb +165 -115
- data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
- data/lib/puppet/http/errors.rb +16 -0
- data/lib/puppet/http/external_client.rb +5 -7
- data/lib/puppet/{network/http → http}/factory.rb +8 -11
- data/lib/puppet/{network/http → http}/pool.rb +61 -26
- data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +4 -12
- data/lib/puppet/http/resolver.rb +10 -23
- data/lib/puppet/http/resolver/server_list.rb +23 -45
- data/lib/puppet/http/resolver/settings.rb +7 -10
- data/lib/puppet/http/resolver/srv.rb +11 -15
- data/lib/puppet/http/response.rb +36 -54
- data/lib/puppet/http/response_converter.rb +24 -0
- data/lib/puppet/http/response_net_http.rb +42 -0
- data/lib/puppet/http/retry_after_handler.rb +4 -13
- data/lib/puppet/http/service.rb +15 -27
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +23 -70
- data/lib/puppet/http/service/file_server.rb +19 -28
- data/lib/puppet/http/service/puppetserver.rb +53 -0
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +16 -24
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +27 -6
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/rest.rb +3 -22
- data/lib/puppet/indirector/facts/yaml.rb +4 -59
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +2 -6
- data/lib/puppet/indirector/file_metadata/http.rb +1 -0
- data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
- data/lib/puppet/indirector/file_server.rb +1 -8
- data/lib/puppet/indirector/generic_http.rb +0 -11
- 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/node/rest.rb +2 -4
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +1 -102
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/formats.rb +2 -1
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +93 -14
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
- data/lib/puppet/parser/compiler.rb +0 -198
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/resource.rb +0 -69
- 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/evaluator_impl.rb +22 -8
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/issues.rb +0 -5
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- 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.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/factory.rb +0 -45
- data/lib/puppet/pops/model/model_label_provider.rb +0 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
- data/lib/puppet/pops/model/pn_transformer.rb +0 -16
- data/lib/puppet/pops/parser/egrammar.ra +0 -56
- data/lib/puppet/pops/parser/eparser.rb +1520 -1712
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
- 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/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_parser.rb +0 -4
- data/lib/puppet/pops/types/types.rb +0 -1
- data/lib/puppet/pops/validation/checker4_0.rb +28 -52
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +34 -0
- data/lib/puppet/provider/package/dpkg.rb +1 -11
- data/lib/puppet/provider/package/gem.rb +27 -5
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/pkg.rb +0 -4
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +6 -4
- data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
- data/lib/puppet/provider/package/yum.rb +1 -0
- data/lib/puppet/provider/package/zypper.rb +3 -0
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/user/aix.rb +3 -3
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reference/configuration.rb +2 -0
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +1 -89
- data/lib/puppet/resource/catalog.rb +1 -14
- data/lib/puppet/resource/type.rb +5 -120
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +84 -35
- data/lib/puppet/settings/base_setting.rb +26 -2
- data/lib/puppet/settings/integer_setting.rb +17 -0
- data/lib/puppet/settings/port_setting.rb +15 -0
- data/lib/puppet/settings/priority_setting.rb +5 -4
- data/lib/puppet/ssl.rb +10 -6
- data/lib/puppet/ssl/base.rb +3 -5
- data/lib/puppet/ssl/certificate.rb +0 -6
- data/lib/puppet/ssl/certificate_request.rb +1 -12
- data/lib/puppet/ssl/certificate_signer.rb +6 -0
- data/lib/puppet/ssl/oids.rb +3 -1
- data/lib/puppet/ssl/ssl_provider.rb +17 -0
- data/lib/puppet/ssl/state_machine.rb +3 -1
- data/lib/puppet/ssl/verifier.rb +2 -0
- data/lib/puppet/test/test_helper.rb +11 -6
- data/lib/puppet/transaction.rb +3 -9
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +10 -8
- data/lib/puppet/trusted_external.rb +2 -2
- data/lib/puppet/type.rb +4 -79
- data/lib/puppet/type/file.rb +7 -9
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/source.rb +29 -9
- data/lib/puppet/type/filebucket.rb +4 -4
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +5 -13
- data/lib/puppet/type/service.rb +4 -0
- data/lib/puppet/type/user.rb +19 -4
- data/lib/puppet/util.rb +26 -12
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/execution.rb +2 -13
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -46
- data/lib/puppet/util/posix.rb +53 -4
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +14 -2
- data/lib/puppet/util/windows.rb +3 -7
- data/lib/puppet/util/windows/daemon.rb +360 -0
- data/lib/puppet/util/windows/error.rb +1 -0
- data/lib/puppet/util/windows/eventlog.rb +4 -9
- data/lib/puppet/util/windows/file.rb +8 -242
- data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
- data/lib/puppet/util/windows/process.rb +4 -226
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +9 -460
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/windows/user.rb +219 -0
- data/lib/puppet/util/yaml.rb +0 -22
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +5 -1
- data/lib/puppet/x509/cert_provider.rb +29 -1
- data/locales/puppet.pot +656 -1351
- data/man/man5/puppet.conf.5 +72 -97
- data/man/man8/puppet-agent.8 +6 -3
- 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 +55 -9
- data/man/man8/puppet-filebucket.8 +6 -6
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-module.8 +1 -58
- 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 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- 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/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
- data/spec/integration/application/agent_spec.rb +70 -61
- data/spec/integration/application/apply_spec.rb +150 -150
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +78 -29
- data/spec/integration/application/help_spec.rb +44 -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 +76 -4
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +32 -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 +3 -21
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/node_spec.rb +0 -9
- data/spec/integration/parser/pcore_resource_spec.rb +0 -37
- data/spec/integration/type/file_spec.rb +5 -4
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +2 -2
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/security_spec.rb +1 -1
- data/spec/integration/util/windows/user_spec.rb +7 -0
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +9 -1
- data/spec/lib/puppet_spec/settings.rb +7 -1
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/agent_spec.rb +0 -2
- data/spec/unit/application/agent_spec.rb +3 -4
- 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 +74 -8
- data/spec/unit/application/filebucket_spec.rb +41 -39
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +17 -4
- data/spec/unit/application_spec.rb +43 -4
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +14 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +96 -44
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +2 -6
- data/spec/unit/defaults_spec.rb +26 -32
- data/spec/unit/environments_spec.rb +173 -32
- data/spec/unit/face/config_spec.rb +65 -12
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +16 -4
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- 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_system/uniquefile_spec.rb +18 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/functions/camelcase_spec.rb +1 -1
- data/spec/unit/functions/capitalize_spec.rb +1 -1
- data/spec/unit/functions/downcase_spec.rb +1 -1
- data/spec/unit/functions/inline_epp_spec.rb +26 -1
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/http/client_spec.rb +7 -9
- data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
- data/spec/unit/http/external_client_spec.rb +4 -4
- data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
- data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
- data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
- data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
- data/spec/unit/http/resolver_spec.rb +34 -15
- data/spec/unit/http/service/ca_spec.rb +2 -3
- data/spec/unit/http/service/compiler_spec.rb +51 -65
- data/spec/unit/http/service/file_server_spec.rb +5 -6
- data/spec/unit/http/service/puppetserver_spec.rb +112 -0
- data/spec/unit/http/service/report_spec.rb +2 -3
- data/spec/unit/http/service_spec.rb +1 -3
- data/spec/unit/http/session_spec.rb +24 -35
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- 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/facter_spec.rb +97 -0
- 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/file_spec.rb +5 -3
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/json_spec.rb +8 -8
- 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/rest_spec.rb +2 -17
- data/spec/unit/indirector/report/yaml_spec.rb +72 -8
- data/spec/unit/indirector/request_spec.rb +2 -266
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/authconfig_spec.rb +2 -132
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/formats_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -97
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
- data/spec/unit/network/http/api_spec.rb +10 -0
- data/spec/unit/network/http/connection_spec.rb +19 -41
- data/spec/unit/network/http/handler_spec.rb +0 -6
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +51 -22
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/templatewrapper_spec.rb +4 -3
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
- data/spec/unit/pops/loaders/loaders_spec.rb +76 -21
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
- data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
- data/spec/unit/pops/types/type_factory_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +61 -46
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/nameservice_spec.rb +0 -57
- 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/dpkg_spec.rb +22 -55
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- 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/puppet_gem_spec.rb +6 -2
- 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 +402 -166
- 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 +28 -1
- data/spec/unit/provider/user/aix_spec.rb +5 -0
- data/spec/unit/provider/user/pw_spec.rb +2 -0
- data/spec/unit/provider/user/useradd_spec.rb +1 -0
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/provider_spec.rb +0 -12
- 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/type_collection_spec.rb +2 -22
- data/spec/unit/resource_spec.rb +0 -56
- data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
- data/spec/unit/settings/integer_setting_spec.rb +42 -0
- data/spec/unit/settings/port_setting_spec.rb +31 -0
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +586 -239
- data/spec/unit/ssl/base_spec.rb +36 -3
- data/spec/unit/ssl/certificate_request_spec.rb +15 -45
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/ssl_provider_spec.rb +11 -8
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +2 -2
- data/spec/unit/transaction/resource_harness_spec.rb +2 -2
- data/spec/unit/transaction_spec.rb +45 -79
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +1 -1
- data/spec/unit/type/file/ensure_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +1 -2
- data/spec/unit/type/file_spec.rb +12 -6
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/service_spec.rb +35 -2
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +20 -0
- data/spec/unit/util/backups_spec.rb +0 -2
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/execution_spec.rb +0 -29
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/posix_spec.rb +357 -15
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -127
- data/spec/unit/util/storage_spec.rb +3 -1
- data/spec/unit/util/windows/string_spec.rb +1 -3
- data/spec/unit/util/yaml_spec.rb +0 -54
- data/spec/unit/util_spec.rb +0 -18
- metadata +84 -261
- data/conf/auth.conf +0 -150
- data/lib/puppet/application/cert.rb +0 -76
- data/lib/puppet/application/key.rb +0 -4
- data/lib/puppet/application/man.rb +0 -4
- data/lib/puppet/application/status.rb +0 -4
- data/lib/puppet/face/key.rb +0 -16
- data/lib/puppet/face/man.rb +0 -145
- data/lib/puppet/face/module/build.rb +0 -14
- data/lib/puppet/face/module/generate.rb +0 -14
- data/lib/puppet/face/module/search.rb +0 -103
- data/lib/puppet/face/status.rb +0 -51
- data/lib/puppet/indirector/certificate/file.rb +0 -9
- data/lib/puppet/indirector/certificate/rest.rb +0 -18
- data/lib/puppet/indirector/certificate_request/file.rb +0 -9
- data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
- data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
- data/lib/puppet/indirector/file_content/http.rb +0 -22
- data/lib/puppet/indirector/key/file.rb +0 -46
- data/lib/puppet/indirector/key/memory.rb +0 -7
- data/lib/puppet/indirector/ssl_file.rb +0 -162
- data/lib/puppet/indirector/status.rb +0 -3
- data/lib/puppet/indirector/status/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/module_tool/applications/searcher.rb +0 -29
- data/lib/puppet/network/auth_config_parser.rb +0 -90
- data/lib/puppet/network/authstore.rb +0 -283
- data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
- data/lib/puppet/network/http/base_pool.rb +0 -36
- data/lib/puppet/network/http/compression.rb +0 -127
- data/lib/puppet/network/http/connection_adapter.rb +0 -184
- data/lib/puppet/network/http/nocache_pool.rb +0 -28
- data/lib/puppet/network/rest_controller.rb +0 -2
- data/lib/puppet/network/rights.rb +0 -210
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
- data/lib/puppet/parser/environment_compiler.rb +0 -202
- data/lib/puppet/pops/types/enumeration.rb +0 -16
- data/lib/puppet/resource/capability_finder.rb +0 -154
- data/lib/puppet/rest/errors.rb +0 -15
- data/lib/puppet/rest/response.rb +0 -35
- data/lib/puppet/rest/route.rb +0 -85
- data/lib/puppet/rest/routes.rb +0 -135
- data/lib/puppet/ssl/host.rb +0 -505
- data/lib/puppet/ssl/key.rb +0 -61
- data/lib/puppet/ssl/validator.rb +0 -61
- data/lib/puppet/ssl/validator/default_validator.rb +0 -209
- data/lib/puppet/ssl/validator/no_validator.rb +0 -22
- data/lib/puppet/ssl/verifier_adapter.rb +0 -58
- data/lib/puppet/status.rb +0 -40
- data/lib/puppet/util/connection.rb +0 -88
- data/lib/puppet/util/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -295
- data/lib/puppet/vendor/load_pathspec.rb +0 -1
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
- data/lib/puppet/vendor/pathspec/LICENSE +0 -201
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/pathspec/README.md +0 -53
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
- data/man/man8/puppet-key.8 +0 -126
- data/man/man8/puppet-man.8 +0 -76
- data/man/man8/puppet-status.8 +0 -108
- 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/network/authconfig_spec.rb +0 -256
- 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/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/capability_spec.rb +0 -414
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/face/module/search_spec.rb +0 -231
- data/spec/unit/face/module_spec.rb +0 -3
- data/spec/unit/face/status_spec.rb +0 -9
- data/spec/unit/indirector/certificate/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
- data/spec/unit/indirector/key/file_spec.rb +0 -79
- data/spec/unit/indirector/ssl_file_spec.rb +0 -305
- data/spec/unit/indirector/status/local_spec.rb +0 -10
- data/spec/unit/indirector/status/rest_spec.rb +0 -50
- data/spec/unit/man_spec.rb +0 -31
- data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
- data/spec/unit/network/auth_config_parser_spec.rb +0 -115
- data/spec/unit/network/authstore_spec.rb +0 -422
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
- data/spec/unit/network/http/compression_spec.rb +0 -240
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
- data/spec/unit/network/http_spec.rb +0 -9
- data/spec/unit/network/rights_spec.rb +0 -439
- data/spec/unit/parser/environment_compiler_spec.rb +0 -730
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -143
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -650
- data/spec/unit/ssl/key_spec.rb +0 -173
- data/spec/unit/ssl/validator_spec.rb +0 -278
- data/spec/unit/status_spec.rb +0 -45
- data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'puppet/configurer'
|
3
|
-
require 'webmock/rspec'
|
4
3
|
|
5
4
|
describe Puppet::Configurer do
|
6
5
|
before do
|
@@ -85,6 +84,44 @@ describe Puppet::Configurer do
|
|
85
84
|
expect(configurer.run).to eq(0)
|
86
85
|
end
|
87
86
|
|
87
|
+
it "fails the run if pluginsync fails when usecacheonfailure is false" do
|
88
|
+
Puppet[:ignore_plugin_errors] = false
|
89
|
+
|
90
|
+
# --test implies these, set them so we don't fall back to a cached catalog
|
91
|
+
Puppet[:use_cached_catalog] = false
|
92
|
+
Puppet[:usecacheonfailure] = false
|
93
|
+
|
94
|
+
body = "{\"message\":\"Not Found: Could not find environment 'fasdfad'\",\"issue_kind\":\"RUNTIME_ERROR\"}"
|
95
|
+
stub_request(:get, %r{/puppet/v3/file_metadatas/pluginfacts}).to_return(
|
96
|
+
status: 404, body: body, headers: {'Content-Type' => 'application/json'}
|
97
|
+
)
|
98
|
+
stub_request(:get, %r{/puppet/v3/file_metadata/pluginfacts}).to_return(
|
99
|
+
status: 404, body: body, headers: {'Content-Type' => 'application/json'}
|
100
|
+
)
|
101
|
+
|
102
|
+
configurer.run(pluginsync: true)
|
103
|
+
|
104
|
+
expect(@logs).to include(an_object_having_attributes(level: :err, message: %r{Failed to apply catalog: Failed to retrieve pluginfacts: Could not retrieve information from environment production source\(s\) puppet:///pluginfacts}))
|
105
|
+
end
|
106
|
+
|
107
|
+
it "applies a cached catalog if pluginsync fails when usecacheonfailure is true" do
|
108
|
+
Puppet[:ignore_plugin_errors] = false
|
109
|
+
|
110
|
+
Puppet[:use_cached_catalog] = false
|
111
|
+
Puppet[:usecacheonfailure] = true
|
112
|
+
|
113
|
+
body = "{\"message\":\"Not Found: Could not find environment 'fasdfad'\",\"issue_kind\":\"RUNTIME_ERROR\"}"
|
114
|
+
stub_request(:get, %r{/puppet/v3/file_metadatas/pluginfacts}).to_return(
|
115
|
+
status: 404, body: body, headers: {'Content-Type' => 'application/json'}
|
116
|
+
)
|
117
|
+
stub_request(:get, %r{/puppet/v3/file_metadata/pluginfacts}).to_return(
|
118
|
+
status: 404, body: body, headers: {'Content-Type' => 'application/json'}
|
119
|
+
)
|
120
|
+
|
121
|
+
expect(configurer.run(pluginsync: true, :report => report)).to eq(0)
|
122
|
+
expect(report.cached_catalog_status).to eq('on_failure')
|
123
|
+
end
|
124
|
+
|
88
125
|
it "applies a cached catalog when it can't connect to the master" do
|
89
126
|
error = Errno::ECONNREFUSED.new('Connection refused - connect(2)')
|
90
127
|
|
@@ -96,7 +133,8 @@ describe Puppet::Configurer do
|
|
96
133
|
end
|
97
134
|
|
98
135
|
it "should initialize a transaction report if one is not provided" do
|
99
|
-
|
136
|
+
# host and settings catalogs each create a report...
|
137
|
+
expect(Puppet::Transaction::Report).to receive(:new).and_return(report).twice
|
100
138
|
|
101
139
|
configurer.run
|
102
140
|
end
|
@@ -192,22 +230,21 @@ describe Puppet::Configurer do
|
|
192
230
|
end
|
193
231
|
|
194
232
|
it "should remove the report as a log destination when the run is finished" do
|
195
|
-
|
196
|
-
|
197
|
-
configurer.run
|
233
|
+
configurer.run(report: report)
|
198
234
|
|
199
235
|
expect(Puppet::Util::Log.destinations).not_to include(report)
|
200
236
|
end
|
201
237
|
|
202
|
-
it "should return
|
203
|
-
|
204
|
-
|
238
|
+
it "should return an exit status of 2 due to the notify resource 'changing'" do
|
239
|
+
cat = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote(Puppet[:environment].to_sym))
|
240
|
+
cat.add_resource(Puppet::Type.type(:notify).new(:name => 'something changed'))
|
205
241
|
|
206
|
-
expect(configurer.run).to eq(
|
242
|
+
expect(configurer.run(catalog: cat, report: report)).to eq(2)
|
207
243
|
end
|
208
244
|
|
209
245
|
it "should return nil if catalog application fails" do
|
210
|
-
|
246
|
+
expect(catalog).to receive(:apply).and_raise(Puppet::Error, 'One or more resource dependency cycles detected in graph')
|
247
|
+
|
211
248
|
expect(configurer.run(catalog: catalog, report: report)).to be_nil
|
212
249
|
end
|
213
250
|
|
@@ -222,34 +259,28 @@ describe Puppet::Configurer do
|
|
222
259
|
end
|
223
260
|
|
224
261
|
it "should include the pre-run command failure in the report" do
|
225
|
-
expect(Puppet::Transaction::Report).to receive(:new).and_return(report)
|
226
|
-
|
227
262
|
Puppet.settings[:prerun_command] = "/my/command"
|
228
263
|
expect(Puppet::Util::Execution).to receive(:execute).with(["/my/command"]).and_raise(Puppet::ExecutionFailure, "Failed")
|
229
264
|
|
230
|
-
expect(configurer.run).to be_nil
|
265
|
+
expect(configurer.run(report: report)).to be_nil
|
231
266
|
expect(report.logs.find { |x| x.message =~ /Could not run command from prerun_command/ }).to be
|
232
267
|
end
|
233
268
|
|
234
269
|
it "should send the transaction report even if the post-run command fails" do
|
235
|
-
expect(Puppet::Transaction::Report).to receive(:new).and_return(report)
|
236
|
-
|
237
270
|
Puppet.settings[:postrun_command] = "/my/command"
|
238
271
|
expect(Puppet::Util::Execution).to receive(:execute).with(["/my/command"]).and_raise(Puppet::ExecutionFailure, "Failed")
|
239
272
|
expect(configurer).to receive(:send_report).with(report)
|
240
273
|
|
241
|
-
expect(configurer.run).to be_nil
|
274
|
+
expect(configurer.run(report: report)).to be_nil
|
242
275
|
end
|
243
276
|
|
244
277
|
it "should include the post-run command failure in the report" do
|
245
|
-
expect(Puppet::Transaction::Report).to receive(:new).and_return(report)
|
246
|
-
|
247
278
|
Puppet.settings[:postrun_command] = "/my/command"
|
248
279
|
expect(Puppet::Util::Execution).to receive(:execute).with(["/my/command"]).and_raise(Puppet::ExecutionFailure, "Failed")
|
249
280
|
|
250
281
|
expect(report).to receive(:<<) { |log, _| expect(log.message).to match(/Could not run command from postrun_command/) }.at_least(:once)
|
251
282
|
|
252
|
-
expect(configurer.run).to be_nil
|
283
|
+
expect(configurer.run(report: report)).to be_nil
|
253
284
|
end
|
254
285
|
|
255
286
|
it "should execute post-run command even if the pre-run command fails" do
|
@@ -262,34 +293,28 @@ describe Puppet::Configurer do
|
|
262
293
|
end
|
263
294
|
|
264
295
|
it "should finalize the report" do
|
265
|
-
expect(Puppet::Transaction::Report).to receive(:new).and_return(report)
|
266
|
-
|
267
296
|
expect(report).to receive(:finalize_report)
|
268
|
-
configurer.run
|
297
|
+
configurer.run(report: report)
|
269
298
|
end
|
270
299
|
|
271
300
|
it "should not apply the catalog if the pre-run command fails" do
|
272
|
-
expect(Puppet::Transaction::Report).to receive(:new).and_return(report)
|
273
|
-
|
274
301
|
Puppet.settings[:prerun_command] = "/my/command"
|
275
302
|
expect(Puppet::Util::Execution).to receive(:execute).with(["/my/command"]).and_raise(Puppet::ExecutionFailure, "Failed")
|
276
303
|
|
277
304
|
expect_any_instance_of(Puppet::Resource::Catalog).not_to receive(:apply)
|
278
305
|
expect(configurer).to receive(:send_report)
|
279
306
|
|
280
|
-
expect(configurer.run).to be_nil
|
307
|
+
expect(configurer.run(report: report)).to be_nil
|
281
308
|
end
|
282
309
|
|
283
310
|
it "should apply the catalog, send the report, and return nil if the post-run command fails" do
|
284
|
-
expect(Puppet::Transaction::Report).to receive(:new).and_return(report)
|
285
|
-
|
286
311
|
Puppet.settings[:postrun_command] = "/my/command"
|
287
312
|
expect(Puppet::Util::Execution).to receive(:execute).with(["/my/command"]).and_raise(Puppet::ExecutionFailure, "Failed")
|
288
313
|
|
289
314
|
expect_any_instance_of(Puppet::Resource::Catalog).to receive(:apply)
|
290
315
|
expect(configurer).to receive(:send_report)
|
291
316
|
|
292
|
-
expect(configurer.run).to be_nil
|
317
|
+
expect(configurer.run(report: report)).to be_nil
|
293
318
|
end
|
294
319
|
|
295
320
|
it 'includes total time metrics in the report after successfully applying the catalog' do
|
@@ -359,7 +384,7 @@ describe Puppet::Configurer do
|
|
359
384
|
|
360
385
|
it "sets the checksum_type query param to the default supported_checksum_types in a catalog request" do
|
361
386
|
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything,
|
362
|
-
hash_including(checksum_type: '
|
387
|
+
hash_including(checksum_type: 'sha256.sha384.sha512.sha224.md5'))
|
363
388
|
configurer.run
|
364
389
|
end
|
365
390
|
|
@@ -546,6 +571,15 @@ describe Puppet::Configurer do
|
|
546
571
|
end
|
547
572
|
end
|
548
573
|
|
574
|
+
def expects_pluginsync
|
575
|
+
metadata = "[{\"path\":\"/etc/puppetlabs/code\",\"relative_path\":\".\",\"links\":\"follow\",\"owner\":0,\"group\":0,\"mode\":420,\"checksum\":{\"type\":\"ctime\",\"value\":\"{ctime}2020-07-10 14:00:00 -0700\"},\"type\":\"directory\",\"destination\":null}]"
|
576
|
+
stub_request(:get, %r{/puppet/v3/file_metadatas/(plugins|locales)}).to_return(status: 200, body: metadata, headers: {'Content-Type' => 'application/json'})
|
577
|
+
|
578
|
+
# response retains owner/group/mode due to source_permissions => use
|
579
|
+
facts_metadata = "[{\"path\":\"/etc/puppetlabs/code\",\"relative_path\":\".\",\"links\":\"follow\",\"owner\":500,\"group\":500,\"mode\":493,\"checksum\":{\"type\":\"ctime\",\"value\":\"{ctime}2020-07-10 14:00:00 -0700\"},\"type\":\"directory\",\"destination\":null}]"
|
580
|
+
stub_request(:get, %r{/puppet/v3/file_metadatas/pluginfacts}).to_return(status: 200, body: facts_metadata, headers: {'Content-Type' => 'application/json'})
|
581
|
+
end
|
582
|
+
|
549
583
|
def expects_new_catalog_only(catalog)
|
550
584
|
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_cache: true)).and_return(catalog)
|
551
585
|
expect(Puppet::Resource::Catalog.indirection).not_to receive(:find).with(anything, hash_including(ignore_terminus: true))
|
@@ -562,6 +596,7 @@ describe Puppet::Configurer do
|
|
562
596
|
end
|
563
597
|
|
564
598
|
def expects_fallback_to_new_catalog(catalog)
|
599
|
+
expects_pluginsync
|
565
600
|
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_terminus: true)).and_return(nil)
|
566
601
|
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_cache: true)).and_return(catalog)
|
567
602
|
end
|
@@ -598,7 +633,6 @@ describe Puppet::Configurer do
|
|
598
633
|
it "should make a node request and pluginsync when a cached catalog cannot be retrieved" do
|
599
634
|
expect(Puppet::Node.indirection).to receive(:find).and_return(nil)
|
600
635
|
expects_fallback_to_new_catalog(catalog)
|
601
|
-
expect(configurer).to receive(:download_plugins)
|
602
636
|
|
603
637
|
configurer.run
|
604
638
|
end
|
@@ -623,6 +657,8 @@ describe Puppet::Configurer do
|
|
623
657
|
end
|
624
658
|
|
625
659
|
it "should pluginsync and compile a new catalog if none is found in the cache" do
|
660
|
+
Puppet[:ignore_plugin_errors] = true
|
661
|
+
|
626
662
|
expects_fallback_to_new_catalog(catalog)
|
627
663
|
stub_request(:get, %r{/puppet/v3/file_metadatas?/plugins}).to_return(:status => 404)
|
628
664
|
stub_request(:get, %r{/puppet/v3/file_metadatas?/pluginfacts}).to_return(:status => 404)
|
@@ -634,8 +670,11 @@ describe Puppet::Configurer do
|
|
634
670
|
end
|
635
671
|
|
636
672
|
it "should not attempt to retrieve a cached catalog again if the first attempt failed" do
|
673
|
+
Puppet[:ignore_plugin_errors] = true
|
674
|
+
|
637
675
|
expect(Puppet::Node.indirection).to receive(:find).and_return(nil)
|
638
676
|
expects_neither_new_or_cached_catalog
|
677
|
+
expects_pluginsync
|
639
678
|
|
640
679
|
# after failing to use a cached catalog, we'll need to pluginsync before getting
|
641
680
|
# a new catalog, which also fails.
|
@@ -656,8 +695,7 @@ describe Puppet::Configurer do
|
|
656
695
|
end
|
657
696
|
|
658
697
|
it "applies the catalog passed as options when the catalog cache terminus is not set" do
|
659
|
-
|
660
|
-
stub_request(:get, %r{/puppet/v3/file_metadatas?/pluginfacts}).to_return(:status => 404)
|
698
|
+
expects_pluginsync
|
661
699
|
|
662
700
|
catalog.add_resource(Puppet::Resource.new('notify', 'from apply'))
|
663
701
|
configurer.run(catalog: catalog.to_ral)
|
@@ -1005,35 +1043,49 @@ describe Puppet::Configurer do
|
|
1005
1043
|
it "should select a server when it receives 200 OK response" do
|
1006
1044
|
Puppet.settings[:server_list] = ["myserver:123"]
|
1007
1045
|
|
1008
|
-
stub_request(:get, 'https://myserver:123/status/v1/simple/
|
1046
|
+
stub_request(:get, 'https://myserver:123/status/v1/simple/server').to_return(status: 200)
|
1009
1047
|
|
1010
1048
|
options = {}
|
1011
1049
|
configurer.run(options)
|
1012
|
-
expect(options[:report].
|
1050
|
+
expect(options[:report].server_used).to eq('myserver:123')
|
1013
1051
|
end
|
1014
1052
|
|
1015
|
-
it "should report when
|
1053
|
+
it "should report when usecacheonfailure is false and server is unavailable" do
|
1016
1054
|
Puppet.settings[:server_list] = ["myserver:123"]
|
1055
|
+
Puppet[:usecacheonfailure] = false
|
1017
1056
|
|
1018
|
-
stub_request(:get, 'https://myserver:123/status/v1/simple/
|
1019
|
-
|
1020
|
-
allow(Puppet).to receive(:debug)
|
1021
|
-
expect(Puppet).to receive(:debug).with("Puppet server myserver:123 is unavailable: 500 Internal Server Error")
|
1057
|
+
stub_request(:get, 'https://myserver:123/status/v1/simple/server').to_return(status: [500, "Internal Server Error"])
|
1022
1058
|
|
1023
1059
|
expect {
|
1024
1060
|
configurer.run
|
1025
|
-
}.to raise_error(Puppet::Error, /Could not select a functional puppet
|
1061
|
+
}.to raise_error(Puppet::Error, /Could not select a functional puppet server from server_list:/)
|
1062
|
+
|
1063
|
+
expect(@logs).to include(an_object_having_attributes(level: :err, message: /Puppet server myserver:123 is unavailable: 500 Internal Server Error/))
|
1026
1064
|
end
|
1027
1065
|
|
1028
1066
|
it "should error when no servers in 'server_list' are reachable" do
|
1029
1067
|
Puppet.settings[:server_list] = "myserver:123,someotherservername"
|
1068
|
+
Puppet[:usecacheonfailure] = false
|
1030
1069
|
|
1031
|
-
stub_request(:get, 'https://myserver:123/status/v1/simple/
|
1032
|
-
stub_request(:get, 'https://someotherservername:8140/status/v1/simple/
|
1070
|
+
stub_request(:get, 'https://myserver:123/status/v1/simple/server').to_return(status: 400)
|
1071
|
+
stub_request(:get, 'https://someotherservername:8140/status/v1/simple/server').to_return(status: 400)
|
1033
1072
|
|
1034
1073
|
expect{
|
1035
1074
|
configurer.run
|
1036
|
-
}.to raise_error(Puppet::Error, /Could not select a functional puppet
|
1075
|
+
}.to raise_error(Puppet::Error, /Could not select a functional puppet server from server_list: 'myserver:123,someotherservername'/)
|
1076
|
+
end
|
1077
|
+
|
1078
|
+
it "should not error when usecacheonfailure is true and no servers in 'server_list' are reachable" do
|
1079
|
+
Puppet.settings[:server_list] = "myserver:123,someotherservername"
|
1080
|
+
Puppet[:usecacheonfailure] = true
|
1081
|
+
|
1082
|
+
stub_request(:get, 'https://myserver:123/status/v1/simple/server').to_return(status: 400)
|
1083
|
+
stub_request(:get, 'https://someotherservername:8140/status/v1/simple/server').to_return(status: 400)
|
1084
|
+
|
1085
|
+
options = {}
|
1086
|
+
|
1087
|
+
expect(configurer.run(options)).to eq(0)
|
1088
|
+
expect(options[:report].server_used).to be_nil
|
1037
1089
|
end
|
1038
1090
|
|
1039
1091
|
it "should not make multiple node requests when the server is found" do
|
@@ -1042,7 +1094,7 @@ describe Puppet::Configurer do
|
|
1042
1094
|
Puppet::Node.indirection.terminus_class = :rest
|
1043
1095
|
Puppet::Resource::Catalog.indirection.terminus_class = :rest
|
1044
1096
|
|
1045
|
-
stub_request(:get, 'https://myserver:123/status/v1/simple/
|
1097
|
+
stub_request(:get, 'https://myserver:123/status/v1/simple/server').to_return(status: 200)
|
1046
1098
|
stub_request(:post, %r{https://myserver:123/puppet/v3/catalog}).to_return(status: 200)
|
1047
1099
|
node_request = stub_request(:get, %r{https://myserver:123/puppet/v3/node/}).to_return(status: 200)
|
1048
1100
|
|
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
|
@@ -4,11 +4,7 @@ require 'puppet/certificate_factory'
|
|
4
4
|
require 'puppet/context/trusted_information'
|
5
5
|
|
6
6
|
describe Puppet::Context::TrustedInformation, :unless => RUBY_PLATFORM == 'java' do
|
7
|
-
let(:key)
|
8
|
-
key = Puppet::SSL::Key.new("myname")
|
9
|
-
key.generate
|
10
|
-
key
|
11
|
-
end
|
7
|
+
let(:key) { OpenSSL::PKey::RSA.new(Puppet[:keylength]) }
|
12
8
|
|
13
9
|
let(:csr) do
|
14
10
|
csr = Puppet::SSL::CertificateRequest.new("csr")
|
@@ -26,7 +22,7 @@ describe Puppet::Context::TrustedInformation, :unless => RUBY_PLATFORM == 'java'
|
|
26
22
|
|
27
23
|
# The cert must be signed so that it can be successfully be DER-decoded later
|
28
24
|
signer = Puppet::SSL::CertificateSigner.new
|
29
|
-
signer.sign(cert.content, key
|
25
|
+
signer.sign(cert.content, key)
|
30
26
|
cert
|
31
27
|
end
|
32
28
|
|
data/spec/unit/defaults_spec.rb
CHANGED
@@ -65,9 +65,9 @@ describe "Defaults" do
|
|
65
65
|
end
|
66
66
|
|
67
67
|
describe '.default_digest_algorithm' do
|
68
|
-
it 'defaults to
|
68
|
+
it 'defaults to sha256 when FIPS is not enabled' do
|
69
69
|
allow(Puppet::Util::Platform).to receive(:fips_enabled?).and_return(false)
|
70
|
-
expect(Puppet.default_digest_algorithm).to eq('
|
70
|
+
expect(Puppet.default_digest_algorithm).to eq('sha256')
|
71
71
|
end
|
72
72
|
|
73
73
|
it 'defaults to sha256 when FIPS is enabled' do
|
@@ -77,9 +77,9 @@ describe "Defaults" do
|
|
77
77
|
end
|
78
78
|
|
79
79
|
describe '.supported_checksum_types' do
|
80
|
-
it 'defaults to
|
80
|
+
it 'defaults to sha256, sha384, sha512, sha224, md5 when FIPS is not enabled' do
|
81
81
|
allow(Puppet::Util::Platform).to receive(:fips_enabled?).and_return(false)
|
82
|
-
expect(Puppet.default_file_checksum_types).to eq(%w[
|
82
|
+
expect(Puppet.default_file_checksum_types).to eq(%w[sha256 sha384 sha512 sha224 md5])
|
83
83
|
end
|
84
84
|
|
85
85
|
it 'defaults to sha256, sha384, sha512, sha224 when FIPS is enabled' do
|
@@ -89,8 +89,8 @@ describe "Defaults" do
|
|
89
89
|
end
|
90
90
|
|
91
91
|
describe 'Puppet[:supported_checksum_types]' do
|
92
|
-
it 'defaults to
|
93
|
-
expect(Puppet.settings[:supported_checksum_types]).to eq(%w[
|
92
|
+
it 'defaults to sha256, sha512, sha384, sha224, md5' do
|
93
|
+
expect(Puppet.settings[:supported_checksum_types]).to eq(%w[sha256 sha384 sha512 sha224 md5])
|
94
94
|
end
|
95
95
|
|
96
96
|
it 'should raise an error on an unsupported checksum type' do
|
@@ -182,37 +182,31 @@ describe "Defaults" do
|
|
182
182
|
end
|
183
183
|
end
|
184
184
|
|
185
|
-
describe "
|
186
|
-
it
|
187
|
-
expect(Puppet
|
188
|
-
end
|
189
|
-
|
190
|
-
it "raises an exception if facter-ng could not be loaded" do
|
191
|
-
allow_any_instance_of(Puppet::Settings::BooleanSetting).to receive(:require).with('facter-ng').and_raise(LoadError)
|
185
|
+
describe "deprecated settings" do
|
186
|
+
it 'does not issue a deprecation warning by default' do
|
187
|
+
expect(Puppet).to receive(:deprecation_warning).never
|
192
188
|
|
193
|
-
|
189
|
+
Puppet.initialize_settings
|
194
190
|
end
|
191
|
+
end
|
195
192
|
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
Object.const_set(:Facter, Module.new)
|
202
|
-
|
203
|
-
allow_any_instance_of(Puppet::Settings::BooleanSetting).to receive(:require).with('facter-ng').and_return(true)
|
204
|
-
allow(Facter).to receive(:respond_to?).and_return(false)
|
205
|
-
end
|
193
|
+
describe "the default cadir", :unless => Puppet::Util::Platform.windows? do
|
194
|
+
it 'defaults to the puppetserver confdir when no cadir is found' do
|
195
|
+
Puppet.initialize_settings
|
196
|
+
expect(Puppet[:cadir]).to eq('/etc/puppetlabs/puppetserver/ca')
|
197
|
+
end
|
206
198
|
|
207
|
-
|
208
|
-
|
209
|
-
|
199
|
+
it 'returns an empty string for Windows platforms', :if => Puppet::Util::Platform.windows? do
|
200
|
+
Puppet.initialize_settings
|
201
|
+
expect(Puppet[:cadir]).to eq("")
|
202
|
+
end
|
203
|
+
end
|
210
204
|
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
205
|
+
describe '#default_cadir', :unless => Puppet::Util::Platform.windows? do
|
206
|
+
it 'warns when a CA dir exists in the current ssldir' do
|
207
|
+
cadir = File.join(Puppet[:ssldir], 'ca')
|
208
|
+
FileUtils.mkdir_p(cadir)
|
209
|
+
expect(Puppet.default_cadir).to eq(cadir)
|
216
210
|
end
|
217
211
|
end
|
218
212
|
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,82 @@ 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
|
+
it "notifies when the environment is first created" do
|
633
|
+
with_environment_loaded(service)
|
634
|
+
|
635
|
+
expect(service.created_envs).to eq([:an_environment])
|
636
|
+
end
|
637
|
+
|
638
|
+
it "does not evict an unexpired environment" do
|
639
|
+
Puppet[:environment_timeout] = 'unlimited'
|
640
|
+
|
641
|
+
with_environment_loaded(service) do |cached|
|
642
|
+
cached.get!(:an_environment)
|
643
|
+
end
|
644
|
+
|
645
|
+
expect(service.created_envs).to eq([:an_environment])
|
646
|
+
expect(service.evicted_envs).to eq([])
|
647
|
+
end
|
648
|
+
|
649
|
+
it "evicts an expired environment" do
|
650
|
+
service = ReplayExpirationService.new
|
651
|
+
|
652
|
+
expect(service).to receive(:expired?).and_return(true)
|
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, :an_environment])
|
659
|
+
expect(service.evicted_envs).to eq([:an_environment])
|
660
|
+
end
|
661
|
+
|
662
|
+
it "evicts an environment that hasn't been recently touched" do
|
663
|
+
Puppet[:environment_timeout] = 1
|
664
|
+
|
665
|
+
with_environment_loaded(service) do |cached|
|
666
|
+
future = Time.now + 60
|
667
|
+
expect(Time).to receive(:now).and_return(future).at_least(:once)
|
668
|
+
|
669
|
+
# this should cause the cached environment to be evicted and a new one created
|
670
|
+
cached.get!(:an_environment)
|
671
|
+
end
|
672
|
+
|
673
|
+
expect(service.created_envs).to eq([:an_environment, :an_environment])
|
674
|
+
expect(service.evicted_envs).to eq([:an_environment])
|
675
|
+
|
676
|
+
end
|
677
|
+
|
678
|
+
it "reuses an environment that was recently touched" do
|
679
|
+
Puppet[:environment_timeout] = 60
|
680
|
+
|
681
|
+
with_environment_loaded(service) do |cached|
|
682
|
+
# reuse the already cached environment
|
683
|
+
cached.get!(:an_environment)
|
684
|
+
end
|
685
|
+
|
686
|
+
expect(service.created_envs).to eq([:an_environment])
|
687
|
+
expect(service.evicted_envs).to eq([])
|
688
|
+
end
|
689
|
+
|
690
|
+
it "evicts a recently touched environment" do
|
691
|
+
Puppet[:environment_timeout] = 60
|
692
|
+
|
693
|
+
expect(service).to receive(:expired?).and_return(true)
|
694
|
+
|
695
|
+
with_environment_loaded(service) do |cached|
|
696
|
+
# even though the environment was recently touched, it's been expired
|
697
|
+
cached.get!(:an_environment)
|
698
|
+
end
|
699
|
+
|
700
|
+
expect(service.created_envs).to eq([:an_environment, :an_environment])
|
701
|
+
expect(service.evicted_envs).to eq([:an_environment])
|
702
|
+
end
|
703
|
+
end
|
704
|
+
|
648
705
|
it "gets an environment.conf" do
|
649
706
|
loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
650
707
|
expect(Puppet::Environments::Cached.new(loader).get_conf(:an_environment)).to match_environment_conf(:an_environment).
|
@@ -652,6 +709,87 @@ config_version=$vardir/random/scripts
|
|
652
709
|
with_global_module_path([])
|
653
710
|
end
|
654
711
|
end
|
712
|
+
|
713
|
+
context '#clear' do
|
714
|
+
let(:service) { ReplayExpirationService.new }
|
715
|
+
|
716
|
+
it "evicts an environment" do
|
717
|
+
with_environment_loaded(service) do |cached|
|
718
|
+
cached.clear(:an_environment)
|
719
|
+
end
|
720
|
+
|
721
|
+
expect(service.evicted_envs).to eq([:an_environment])
|
722
|
+
end
|
723
|
+
end
|
724
|
+
|
725
|
+
context '#clear_all' do
|
726
|
+
let(:service) { ReplayExpirationService.new }
|
727
|
+
|
728
|
+
it 'evicts all environments' do
|
729
|
+
with_environment_loaded(service) do |cached|
|
730
|
+
cached.get(:an_environment)
|
731
|
+
cached.get(:another_environment)
|
732
|
+
cached.clear_all
|
733
|
+
|
734
|
+
expect(service.evicted_envs).to match([:an_environment, :another_environment])
|
735
|
+
end
|
736
|
+
end
|
737
|
+
|
738
|
+
it 'clears cached environment settings' do
|
739
|
+
base_dir = File.expand_path("envdir")
|
740
|
+
original_envdir = FS::MemoryFile.a_directory(base_dir, [
|
741
|
+
FS::MemoryFile.a_directory("env3", [
|
742
|
+
FS::MemoryFile.a_regular_file_containing("environment.conf", <<-EOF)
|
743
|
+
manifest=/manifest_orig
|
744
|
+
modulepath=/modules_orig
|
745
|
+
environment_timeout=60
|
746
|
+
EOF
|
747
|
+
]),
|
748
|
+
])
|
749
|
+
|
750
|
+
FS.overlay(original_envdir) do
|
751
|
+
dir_loader = Puppet::Environments::Directories.new(original_envdir, [])
|
752
|
+
loader = Puppet::Environments::Cached.new(dir_loader)
|
753
|
+
Puppet.override(:environments => loader) do
|
754
|
+
original_env = loader.get("env3") # force the environment.conf to be read
|
755
|
+
|
756
|
+
changed_envdir = FS::MemoryFile.a_directory(base_dir, [
|
757
|
+
FS::MemoryFile.a_directory("env3", [
|
758
|
+
FS::MemoryFile.a_regular_file_containing("environment.conf", <<-EOF)
|
759
|
+
manifest=/manifest_changed
|
760
|
+
modulepath=/modules_changed
|
761
|
+
environment_timeout=60
|
762
|
+
EOF
|
763
|
+
]),
|
764
|
+
])
|
765
|
+
|
766
|
+
#Clear all cached environments
|
767
|
+
loader.clear_all
|
768
|
+
|
769
|
+
FS.overlay(changed_envdir) do
|
770
|
+
changed_env = loader.get("env3")
|
771
|
+
|
772
|
+
expect(original_env).to environment(:env3).
|
773
|
+
with_manifest(File.expand_path("/manifest_orig")).
|
774
|
+
with_full_modulepath([File.expand_path("/modules_orig")])
|
775
|
+
|
776
|
+
expect(changed_env).to environment(:env3).
|
777
|
+
with_manifest(File.expand_path("/manifest_changed")).
|
778
|
+
with_full_modulepath([File.expand_path("/modules_changed")])
|
779
|
+
end
|
780
|
+
end
|
781
|
+
end
|
782
|
+
end
|
783
|
+
|
784
|
+
it 'deletes environment text domains' do
|
785
|
+
with_environment_loaded(service) do |cached|
|
786
|
+
cached.get(:an_environment)
|
787
|
+
cached.clear_all
|
788
|
+
|
789
|
+
expect(FastGettext.text_domain).to eq(Puppet::GettextConfig::DEFAULT_TEXT_DOMAIN)
|
790
|
+
end
|
791
|
+
end
|
792
|
+
end
|
655
793
|
end
|
656
794
|
|
657
795
|
RSpec::Matchers.define :environment do |name|
|
@@ -746,31 +884,34 @@ config_version=$vardir/random/scripts
|
|
746
884
|
end
|
747
885
|
end
|
748
886
|
|
749
|
-
|
750
|
-
|
887
|
+
# The environment named `:an_environment` will already be loaded when the
|
888
|
+
# block is yielded to
|
889
|
+
def with_environment_loaded(service, &block)
|
890
|
+
loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
891
|
+
using_expiration_service(service) do
|
892
|
+
cached = Puppet::Environments::Cached.new(loader)
|
893
|
+
cached.get!(:an_environment)
|
751
894
|
|
752
|
-
|
895
|
+
yield cached if block_given?
|
896
|
+
end
|
897
|
+
end
|
898
|
+
end
|
899
|
+
|
900
|
+
class ReplayExpirationService < Puppet::Environments::Cached::DefaultCacheExpirationService
|
901
|
+
attr_reader :created_envs, :evicted_envs
|
902
|
+
|
903
|
+
def initialize
|
753
904
|
@created_envs = []
|
754
|
-
@expired_envs = []
|
755
905
|
@evicted_envs = []
|
756
|
-
@expiration_sequence = expiration_sequence
|
757
906
|
end
|
758
907
|
|
759
908
|
def created(env)
|
760
909
|
@created_envs << env.name
|
761
910
|
end
|
762
911
|
|
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
912
|
def evicted(env_name)
|
771
913
|
@evicted_envs << env_name
|
772
914
|
end
|
773
915
|
end
|
774
|
-
|
775
916
|
end
|
776
917
|
end
|