puppet 6.23.0-x64-mingw32 → 6.26.0-x64-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/CONTRIBUTING.md +5 -5
- data/Gemfile +4 -4
- data/Gemfile.lock +32 -25
- 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/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/lookup.rb +78 -24
- data/lib/puppet/application/resource.rb +30 -15
- data/lib/puppet/application/ssl.rb +1 -0
- data/lib/puppet/concurrent/thread_local_singleton.rb +6 -3
- data/lib/puppet/configurer.rb +134 -56
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/defaults.rb +55 -32
- data/lib/puppet/environments.rb +75 -25
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/generate.rb +2 -0
- 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/metadata.rb +3 -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 +10 -8
- data/lib/puppet/file_system/jruby.rb +1 -1
- data/lib/puppet/file_system/windows.rb +6 -6
- data/lib/puppet/file_system.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/functions/versioncmp.rb +6 -2
- data/lib/puppet/generate/type.rb +9 -0
- data/lib/puppet/http/client.rb +1 -1
- data/lib/puppet/http/redirector.rb +5 -0
- 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.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/node.rb +1 -1
- data/lib/puppet/pal/pal_impl.rb +1 -1
- 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/code_merger.rb +4 -4
- data/lib/puppet/pops/parser/egrammar.ra +2 -0
- data/lib/puppet/pops/parser/eparser.rb +1014 -995
- 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_stringified_converter.rb +1 -1
- 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/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 +10 -9
- 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/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/ssl/verifier.rb +6 -0
- data/lib/puppet/test/test_helper.rb +4 -1
- data/lib/puppet/transaction/persistence.rb +21 -1
- data/lib/puppet/transaction/report.rb +15 -1
- data/lib/puppet/type/exec.rb +35 -5
- data/lib/puppet/type/file/data_sync.rb +1 -1
- data/lib/puppet/type/file/mode.rb +6 -0
- data/lib/puppet/type/file.rb +6 -6
- 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 +8 -3
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +40 -39
- 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 +20 -0
- data/lib/puppet/util/log.rb +8 -4
- data/lib/puppet/util/logging.rb +1 -25
- data/lib/puppet/util/monkey_patches.rb +6 -0
- data/lib/puppet/util/package.rb +25 -16
- 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/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/yaml.rb +21 -2
- data/lib/puppet/util.rb +4 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +6 -9
- data/locales/puppet.pot +5 -10418
- data/man/man5/puppet.conf.5 +52 -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 +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 +9 -6
- 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 +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.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/fixtures/unit/forge/bacula.json +1 -1
- data/spec/integration/application/agent_spec.rb +141 -37
- data/spec/integration/application/filebucket_spec.rb +16 -0
- data/spec/integration/application/lookup_spec.rb +32 -6
- 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/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 +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 +32 -0
- data/spec/spec_helper.rb +1 -10
- data/spec/unit/application/apply_spec.rb +76 -56
- data/spec/unit/application/lookup_spec.rb +131 -10
- data/spec/unit/application/resource_spec.rb +29 -0
- data/spec/unit/concurrent/thread_local_singleton_spec.rb +39 -0
- data/spec/unit/configurer_spec.rb +265 -57
- data/spec/unit/defaults_spec.rb +1 -0
- data/spec/unit/environments_spec.rb +184 -0
- data/spec/unit/face/generate_spec.rb +64 -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/mount/scripts_spec.rb +69 -0
- data/spec/unit/file_system_spec.rb +47 -4
- data/spec/unit/forge/module_release_spec.rb +3 -3
- 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/functions/versioncmp_spec.rb +40 -4
- data/spec/unit/functions4_spec.rb +2 -2
- data/spec/unit/http/client_spec.rb +58 -1
- 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 +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/node_spec.rb +6 -0
- data/spec/unit/parser/templatewrapper_spec.rb +12 -2
- data/spec/unit/pops/parser/parse_containers_spec.rb +2 -13
- 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/pops/validator/validator_spec.rb +5 -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 +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/gentoo_spec.rb +6 -5
- data/spec/unit/provider/service/init_spec.rb +15 -9
- data/spec/unit/provider/service/launchd_spec.rb +11 -0
- data/spec/unit/provider/service/openwrt_spec.rb +21 -29
- data/spec/unit/provider/service/redhat_spec.rb +3 -2
- 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/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/transaction/persistence_spec.rb +51 -0
- 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/user_spec.rb +0 -45
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/json_spec.rb +126 -0
- data/spec/unit/util/logging_spec.rb +2 -0
- data/spec/unit/util/windows/sid_spec.rb +39 -4
- data/spec/unit/util/yaml_spec.rb +54 -29
- data/tasks/generate_cert_fixtures.rake +10 -1
- data/tasks/parallel.rake +3 -3
- metadata +52 -96
- 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
@@ -472,67 +472,58 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
|
|
472
472
|
end
|
473
473
|
|
474
474
|
context 'multiple agents running' do
|
475
|
-
|
475
|
+
def with_another_agent_running(&block)
|
476
476
|
path = Puppet[:agent_catalog_run_lockfile]
|
477
477
|
|
478
478
|
th = Thread.new {
|
479
|
-
%x{ruby -e "$0 = 'puppet'; File.write('#{path}', Process.pid); sleep(
|
479
|
+
%x{ruby -e "$0 = 'puppet'; File.write('#{path}', Process.pid); sleep(5)"}
|
480
480
|
}
|
481
481
|
|
482
|
+
# ensure file is written before yielding
|
482
483
|
until File.exists?(path) && File.size(path) > 0 do
|
483
484
|
sleep 0.1
|
484
485
|
end
|
485
486
|
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
487
|
+
begin
|
488
|
+
yield
|
489
|
+
ensure
|
490
|
+
th.kill # kill thread so we don't wait too much
|
491
|
+
end
|
492
|
+
end
|
490
493
|
|
491
|
-
|
494
|
+
it "exits if an agent is already running" do
|
495
|
+
with_another_agent_running do
|
496
|
+
expect {
|
497
|
+
agent.command_line.args << '--test'
|
498
|
+
agent.run
|
499
|
+
}.to exit_with(1).and output(/Run of Puppet configuration client already in progress; skipping/).to_stdout
|
500
|
+
end
|
492
501
|
end
|
493
502
|
|
494
503
|
it "waits for other agent run to finish before starting" do
|
495
504
|
server.start_server do |port|
|
496
|
-
path = Puppet[:agent_catalog_run_lockfile]
|
497
505
|
Puppet[:serverport] = port
|
498
506
|
Puppet[:waitforlock] = 1
|
499
507
|
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
sleep 0.1
|
508
|
+
with_another_agent_running do
|
509
|
+
expect {
|
510
|
+
agent.command_line.args << '--test'
|
511
|
+
agent.run
|
512
|
+
}.to exit_with(0).and output(/Info: Will try again in #{Puppet[:waitforlock]} seconds./).to_stdout
|
506
513
|
end
|
507
|
-
|
508
|
-
expect {
|
509
|
-
agent.command_line.args << '--test'
|
510
|
-
agent.run
|
511
|
-
}.to exit_with(0).and output(/Info: Will try again in #{Puppet[:waitforlock]} seconds./).to_stdout
|
512
|
-
|
513
|
-
th.kill # kill thread so we don't wait too much
|
514
514
|
end
|
515
515
|
end
|
516
516
|
|
517
517
|
it "exits if maxwaitforlock is exceeded" do
|
518
|
-
path = Puppet[:agent_catalog_run_lockfile]
|
519
518
|
Puppet[:waitforlock] = 1
|
520
519
|
Puppet[:maxwaitforlock] = 0
|
521
520
|
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
sleep 0.1
|
521
|
+
with_another_agent_running do
|
522
|
+
expect {
|
523
|
+
agent.command_line.args << '--test'
|
524
|
+
agent.run
|
525
|
+
}.to exit_with(1).and output(/Exiting now because the maxwaitforlock timeout has been exceeded./).to_stdout
|
528
526
|
end
|
529
|
-
|
530
|
-
expect {
|
531
|
-
agent.command_line.args << '--test'
|
532
|
-
agent.run
|
533
|
-
}.to exit_with(1).and output(/Exiting now because the maxwaitforlock timeout has been exceeded./).to_stdout
|
534
|
-
|
535
|
-
th.kill # kill thread so we don't wait too much
|
536
527
|
end
|
537
528
|
end
|
538
529
|
|
@@ -572,7 +563,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
|
|
572
563
|
).and matching(
|
573
564
|
/Notify\[a message\]\/message:/
|
574
565
|
)).to_stdout
|
575
|
-
.and output(/
|
566
|
+
.and output(/Could not retrieve catalog from remote server/).to_stderr
|
576
567
|
end
|
577
568
|
|
578
569
|
it 'preserves the old cached catalog if validation fails with the old one' do
|
@@ -591,7 +582,7 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
|
|
591
582
|
agent.command_line.args << '--test'
|
592
583
|
agent.run
|
593
584
|
}.to exit_with(1)
|
594
|
-
.and output(
|
585
|
+
.and output(%r{Retrieving plugin}).to_stdout
|
595
586
|
.and output(%r{Validation of Exec\[unqualified_command\] failed: 'unqualified_command' is not qualified and no path was specified}).to_stderr
|
596
587
|
end
|
597
588
|
|
@@ -632,5 +623,118 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do
|
|
632
623
|
expect(report.metrics).to_not be_empty
|
633
624
|
end
|
634
625
|
end
|
626
|
+
|
627
|
+
it "caches a report even if the REST request fails" do
|
628
|
+
server.start_server do |port|
|
629
|
+
Puppet[:serverport] = port
|
630
|
+
Puppet[:report_port] = "-1"
|
631
|
+
expect {
|
632
|
+
agent.command_line.args << '--test'
|
633
|
+
agent.run
|
634
|
+
}.to exit_with(0)
|
635
|
+
.and output(%r{Applied catalog}).to_stdout
|
636
|
+
.and output(%r{Could not send report}).to_stderr
|
637
|
+
|
638
|
+
report = Puppet::Transaction::Report.convert_from(:yaml, File.read(Puppet[:lastrunreport]))
|
639
|
+
expect(report).to be
|
640
|
+
end
|
641
|
+
end
|
642
|
+
end
|
643
|
+
|
644
|
+
context "environment convergence" do
|
645
|
+
it "falls back to making a node request if the last server-specified environment cannot be loaded" do
|
646
|
+
mounts = {}
|
647
|
+
mounts[:node] = -> (req, res) {
|
648
|
+
node = Puppet::Node.new('test', environment: Puppet::Node::Environment.remote('doesnotexistonagent'))
|
649
|
+
res.body = formatter.render(node)
|
650
|
+
res['Content-Type'] = formatter.mime
|
651
|
+
}
|
652
|
+
|
653
|
+
server.start_server(mounts: mounts) do |port|
|
654
|
+
Puppet[:serverport] = port
|
655
|
+
Puppet[:log_level] = 'debug'
|
656
|
+
|
657
|
+
expect {
|
658
|
+
agent.command_line.args << '--test'
|
659
|
+
agent.run
|
660
|
+
}.to exit_with(0)
|
661
|
+
.and output(a_string_matching(%r{Debug: Requesting environment from the server})).to_stdout
|
662
|
+
|
663
|
+
Puppet::Application.clear!
|
664
|
+
|
665
|
+
expect {
|
666
|
+
agent.command_line.args << '--test'
|
667
|
+
agent.run
|
668
|
+
}.to exit_with(0)
|
669
|
+
.and output(a_string_matching(%r{Debug: Successfully loaded last environment from the lastrunfile})).to_stdout
|
670
|
+
end
|
671
|
+
end
|
672
|
+
|
673
|
+
it "switches to 'newenv' environment and retries the run" do
|
674
|
+
first_run = true
|
675
|
+
libdir = File.join(my_fixture_dir, 'lib')
|
676
|
+
|
677
|
+
# we have to use the :facter terminus to reliably test that pluginsynced
|
678
|
+
# facts are included in the catalog request
|
679
|
+
Puppet::Node::Facts.indirection.terminus_class = :facter
|
680
|
+
|
681
|
+
mounts = {}
|
682
|
+
|
683
|
+
# During the first run, only return metadata for the top-level directory.
|
684
|
+
# During the second run, include metadata for all of the 'lib' fixtures
|
685
|
+
# due to the `recurse` option.
|
686
|
+
mounts[:file_metadatas] = -> (req, res) {
|
687
|
+
request = Puppet::FileServing::Metadata.indirection.request(
|
688
|
+
:search, libdir, nil, recurse: !first_run
|
689
|
+
)
|
690
|
+
data = Puppet::FileServing::Metadata.indirection.terminus(:file).search(request)
|
691
|
+
res.body = formatter.render(data)
|
692
|
+
res['Content-Type'] = formatter.mime
|
693
|
+
}
|
694
|
+
|
695
|
+
mounts[:file_content] = -> (req, res) {
|
696
|
+
request = Puppet::FileServing::Content.indirection.request(
|
697
|
+
:find, File.join(libdir, 'facter', 'agent_spec_role.rb'), nil
|
698
|
+
)
|
699
|
+
content = Puppet::FileServing::Content.indirection.terminus(:file).find(request)
|
700
|
+
res.body = content.content
|
701
|
+
res['Content-Length'] = content.content.length
|
702
|
+
res['Content-Type'] = 'application/octet-stream'
|
703
|
+
}
|
704
|
+
|
705
|
+
# During the first run, return an empty catalog referring to the newenv.
|
706
|
+
# During the second run, compile a catalog that depends on a fact that
|
707
|
+
# only exists in the second environment. If the fact is missing/empty,
|
708
|
+
# then compilation will fail since resources can't have an empty title.
|
709
|
+
mounts[:catalog] = -> (req, res) {
|
710
|
+
node = Puppet::Node.new('test')
|
711
|
+
|
712
|
+
code = if first_run
|
713
|
+
first_run = false
|
714
|
+
''
|
715
|
+
else
|
716
|
+
data = CGI.unescape(req.query['facts'])
|
717
|
+
facts = Puppet::Node::Facts.convert_from('json', data)
|
718
|
+
node.fact_merge(facts)
|
719
|
+
'notify { $facts["agent_spec_role"]: }'
|
720
|
+
end
|
721
|
+
|
722
|
+
catalog = compile_to_catalog(code, node)
|
723
|
+
catalog.environment = 'newenv'
|
724
|
+
|
725
|
+
res.body = formatter.render(catalog)
|
726
|
+
res['Content-Type'] = formatter.mime
|
727
|
+
}
|
728
|
+
|
729
|
+
server.start_server(mounts: mounts) do |port|
|
730
|
+
Puppet[:serverport] = port
|
731
|
+
expect {
|
732
|
+
agent.command_line.args << '--test'
|
733
|
+
agent.run
|
734
|
+
}.to exit_with(2)
|
735
|
+
.and output(a_string_matching(%r{Notice: Local environment: 'production' doesn't match server specified environment 'newenv', restarting agent run with environment 'newenv'})
|
736
|
+
.and matching(%r{defined 'message' as 'web'})).to_stdout
|
737
|
+
end
|
738
|
+
end
|
635
739
|
end
|
636
740
|
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
|
@@ -7,6 +7,7 @@ describe 'lookup' do
|
|
7
7
|
include PuppetSpec::Files
|
8
8
|
|
9
9
|
context 'with an environment' do
|
10
|
+
let(:fqdn) { Puppet.runtime[:facter].value(:fqdn) }
|
10
11
|
let(:env_name) { 'spec' }
|
11
12
|
let(:env_dir) { tmpdir('environments') }
|
12
13
|
let(:environment_files) do
|
@@ -44,12 +45,20 @@ describe 'lookup' do
|
|
44
45
|
let(:app) { Puppet::Application[:lookup] }
|
45
46
|
let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(populated_env_dir, env_name, 'modules')]) }
|
46
47
|
let(:environments) { Puppet::Environments::Directories.new(populated_env_dir, []) }
|
48
|
+
let(:facts) { Puppet::Node::Facts.new("facts", {'my_fact' => 'my_fact_value'}) }
|
49
|
+
let(:cert) { pem_content('oid.pem') }
|
47
50
|
|
51
|
+
let(:node) { Puppet::Node.new('testnode', :facts => facts, :environment => env) }
|
48
52
|
let(:populated_env_dir) do
|
49
53
|
dir_contained_in(env_dir, environment_files)
|
50
54
|
env_dir
|
51
55
|
end
|
52
56
|
|
57
|
+
before do
|
58
|
+
stub_request(:get, "https://puppet:8140/puppet-ca/v1/certificate/#{fqdn}").to_return(body: cert)
|
59
|
+
allow(Puppet::Node::Facts.indirection).to receive(:find).and_return(facts)
|
60
|
+
end
|
61
|
+
|
53
62
|
def lookup(key, options = {}, explain = false)
|
54
63
|
key = [key] unless key.is_a?(Array)
|
55
64
|
allow(app.command_line).to receive(:args).and_return(key)
|
@@ -90,24 +99,41 @@ describe 'lookup' do
|
|
90
99
|
expect(lookup('a')).to eql('value a')
|
91
100
|
end
|
92
101
|
|
102
|
+
it 'loads trusted information from the node certificate' do
|
103
|
+
allow(Puppet).to receive(:override).and_call_original
|
104
|
+
expect(Puppet).to receive(:override).with(trusted_information: an_object_having_attributes(
|
105
|
+
certname: fqdn,
|
106
|
+
extensions: { "1.3.6.1.4.1.34380.1.2.1.1" => "somevalue" }))
|
107
|
+
|
108
|
+
Puppet.settings[:node_terminus] = 'exec'
|
109
|
+
expect_any_instance_of(Puppet::Node::Exec).to receive(:find).and_return(node)
|
110
|
+
lookup('a', :compile => true)
|
111
|
+
end
|
112
|
+
|
93
113
|
it 'loads external facts when running without --node' do
|
94
114
|
expect(Puppet::Util).not_to receive(:skip_external_facts)
|
95
115
|
expect(Facter).not_to receive(:load_external)
|
96
116
|
lookup('a')
|
97
117
|
end
|
98
118
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
119
|
+
describe 'when using --node' do
|
120
|
+
let(:fqdn) { 'random_node' }
|
121
|
+
|
122
|
+
it 'skips loading of external facts' do
|
123
|
+
app.options[:node] = fqdn
|
124
|
+
|
125
|
+
expect(Puppet::Node::Facts.indirection).to receive(:find).and_return(facts)
|
126
|
+
expect(Facter).to receive(:load_external).once.with(false)
|
127
|
+
expect(Facter).to receive(:load_external).once.with(true)
|
128
|
+
lookup('a')
|
129
|
+
end
|
104
130
|
end
|
105
131
|
|
106
132
|
context 'uses node_terminus' do
|
107
133
|
require 'puppet/indirector/node/exec'
|
108
134
|
require 'puppet/indirector/node/plain'
|
109
135
|
|
110
|
-
let(:node) { Puppet::Node.new('testnode', :environment => env) }
|
136
|
+
let(:node) { Puppet::Node.new('testnode', :facts => facts, :environment => env) }
|
111
137
|
|
112
138
|
it ':plain without --compile' do
|
113
139
|
Puppet.settings[:node_terminus] = 'exec'
|
@@ -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
|
@@ -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
|