puppet 6.23.0 → 6.26.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 +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
@@ -96,6 +96,14 @@ describe Puppet::HTTP::Service::Compiler do
|
|
96
96
|
subject.post_catalog(certname, environment: 'production', facts: facts, configured_environment: 'agent_specified')
|
97
97
|
end
|
98
98
|
|
99
|
+
it 'includes check_environment' do
|
100
|
+
stub_request(:post, uri)
|
101
|
+
.with(body: hash_including('check_environment' => 'false'))
|
102
|
+
.to_return(**catalog_response)
|
103
|
+
|
104
|
+
subject.post_catalog(certname, environment: 'production', facts: facts)
|
105
|
+
end
|
106
|
+
|
99
107
|
it 'includes transaction_uuid' do
|
100
108
|
uuid = "ec3d2844-b236-4287-b0ad-632fbb4d1ff0"
|
101
109
|
|
@@ -11,6 +11,9 @@ def set_facts(fact_hash)
|
|
11
11
|
end
|
12
12
|
|
13
13
|
describe Puppet::Resource::Catalog::Compiler do
|
14
|
+
include Matchers::Resource
|
15
|
+
include PuppetSpec::Files
|
16
|
+
|
14
17
|
let(:compiler) { described_class.new }
|
15
18
|
let(:node_name) { "foo" }
|
16
19
|
let(:node) { Puppet::Node.new(node_name)}
|
@@ -236,6 +239,46 @@ describe Puppet::Resource::Catalog::Compiler do
|
|
236
239
|
expect { compiler.find(@request) }.to raise_error Puppet::Error,
|
237
240
|
"Unable to find a common checksum type between agent '' and master '[:sha256, :sha256lite, :md5, :md5lite, :sha1, :sha1lite, :sha512, :sha384, :sha224, :mtime, :ctime, :none]'."
|
238
241
|
end
|
242
|
+
|
243
|
+
it "prevents the environment from being evicted during compilation" do
|
244
|
+
Puppet[:environment_timeout] = 0
|
245
|
+
|
246
|
+
envs = Puppet.lookup(:environments)
|
247
|
+
|
248
|
+
expect(compiler).to receive(:compile) do
|
249
|
+
# we should get the same object
|
250
|
+
expect(envs.get!(:production)).to equal(envs.get!(:production))
|
251
|
+
end
|
252
|
+
|
253
|
+
compiler.find(@request)
|
254
|
+
end
|
255
|
+
|
256
|
+
context 'when checking agent and server specified environments' do
|
257
|
+
before :each do
|
258
|
+
FileUtils.mkdir_p(File.join(Puppet[:environmentpath], 'env_server'))
|
259
|
+
FileUtils.mkdir_p(File.join(Puppet[:environmentpath], 'env_agent'))
|
260
|
+
|
261
|
+
node.environment = 'env_server'
|
262
|
+
allow(Puppet::Node.indirection).to receive(:find).and_return(node)
|
263
|
+
|
264
|
+
@request.environment = 'env_agent'
|
265
|
+
end
|
266
|
+
|
267
|
+
it 'ignores mismatched environments by default' do
|
268
|
+
catalog = compiler.find(@request)
|
269
|
+
|
270
|
+
expect(catalog.environment).to eq('env_server')
|
271
|
+
expect(catalog).to have_resource('Stage[main]')
|
272
|
+
end
|
273
|
+
|
274
|
+
it 'returns an empty catalog if asked to check the environment and they are mismatched' do
|
275
|
+
@request.options[:check_environment] = "true"
|
276
|
+
catalog = compiler.find(@request)
|
277
|
+
|
278
|
+
expect(catalog.environment).to eq('env_server')
|
279
|
+
expect(catalog.resources).to be_empty
|
280
|
+
end
|
281
|
+
end
|
239
282
|
end
|
240
283
|
|
241
284
|
describe "when handling a request with facts" do
|
@@ -564,6 +607,50 @@ describe Puppet::Resource::Catalog::Compiler do
|
|
564
607
|
metadata
|
565
608
|
end
|
566
609
|
|
610
|
+
describe "and the environment is a symlink and versioned_environment_dirs is true" do
|
611
|
+
|
612
|
+
let(:tmpdir) { Dir.mktmpdir }
|
613
|
+
|
614
|
+
before(:each) do
|
615
|
+
Puppet[:versioned_environment_dirs] = true
|
616
|
+
prod_path = File.join(Puppet[:environmentpath], 'production')
|
617
|
+
FileUtils.rm_rf(prod_path)
|
618
|
+
FileUtils.symlink(tmpdir, prod_path)
|
619
|
+
end
|
620
|
+
|
621
|
+
it "inlines metadata for a file" do
|
622
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
623
|
+
file { '#{path}':
|
624
|
+
ensure => file,
|
625
|
+
source => '#{source}'
|
626
|
+
}
|
627
|
+
MANIFEST
|
628
|
+
|
629
|
+
module_relative_path = 'modules/mymodule/files/config_file.txt'
|
630
|
+
metadata = stubs_file_metadata(checksum_type,
|
631
|
+
checksum_value,
|
632
|
+
module_relative_path,
|
633
|
+
File.join(tmpdir, module_relative_path) )
|
634
|
+
expect(metadata).to receive(:source=).with(source)
|
635
|
+
expect(metadata).to receive(:content_uri=).with("puppet:///#{module_relative_path}")
|
636
|
+
|
637
|
+
options = {
|
638
|
+
:environment => catalog.environment_instance,
|
639
|
+
:links => :manage,
|
640
|
+
:checksum_type => checksum_type.to_sym,
|
641
|
+
:source_permissions => :ignore
|
642
|
+
}
|
643
|
+
expect(Puppet::FileServing::Metadata.indirection).to receive(:find).with(source, options).and_return(metadata)
|
644
|
+
|
645
|
+
compiler.send(:inline_metadata, catalog, checksum_type)
|
646
|
+
|
647
|
+
|
648
|
+
expect(catalog.metadata[path]).to eq(metadata)
|
649
|
+
expect(catalog.recursive_metadata).to be_empty
|
650
|
+
|
651
|
+
end
|
652
|
+
end
|
653
|
+
|
567
654
|
it "inlines metadata for a file" do
|
568
655
|
catalog = compile_to_catalog(<<-MANIFEST, node)
|
569
656
|
file { '#{path}':
|
@@ -33,6 +33,14 @@ describe Puppet::Resource::Catalog::Rest do
|
|
33
33
|
described_class.indirection.find(certname, environment: Puppet::Node::Environment.remote('outerspace'))
|
34
34
|
end
|
35
35
|
|
36
|
+
it "passes 'check_environment'" do
|
37
|
+
stub_request(:post, uri)
|
38
|
+
.with(body: hash_including('check_environment' => 'true'))
|
39
|
+
.to_return(**catalog_response(catalog))
|
40
|
+
|
41
|
+
described_class.indirection.find(certname, check_environment: true)
|
42
|
+
end
|
43
|
+
|
36
44
|
it 'constructs a catalog environment_instance' do
|
37
45
|
env = Puppet::Node::Environment.remote('outerspace')
|
38
46
|
catalog = Puppet::Resource::Catalog.new(certname, env)
|
@@ -499,7 +499,7 @@ describe Puppet::Indirector::Indirection do
|
|
499
499
|
end
|
500
500
|
|
501
501
|
it "should return the result of saving to the terminus" do
|
502
|
-
request = double('request', :instance => @instance, :node => nil, :ignore_cache_save? => false)
|
502
|
+
request = double('request', :instance => @instance, :node => nil, :ignore_cache_save? => false, :ignore_terminus? => false)
|
503
503
|
|
504
504
|
expect(@indirection).to receive(:request).and_return(request)
|
505
505
|
|
@@ -509,7 +509,7 @@ describe Puppet::Indirector::Indirection do
|
|
509
509
|
end
|
510
510
|
|
511
511
|
it "should use a request to save the object to the cache" do
|
512
|
-
request = double('request', :instance => @instance, :node => nil, :ignore_cache_save? => false)
|
512
|
+
request = double('request', :instance => @instance, :node => nil, :ignore_cache_save? => false, :ignore_terminus? => false)
|
513
513
|
|
514
514
|
expect(@indirection).to receive(:request).and_return(request)
|
515
515
|
|
@@ -519,7 +519,7 @@ describe Puppet::Indirector::Indirection do
|
|
519
519
|
end
|
520
520
|
|
521
521
|
it "should not save to the cache if the normal save fails" do
|
522
|
-
request = double('request', :instance => @instance, :node => nil)
|
522
|
+
request = double('request', :instance => @instance, :node => nil, :ignore_terminus? => false)
|
523
523
|
|
524
524
|
expect(@indirection).to receive(:request).and_return(request)
|
525
525
|
|
@@ -534,6 +534,13 @@ describe Puppet::Indirector::Indirection do
|
|
534
534
|
|
535
535
|
@indirection.save(@instance, '/my/key', :ignore_cache_save => true)
|
536
536
|
end
|
537
|
+
|
538
|
+
it "should only save to the cache if the request specifies not to use the terminus" do
|
539
|
+
expect(@terminus).not_to receive(:save)
|
540
|
+
expect(@cache).to receive(:save)
|
541
|
+
|
542
|
+
@indirection.save(@instance, "/my/key", :ignore_terminus => true)
|
543
|
+
end
|
537
544
|
end
|
538
545
|
end
|
539
546
|
|
@@ -1,120 +1,85 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'puppet/indirector/resource/ral'
|
3
3
|
|
4
|
-
describe
|
4
|
+
describe Puppet::Resource::Ral do
|
5
|
+
let(:my_instance) { Puppet::Type.type(:user).new(:name => "root") }
|
6
|
+
let(:wrong_instance) { Puppet::Type.type(:user).new(:name => "bob")}
|
7
|
+
|
8
|
+
def stub_retrieve(*instances)
|
9
|
+
instances.each do |i|
|
10
|
+
allow(i).to receive(:retrieve).and_return(Puppet::Resource.new(i, nil))
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
before do
|
15
|
+
described_class.indirection.terminus_class = :ral
|
16
|
+
|
17
|
+
# make sure we don't try to retrieve current state
|
18
|
+
allow_any_instance_of(Puppet::Type.type(:user)).to receive(:retrieve).never
|
19
|
+
stub_retrieve(my_instance, wrong_instance)
|
20
|
+
end
|
21
|
+
|
5
22
|
it "disallows remote requests" do
|
6
23
|
expect(Puppet::Resource::Ral.new.allow_remote_requests?).to eq(false)
|
7
24
|
end
|
8
25
|
|
9
26
|
describe "find" do
|
10
|
-
before do
|
11
|
-
@request = double('request', :key => "user/root")
|
12
|
-
end
|
13
|
-
|
14
27
|
it "should find an existing instance" do
|
15
|
-
|
28
|
+
allow(Puppet::Type.type(:user)).to receive(:instances).and_return([ wrong_instance, my_instance, wrong_instance ])
|
16
29
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
expect(Puppet::Type.type(:user)).to receive(:instances).and_return([ wrong_instance, my_instance, wrong_instance ])
|
21
|
-
expect(Puppet::Resource::Ral.new.find(@request)).to eq(my_resource)
|
30
|
+
actual_resource = described_class.indirection.find('user/root')
|
31
|
+
expect(actual_resource.name).to eq('User/root')
|
22
32
|
end
|
23
33
|
|
24
34
|
it "should produce Puppet::Error instead of ArgumentError" do
|
25
|
-
|
26
|
-
expect{Puppet::Resource::Ral.new.find(@bad_request)}.to raise_error(Puppet::Error)
|
35
|
+
expect{described_class.indirection.find('thiswill/causeanerror')}.to raise_error(Puppet::Error)
|
27
36
|
end
|
28
37
|
|
29
38
|
it "if there is no instance, it should create one" do
|
30
|
-
|
31
|
-
root = double("Root User")
|
32
|
-
root_resource = double("Root Resource")
|
33
|
-
|
34
|
-
expect(Puppet::Type.type(:user)).to receive(:instances).and_return([ wrong_instance, wrong_instance ])
|
35
|
-
expect(Puppet::Type.type(:user)).to receive(:new).with(hash_including(name: "root")).and_return(root)
|
36
|
-
expect(root).to receive(:to_resource).and_return(root_resource)
|
37
|
-
|
38
|
-
result = Puppet::Resource::Ral.new.find(@request)
|
39
|
+
allow(Puppet::Type.type(:user)).to receive(:instances).and_return([wrong_instance])
|
39
40
|
|
40
|
-
expect(
|
41
|
+
expect(Puppet::Type.type(:user)).to receive(:new).with(hash_including(name: "root")).and_return(my_instance)
|
42
|
+
expect(described_class.indirection.find('user/root')).to be
|
41
43
|
end
|
42
44
|
end
|
43
45
|
|
44
46
|
describe "search" do
|
45
|
-
before do
|
46
|
-
@request = double('request', :key => "user/", :options => {})
|
47
|
-
end
|
48
|
-
|
49
47
|
it "should convert ral resources into regular resources" do
|
50
|
-
|
51
|
-
my_instance = double("my user", :name => "root", :to_resource => my_resource)
|
48
|
+
allow(Puppet::Type.type(:user)).to receive(:instances).and_return([ my_instance ])
|
52
49
|
|
53
|
-
|
54
|
-
expect(
|
50
|
+
actual = described_class.indirection.search('user')
|
51
|
+
expect(actual).to contain_exactly(an_instance_of(Puppet::Resource))
|
55
52
|
end
|
56
53
|
|
57
54
|
it "should filter results by name if there's a name in the key" do
|
58
|
-
|
59
|
-
allow(my_resource).to receive(:to_resource).and_return(my_resource)
|
60
|
-
allow(my_resource).to receive(:[]).with(:name).and_return("root")
|
61
|
-
|
62
|
-
wrong_resource = double("wrong resource")
|
63
|
-
allow(wrong_resource).to receive(:to_resource).and_return(wrong_resource)
|
64
|
-
allow(wrong_resource).to receive(:[]).with(:name).and_return("bad")
|
55
|
+
allow(Puppet::Type.type(:user)).to receive(:instances).and_return([ my_instance, wrong_instance ])
|
65
56
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
@request = double('request', :key => "user/root", :options => {})
|
70
|
-
|
71
|
-
expect(Puppet::Type.type(:user)).to receive(:instances).and_return([ my_instance, wrong_instance ])
|
72
|
-
expect(Puppet::Resource::Ral.new.search(@request)).to eq([my_resource])
|
57
|
+
actual = described_class.indirection.search('user/root')
|
58
|
+
expect(actual).to contain_exactly(an_object_having_attributes(name: 'User/root'))
|
73
59
|
end
|
74
60
|
|
75
61
|
it "should filter results by query parameters" do
|
76
|
-
|
77
|
-
allow(wrong_resource).to receive(:to_resource).and_return(wrong_resource)
|
78
|
-
allow(wrong_resource).to receive(:[]).with(:name).and_return("root")
|
79
|
-
|
80
|
-
my_resource = double("wrong resource", title: "wrong resource")
|
81
|
-
allow(my_resource).to receive(:to_resource).and_return(my_resource)
|
82
|
-
allow(my_resource).to receive(:[]).with(:name).and_return("bob")
|
62
|
+
allow(Puppet::Type.type(:user)).to receive(:instances).and_return([ my_instance, wrong_instance ])
|
83
63
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
@request = double('request', :key => "user/", :options => {:name => "bob"})
|
88
|
-
|
89
|
-
expect(Puppet::Type.type(:user)).to receive(:instances).and_return([ my_instance, wrong_instance ])
|
90
|
-
expect(Puppet::Resource::Ral.new.search(@request)).to eq([my_resource])
|
64
|
+
actual = described_class.indirection.search('user', name: 'bob')
|
65
|
+
expect(actual).to contain_exactly(an_object_having_attributes(name: 'User/bob'))
|
91
66
|
end
|
92
67
|
|
93
68
|
it "should return sorted results" do
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
b_resource = double("bob resource")
|
99
|
-
allow(b_resource).to receive(:to_resource).and_return(b_resource)
|
100
|
-
allow(b_resource).to receive(:title).and_return("bob")
|
101
|
-
|
102
|
-
a_instance = double("alice user", :to_resource => a_resource)
|
103
|
-
b_instance = double("bob user", :to_resource => b_resource)
|
104
|
-
|
105
|
-
@request = double('request', :key => "user/", :options => {})
|
69
|
+
a_instance = Puppet::Type.type(:user).new(:name => "alice")
|
70
|
+
b_instance = Puppet::Type.type(:user).new(:name => "bob")
|
71
|
+
stub_retrieve(a_instance, b_instance)
|
72
|
+
allow(Puppet::Type.type(:user)).to receive(:instances).and_return([ b_instance, a_instance ])
|
106
73
|
|
107
|
-
expect(
|
108
|
-
expect(Puppet::Resource::Ral.new.search(@request)).to eq([a_resource, b_resource])
|
74
|
+
expect(described_class.indirection.search('user').map(&:title)).to eq(['alice', 'bob'])
|
109
75
|
end
|
110
76
|
end
|
111
77
|
|
112
78
|
describe "save" do
|
113
79
|
it "returns a report covering the application of the given resource to the system" do
|
114
80
|
resource = Puppet::Resource.new(:notify, "the title")
|
115
|
-
ral = Puppet::Resource::Ral.new
|
116
81
|
|
117
|
-
applied_resource, report =
|
82
|
+
applied_resource, report = described_class.indirection.save(resource, nil, environment: Puppet::Node::Environment.remote(:testing))
|
118
83
|
|
119
84
|
expect(applied_resource.title).to eq("the title")
|
120
85
|
expect(report.environment).to eq("testing")
|
@@ -537,15 +537,6 @@ describe Puppet::Interface::Action do
|
|
537
537
|
end
|
538
538
|
end
|
539
539
|
|
540
|
-
context "#when_rendering" do
|
541
|
-
it "should fail if no type is given when_rendering"
|
542
|
-
it "should accept a when_rendering block"
|
543
|
-
it "should accept multiple when_rendering blocks"
|
544
|
-
it "should fail if when_rendering gets a non-symbol identifier"
|
545
|
-
it "should fail if a second block is given for the same type"
|
546
|
-
it "should return the block if asked"
|
547
|
-
end
|
548
|
-
|
549
540
|
context "#validate_and_clean" do
|
550
541
|
subject do
|
551
542
|
Puppet::Interface.new(:validate_args, '1.0.0') do
|
data/spec/unit/module_spec.rb
CHANGED
@@ -478,7 +478,7 @@ describe Puppet::Module do
|
|
478
478
|
end
|
479
479
|
end
|
480
480
|
|
481
|
-
[:plugins, :pluginfacts, :templates, :files, :manifests].each do |filetype|
|
481
|
+
[:plugins, :pluginfacts, :templates, :files, :manifests, :scripts].each do |filetype|
|
482
482
|
case filetype
|
483
483
|
when :plugins
|
484
484
|
dirname = "lib"
|
@@ -567,6 +567,20 @@ describe Puppet::Module do
|
|
567
567
|
expect(mod.task_file(task_exe)).to eq("#{mod.path}/tasks/#{task_exe}")
|
568
568
|
end
|
569
569
|
|
570
|
+
it "should list files from the scripts directory if required by the task" do
|
571
|
+
mod = 'loads_scripts'
|
572
|
+
task_dep = 'myscript.sh'
|
573
|
+
script_ref = "#{mod}/scripts/#{task_dep}"
|
574
|
+
task_json = JSON.generate({'files' => [script_ref]})
|
575
|
+
task = [['task', { name: 'task.json', content: task_json }]]
|
576
|
+
mod = PuppetSpec::Modules.create(mod, @modpath, {:environment => env,
|
577
|
+
:scripts => [task_dep],
|
578
|
+
:tasks => task})
|
579
|
+
|
580
|
+
expect(mod.tasks.first.files).to include({'name' => script_ref,
|
581
|
+
'path' => /#{script_ref}/})
|
582
|
+
end
|
583
|
+
|
570
584
|
it "should return nil when asked for an individual task file if it does not exist" do
|
571
585
|
mod = PuppetSpec::Modules.create('task_file_neg', @modpath, {:environment => env,
|
572
586
|
:tasks => []})
|
@@ -66,6 +66,18 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => RUBY_PLATFORM =
|
|
66
66
|
graph_should_include 'pmtacceptance-stdlib', nil => v('4.1.0')
|
67
67
|
end
|
68
68
|
|
69
|
+
it 'reports a meaningful error if the name is invalid' do
|
70
|
+
app = installer('ntp', install_dir, options)
|
71
|
+
results = app.run
|
72
|
+
expect(results).to include :result => :failure
|
73
|
+
expect(results[:error][:oneline]).to eq("Could not install 'ntp', did you mean 'puppetlabs-ntp'?")
|
74
|
+
expect(results[:error][:multiline]).to eq(<<~END.chomp)
|
75
|
+
Could not install module 'ntp'
|
76
|
+
The name 'ntp' is invalid
|
77
|
+
Did you mean `puppet module install puppetlabs-ntp`?
|
78
|
+
END
|
79
|
+
end
|
80
|
+
|
69
81
|
context 'with a tarball file' do
|
70
82
|
let(:module) { fixtures('stdlib.tgz') }
|
71
83
|
|
@@ -273,18 +285,45 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => RUBY_PLATFORM =
|
|
273
285
|
expect(subject).to include :result => :failure
|
274
286
|
end
|
275
287
|
|
276
|
-
|
277
|
-
graph
|
278
|
-
exception
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
+
context 'with unsatisfiable dependencies' do
|
289
|
+
let(:graph) { double(SemanticPuppet::Dependency::Graph, :modules => ['pmtacceptance-mysql']) }
|
290
|
+
let(:exception) { SemanticPuppet::Dependency::UnsatisfiableGraph.new(graph, constraint) }
|
291
|
+
|
292
|
+
before do
|
293
|
+
allow(SemanticPuppet::Dependency).to receive(:resolve).and_raise(exception)
|
294
|
+
end
|
295
|
+
|
296
|
+
context 'with known constraint' do
|
297
|
+
let(:constraint) { 'pmtacceptance-mysql' }
|
298
|
+
|
299
|
+
it 'prints a detailed error containing the modules that would not be satisfied' do
|
300
|
+
expect(subject[:error]).to include(:multiline)
|
301
|
+
expect(subject[:error][:multiline]).to include("Could not install module 'pmtacceptance-mysql' (> 1.0.0)")
|
302
|
+
expect(subject[:error][:multiline]).to include("The requested version cannot satisfy one or more of the following installed modules:")
|
303
|
+
expect(subject[:error][:multiline]).to include("pmtacceptance-keystone, expects 'pmtacceptance-mysql': >=0.6.1 <1.0.0")
|
304
|
+
expect(subject[:error][:multiline]).to include("Use `puppet module install 'pmtacceptance-mysql' --ignore-dependencies` to install only this module")
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
308
|
+
context 'with missing constraint' do
|
309
|
+
let(:constraint) { nil }
|
310
|
+
|
311
|
+
it 'prints the generic error message' do
|
312
|
+
expect(subject[:error]).to include(:multiline)
|
313
|
+
expect(subject[:error][:multiline]).to include("Could not install module 'pmtacceptance-mysql' (> 1.0.0)")
|
314
|
+
expect(subject[:error][:multiline]).to include("The requested version cannot satisfy all dependencies")
|
315
|
+
end
|
316
|
+
end
|
317
|
+
|
318
|
+
context 'with unknown constraint' do
|
319
|
+
let(:constraint) { 'another' }
|
320
|
+
|
321
|
+
it 'prints the generic error message' do
|
322
|
+
expect(subject[:error]).to include(:multiline)
|
323
|
+
expect(subject[:error][:multiline]).to include("Could not install module 'pmtacceptance-mysql' (> 1.0.0)")
|
324
|
+
expect(subject[:error][:multiline]).to include("The requested version cannot satisfy all dependencies")
|
325
|
+
end
|
326
|
+
end
|
288
327
|
end
|
289
328
|
|
290
329
|
context 'with --ignore-dependencies' do
|
@@ -101,21 +101,6 @@ describe Puppet::Network::AuthStore::Declaration do
|
|
101
101
|
}
|
102
102
|
}
|
103
103
|
|
104
|
-
describe "when the pattern is a numeric IP with a back reference" do
|
105
|
-
pending("implementation of backreferences for IP") do
|
106
|
-
before :each do
|
107
|
-
@ip = '100.101.$1'
|
108
|
-
@declaration = Puppet::Network::AuthStore::Declaration.new(:allow_ip,@ip).interpolate('12.34'.match(/(.*)/))
|
109
|
-
end
|
110
|
-
it "should match an IP with the appropriate interpolation" do
|
111
|
-
@declaration.should be_match('www.testsite.org',@ip.sub(/\$1/,'12.34'))
|
112
|
-
end
|
113
|
-
it "should not match other IPs" do
|
114
|
-
@declaration.should_not be_match('www.testsite.org',@ip.sub(/\$1/,'66.34'))
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
104
|
[
|
120
105
|
"02001:0000:1234:0000:0000:C1C0:ABCD:0876",
|
121
106
|
"2001:0000:1234:0000:00001:C1C0:ABCD:0876",
|
@@ -368,6 +368,12 @@ describe "Puppet Network Format" do
|
|
368
368
|
expect(json.render_multiple(instances)).to eq([{"string" => "foo"}].to_json)
|
369
369
|
end
|
370
370
|
|
371
|
+
it "should render multiple instances as a JSON array of hashes when multi_json is not present" do
|
372
|
+
hide_const("MultiJson") if defined?(MultiJson)
|
373
|
+
instances = [FormatsTest.new("foo")]
|
374
|
+
expect(json.render_multiple(instances)).to eq([{"string" => "foo"}].to_json)
|
375
|
+
end
|
376
|
+
|
371
377
|
it "should intern an instance from a JSON hash" do
|
372
378
|
text = Puppet::Util::Json.dump({"string" => "parsed_json"})
|
373
379
|
instance = json.intern(FormatsTest, text)
|
data/spec/unit/node_spec.rb
CHANGED
@@ -40,6 +40,12 @@ describe Puppet::Node do
|
|
40
40
|
expect(node.environment.name).to eq(:bar)
|
41
41
|
end
|
42
42
|
|
43
|
+
it "sets environment_name with the correct environment name" do
|
44
|
+
node = Puppet::Node.new("foo")
|
45
|
+
node.environment = Puppet::Node::Environment.remote('www123')
|
46
|
+
expect(node.environment_name).to eq(:www123)
|
47
|
+
end
|
48
|
+
|
43
49
|
it "allows its environment to be set by parameters after initialization" do
|
44
50
|
node = Puppet::Node.new("foo")
|
45
51
|
node.parameters["environment"] = :bar
|
@@ -2,6 +2,8 @@ require 'spec_helper'
|
|
2
2
|
require 'puppet/parser/templatewrapper'
|
3
3
|
|
4
4
|
describe Puppet::Parser::TemplateWrapper do
|
5
|
+
include PuppetSpec::Files
|
6
|
+
|
5
7
|
let(:known_resource_types) { Puppet::Resource::TypeCollection.new("env") }
|
6
8
|
let(:scope) do
|
7
9
|
compiler = Puppet::Parser::Compiler.new(Puppet::Node.new("mynode"))
|
@@ -41,6 +43,13 @@ describe Puppet::Parser::TemplateWrapper do
|
|
41
43
|
expect(tw.result).to eq(full_file_name)
|
42
44
|
end
|
43
45
|
|
46
|
+
it "ignores a leading BOM" do
|
47
|
+
full_file_name = given_a_template_file("bom_template", "\uFEFF<%= file %>")
|
48
|
+
|
49
|
+
tw.file = "bom_template"
|
50
|
+
expect(tw.result).to eq(full_file_name)
|
51
|
+
end
|
52
|
+
|
44
53
|
it "evaluates a given string as a template" do
|
45
54
|
expect(tw.result("template contents")).to eql("template contents")
|
46
55
|
end
|
@@ -90,11 +99,12 @@ describe Puppet::Parser::TemplateWrapper do
|
|
90
99
|
end
|
91
100
|
|
92
101
|
def given_a_template_file(name, contents)
|
93
|
-
full_name = "
|
102
|
+
full_name = tmpfile("template_#{name}")
|
103
|
+
File.binwrite(full_name, contents)
|
104
|
+
|
94
105
|
allow(Puppet::Parser::Files).to receive(:find_template).
|
95
106
|
with(name, anything()).
|
96
107
|
and_return(full_name)
|
97
|
-
allow(Puppet::FileSystem).to receive(:read_preserve_line_endings).with(full_name).and_return(contents)
|
98
108
|
|
99
109
|
full_name
|
100
110
|
end
|
@@ -95,18 +95,7 @@ describe "egrammar parsing containers" do
|
|
95
95
|
expect(dump(parse("class foo::default {}"))).to eq("(class foo::default ())")
|
96
96
|
end
|
97
97
|
|
98
|
-
it "class class inherits default {} # inherits default", :broken => true do
|
99
|
-
expect {
|
100
|
-
parse("class class inherits default {}")
|
101
|
-
}.to raise_error(/not a valid classname/)
|
102
|
-
end
|
103
|
-
|
104
98
|
it "class class inherits default {} # inherits default" do
|
105
|
-
# TODO: See previous test marked as :broken=>true, it is actually this test (result) that is wacky,
|
106
|
-
# this because a class is named at parse time (since class evaluation is lazy, the model must have the
|
107
|
-
# full class name for nested classes - only, it gets this wrong when a class is named "class" - or at least
|
108
|
-
# I think it is wrong.)
|
109
|
-
#
|
110
99
|
expect { parse("class class inherits default {}") }.to raise_error(/'class' keyword not allowed at this location/)
|
111
100
|
end
|
112
101
|
|
@@ -117,7 +106,7 @@ describe "egrammar parsing containers" do
|
|
117
106
|
|
118
107
|
context 'it should allow keywords as attribute names' do
|
119
108
|
['and', 'case', 'class', 'default', 'define', 'else', 'elsif', 'if', 'in', 'inherits', 'node', 'or',
|
120
|
-
'undef', 'unless', 'type', 'attr', 'function', 'private'].each do |keyword|
|
109
|
+
'undef', 'unless', 'type', 'attr', 'function', 'private', 'plan', 'apply'].each do |keyword|
|
121
110
|
it "such as #{keyword}" do
|
122
111
|
expect { parse("class x ($#{keyword}){} class { x: #{keyword} => 1 }") }.to_not raise_error
|
123
112
|
end
|
@@ -189,7 +178,7 @@ describe "egrammar parsing containers" do
|
|
189
178
|
|
190
179
|
context 'it should allow keywords as attribute names' do
|
191
180
|
['and', 'case', 'class', 'default', 'define', 'else', 'elsif', 'if', 'in', 'inherits', 'node', 'or',
|
192
|
-
'undef', 'unless', 'type', 'attr', 'function', 'private'].each do |keyword|
|
181
|
+
'undef', 'unless', 'type', 'attr', 'function', 'private', 'plan', 'apply'].each do |keyword|
|
193
182
|
it "such as #{keyword}" do
|
194
183
|
expect {parse("define x ($#{keyword}){} x { y: #{keyword} => 1 }")}.to_not raise_error
|
195
184
|
end
|
@@ -154,4 +154,9 @@ describe 'ToStringifiedConverter' do
|
|
154
154
|
unassigned = [243, 176, 128, 128].pack("C*").force_encoding(Encoding::UTF_8)
|
155
155
|
expect(transform(unassigned)).to eq("")
|
156
156
|
end
|
157
|
+
|
158
|
+
it 'converts ProcessOutput objects to string' do
|
159
|
+
object = Puppet::Util::Execution::ProcessOutput.new('object', 0)
|
160
|
+
expect(transform(object)).to be_instance_of(String)
|
161
|
+
end
|
157
162
|
end
|
@@ -1980,6 +1980,12 @@ describe 'The type calculator' do
|
|
1980
1980
|
expect(calculator.instance?(tuple, [1, 'a', 1])).to eq(false)
|
1981
1981
|
end
|
1982
1982
|
|
1983
|
+
it 'should not consider ProcessOutput objects as instanceof PScalarDataType' do
|
1984
|
+
object = Puppet::Util::Execution::ProcessOutput.new('object', 0)
|
1985
|
+
|
1986
|
+
expect(calculator.instance?(PScalarDataType::DEFAULT, object)).to eq(false)
|
1987
|
+
end
|
1988
|
+
|
1983
1989
|
context 'and t is Struct' do
|
1984
1990
|
it 'should consider hash[cont] as instance of Struct[cont-t]' do
|
1985
1991
|
struct = struct_t({'a'=>Integer, 'b'=>String, 'c'=>Float})
|
@@ -432,6 +432,11 @@ describe "validating 4x" do
|
|
432
432
|
expect(acceptor.error_count).to eql(0)
|
433
433
|
end
|
434
434
|
|
435
|
+
it 'allows apply to be used as a resource attribute name' do
|
436
|
+
acceptor = validate(parse('apply("foo.example.com") { sometype { "resourcetitle": apply => "applyvalue" } }'))
|
437
|
+
expect(acceptor.error_count).to eql(0)
|
438
|
+
end
|
439
|
+
|
435
440
|
it 'accepts multiple arguments' do
|
436
441
|
acceptor = validate(parse('apply(["foo.example.com"], { "other" => "args" }) { }'))
|
437
442
|
expect(acceptor.error_count).to eql(0)
|
@@ -442,7 +442,7 @@ context Puppet::Type.type(:package).provider(:gem) do
|
|
442
442
|
end
|
443
443
|
|
444
444
|
context 'when is defaultfor' do
|
445
|
-
let(:os) {
|
445
|
+
let(:os) { Puppet.runtime[:facter].value(:operatingsystem) }
|
446
446
|
subject do
|
447
447
|
described_class.defaultfor(operatingsystem: os)
|
448
448
|
described_class.specificity
|
@@ -24,7 +24,7 @@ describe Puppet::Type.type(:package).provider(:pip2) do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
context 'when is defaultfor' do
|
27
|
-
let(:os) {
|
27
|
+
let(:os) { Puppet.runtime[:facter].value(:operatingsystem) }
|
28
28
|
subject do
|
29
29
|
described_class.defaultfor(operatingsystem: os)
|
30
30
|
described_class.specificity
|