puppet 6.22.1-x64-mingw32 → 6.25.1-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +5 -5
- data/Gemfile +2 -2
- data/Gemfile.lock +20 -20
- data/README.md +4 -4
- data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
- data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
- data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
- data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +0 -0
- data/{ext → examples}/nagios/check_puppet.rb +2 -2
- data/ext/README.md +13 -0
- data/ext/osx/puppet.plist +2 -0
- data/ext/project_data.yaml +1 -0
- data/lib/puppet/application/agent.rb +16 -5
- data/lib/puppet/application/apply.rb +22 -3
- data/lib/puppet/application/device.rb +2 -1
- data/lib/puppet/application/filebucket.rb +1 -0
- data/lib/puppet/application/resource.rb +32 -16
- data/lib/puppet/application/script.rb +2 -1
- data/lib/puppet/application/ssl.rb +1 -0
- data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
- data/lib/puppet/configurer/downloader.rb +2 -1
- data/lib/puppet/configurer.rb +144 -56
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/defaults.rb +47 -33
- data/lib/puppet/environments.rb +75 -25
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/help/action.erb +1 -0
- data/lib/puppet/face/help/face.erb +1 -0
- data/lib/puppet/face/node/clean.rb +11 -0
- data/lib/puppet/facter_impl.rb +96 -0
- data/lib/puppet/file_serving/configuration/parser.rb +2 -0
- data/lib/puppet/file_serving/configuration.rb +3 -0
- data/lib/puppet/file_serving/fileset.rb +14 -2
- data/lib/puppet/file_serving/mount/file.rb +4 -4
- data/lib/puppet/file_serving/mount/scripts.rb +24 -0
- data/lib/puppet/file_system/file_impl.rb +3 -1
- data/lib/puppet/file_system/windows.rb +2 -2
- data/lib/puppet/forge.rb +4 -4
- data/lib/puppet/functions/all.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/capitalize.rb +2 -2
- data/lib/puppet/functions/downcase.rb +2 -2
- data/lib/puppet/functions/empty.rb +8 -0
- data/lib/puppet/functions/find_template.rb +2 -2
- data/lib/puppet/functions/get.rb +5 -5
- data/lib/puppet/functions/group_by.rb +13 -5
- data/lib/puppet/functions/lest.rb +1 -1
- data/lib/puppet/functions/new.rb +100 -100
- data/lib/puppet/functions/partition.rb +4 -4
- data/lib/puppet/functions/require.rb +5 -5
- data/lib/puppet/functions/sort.rb +3 -3
- data/lib/puppet/functions/strftime.rb +1 -0
- data/lib/puppet/functions/tree_each.rb +7 -9
- data/lib/puppet/functions/type.rb +4 -4
- data/lib/puppet/functions/unwrap.rb +17 -2
- data/lib/puppet/functions/upcase.rb +2 -2
- data/lib/puppet/http/client.rb +1 -1
- data/lib/puppet/http/redirector.rb +5 -0
- data/lib/puppet/http/resolver/server_list.rb +15 -4
- data/lib/puppet/http/service/compiler.rb +75 -1
- data/lib/puppet/http/service/file_server.rb +2 -1
- data/lib/puppet/indirector/catalog/compiler.rb +25 -6
- data/lib/puppet/indirector/catalog/rest.rb +1 -0
- data/lib/puppet/indirector/facts/facter.rb +6 -6
- data/lib/puppet/indirector/file_metadata/rest.rb +1 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/resource/ral.rb +6 -1
- data/lib/puppet/indirector/terminus.rb +4 -0
- data/lib/puppet/interface/documentation.rb +1 -0
- data/lib/puppet/module/plan.rb +0 -1
- data/lib/puppet/module/task.rb +1 -1
- data/lib/puppet/module.rb +1 -0
- data/lib/puppet/module_tool/applications/installer.rb +12 -4
- data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
- data/lib/puppet/module_tool/errors/shared.rb +17 -0
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/node/environment.rb +10 -11
- data/lib/puppet/pal/pal_impl.rb +1 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +14 -6
- data/lib/puppet/parser/resource.rb +1 -1
- data/lib/puppet/parser/scope.rb +1 -0
- data/lib/puppet/parser/templatewrapper.rb +1 -0
- data/lib/puppet/pops/evaluator/closure.rb +7 -5
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +1 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
- data/lib/puppet/pops/model/ast.rb +1 -0
- data/lib/puppet/pops/model/factory.rb +2 -1
- data/lib/puppet/pops/parser/eparser.rb +201 -201
- data/lib/puppet/pops/parser/lexer2.rb +92 -91
- data/lib/puppet/pops/parser/slurp_support.rb +1 -0
- data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
- data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -2
- data/lib/puppet/pops/types/p_sensitive_type.rb +10 -0
- data/lib/puppet/pops/types/type_formatter.rb +4 -3
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/provider/aix_object.rb +1 -1
- data/lib/puppet/provider/exec/posix.rb +16 -4
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/package/nim.rb +11 -6
- data/lib/puppet/provider/package/pip.rb +15 -3
- data/lib/puppet/provider/package/pkg.rb +19 -2
- data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +3 -0
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/init.rb +5 -5
- data/lib/puppet/provider/service/launchd.rb +2 -2
- data/lib/puppet/provider/service/redhat.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +15 -5
- data/lib/puppet/provider/service/upstart.rb +5 -5
- data/lib/puppet/provider/service/windows.rb +38 -0
- data/lib/puppet/provider/user/aix.rb +44 -1
- data/lib/puppet/provider/user/directoryservice.rb +26 -13
- data/lib/puppet/provider/user/useradd.rb +72 -16
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +2 -2
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/resource/type_collection.rb +1 -0
- data/lib/puppet/resource.rb +38 -5
- data/lib/puppet/runtime.rb +11 -1
- data/lib/puppet/settings.rb +32 -9
- data/lib/puppet/test/test_helper.rb +4 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +11 -1
- data/lib/puppet/transaction/report.rb +15 -1
- data/lib/puppet/type/exec.rb +35 -5
- data/lib/puppet/type/file/mode.rb +6 -0
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file.rb +25 -7
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/group.rb +0 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/service.rb +26 -41
- data/lib/puppet/type/tidy.rb +22 -3
- data/lib/puppet/type/user.rb +38 -21
- data/lib/puppet/type.rb +1 -1
- data/lib/puppet/util/command_line.rb +1 -1
- data/lib/puppet/util/filetype.rb +2 -2
- data/lib/puppet/util/json.rb +3 -0
- data/lib/puppet/util/log.rb +1 -2
- data/lib/puppet/util/logging.rb +1 -25
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- data/lib/puppet/util/selinux.rb +30 -4
- data/lib/puppet/util/suidmanager.rb +1 -2
- data/lib/puppet/util/symbolic_file_mode.rb +29 -17
- data/lib/puppet/util/tagging.rb +1 -0
- data/lib/puppet/util/windows/service.rb +0 -5
- data/lib/puppet/util/windows/sid.rb +3 -1
- data/lib/puppet/util/windows/user.rb +0 -2
- data/lib/puppet/util/windows.rb +3 -0
- data/lib/puppet/util.rb +4 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +5 -9
- data/locales/puppet.pot +408 -364
- data/man/man5/puppet.conf.5 +303 -275
- data/man/man8/puppet-agent.8 +4 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +9 -9
- data/man/man8/puppet-config.8 +1 -1
- 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 +8 -8
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +7 -7
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +3 -3
- data/man/man8/puppet-node.8 +5 -5
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +5 -5
- 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 +4 -4
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +2 -1
- data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
- data/spec/fixtures/ssl/127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/127.0.0.1.pem +52 -31
- data/spec/fixtures/ssl/bad-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/ca.pem +57 -35
- data/spec/fixtures/ssl/crl.pem +28 -18
- data/spec/fixtures/ssl/ec-key.pem +11 -11
- data/spec/fixtures/ssl/ec.pem +33 -24
- data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
- data/spec/fixtures/ssl/encrypted-key.pem +108 -58
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +28 -19
- data/spec/fixtures/ssl/intermediate-agent.pem +57 -36
- data/spec/fixtures/ssl/intermediate-crl.pem +31 -21
- data/spec/fixtures/ssl/intermediate.pem +57 -36
- data/spec/fixtures/ssl/oid-key.pem +117 -0
- data/spec/fixtures/ssl/oid.pem +69 -0
- data/spec/fixtures/ssl/pluto-key.pem +107 -57
- data/spec/fixtures/ssl/pluto.pem +52 -30
- data/spec/fixtures/ssl/request-key.pem +107 -57
- data/spec/fixtures/ssl/request.pem +47 -26
- data/spec/fixtures/ssl/revoked-key.pem +107 -57
- data/spec/fixtures/ssl/revoked.pem +52 -30
- data/spec/fixtures/ssl/signed-key.pem +107 -57
- data/spec/fixtures/ssl/signed.pem +52 -30
- data/spec/fixtures/ssl/tampered-cert.pem +52 -30
- data/spec/fixtures/ssl/tampered-csr.pem +47 -26
- data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +50 -29
- data/spec/fixtures/ssl/unknown-ca-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-ca.pem +55 -33
- data/spec/integration/application/agent_spec.rb +141 -37
- data/spec/integration/application/filebucket_spec.rb +16 -0
- data/spec/integration/application/module_spec.rb +21 -0
- data/spec/integration/application/resource_spec.rb +64 -0
- data/spec/integration/application/ssl_spec.rb +20 -0
- data/spec/integration/configurer_spec.rb +18 -2
- data/spec/integration/environments/settings_interpolation_spec.rb +0 -4
- data/spec/integration/indirector/facts/facter_spec.rb +93 -39
- data/spec/integration/l10n/compiler_spec.rb +37 -0
- data/spec/integration/parser/pcore_resource_spec.rb +10 -0
- data/spec/integration/transaction/report_spec.rb +1 -1
- data/spec/integration/type/exec_spec.rb +70 -45
- data/spec/integration/type/file_spec.rb +2 -2
- data/spec/integration/type/package_spec.rb +6 -6
- data/spec/integration/util/rdoc/parser_spec.rb +1 -1
- data/spec/integration/util/windows/process_spec.rb +1 -9
- data/spec/lib/puppet/test_ca.rb +7 -2
- data/spec/lib/puppet_spec/modules.rb +13 -2
- data/spec/lib/puppet_spec/puppetserver.rb +15 -0
- data/spec/lib/puppet_spec/settings.rb +1 -0
- data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
- data/spec/shared_contexts/l10n.rb +27 -0
- data/spec/spec_helper.rb +1 -10
- data/spec/unit/application/agent_spec.rb +7 -2
- data/spec/unit/application/apply_spec.rb +76 -56
- data/spec/unit/application/resource_spec.rb +29 -0
- data/spec/unit/configurer/downloader_spec.rb +6 -0
- data/spec/unit/configurer_spec.rb +256 -57
- data/spec/unit/defaults_spec.rb +1 -0
- data/spec/unit/environments_spec.rb +184 -0
- data/spec/unit/facter_impl_spec.rb +31 -0
- data/spec/unit/file_bucket/dipper_spec.rb +2 -2
- data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
- data/spec/unit/file_serving/configuration_spec.rb +14 -4
- data/spec/unit/file_serving/fileset_spec.rb +60 -0
- data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
- data/spec/unit/file_system_spec.rb +13 -0
- data/spec/unit/functions/assert_type_spec.rb +1 -1
- data/spec/unit/functions/empty_spec.rb +10 -0
- data/spec/unit/functions/logging_spec.rb +1 -0
- data/spec/unit/functions/lookup_spec.rb +64 -0
- data/spec/unit/functions/unwrap_spec.rb +8 -0
- data/spec/unit/functions4_spec.rb +2 -2
- data/spec/unit/gettext/config_spec.rb +12 -0
- data/spec/unit/http/client_spec.rb +58 -1
- data/spec/unit/http/service/compiler_spec.rb +131 -0
- data/spec/unit/indirector/catalog/compiler_spec.rb +101 -10
- data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
- data/spec/unit/indirector/indirection_spec.rb +10 -3
- data/spec/unit/indirector/resource/ral_spec.rb +40 -75
- data/spec/unit/interface/action_spec.rb +0 -9
- data/spec/unit/module_spec.rb +15 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +51 -12
- data/spec/unit/network/authstore_spec.rb +0 -15
- data/spec/unit/network/formats_spec.rb +6 -0
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -1
- data/spec/unit/parser/templatewrapper_spec.rb +12 -2
- data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
- data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +1 -1
- data/spec/unit/provider/package/nim_spec.rb +42 -0
- data/spec/unit/provider/package/pip2_spec.rb +1 -1
- data/spec/unit/provider/package/pip3_spec.rb +1 -1
- data/spec/unit/provider/package/pip_spec.rb +38 -1
- data/spec/unit/provider/package/pkg_spec.rb +29 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
- data/spec/unit/provider/parsedfile_spec.rb +10 -0
- data/spec/unit/provider/service/init_spec.rb +1 -0
- data/spec/unit/provider/service/launchd_spec.rb +11 -0
- data/spec/unit/provider/service/openwrt_spec.rb +3 -1
- data/spec/unit/provider/service/systemd_spec.rb +43 -9
- data/spec/unit/provider/service/windows_spec.rb +202 -0
- data/spec/unit/provider/user/aix_spec.rb +100 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +68 -36
- data/spec/unit/provider/user/useradd_spec.rb +43 -2
- data/spec/unit/provider_spec.rb +4 -4
- data/spec/unit/puppet_spec.rb +12 -4
- data/spec/unit/resource/catalog_spec.rb +14 -1
- data/spec/unit/resource_spec.rb +58 -2
- data/spec/unit/settings_spec.rb +97 -56
- data/spec/unit/ssl/certificate_request_spec.rb +8 -14
- data/spec/unit/ssl/state_machine_spec.rb +19 -5
- data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -2
- data/spec/unit/transaction_spec.rb +18 -20
- data/spec/unit/type/exec_spec.rb +76 -29
- data/spec/unit/type/file/selinux_spec.rb +3 -3
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/service_spec.rb +86 -188
- data/spec/unit/type/tidy_spec.rb +24 -7
- data/spec/unit/type/user_spec.rb +45 -0
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/logging_spec.rb +2 -0
- data/spec/unit/util/selinux_spec.rb +87 -16
- data/spec/unit/util/windows/sid_spec.rb +39 -4
- data/tasks/generate_cert_fixtures.rake +12 -3
- data/tasks/parallel.rake +3 -3
- metadata +49 -95
- data/ext/README.environment +0 -8
- data/ext/dbfix.sql +0 -132
- data/ext/debian/README.Debian +0 -8
- data/ext/debian/README.source +0 -2
- data/ext/debian/TODO.Debian +0 -1
- data/ext/debian/changelog.erb +0 -1122
- data/ext/debian/compat +0 -1
- data/ext/debian/control +0 -144
- data/ext/debian/copyright +0 -339
- data/ext/debian/docs +0 -1
- data/ext/debian/fileserver.conf +0 -41
- data/ext/debian/puppet-common.dirs +0 -13
- data/ext/debian/puppet-common.install +0 -3
- data/ext/debian/puppet-common.lintian-overrides +0 -5
- data/ext/debian/puppet-common.manpages +0 -28
- data/ext/debian/puppet-common.postinst +0 -35
- data/ext/debian/puppet-common.postrm +0 -33
- data/ext/debian/puppet-el.dirs +0 -1
- data/ext/debian/puppet-el.emacsen-install +0 -25
- data/ext/debian/puppet-el.emacsen-remove +0 -11
- data/ext/debian/puppet-el.emacsen-startup +0 -9
- data/ext/debian/puppet-el.install +0 -1
- data/ext/debian/puppet-testsuite.install +0 -2
- data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
- data/ext/debian/puppet.lintian-overrides +0 -3
- data/ext/debian/puppet.logrotate +0 -20
- data/ext/debian/puppet.postinst +0 -20
- data/ext/debian/puppet.postrm +0 -20
- data/ext/debian/puppet.preinst +0 -20
- data/ext/debian/puppetmaster-common.install +0 -2
- data/ext/debian/puppetmaster-common.manpages +0 -2
- data/ext/debian/puppetmaster-common.postinst +0 -6
- data/ext/debian/puppetmaster-passenger.dirs +0 -4
- data/ext/debian/puppetmaster-passenger.postinst +0 -162
- data/ext/debian/puppetmaster-passenger.postrm +0 -61
- data/ext/debian/puppetmaster.README.debian +0 -17
- data/ext/debian/puppetmaster.default +0 -14
- data/ext/debian/puppetmaster.init +0 -137
- data/ext/debian/puppetmaster.lintian-overrides +0 -3
- data/ext/debian/puppetmaster.postinst +0 -20
- data/ext/debian/puppetmaster.postrm +0 -5
- data/ext/debian/puppetmaster.preinst +0 -22
- data/ext/debian/rules +0 -132
- data/ext/debian/source/format +0 -1
- data/ext/debian/source/options +0 -1
- data/ext/debian/vim-puppet.README.Debian +0 -13
- data/ext/debian/vim-puppet.dirs +0 -5
- data/ext/debian/vim-puppet.yaml +0 -7
- data/ext/debian/watch +0 -2
- data/ext/freebsd/puppetd +0 -26
- data/ext/freebsd/puppetmasterd +0 -26
- data/ext/gentoo/conf.d/puppet +0 -5
- data/ext/gentoo/conf.d/puppetmaster +0 -12
- data/ext/gentoo/init.d/puppet +0 -38
- data/ext/gentoo/init.d/puppetmaster +0 -51
- data/ext/gentoo/puppet/fileserver.conf +0 -41
- data/ext/ips/puppet-agent +0 -44
- data/ext/ips/puppet-master +0 -44
- data/ext/ips/puppet.p5m.erb +0 -12
- data/ext/ips/puppetagent.xml +0 -42
- data/ext/ips/puppetmaster.xml +0 -42
- data/ext/ips/rules +0 -19
- data/ext/ips/transforms +0 -34
- data/ext/ldap/puppet.schema +0 -24
- data/ext/logcheck/puppet +0 -23
- data/ext/osx/file_mapping.yaml +0 -33
- data/ext/osx/postflight.erb +0 -109
- data/ext/osx/preflight.erb +0 -52
- data/ext/osx/prototype.plist.erb +0 -38
- data/ext/redhat/fileserver.conf +0 -41
- data/ext/redhat/logrotate +0 -21
- data/ext/redhat/puppet.spec.erb +0 -842
- data/ext/redhat/server.init +0 -128
- data/ext/redhat/server.sysconfig +0 -13
- data/ext/solaris/pkginfo +0 -6
- data/ext/solaris/smf/puppetd.xml +0 -77
- data/ext/solaris/smf/puppetmasterd.xml +0 -77
- data/ext/solaris/smf/svc-puppetd +0 -71
- data/ext/solaris/smf/svc-puppetmasterd +0 -67
- data/ext/suse/puppet.spec +0 -310
- data/ext/suse/server.init +0 -173
- data/ext/yaml_nodes.rb +0 -105
- data/spec/unit/indirector/store_configs_spec.rb +0 -7
@@ -2,11 +2,27 @@ require 'spec_helper'
|
|
2
2
|
require 'puppet/configurer'
|
3
3
|
|
4
4
|
describe Puppet::Configurer do
|
5
|
+
include PuppetSpec::Files
|
6
|
+
|
5
7
|
before do
|
6
8
|
Puppet[:server] = "puppetmaster"
|
7
9
|
Puppet[:report] = true
|
8
10
|
|
9
11
|
catalog.add_resource(resource)
|
12
|
+
allow_any_instance_of(described_class).to(
|
13
|
+
receive(:valid_server_environment?).and_return(true)
|
14
|
+
)
|
15
|
+
|
16
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', <<~SUMMARY)
|
17
|
+
---
|
18
|
+
version:
|
19
|
+
config: 1624882680
|
20
|
+
puppet: #{Puppet.version}
|
21
|
+
application:
|
22
|
+
initial_environment: #{Puppet[:environment]}
|
23
|
+
converged_environment: #{Puppet[:environment]}
|
24
|
+
run_mode: agent
|
25
|
+
SUMMARY
|
10
26
|
end
|
11
27
|
|
12
28
|
let(:node_name) { Puppet[:node_name_value] }
|
@@ -78,10 +94,10 @@ describe Puppet::Configurer do
|
|
78
94
|
configurer.run(:pluginsync => false)
|
79
95
|
end
|
80
96
|
|
81
|
-
it "
|
82
|
-
|
83
|
-
expect(
|
84
|
-
|
97
|
+
it "does not download plugins when specified environment is not vaild on server" do
|
98
|
+
expect(configurer).to receive(:valid_server_environment?).and_return(false)
|
99
|
+
expect(configurer).not_to receive(:download_plugins)
|
100
|
+
configurer.run(:pluginsync => true)
|
85
101
|
end
|
86
102
|
|
87
103
|
it "fails the run if pluginsync fails when usecacheonfailure is false" do
|
@@ -125,7 +141,6 @@ describe Puppet::Configurer do
|
|
125
141
|
it "applies a cached catalog when it can't connect to the master" do
|
126
142
|
error = Errno::ECONNREFUSED.new('Connection refused - connect(2)')
|
127
143
|
|
128
|
-
expect(Puppet::Node.indirection).to receive(:find).and_raise(error)
|
129
144
|
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(:ignore_cache => true)).and_raise(error)
|
130
145
|
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(:ignore_terminus => true)).and_return(catalog)
|
131
146
|
|
@@ -461,7 +476,7 @@ describe Puppet::Configurer do
|
|
461
476
|
it "should save the report if reporting is enabled" do
|
462
477
|
Puppet.settings[:report] = true
|
463
478
|
|
464
|
-
expect(Puppet::Transaction::Report.indirection).to receive(:save).with(report, nil, instance_of(Hash))
|
479
|
+
expect(Puppet::Transaction::Report.indirection).to receive(:save).with(report, nil, instance_of(Hash)).twice
|
465
480
|
configurer.send_report(report)
|
466
481
|
end
|
467
482
|
|
@@ -489,12 +504,22 @@ describe Puppet::Configurer do
|
|
489
504
|
it "should log but not fail if saving the report fails" do
|
490
505
|
Puppet.settings[:report] = true
|
491
506
|
|
492
|
-
expect(Puppet::Transaction::Report.indirection).to receive(:save).and_raise("whatever")
|
507
|
+
expect(Puppet::Transaction::Report.indirection).to receive(:save).with(report, nil, hash_including(ignore_cache: true)).and_raise("whatever")
|
508
|
+
expect(Puppet::Transaction::Report.indirection).to receive(:save).with(report, nil, hash_including(ignore_terminus: true))
|
493
509
|
|
494
510
|
configurer.send_report(report)
|
495
511
|
|
496
512
|
expect(@logs).to include(an_object_having_attributes(level: :err, message: 'Could not send report: whatever'))
|
497
513
|
end
|
514
|
+
|
515
|
+
it "should save the cached report if fails to send the report" do
|
516
|
+
allow(Puppet::Transaction::Report.indirection).to receive(:save).with(report, nil, hash_including(ignore_terminus: true)).and_call_original
|
517
|
+
allow(Puppet::Transaction::Report.indirection).to receive(:save).with(report, nil, hash_including(ignore_cache: true)).and_raise("whatever")
|
518
|
+
|
519
|
+
expect(File).to_not be_exist(Puppet[:lastrunfile])
|
520
|
+
configurer.send_report(report)
|
521
|
+
expect(File.read(Puppet[:lastrunfile])).to match(/puppet: #{Puppet::PUPPETVERSION}/)
|
522
|
+
end
|
498
523
|
end
|
499
524
|
|
500
525
|
describe "when saving the summary report file" do
|
@@ -553,24 +578,6 @@ describe Puppet::Configurer do
|
|
553
578
|
end
|
554
579
|
end
|
555
580
|
|
556
|
-
describe "when requesting a node" do
|
557
|
-
it "uses the transaction uuid in the request" do
|
558
|
-
expect(Puppet::Node.indirection).to receive(:find).with(anything, hash_including(transaction_uuid: anything)).twice
|
559
|
-
configurer.run
|
560
|
-
end
|
561
|
-
|
562
|
-
it "sends an explicitly configured environment request" do
|
563
|
-
expect(Puppet.settings).to receive(:set_by_config?).with(:environment).and_return(true)
|
564
|
-
expect(Puppet::Node.indirection).to receive(:find).with(anything, hash_including(configured_environment: Puppet[:environment])).twice
|
565
|
-
configurer.run
|
566
|
-
end
|
567
|
-
|
568
|
-
it "does not send a configured_environment when using the default" do
|
569
|
-
expect(Puppet::Node.indirection).to receive(:find).with(anything, hash_including(configured_environment: nil)).twice
|
570
|
-
configurer.run
|
571
|
-
end
|
572
|
-
end
|
573
|
-
|
574
581
|
def expects_pluginsync
|
575
582
|
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
583
|
stub_request(:get, %r{/puppet/v3/file_metadatas/(plugins|locales)}).to_return(status: 200, body: metadata, headers: {'Content-Type' => 'application/json'})
|
@@ -581,7 +588,7 @@ describe Puppet::Configurer do
|
|
581
588
|
end
|
582
589
|
|
583
590
|
def expects_new_catalog_only(catalog)
|
584
|
-
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_cache: true)).and_return(catalog)
|
591
|
+
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_cache: true, check_environment: true)).and_return(catalog)
|
585
592
|
expect(Puppet::Resource::Catalog.indirection).not_to receive(:find).with(anything, hash_including(ignore_terminus: true))
|
586
593
|
end
|
587
594
|
|
@@ -598,7 +605,7 @@ describe Puppet::Configurer do
|
|
598
605
|
def expects_fallback_to_new_catalog(catalog)
|
599
606
|
expects_pluginsync
|
600
607
|
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_terminus: true)).and_return(nil)
|
601
|
-
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_cache: true)).and_return(catalog)
|
608
|
+
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_cache: true, check_environment: true)).and_return(catalog)
|
602
609
|
end
|
603
610
|
|
604
611
|
def expects_neither_new_or_cached_catalog
|
@@ -622,21 +629,13 @@ describe Puppet::Configurer do
|
|
622
629
|
configurer.run
|
623
630
|
end
|
624
631
|
|
625
|
-
it "should not
|
626
|
-
expect(Puppet::Node.indirection).not_to receive(:find)
|
632
|
+
it "should not pluginsync when a cached catalog is successfully retrieved" do
|
627
633
|
expects_cached_catalog_only(catalog)
|
628
634
|
expect(configurer).not_to receive(:download_plugins)
|
629
635
|
|
630
636
|
configurer.run
|
631
637
|
end
|
632
638
|
|
633
|
-
it "should make a node request and pluginsync when a cached catalog cannot be retrieved" do
|
634
|
-
expect(Puppet::Node.indirection).to receive(:find).and_return(nil)
|
635
|
-
expects_fallback_to_new_catalog(catalog)
|
636
|
-
|
637
|
-
configurer.run
|
638
|
-
end
|
639
|
-
|
640
639
|
it "should set its cached_catalog_status to 'explicitly_requested'" do
|
641
640
|
expects_cached_catalog_only(catalog)
|
642
641
|
|
@@ -668,7 +667,6 @@ describe Puppet::Configurer do
|
|
668
667
|
end
|
669
668
|
|
670
669
|
it "should not attempt to retrieve a cached catalog again if the first attempt failed" do
|
671
|
-
expect(Puppet::Node.indirection).to receive(:find).and_return(nil)
|
672
670
|
expects_neither_new_or_cached_catalog
|
673
671
|
expects_pluginsync
|
674
672
|
|
@@ -724,16 +722,6 @@ describe Puppet::Configurer do
|
|
724
722
|
Puppet.settings[:strict_environment_mode] = true
|
725
723
|
end
|
726
724
|
|
727
|
-
it "should not make a node request" do
|
728
|
-
stub_request(:get, %r{/puppet/v3/file_metadatas?/plugins}).to_return(:status => 404)
|
729
|
-
stub_request(:get, %r{/puppet/v3/file_metadatas?/pluginfacts}).to_return(:status => 404)
|
730
|
-
expects_new_catalog_only(catalog)
|
731
|
-
|
732
|
-
expect(Puppet::Node.indirection).not_to receive(:find)
|
733
|
-
|
734
|
-
configurer.run
|
735
|
-
end
|
736
|
-
|
737
725
|
it "should return nil when the catalog's environment doesn't match the agent specified environment" do
|
738
726
|
Puppet[:environment] = 'second_env'
|
739
727
|
configurer = Puppet::Configurer.new
|
@@ -767,7 +755,7 @@ describe Puppet::Configurer do
|
|
767
755
|
expect(configurer.run).to be_nil
|
768
756
|
end
|
769
757
|
|
770
|
-
it "should proceed with the cached catalog if its environment
|
758
|
+
it "should proceed with the cached catalog if its environment matches the local environment" do
|
771
759
|
expects_cached_catalog_only(catalog)
|
772
760
|
|
773
761
|
expect(configurer.run).to eq(0)
|
@@ -947,9 +935,23 @@ describe Puppet::Configurer do
|
|
947
935
|
expect(Puppet::Resource::Catalog.indirection).to receive(:find).and_return(apple, banana, banana)
|
948
936
|
|
949
937
|
allow(Puppet).to receive(:notice)
|
938
|
+
allow(Puppet).to receive(:push_context)
|
950
939
|
expect(Puppet).to receive(:notice).with("Local environment: 'production' doesn't match server specified environment 'apple', restarting agent run with environment 'apple'")
|
951
940
|
expect(Puppet).to receive(:notice).with("Local environment: 'apple' doesn't match server specified environment 'banana', restarting agent run with environment 'banana'")
|
952
941
|
|
942
|
+
expect(Puppet).to receive(:push_context).with(
|
943
|
+
hash_including(current_environment: an_object_having_attributes(name: :production)),
|
944
|
+
'Local node environment production for configurer transaction'
|
945
|
+
)
|
946
|
+
expect(Puppet).to receive(:push_context).with(
|
947
|
+
hash_including(current_environment: an_object_having_attributes(name: :apple)),
|
948
|
+
'Local node environment apple for configurer transaction'
|
949
|
+
)
|
950
|
+
expect(Puppet).to receive(:push_context).with(
|
951
|
+
hash_including(current_environment: an_object_having_attributes(name: :banana)),
|
952
|
+
'Local node environment banana for configurer transaction'
|
953
|
+
)
|
954
|
+
|
953
955
|
configurer.run
|
954
956
|
end
|
955
957
|
|
@@ -1072,6 +1074,29 @@ describe Puppet::Configurer do
|
|
1072
1074
|
}.to raise_error(Puppet::Error, /Could not select a functional puppet server from server_list: 'myserver:123,someotherservername'/)
|
1073
1075
|
end
|
1074
1076
|
|
1077
|
+
it "should warn when servers in 'server_list' are unreachable" do
|
1078
|
+
Puppet.settings[:server_list] = "mybadserver1:123,mybadserver2:123,mygoodserver"
|
1079
|
+
Puppet[:usecacheonfailure] = false
|
1080
|
+
|
1081
|
+
stub_request(:get, 'https://mybadserver1:123/status/v1/simple/master').and_raise(Puppet::HTTP::HTTPError)
|
1082
|
+
stub_request(:get, 'https://mybadserver2:123/status/v1/simple/master').and_raise(Puppet::HTTP::HTTPError)
|
1083
|
+
stub_request(:get, 'https://mygoodserver:8140/status/v1/simple/master').to_return(status: 200)
|
1084
|
+
|
1085
|
+
expect(Puppet).to receive(:warning).with(/^Unable to connect to server from server_list setting:.*Trying with next server from server_list.$/).twice
|
1086
|
+
configurer.run
|
1087
|
+
end
|
1088
|
+
|
1089
|
+
it "should warn when servers in 'server_list' respond with error" do
|
1090
|
+
Puppet.settings[:server_list] = "mybadserver:123,someotherservername"
|
1091
|
+
Puppet[:usecacheonfailure] = false
|
1092
|
+
|
1093
|
+
stub_request(:get, 'https://mybadserver:123/status/v1/simple/master').to_return(status: 400)
|
1094
|
+
stub_request(:get, 'https://someotherservername:8140/status/v1/simple/master').to_return(status: 200)
|
1095
|
+
|
1096
|
+
expect(Puppet).to receive(:warning).with(/^Puppet server mybadserver:123 is unavailable: 400 Trying with next server from server_list.$/)
|
1097
|
+
configurer.run
|
1098
|
+
end
|
1099
|
+
|
1075
1100
|
it "should not error when usecacheonfailure is true and no servers in 'server_list' are reachable" do
|
1076
1101
|
Puppet.settings[:server_list] = "myserver:123,someotherservername"
|
1077
1102
|
Puppet[:usecacheonfailure] = true
|
@@ -1084,20 +1109,194 @@ describe Puppet::Configurer do
|
|
1084
1109
|
expect(configurer.run(options)).to eq(0)
|
1085
1110
|
expect(options[:report].server_used).to be_nil
|
1086
1111
|
end
|
1112
|
+
end
|
1087
1113
|
|
1088
|
-
|
1089
|
-
|
1114
|
+
describe "when selecting an environment" do
|
1115
|
+
include PuppetSpec::Settings
|
1090
1116
|
|
1091
|
-
|
1092
|
-
|
1117
|
+
describe "when the last used environment is available" do
|
1118
|
+
let(:last_server_specified_environment) { 'development' }
|
1093
1119
|
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1120
|
+
before do
|
1121
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', <<~SUMMARY)
|
1122
|
+
---
|
1123
|
+
version:
|
1124
|
+
config: 1624882680
|
1125
|
+
puppet: 6.24.0
|
1126
|
+
application:
|
1127
|
+
initial_environment: #{Puppet[:environment]}
|
1128
|
+
converged_environment: #{last_server_specified_environment}
|
1129
|
+
run_mode: agent
|
1130
|
+
SUMMARY
|
1097
1131
|
|
1098
|
-
|
1132
|
+
expect(Puppet::Node.indirection).not_to receive(:find)
|
1133
|
+
.with(anything, hash_including(:ignore_cache => true, :fail_on_404 => true))
|
1134
|
+
end
|
1099
1135
|
|
1100
|
-
|
1136
|
+
it "prefers the environment set via cli" do
|
1137
|
+
Puppet.settings.handlearg('--environment', 'usethis')
|
1138
|
+
configurer.run
|
1139
|
+
|
1140
|
+
expect(configurer.environment).to eq('usethis')
|
1141
|
+
end
|
1142
|
+
|
1143
|
+
it "prefers the environment set via lastrunfile over config" do
|
1144
|
+
FileUtils.mkdir_p(Puppet[:confdir])
|
1145
|
+
set_puppet_conf(Puppet[:confdir], <<~CONF)
|
1146
|
+
[main]
|
1147
|
+
environment = usethis
|
1148
|
+
lastrunfile = #{Puppet[:lastrunfile]}
|
1149
|
+
CONF
|
1150
|
+
|
1151
|
+
Puppet.initialize_settings
|
1152
|
+
configurer.run
|
1153
|
+
|
1154
|
+
expect(configurer.environment).to eq(last_server_specified_environment)
|
1155
|
+
end
|
1156
|
+
|
1157
|
+
it "uses the environment from Puppet[:environment] if given a catalog" do
|
1158
|
+
configurer.run(catalog: catalog)
|
1159
|
+
|
1160
|
+
expect(configurer.environment).to eq(Puppet[:environment])
|
1161
|
+
end
|
1162
|
+
|
1163
|
+
it "uses the environment from Puppet[:environment] if use_cached_catalog = true" do
|
1164
|
+
Puppet[:use_cached_catalog] = true
|
1165
|
+
expects_cached_catalog_only(catalog)
|
1166
|
+
configurer.run
|
1167
|
+
|
1168
|
+
expect(configurer.environment).to eq(Puppet[:environment])
|
1169
|
+
end
|
1170
|
+
|
1171
|
+
describe "when the environment is not set via CLI" do
|
1172
|
+
it "uses the environment found in lastrunfile if the key exists" do
|
1173
|
+
configurer.run
|
1174
|
+
|
1175
|
+
expect(configurer.environment).to eq(last_server_specified_environment)
|
1176
|
+
end
|
1177
|
+
|
1178
|
+
it "pushes the converged environment found in lastrunfile over the existing context" do
|
1179
|
+
initial_env = Puppet::Node::Environment.remote('production')
|
1180
|
+
Puppet.push_context(
|
1181
|
+
current_environment: initial_env,
|
1182
|
+
loaders: Puppet::Pops::Loaders.new(initial_env, true))
|
1183
|
+
|
1184
|
+
expect(Puppet).to receive(:push_context).with(
|
1185
|
+
hash_including(:current_environment, :loaders),
|
1186
|
+
"Local node environment #{last_server_specified_environment} for configurer transaction"
|
1187
|
+
).once.and_call_original
|
1188
|
+
|
1189
|
+
configurer.run
|
1190
|
+
end
|
1191
|
+
|
1192
|
+
it "uses the environment from Puppet[:environment] if strict_environment_mode is set" do
|
1193
|
+
Puppet[:strict_environment_mode] = true
|
1194
|
+
configurer.run
|
1195
|
+
|
1196
|
+
expect(configurer.environment).to eq(Puppet[:environment])
|
1197
|
+
end
|
1198
|
+
|
1199
|
+
it "uses the environment from Puppet[:environment] if initial_environment is the same as converged_environment" do
|
1200
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', <<~SUMMARY)
|
1201
|
+
---
|
1202
|
+
version:
|
1203
|
+
config: 1624882680
|
1204
|
+
puppet: 6.24.0
|
1205
|
+
application:
|
1206
|
+
initial_environment: development
|
1207
|
+
converged_environment: development
|
1208
|
+
run_mode: agent
|
1209
|
+
SUMMARY
|
1210
|
+
configurer.run
|
1211
|
+
|
1212
|
+
expect(configurer.environment).to eq(Puppet[:environment])
|
1213
|
+
end
|
1214
|
+
end
|
1215
|
+
end
|
1216
|
+
|
1217
|
+
describe "when the last used environment is not available" do
|
1218
|
+
describe "when the node request succeeds" do
|
1219
|
+
let(:node_environment) { Puppet::Node::Environment.remote(:salam) }
|
1220
|
+
let(:node) { Puppet::Node.new(Puppet[:node_name_value]) }
|
1221
|
+
let(:last_server_specified_environment) { 'development' }
|
1222
|
+
|
1223
|
+
before do
|
1224
|
+
node.environment = node_environment
|
1225
|
+
|
1226
|
+
allow(Puppet::Node.indirection).to receive(:find)
|
1227
|
+
allow(Puppet::Node.indirection).to receive(:find)
|
1228
|
+
.with(anything, hash_including(:ignore_cache => true, :fail_on_404 => true))
|
1229
|
+
.and_return(node)
|
1230
|
+
end
|
1231
|
+
|
1232
|
+
it "uses the environment from the node request if the run mode doesn't match" do
|
1233
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', <<~SUMMARY)
|
1234
|
+
---
|
1235
|
+
version:
|
1236
|
+
config: 1624882680
|
1237
|
+
puppet: 6.24.0
|
1238
|
+
application:
|
1239
|
+
initial_environment: #{Puppet[:environment]}
|
1240
|
+
converged_environment: #{last_server_specified_environment}
|
1241
|
+
run_mode: user
|
1242
|
+
SUMMARY
|
1243
|
+
configurer.run
|
1244
|
+
|
1245
|
+
expect(configurer.environment).to eq(node_environment.name.to_s)
|
1246
|
+
end
|
1247
|
+
|
1248
|
+
it "uses the environment from the node request if lastrunfile does not contain the expected keys" do
|
1249
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', <<~SUMMARY)
|
1250
|
+
---
|
1251
|
+
version:
|
1252
|
+
config: 1624882680
|
1253
|
+
puppet: 6.24.0
|
1254
|
+
SUMMARY
|
1255
|
+
configurer.run
|
1256
|
+
|
1257
|
+
expect(configurer.environment).to eq(node_environment.name.to_s)
|
1258
|
+
end
|
1259
|
+
|
1260
|
+
it "uses the environment from the node request if lastrunfile is invalid YAML" do
|
1261
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', <<~SUMMARY)
|
1262
|
+
Key: 'this is my very very very ' +
|
1263
|
+
'long string'
|
1264
|
+
SUMMARY
|
1265
|
+
configurer.run
|
1266
|
+
|
1267
|
+
expect(configurer.environment).to eq(node_environment.name.to_s)
|
1268
|
+
end
|
1269
|
+
|
1270
|
+
it "uses the environment from the node request if lastrunfile exists but is empty" do
|
1271
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', '')
|
1272
|
+
configurer.run
|
1273
|
+
|
1274
|
+
expect(configurer.environment).to eq(node_environment.name.to_s)
|
1275
|
+
end
|
1276
|
+
|
1277
|
+
it "uses the environment from the node request if the last used one cannot be found" do
|
1278
|
+
Puppet[:lastrunfile] = tmpfile('last_run_summary.yaml')
|
1279
|
+
configurer.run
|
1280
|
+
|
1281
|
+
expect(configurer.environment).to eq(node_environment.name.to_s)
|
1282
|
+
end
|
1283
|
+
end
|
1284
|
+
|
1285
|
+
describe "when the node request fails" do
|
1286
|
+
before do
|
1287
|
+
allow(Puppet::Node.indirection).to receive(:find).and_call_original
|
1288
|
+
allow(Puppet::Node.indirection).to receive(:find)
|
1289
|
+
.with(anything, hash_including(:ignore_cache => true, :fail_on_404 => true))
|
1290
|
+
.and_raise(Puppet::Error)
|
1291
|
+
end
|
1292
|
+
|
1293
|
+
it "uses the environment from Puppet[:environment] if the last used one cannot be found" do
|
1294
|
+
Puppet[:lastrunfile] = tmpfile('last_run_summary.yaml')
|
1295
|
+
configurer.run
|
1296
|
+
|
1297
|
+
expect(configurer.environment).to eq(Puppet[:environment])
|
1298
|
+
end
|
1299
|
+
end
|
1101
1300
|
end
|
1102
1301
|
end
|
1103
1302
|
end
|
data/spec/unit/defaults_spec.rb
CHANGED
@@ -200,6 +200,7 @@ describe "Defaults" do
|
|
200
200
|
|
201
201
|
Object.send(:remove_const, :Facter)
|
202
202
|
facter = double('facter')
|
203
|
+
allow(facter).to receive(:on_message)
|
203
204
|
allow(facter).to receive(:value).with('facterversion').and_return('3.11.4')
|
204
205
|
Object.const_set(:Facter, facter)
|
205
206
|
|
@@ -5,6 +5,14 @@ require 'puppet/file_system'
|
|
5
5
|
describe Puppet::Environments do
|
6
6
|
FS = Puppet::FileSystem
|
7
7
|
|
8
|
+
module FsRemove
|
9
|
+
def remove
|
10
|
+
@properties[:directory?] = false
|
11
|
+
@properties[:exist?] = false
|
12
|
+
@properties[:executable?] = false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
8
16
|
before(:each) do
|
9
17
|
Puppet.settings.initialize_global_settings
|
10
18
|
Puppet[:environment_timeout] = "unlimited"
|
@@ -131,6 +139,14 @@ describe Puppet::Environments do
|
|
131
139
|
end
|
132
140
|
end
|
133
141
|
|
142
|
+
it "implements guard and unguard" do
|
143
|
+
loader_from(:filesystem => [directory_tree],
|
144
|
+
:directory => directory_tree.children.first) do |loader|
|
145
|
+
expect(loader.guard('env1')).to be_nil
|
146
|
+
expect(loader.unguard('env1')).to be_nil
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
134
150
|
context "with an environment.conf" do
|
135
151
|
let(:envdir) do
|
136
152
|
FS::MemoryFile.a_directory(File.expand_path("envdir"), [
|
@@ -607,6 +623,78 @@ config_version=$vardir/random/scripts
|
|
607
623
|
cached.get(:cached)
|
608
624
|
end
|
609
625
|
|
626
|
+
it "does not list deleted environments" do
|
627
|
+
env3 = FS::MemoryFile.a_directory("env3", [
|
628
|
+
FS::MemoryFile.a_regular_file_containing("environment.conf", '')
|
629
|
+
])
|
630
|
+
|
631
|
+
envdir = FS::MemoryFile.a_directory(File.expand_path("envdir"), [
|
632
|
+
FS::MemoryFile.a_directory("env1", [
|
633
|
+
FS::MemoryFile.a_regular_file_containing("environment.conf", '')
|
634
|
+
]),
|
635
|
+
FS::MemoryFile.a_directory("env2", [
|
636
|
+
FS::MemoryFile.a_regular_file_containing("environment.conf", '')
|
637
|
+
]),
|
638
|
+
env3
|
639
|
+
])
|
640
|
+
|
641
|
+
loader_from(:filesystem => [envdir], :directory => envdir) do |loader|
|
642
|
+
cached = Puppet::Environments::Cached.new(loader)
|
643
|
+
cached.get(:env1)
|
644
|
+
cached.get(:env2)
|
645
|
+
cached.get(:env3)
|
646
|
+
env3.extend(FsRemove).remove
|
647
|
+
|
648
|
+
expect(cached.list).to contain_exactly(environment(:env1),environment(:env2))
|
649
|
+
expect(cached.get(:env3)).to be_nil
|
650
|
+
end
|
651
|
+
end
|
652
|
+
|
653
|
+
it "normalizes environment name to symbol" do
|
654
|
+
env = Puppet::Node::Environment.create(:cached, [])
|
655
|
+
mocked_loader = double('loader')
|
656
|
+
|
657
|
+
expect(mocked_loader).not_to receive(:get).with('cached')
|
658
|
+
expect(mocked_loader).to receive(:get).with(:cached).and_return(env).once
|
659
|
+
expect(mocked_loader).to receive(:get_conf).with(:cached).and_return(Puppet::Settings::EnvironmentConf.static_for(env, 20)).once
|
660
|
+
|
661
|
+
cached = Puppet::Environments::Cached.new(mocked_loader)
|
662
|
+
cached.get('cached')
|
663
|
+
cached.get(:cached)
|
664
|
+
end
|
665
|
+
|
666
|
+
it "caches environment name as symbol and only once" do
|
667
|
+
mocked_loader = double('loader')
|
668
|
+
|
669
|
+
env = Puppet::Node::Environment.create(:cached, [])
|
670
|
+
allow(mocked_loader).to receive(:get).with(:cached).and_return(env)
|
671
|
+
allow(mocked_loader).to receive(:get_conf).with(:cached).and_return(Puppet::Settings::EnvironmentConf.static_for(env, 20))
|
672
|
+
|
673
|
+
cached = Puppet::Environments::Cached.new(mocked_loader)
|
674
|
+
cached.get(:cached)
|
675
|
+
cached.get('cached')
|
676
|
+
|
677
|
+
expect(cached.instance_variable_get(:@cache).keys).to eq([:cached])
|
678
|
+
end
|
679
|
+
|
680
|
+
it "is able to cache multiple environments" do
|
681
|
+
mocked_loader = double('loader')
|
682
|
+
|
683
|
+
env1 = Puppet::Node::Environment.create(:env1, [])
|
684
|
+
allow(mocked_loader).to receive(:get).with(:env1).and_return(env1)
|
685
|
+
allow(mocked_loader).to receive(:get_conf).with(:env1).and_return(Puppet::Settings::EnvironmentConf.static_for(env1, 20))
|
686
|
+
|
687
|
+
env2 = Puppet::Node::Environment.create(:env2, [])
|
688
|
+
allow(mocked_loader).to receive(:get).with(:env2).and_return(env2)
|
689
|
+
allow(mocked_loader).to receive(:get_conf).with(:env2).and_return(Puppet::Settings::EnvironmentConf.static_for(env2, 20))
|
690
|
+
|
691
|
+
cached = Puppet::Environments::Cached.new(mocked_loader)
|
692
|
+
cached.get('env1')
|
693
|
+
cached.get('env2')
|
694
|
+
|
695
|
+
expect(cached.instance_variable_get(:@cache).keys).to eq([:env1, :env2])
|
696
|
+
end
|
697
|
+
|
610
698
|
it "returns nil if env not found" do
|
611
699
|
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
612
700
|
expect(loader.get(:doesnotexist)).to be_nil
|
@@ -662,6 +750,17 @@ config_version=$vardir/random/scripts
|
|
662
750
|
cached.get_conf(:cached)
|
663
751
|
end
|
664
752
|
|
753
|
+
it "normalizes environment name to symbol" do
|
754
|
+
env = Puppet::Node::Environment.create(:cached, [])
|
755
|
+
mocked_loader = double('loader')
|
756
|
+
expect(mocked_loader).to receive(:get_conf).with(:cached).and_return(Puppet::Settings::EnvironmentConf.static_for(env, 20)).twice
|
757
|
+
|
758
|
+
cached = Puppet::Environments::Cached.new(mocked_loader)
|
759
|
+
|
760
|
+
cached.get_conf('cached')
|
761
|
+
cached.get_conf(:cached)
|
762
|
+
end
|
763
|
+
|
665
764
|
it "returns nil if environment is not found" do
|
666
765
|
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
667
766
|
expect(loader.get_conf(:doesnotexist)).to be_nil
|
@@ -754,6 +853,83 @@ config_version=$vardir/random/scripts
|
|
754
853
|
|
755
854
|
expect(service.evicted_envs).to eq([:an_environment])
|
756
855
|
end
|
856
|
+
|
857
|
+
context "when guarding an environment" do
|
858
|
+
before :each do
|
859
|
+
Puppet[:environment_timeout] = 0
|
860
|
+
end
|
861
|
+
|
862
|
+
let(:name) { :an_environment }
|
863
|
+
|
864
|
+
def with_guard(cached, name, &block)
|
865
|
+
cached.guard(name)
|
866
|
+
begin
|
867
|
+
yield
|
868
|
+
ensure
|
869
|
+
cached.unguard(name)
|
870
|
+
end
|
871
|
+
end
|
872
|
+
|
873
|
+
it "evicts an expired and unguarded environment" do
|
874
|
+
with_environment_loaded(service) do |cached|
|
875
|
+
cached.get!(name)
|
876
|
+
end
|
877
|
+
|
878
|
+
expect(service.created_envs).to eq([name, name])
|
879
|
+
expect(service.evicted_envs).to eq([name])
|
880
|
+
end
|
881
|
+
|
882
|
+
it "does not evict an expired, but guarded environment" do
|
883
|
+
with_environment_loaded(service) do |cached|
|
884
|
+
with_guard(cached, name) do
|
885
|
+
cached.get!(name) # these shouldn't reload
|
886
|
+
cached.get!(name)
|
887
|
+
end
|
888
|
+
end
|
889
|
+
|
890
|
+
expect(service.created_envs).to eq([name])
|
891
|
+
expect(service.evicted_envs).to eq([])
|
892
|
+
end
|
893
|
+
|
894
|
+
it "does not evict an environment marked for expiration, but is guarded" do
|
895
|
+
Puppet[:environment_timeout] = 'unlimited'
|
896
|
+
|
897
|
+
expect(service).to receive(:expired?).never
|
898
|
+
|
899
|
+
with_environment_loaded(service) do |cached|
|
900
|
+
with_guard(cached, name) do
|
901
|
+
cached.get!(name)
|
902
|
+
end
|
903
|
+
end
|
904
|
+
|
905
|
+
expect(service.created_envs).to eq([name])
|
906
|
+
expect(service.evicted_envs).to eq([])
|
907
|
+
end
|
908
|
+
|
909
|
+
it "evicts an environment that is no longer guarded" do
|
910
|
+
with_environment_loaded(service) do |cached|
|
911
|
+
with_guard(cached, name) {}
|
912
|
+
|
913
|
+
cached.get!(name) # this reloads
|
914
|
+
end
|
915
|
+
|
916
|
+
expect(service.created_envs).to eq([name, name])
|
917
|
+
expect(service.evicted_envs).to eq([name])
|
918
|
+
end
|
919
|
+
|
920
|
+
it "can nest guards" do
|
921
|
+
with_environment_loaded(service) do |cached|
|
922
|
+
with_guard(cached, name) do
|
923
|
+
with_guard(cached, name) do
|
924
|
+
cached.get!(name) # doesn't reload
|
925
|
+
end
|
926
|
+
end
|
927
|
+
end
|
928
|
+
|
929
|
+
expect(service.created_envs).to eq([name])
|
930
|
+
expect(service.evicted_envs).to eq([])
|
931
|
+
end
|
932
|
+
end
|
757
933
|
end
|
758
934
|
|
759
935
|
context '#clear' do
|
@@ -766,6 +942,14 @@ config_version=$vardir/random/scripts
|
|
766
942
|
|
767
943
|
expect(service.evicted_envs).to eq([:an_environment])
|
768
944
|
end
|
945
|
+
|
946
|
+
it "normalizes environment name to symbol" do
|
947
|
+
with_environment_loaded(service) do |cached|
|
948
|
+
cached.clear('an_environment')
|
949
|
+
end
|
950
|
+
|
951
|
+
expect(service.evicted_envs).to eq([:an_environment])
|
952
|
+
end
|
769
953
|
end
|
770
954
|
|
771
955
|
context '#clear_all' do
|