puppet 7.8.0 → 7.12.0
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/CONTRIBUTING.md +5 -5
- data/Gemfile +2 -2
- data/Gemfile.lock +15 -15
- 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/project_data.yaml +1 -0
- data/install.rb +0 -4
- data/lib/puppet/application/agent.rb +4 -0
- data/lib/puppet/application/apply.rb +20 -2
- data/lib/puppet/application/filebucket.rb +1 -0
- data/lib/puppet/application/resource.rb +30 -15
- data/lib/puppet/application/ssl.rb +1 -0
- data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
- data/lib/puppet/configurer.rb +176 -58
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/defaults.rb +67 -29
- data/lib/puppet/environments.rb +75 -25
- 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 +1 -1
- 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 +2 -0
- 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/file_system.rb +2 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge.rb +4 -4
- data/lib/puppet/functions/empty.rb +8 -0
- data/lib/puppet/functions/find_template.rb +2 -2
- data/lib/puppet/functions/strftime.rb +1 -0
- data/lib/puppet/functions/unwrap.rb +17 -2
- data/lib/puppet/http/service/compiler.rb +6 -1
- data/lib/puppet/indirector/catalog/compiler.rb +24 -6
- data/lib/puppet/indirector/catalog/rest.rb +1 -0
- data/lib/puppet/indirector/facts/facter.rb +6 -6
- 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_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/module_tool/tar/mini.rb +1 -1
- 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/scope.rb +8 -7
- data/lib/puppet/parser/templatewrapper.rb +1 -0
- data/lib/puppet/pops/evaluator/closure.rb +7 -5
- 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 +14 -13
- data/lib/puppet/pops/parser/egrammar.ra +2 -2
- data/lib/puppet/pops/parser/eparser.rb +752 -753
- data/lib/puppet/pops/parser/lexer2.rb +69 -68
- 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/type_formatter.rb +7 -6
- 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/pip.rb +15 -3
- data/lib/puppet/provider/package/pkg.rb +19 -2
- data/lib/puppet/provider/package/puppet_gem.rb +1 -1
- data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
- data/lib/puppet/provider/package/windows/exe_package.rb +30 -1
- data/lib/puppet/provider/package/windows/package.rb +2 -1
- data/lib/puppet/provider/package/windows.rb +14 -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 +2 -2
- data/lib/puppet/provider/service/upstart.rb +5 -5
- data/lib/puppet/provider/user/aix.rb +44 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +72 -16
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/reference/providers.rb +2 -2
- data/lib/puppet/resource/type_collection.rb +4 -1
- data/lib/puppet/runtime.rb +11 -1
- data/lib/puppet/settings/config_file.rb +1 -8
- data/lib/puppet/settings/file_setting.rb +3 -8
- data/lib/puppet/settings/value_translator.rb +0 -1
- data/lib/puppet/settings.rb +32 -9
- data/lib/puppet/test/test_helper.rb +4 -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.rb +6 -6
- data/lib/puppet/type/filebucket.rb +2 -2
- data/lib/puppet/type/group.rb +0 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/service.rb +8 -3
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +1 -2
- data/lib/puppet/type.rb +1 -1
- data/lib/puppet/util/autoload.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/monkey_patches.rb +2 -17
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- 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/sid.rb +3 -1
- data/lib/puppet/util/windows/user.rb +0 -1
- data/lib/puppet/util.rb +4 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509/cert_provider.rb +3 -21
- data/lib/puppet.rb +5 -9
- data/locales/puppet.pot +409 -329
- data/man/man5/puppet.conf.5 +73 -25
- 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 +7 -7
- 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-lookup.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.8 +2 -2
- 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 +106 -106
- data/spec/fixtures/ssl/127.0.0.1.pem +48 -48
- data/spec/fixtures/ssl/bad-basic-constraints.pem +54 -54
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +51 -51
- data/spec/fixtures/ssl/ca.pem +52 -52
- data/spec/fixtures/ssl/crl.pem +25 -25
- data/spec/fixtures/ssl/ec-key-openssl.pem +8 -0
- data/spec/fixtures/ssl/ec-key-pk8.pem +5 -0
- data/spec/fixtures/ssl/ec-key.pem +11 -11
- data/spec/fixtures/ssl/ec.pem +32 -32
- data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
- data/spec/fixtures/ssl/encrypted-key.pem +107 -107
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +25 -25
- data/spec/fixtures/ssl/intermediate-agent.pem +54 -54
- data/spec/fixtures/ssl/intermediate-crl.pem +28 -28
- data/spec/fixtures/ssl/intermediate.pem +51 -51
- data/spec/fixtures/ssl/oid-key.pem +117 -0
- data/spec/fixtures/ssl/oid.pem +69 -0
- data/spec/fixtures/ssl/pluto-key.pem +106 -106
- data/spec/fixtures/ssl/pluto.pem +50 -50
- data/spec/fixtures/ssl/request-key.pem +106 -106
- data/spec/fixtures/ssl/request.pem +45 -45
- data/spec/fixtures/ssl/revoked-key.pem +106 -106
- data/spec/fixtures/ssl/revoked.pem +49 -49
- data/spec/fixtures/ssl/signed-key.pem +106 -106
- data/spec/fixtures/ssl/signed.pem +47 -47
- data/spec/fixtures/ssl/tampered-cert.pem +49 -49
- data/spec/fixtures/ssl/tampered-csr.pem +45 -45
- data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +106 -106
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -48
- data/spec/fixtures/ssl/unknown-ca-key.pem +106 -106
- data/spec/fixtures/ssl/unknown-ca.pem +52 -52
- data/spec/integration/application/agent_spec.rb +118 -52
- 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 +35 -1
- data/spec/integration/application/ssl_spec.rb +20 -0
- data/spec/integration/configurer_spec.rb +18 -2
- data/spec/integration/defaults_spec.rb +5 -0
- 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/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 +5 -0
- 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/apply_spec.rb +76 -56
- data/spec/unit/application/resource_spec.rb +29 -0
- data/spec/unit/configurer_spec.rb +291 -56
- 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 +12 -4
- 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 +87 -0
- data/spec/unit/functions/unwrap_spec.rb +8 -0
- data/spec/unit/functions4_spec.rb +2 -2
- data/spec/unit/http/service/compiler_spec.rb +8 -0
- data/spec/unit/indirector/catalog/compiler_spec.rb +87 -0
- 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 +14 -0
- data/spec/unit/module_tool/applications/installer_spec.rb +52 -14
- data/spec/unit/network/formats_spec.rb +6 -0
- data/spec/unit/parser/compiler_spec.rb +29 -0
- data/spec/unit/parser/templatewrapper_spec.rb +12 -2
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +0 -9
- data/spec/unit/pops/parser/lexer2_spec.rb +0 -4
- 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/type_calculator_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +1 -1
- 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 +34 -5
- 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/package/windows/exe_package_spec.rb +17 -0
- data/spec/unit/provider/parsedfile_spec.rb +10 -0
- data/spec/unit/provider/service/launchd_spec.rb +11 -0
- data/spec/unit/provider/service/systemd_spec.rb +1 -1
- data/spec/unit/provider/user/aix_spec.rb +100 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +1 -1
- 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/type_collection_spec.rb +16 -0
- data/spec/unit/resource/type_spec.rb +2 -2
- data/spec/unit/settings/config_file_spec.rb +1 -11
- data/spec/unit/settings/file_setting_spec.rb +10 -7
- data/spec/unit/settings/value_translator_spec.rb +4 -5
- data/spec/unit/settings_spec.rb +120 -79
- data/spec/unit/ssl/ssl_provider_spec.rb +18 -16
- data/spec/unit/type/exec_spec.rb +76 -29
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/service_spec.rb +27 -0
- data/spec/unit/type/tidy_spec.rb +7 -0
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +25 -8
- data/spec/unit/util/ldap/connection_spec.rb +10 -10
- data/spec/unit/util/ldap/manager_spec.rb +2 -2
- data/spec/unit/util/logging_spec.rb +2 -0
- data/spec/unit/util/windows/sid_spec.rb +39 -4
- data/spec/unit/util_spec.rb +1 -3
- data/spec/unit/x509/cert_provider_spec.rb +9 -1
- data/tasks/generate_cert_fixtures.rake +10 -1
- data/tasks/parallel.rake +3 -3
- metadata +51 -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 -28
- 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 -841
- 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
@@ -469,83 +469,64 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
|
|
469
469
|
end
|
470
470
|
|
471
471
|
context 'multiple agents running' do
|
472
|
-
|
472
|
+
def with_another_agent_running(&block)
|
473
473
|
path = Puppet[:agent_catalog_run_lockfile]
|
474
474
|
|
475
475
|
th = Thread.new {
|
476
|
-
%x{ruby -e "$0 = 'puppet'; File.write('#{path}', Process.pid); sleep(
|
476
|
+
%x{ruby -e "$0 = 'puppet'; File.write('#{path}', Process.pid); sleep(5)"}
|
477
477
|
}
|
478
478
|
|
479
|
+
# ensure file is written before yielding
|
479
480
|
until File.exists?(path) && File.size(path) > 0 do
|
480
481
|
sleep 0.1
|
481
482
|
end
|
482
483
|
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
484
|
+
begin
|
485
|
+
yield
|
486
|
+
ensure
|
487
|
+
th.kill # kill thread so we don't wait too much
|
488
|
+
end
|
489
|
+
end
|
487
490
|
|
488
|
-
|
491
|
+
it "exits if an agent is already running" do
|
492
|
+
with_another_agent_running do
|
493
|
+
expect {
|
494
|
+
agent.command_line.args << '--test'
|
495
|
+
agent.run
|
496
|
+
}.to exit_with(1).and output(/Run of Puppet configuration client already in progress; skipping/).to_stdout
|
497
|
+
end
|
489
498
|
end
|
490
499
|
|
491
500
|
it "waits for other agent run to finish before starting" do
|
492
501
|
server.start_server do |port|
|
493
|
-
script = tmpfile('wait_for_log_entry')
|
494
|
-
logdest = tmpfile('agent_log')
|
495
|
-
path = Puppet[:agent_catalog_run_lockfile]
|
496
502
|
Puppet[:serverport] = port
|
497
503
|
Puppet[:waitforlock] = 1
|
498
504
|
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
%x{ruby '#{script}'}
|
510
|
-
}
|
505
|
+
with_another_agent_running do
|
506
|
+
expect {
|
507
|
+
agent.command_line.args << '--test'
|
508
|
+
agent.run
|
509
|
+
}.to exit_with(0)
|
510
|
+
.and output(a_string_matching(
|
511
|
+
/Info: Will try again in #{Puppet[:waitforlock]} seconds/
|
512
|
+
).and matching(
|
513
|
+
/Applied catalog/
|
514
|
+
)).to_stdout
|
511
515
|
|
512
|
-
until File.exists?(path) && File.size(path) > 0 do
|
513
|
-
sleep 0.1
|
514
516
|
end
|
515
|
-
|
516
|
-
expect {
|
517
|
-
agent.command_line.args << '--test' << '--logdest' << logdest << '--logdest' << 'console'
|
518
|
-
agent.run
|
519
|
-
}.to exit_with(0)
|
520
|
-
.and output(a_string_matching(
|
521
|
-
/Info: Will try again in #{Puppet[:waitforlock]} seconds/
|
522
|
-
).and matching(
|
523
|
-
/Applied catalog/
|
524
|
-
)).to_stdout
|
525
|
-
|
526
|
-
th.kill # kill thread so we don't wait too much
|
527
517
|
end
|
528
518
|
end
|
529
519
|
|
530
520
|
it "exits if maxwaitforlock is exceeded" do
|
531
|
-
path = Puppet[:agent_catalog_run_lockfile]
|
532
521
|
Puppet[:waitforlock] = 1
|
533
522
|
Puppet[:maxwaitforlock] = 0
|
534
523
|
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
sleep 0.1
|
524
|
+
with_another_agent_running do
|
525
|
+
expect {
|
526
|
+
agent.command_line.args << '--test'
|
527
|
+
agent.run
|
528
|
+
}.to exit_with(1).and output(/Exiting now because the maxwaitforlock timeout has been exceeded./).to_stdout
|
541
529
|
end
|
542
|
-
|
543
|
-
expect {
|
544
|
-
agent.command_line.args << '--test'
|
545
|
-
agent.run
|
546
|
-
}.to exit_with(1).and output(/Exiting now because the maxwaitforlock timeout has been exceeded./).to_stdout
|
547
|
-
|
548
|
-
th.kill # kill thread so we don't wait too much
|
549
530
|
end
|
550
531
|
end
|
551
532
|
|
@@ -585,7 +566,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
|
|
585
566
|
).and matching(
|
586
567
|
/Notify\[a message\]\/message:/
|
587
568
|
)).to_stdout
|
588
|
-
.and output(/
|
569
|
+
.and output(/No more routes to fileserver/).to_stderr
|
589
570
|
end
|
590
571
|
|
591
572
|
it 'preserves the old cached catalog if validation fails with the old one' do
|
@@ -604,7 +585,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
|
|
604
585
|
agent.command_line.args << '--test'
|
605
586
|
agent.run
|
606
587
|
}.to exit_with(1)
|
607
|
-
.and output(
|
588
|
+
.and output(%r{Retrieving plugin}).to_stdout
|
608
589
|
.and output(%r{Validation of Exec\[unqualified_command\] failed: 'unqualified_command' is not qualified and no path was specified}).to_stderr
|
609
590
|
end
|
610
591
|
|
@@ -645,5 +626,90 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
|
|
645
626
|
expect(report.metrics).to_not be_empty
|
646
627
|
end
|
647
628
|
end
|
629
|
+
|
630
|
+
it "caches a report even if the REST request fails" do
|
631
|
+
server.start_server do |port|
|
632
|
+
Puppet[:serverport] = port
|
633
|
+
Puppet[:report_port] = "-1"
|
634
|
+
expect {
|
635
|
+
agent.command_line.args << '--test'
|
636
|
+
agent.run
|
637
|
+
}.to exit_with(0)
|
638
|
+
.and output(%r{Applied catalog}).to_stdout
|
639
|
+
.and output(%r{Could not send report}).to_stderr
|
640
|
+
|
641
|
+
report = Puppet::Transaction::Report.convert_from(:yaml, File.read(Puppet[:lastrunreport]))
|
642
|
+
expect(report).to be
|
643
|
+
end
|
644
|
+
end
|
645
|
+
end
|
646
|
+
|
647
|
+
context "environment convergence" do
|
648
|
+
it "switches to 'newenv' environment and retries the run" do
|
649
|
+
first_run = true
|
650
|
+
libdir = File.join(my_fixture_dir, 'lib')
|
651
|
+
|
652
|
+
# we have to use the :facter terminus to reliably test that pluginsynced
|
653
|
+
# facts are included in the catalog request
|
654
|
+
Puppet::Node::Facts.indirection.terminus_class = :facter
|
655
|
+
|
656
|
+
mounts = {}
|
657
|
+
|
658
|
+
# During the first run, only return metadata for the top-level directory.
|
659
|
+
# During the second run, include metadata for all of the 'lib' fixtures
|
660
|
+
# due to the `recurse` option.
|
661
|
+
mounts[:file_metadatas] = -> (req, res) {
|
662
|
+
request = Puppet::FileServing::Metadata.indirection.request(
|
663
|
+
:search, libdir, nil, recurse: !first_run
|
664
|
+
)
|
665
|
+
data = Puppet::FileServing::Metadata.indirection.terminus(:file).search(request)
|
666
|
+
res.body = formatter.render(data)
|
667
|
+
res['Content-Type'] = formatter.mime
|
668
|
+
}
|
669
|
+
|
670
|
+
mounts[:file_content] = -> (req, res) {
|
671
|
+
request = Puppet::FileServing::Content.indirection.request(
|
672
|
+
:find, File.join(libdir, 'facter', 'agent_spec_role.rb'), nil
|
673
|
+
)
|
674
|
+
content = Puppet::FileServing::Content.indirection.terminus(:file).find(request)
|
675
|
+
res.body = content.content
|
676
|
+
res['Content-Length'] = content.content.length
|
677
|
+
res['Content-Type'] = 'application/octet-stream'
|
678
|
+
}
|
679
|
+
|
680
|
+
# During the first run, return an empty catalog referring to the newenv.
|
681
|
+
# During the second run, compile a catalog that depends on a fact that
|
682
|
+
# only exists in the second environment. If the fact is missing/empty,
|
683
|
+
# then compilation will fail since resources can't have an empty title.
|
684
|
+
mounts[:catalog] = -> (req, res) {
|
685
|
+
node = Puppet::Node.new('test')
|
686
|
+
|
687
|
+
code = if first_run
|
688
|
+
first_run = false
|
689
|
+
''
|
690
|
+
else
|
691
|
+
data = CGI.unescape(req.query['facts'])
|
692
|
+
facts = Puppet::Node::Facts.convert_from('json', data)
|
693
|
+
node.fact_merge(facts)
|
694
|
+
'notify { $facts["agent_spec_role"]: }'
|
695
|
+
end
|
696
|
+
|
697
|
+
catalog = compile_to_catalog(code, node)
|
698
|
+
catalog.environment = 'newenv'
|
699
|
+
|
700
|
+
res.body = formatter.render(catalog)
|
701
|
+
res['Content-Type'] = formatter.mime
|
702
|
+
}
|
703
|
+
|
704
|
+
server.start_server(mounts: mounts) do |port|
|
705
|
+
Puppet[:serverport] = port
|
706
|
+
expect {
|
707
|
+
agent.command_line.args << '--test'
|
708
|
+
agent.run
|
709
|
+
}.to exit_with(2)
|
710
|
+
.and output(a_string_matching(%r{Notice: Local environment: 'production' doesn't match server specified environment 'newenv', restarting agent run with environment 'newenv'})
|
711
|
+
.and matching(%r{defined 'message' as 'web'})).to_stdout
|
712
|
+
end
|
713
|
+
end
|
648
714
|
end
|
649
715
|
end
|
@@ -18,6 +18,11 @@ describe "puppet filebucket", unless: Puppet::Util::Platform.jruby? do
|
|
18
18
|
File.binwrite(backup_file, text)
|
19
19
|
end
|
20
20
|
|
21
|
+
after :each do
|
22
|
+
# mute debug messages generated during `after :each` blocks
|
23
|
+
Puppet::Util::Log.close_all
|
24
|
+
end
|
25
|
+
|
21
26
|
it "backs up to and restores from the local filebucket" do
|
22
27
|
filebucket.command_line.args = ['backup', backup_file, '--local']
|
23
28
|
expect {
|
@@ -126,6 +131,17 @@ describe "puppet filebucket", unless: Puppet::Util::Platform.jruby? do
|
|
126
131
|
end
|
127
132
|
end
|
128
133
|
|
134
|
+
it "lists the local filebucket even if the environment doesn't exist locally" do
|
135
|
+
Puppet[:environment] = 'doesnotexist'
|
136
|
+
Puppet::FileSystem.mkpath(Puppet[:clientbucketdir])
|
137
|
+
|
138
|
+
filebucket.command_line.args = ['backup', '--local', backup_file]
|
139
|
+
expect {
|
140
|
+
result = filebucket.run
|
141
|
+
expect(result).to eq([backup_file])
|
142
|
+
}.to output(/Computing checksum on file/).to_stdout
|
143
|
+
end
|
144
|
+
|
129
145
|
context 'diff', unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
|
130
146
|
context 'using a remote bucket' do
|
131
147
|
it 'outputs a diff between a local and remote file' do
|
@@ -65,4 +65,25 @@ describe 'puppet module', unless: Puppet::Util::Platform.jruby? do
|
|
65
65
|
.and output(%r{Unable to verify the SSL certificate}).to_stderr
|
66
66
|
end
|
67
67
|
end
|
68
|
+
|
69
|
+
it 'prints the complete URL it tried to connect to' do
|
70
|
+
response_proc = -> (req, res) { res.status = 404 }
|
71
|
+
|
72
|
+
# create a temp cacert bundle
|
73
|
+
ssl_file = tmpfile('systemstore')
|
74
|
+
File.write(ssl_file, server.ca_cert)
|
75
|
+
|
76
|
+
Puppet::Util.withenv("SSL_CERT_FILE" => ssl_file) do
|
77
|
+
server.start_server(response_proc: response_proc) do |port|
|
78
|
+
Puppet[:module_repository] = "https://127.0.0.1:#{port}/bogus_test/puppet"
|
79
|
+
|
80
|
+
expect {
|
81
|
+
app.command_line.args = ['install', 'puppetlabs-bacula']
|
82
|
+
app.run
|
83
|
+
}.to exit_with(1)
|
84
|
+
.and output(%r{Notice: Downloading from https://127.0.0.1:#{port}}).to_stdout
|
85
|
+
.and output(%r{https://127.0.0.1:#{port}/bogus_test/puppet/v3/releases}).to_stderr
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
68
89
|
end
|
@@ -6,7 +6,41 @@ describe "puppet resource", unless: Puppet::Util::Platform.jruby? do
|
|
6
6
|
|
7
7
|
let(:resource) { Puppet::Application[:resource] }
|
8
8
|
|
9
|
-
|
9
|
+
context 'when given an invalid environment' do
|
10
|
+
before { Puppet[:environment] = 'badenv' }
|
11
|
+
|
12
|
+
it 'falls back to the default environment' do
|
13
|
+
Puppet[:log_level] = 'debug'
|
14
|
+
|
15
|
+
expect {
|
16
|
+
resource.run
|
17
|
+
}.to exit_with(1)
|
18
|
+
.and output(/Debug: Specified environment 'badenv' does not exist on the filesystem, defaulting to 'production'/).to_stdout
|
19
|
+
.and output(/Error: Could not run: You must specify the type to display/).to_stderr
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'lists resources' do
|
23
|
+
resource.command_line.args = ['file', Puppet[:confdir]]
|
24
|
+
|
25
|
+
expect {
|
26
|
+
resource.run
|
27
|
+
}.to output(/file { '#{Puppet[:confdir]}':/).to_stdout
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'lists types from the default environment' do
|
31
|
+
modulepath = File.join(Puppet[:codedir], 'modules', 'test', 'lib', 'puppet', 'type')
|
32
|
+
FileUtils.mkdir_p(modulepath)
|
33
|
+
File.write(File.join(modulepath, 'test.rb'), 'Puppet::Type.newtype(:test)')
|
34
|
+
resource.command_line.args = ['--types']
|
35
|
+
|
36
|
+
expect {
|
37
|
+
resource.run
|
38
|
+
}.to exit_with(0).and output(/test/).to_stdout
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
context 'when handling file and tidy types' do
|
10
44
|
let!(:dir) { dir_containing('testdir', 'testfile' => 'contents') }
|
11
45
|
|
12
46
|
it 'does not raise when generating file resources' do
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "puppet ssl", unless: Puppet::Util::Platform.jruby? do
|
4
|
+
context "print" do
|
5
|
+
it 'translates custom oids to their long name' do
|
6
|
+
basedir = File.expand_path("#{__FILE__}/../../../fixtures/ssl")
|
7
|
+
# registering custom oids changes global state, so shell out
|
8
|
+
output =
|
9
|
+
%x{puppet ssl show \
|
10
|
+
--certname oid \
|
11
|
+
--localcacert #{basedir}/ca.pem \
|
12
|
+
--hostcrl #{basedir}/crl.pem \
|
13
|
+
--hostprivkey #{basedir}/oid-key.pem \
|
14
|
+
--hostcert #{basedir}/oid.pem \
|
15
|
+
--trusted_oid_mapping_file #{basedir}/trusted_oid_mapping.yaml 2>&1
|
16
|
+
}
|
17
|
+
expect(output).to match(/Long name:/)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -23,7 +23,7 @@ describe Puppet::Configurer do
|
|
23
23
|
expect(Puppet::Transaction::Report.indirection).to receive(:save) do |report, x|
|
24
24
|
expect(report.time).to be_a(Time)
|
25
25
|
expect(report.logs.length).to be > 0
|
26
|
-
end
|
26
|
+
end.twice
|
27
27
|
|
28
28
|
Puppet[:report] = true
|
29
29
|
|
@@ -60,7 +60,8 @@ describe Puppet::Configurer do
|
|
60
60
|
expect(summary["time"]["last_run"]).to be_between(t1, t2)
|
61
61
|
end
|
62
62
|
|
63
|
-
it "applies a cached catalog if pluginsync fails when usecacheonfailure is true" do
|
63
|
+
it "applies a cached catalog if pluginsync fails when usecacheonfailure is true and environment is valid" do
|
64
|
+
expect(@configurer).to receive(:valid_server_environment?).and_return(true)
|
64
65
|
Puppet[:ignore_plugin_errors] = false
|
65
66
|
|
66
67
|
Puppet[:use_cached_catalog] = false
|
@@ -74,6 +75,21 @@ describe Puppet::Configurer do
|
|
74
75
|
expect(report.cached_catalog_status).to eq('on_failure')
|
75
76
|
end
|
76
77
|
|
78
|
+
it "applies a cached catalog if pluginsync fails when usecacheonfailure is true and environment is invalid" do
|
79
|
+
expect(@configurer).to receive(:valid_server_environment?).and_return(false)
|
80
|
+
Puppet[:ignore_plugin_errors] = false
|
81
|
+
|
82
|
+
Puppet[:use_cached_catalog] = false
|
83
|
+
Puppet[:usecacheonfailure] = true
|
84
|
+
|
85
|
+
report = Puppet::Transaction::Report.new
|
86
|
+
expect(Puppet::Resource::Catalog.indirection).to receive(:find).and_raise(Puppet::Error, 'Cannot compile remote catalog')
|
87
|
+
expect(Puppet::Resource::Catalog.indirection).to receive(:find).and_return(@catalog)
|
88
|
+
|
89
|
+
@configurer.run(pluginsync: true, report: report)
|
90
|
+
expect(report.cached_catalog_status).to eq('on_failure')
|
91
|
+
end
|
92
|
+
|
77
93
|
describe 'resubmitting facts' do
|
78
94
|
context 'when resubmit_facts is set to false' do
|
79
95
|
it 'should not send data' do
|
@@ -48,6 +48,11 @@ describe "Puppet defaults" do
|
|
48
48
|
it "should fail if the certname is not downcased" do
|
49
49
|
expect { Puppet.settings[:certname] = "Host.Domain.Com" }.to raise_error(ArgumentError)
|
50
50
|
end
|
51
|
+
|
52
|
+
it 'can set it to a value containing all digits' do
|
53
|
+
Puppet.settings[:certname] = "000000000180"
|
54
|
+
expect(Puppet.settings[:certname]).to eq("000000000180")
|
55
|
+
end
|
51
56
|
end
|
52
57
|
|
53
58
|
describe "when setting :node_name_value" do
|
@@ -9,10 +9,6 @@ describe "interpolating $environment" do
|
|
9
9
|
let(:confdir) { Puppet[:confdir] }
|
10
10
|
let(:cmdline_args) { ['--confdir', confdir, '--vardir', Puppet[:vardir], '--hiera_config', Puppet[:hiera_config]] }
|
11
11
|
|
12
|
-
before(:each) do
|
13
|
-
FileUtils.mkdir_p(confdir)
|
14
|
-
end
|
15
|
-
|
16
12
|
shared_examples_for "a setting that does not interpolate $environment" do
|
17
13
|
|
18
14
|
before(:each) do
|
@@ -6,13 +6,14 @@ require 'puppet/indirector/facts/facter'
|
|
6
6
|
describe Puppet::Node::Facts::Facter do
|
7
7
|
include PuppetSpec::Files
|
8
8
|
include PuppetSpec::Compiler
|
9
|
+
include PuppetSpec::Settings
|
9
10
|
|
10
11
|
before :each do
|
11
12
|
Puppet::Node::Facts.indirection.terminus_class = :facter
|
12
13
|
end
|
13
14
|
|
14
15
|
it "preserves case in fact values" do
|
15
|
-
|
16
|
+
Puppet.runtime[:facter].add(:downcase_test) do
|
16
17
|
setcode do
|
17
18
|
"AaBbCc"
|
18
19
|
end
|
@@ -33,9 +34,9 @@ describe Puppet::Node::Facts::Facter do
|
|
33
34
|
FileUtils.mkdir_p(test_module)
|
34
35
|
|
35
36
|
File.open(File.join(test_module, 'custom.rb'), 'wb') { |file| file.write(<<-EOF)}
|
36
|
-
|
37
|
+
Puppet.runtime[:facter].add(:custom) do
|
37
38
|
setcode do
|
38
|
-
|
39
|
+
Puppet.runtime[:facter].value('puppetversion')
|
39
40
|
end
|
40
41
|
end
|
41
42
|
EOF
|
@@ -66,49 +67,102 @@ describe Puppet::Node::Facts::Facter do
|
|
66
67
|
end
|
67
68
|
end
|
68
69
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
cat = compile_to_catalog('notify { $::puppetversion: }',
|
73
|
-
Puppet::Node.indirection.find('foo'))
|
74
|
-
expect(cat.resource("Notify[#{Puppet.version.to_s}]")).to be
|
75
|
-
end
|
70
|
+
context "adding facts" do
|
71
|
+
it "adds the puppetversion fact" do
|
72
|
+
allow(Facter).to receive(:reset)
|
76
73
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
Puppet::Node.indirection.find('foo'))
|
81
|
-
end.to raise_error(Puppet::PreformattedError)
|
82
|
-
end
|
83
|
-
|
84
|
-
it "adds the agent_specified_environment fact when set in puppet.conf" do
|
85
|
-
FileUtils.mkdir_p(Puppet[:confdir])
|
86
|
-
File.open(File.join(Puppet[:confdir], 'puppet.conf'), 'w') do |f|
|
87
|
-
f.puts("environment=bar")
|
74
|
+
cat = compile_to_catalog('notify { $::puppetversion: }',
|
75
|
+
Puppet::Node.indirection.find('foo'))
|
76
|
+
expect(cat.resource("Notify[#{Puppet.version.to_s}]")).to be
|
88
77
|
end
|
89
78
|
|
90
|
-
|
91
|
-
|
79
|
+
context "when adding the agent_specified_environment fact" do
|
80
|
+
it "does not add the fact if the agent environment is not set" do
|
81
|
+
expect do
|
82
|
+
compile_to_catalog('notify { $::agent_specified_environment: }',
|
92
83
|
Puppet::Node.indirection.find('foo'))
|
93
|
-
|
94
|
-
|
84
|
+
end.to raise_error(Puppet::PreformattedError)
|
85
|
+
end
|
95
86
|
|
96
|
-
|
97
|
-
|
98
|
-
|
87
|
+
it "does not add the fact if the agent environment is set in sections other than agent or main" do
|
88
|
+
set_puppet_conf(Puppet[:confdir], <<~CONF)
|
89
|
+
[user]
|
90
|
+
environment=bar
|
91
|
+
CONF
|
92
|
+
|
93
|
+
Puppet.initialize_settings
|
94
|
+
expect do
|
95
|
+
compile_to_catalog('notify { $::agent_specified_environment: }',
|
99
96
|
Puppet::Node.indirection.find('foo'))
|
100
|
-
|
101
|
-
|
97
|
+
end.to raise_error(Puppet::PreformattedError)
|
98
|
+
end
|
102
99
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
100
|
+
it "adds the agent_specified_environment fact when set in the agent section in puppet.conf" do
|
101
|
+
set_puppet_conf(Puppet[:confdir], <<~CONF)
|
102
|
+
[agent]
|
103
|
+
environment=bar
|
104
|
+
CONF
|
108
105
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
106
|
+
Puppet.initialize_settings
|
107
|
+
cat = compile_to_catalog('notify { $::agent_specified_environment: }',
|
108
|
+
Puppet::Node.indirection.find('foo'))
|
109
|
+
expect(cat.resource("Notify[bar]")).to be
|
110
|
+
end
|
111
|
+
|
112
|
+
it "prefers agent_specified_environment from main if set in section other than agent" do
|
113
|
+
set_puppet_conf(Puppet[:confdir], <<~CONF)
|
114
|
+
[main]
|
115
|
+
environment=baz
|
116
|
+
|
117
|
+
[user]
|
118
|
+
environment=bar
|
119
|
+
CONF
|
120
|
+
|
121
|
+
Puppet.initialize_settings
|
122
|
+
cat = compile_to_catalog('notify { $::agent_specified_environment: }',
|
123
|
+
Puppet::Node.indirection.find('foo'))
|
124
|
+
expect(cat.resource("Notify[baz]")).to be
|
125
|
+
end
|
126
|
+
|
127
|
+
it "prefers agent_specified_environment from agent if set in multiple sections" do
|
128
|
+
set_puppet_conf(Puppet[:confdir], <<~CONF)
|
129
|
+
[main]
|
130
|
+
environment=baz
|
131
|
+
|
132
|
+
[agent]
|
133
|
+
environment=bar
|
134
|
+
CONF
|
135
|
+
|
136
|
+
Puppet.initialize_settings
|
137
|
+
cat = compile_to_catalog('notify { $::agent_specified_environment: }',
|
138
|
+
Puppet::Node.indirection.find('foo'))
|
139
|
+
expect(cat.resource("Notify[bar]")).to be
|
140
|
+
end
|
141
|
+
|
142
|
+
it "adds the agent_specified_environment fact when set in puppet.conf" do
|
143
|
+
set_puppet_conf(Puppet[:confdir], 'environment=bar')
|
144
|
+
|
145
|
+
Puppet.initialize_settings
|
146
|
+
cat = compile_to_catalog('notify { $::agent_specified_environment: }',
|
147
|
+
Puppet::Node.indirection.find('foo'))
|
148
|
+
expect(cat.resource("Notify[bar]")).to be
|
149
|
+
end
|
150
|
+
|
151
|
+
it "adds the agent_specified_environment fact when set via command-line" do
|
152
|
+
Puppet.initialize_settings(['--environment', 'bar'])
|
153
|
+
cat = compile_to_catalog('notify { $::agent_specified_environment: }',
|
154
|
+
Puppet::Node.indirection.find('foo'))
|
155
|
+
expect(cat.resource("Notify[bar]")).to be
|
156
|
+
end
|
157
|
+
|
158
|
+
it "adds the agent_specified_environment fact, preferring cli, when set in puppet.conf and via command-line" do
|
159
|
+
set_puppet_conf(Puppet[:confdir], 'environment=bar')
|
160
|
+
|
161
|
+
Puppet.initialize_settings(['--environment', 'baz'])
|
162
|
+
cat = compile_to_catalog('notify { $::agent_specified_environment: }',
|
163
|
+
Puppet::Node.indirection.find('foo'))
|
164
|
+
expect(cat.resource("Notify[baz]")).to be
|
165
|
+
end
|
166
|
+
end
|
113
167
|
end
|
114
168
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'compiler localization' do
|
4
|
+
include_context 'l10n', 'ja'
|
5
|
+
|
6
|
+
let(:envdir) { File.join(my_fixture_dir, '..', 'envs') }
|
7
|
+
let(:environments) do
|
8
|
+
Puppet::Environments::Cached.new(
|
9
|
+
Puppet::Environments::Directories.new(envdir, [])
|
10
|
+
)
|
11
|
+
end
|
12
|
+
let(:env) { Puppet::Node::Environment.create(:prod, [File.join(envdir, 'prod', 'modules')]) }
|
13
|
+
let(:node) { Puppet::Node.new('test', :environment => env) }
|
14
|
+
|
15
|
+
around(:each) do |example|
|
16
|
+
Puppet.override(current_environment: env,
|
17
|
+
loaders: Puppet::Pops::Loaders.new(env),
|
18
|
+
environments: environments) do
|
19
|
+
example.run
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'localizes strings in functions' do
|
24
|
+
Puppet[:code] = <<~END
|
25
|
+
notify { 'demo':
|
26
|
+
message => l10n()
|
27
|
+
}
|
28
|
+
END
|
29
|
+
|
30
|
+
Puppet::Resource::Catalog.indirection.terminus_class = :compiler
|
31
|
+
catalog = Puppet::Resource::Catalog.indirection.find(node.name)
|
32
|
+
resource = catalog.resource(:notify, 'demo')
|
33
|
+
|
34
|
+
expect(resource).to be
|
35
|
+
expect(resource[:message]).to eq("それは楽しい時間です")
|
36
|
+
end
|
37
|
+
end
|