puppet 7.7.0-x86-mingw32 → 7.11.0-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +7 -7
- data/Gemfile +4 -3
- data/Gemfile.lock +18 -18
- data/README.md +4 -4
- data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
- data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
- data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
- data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +0 -0
- data/{ext → examples}/nagios/check_puppet.rb +2 -2
- data/ext/README.md +13 -0
- data/ext/osx/puppet.plist +2 -0
- data/ext/project_data.yaml +1 -0
- data/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 +169 -50
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/defaults.rb +70 -30
- 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/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/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/p_sem_ver_type.rb +8 -2
- data/lib/puppet/pops/types/p_sensitive_type.rb +10 -0
- data/lib/puppet/pops/types/type_formatter.rb +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/apt.rb +3 -3
- data/lib/puppet/provider/package/nim.rb +11 -6
- data/lib/puppet/provider/package/pip.rb +15 -3
- data/lib/puppet/provider/package/pkg.rb +9 -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 +4 -4
- data/lib/puppet/provider/package/zypper.rb +3 -3
- data/lib/puppet/provider/parsedfile.rb +3 -0
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/freebsd.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 +8 -3
- 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 +25 -12
- data/lib/puppet/provider/user/useradd.rb +52 -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/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +11 -1
- data/lib/puppet/transaction/report.rb +15 -1
- data/lib/puppet/type/exec.rb +35 -5
- data/lib/puppet/type/file/mode.rb +6 -0
- data/lib/puppet/type/file.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 -9
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +39 -22
- 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/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 +346 -274
- data/man/man5/puppet.conf.5 +76 -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 +64 -0
- 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 +277 -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 +19 -10
- 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/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/p_sem_ver_type_spec.rb +18 -0
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +1 -1
- data/spec/unit/provider/package/nim_spec.rb +42 -0
- data/spec/unit/provider/package/pip2_spec.rb +1 -1
- data/spec/unit/provider/package/pip3_spec.rb +1 -1
- data/spec/unit/provider/package/pip_spec.rb +38 -1
- data/spec/unit/provider/package/pkg_spec.rb +19 -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/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/launchd_spec.rb +11 -0
- data/spec/unit/provider/service/systemd_spec.rb +13 -1
- data/spec/unit/provider/user/aix_spec.rb +100 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +68 -36
- data/spec/unit/provider/user/useradd_spec.rb +3 -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 +49 -34
- data/spec/unit/type/tidy_spec.rb +7 -0
- data/spec/unit/type/user_spec.rb +45 -0
- data/spec/unit/type_spec.rb +2 -2
- 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 +53 -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
@@ -5,6 +5,14 @@ require 'puppet/file_system'
|
|
5
5
|
describe Puppet::Environments do
|
6
6
|
FS = Puppet::FileSystem
|
7
7
|
|
8
|
+
module FsRemove
|
9
|
+
def remove
|
10
|
+
@properties[:directory?] = false
|
11
|
+
@properties[:exist?] = false
|
12
|
+
@properties[:executable?] = false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
8
16
|
before(:each) do
|
9
17
|
Puppet.settings.initialize_global_settings
|
10
18
|
Puppet[:environment_timeout] = "unlimited"
|
@@ -131,6 +139,14 @@ describe Puppet::Environments do
|
|
131
139
|
end
|
132
140
|
end
|
133
141
|
|
142
|
+
it "implements guard and unguard" do
|
143
|
+
loader_from(:filesystem => [directory_tree],
|
144
|
+
:directory => directory_tree.children.first) do |loader|
|
145
|
+
expect(loader.guard('env1')).to be_nil
|
146
|
+
expect(loader.unguard('env1')).to be_nil
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
134
150
|
context "with an environment.conf" do
|
135
151
|
let(:envdir) do
|
136
152
|
FS::MemoryFile.a_directory(File.expand_path("envdir"), [
|
@@ -607,6 +623,78 @@ config_version=$vardir/random/scripts
|
|
607
623
|
cached.get(:cached)
|
608
624
|
end
|
609
625
|
|
626
|
+
it "does not list deleted environments" do
|
627
|
+
env3 = FS::MemoryFile.a_directory("env3", [
|
628
|
+
FS::MemoryFile.a_regular_file_containing("environment.conf", '')
|
629
|
+
])
|
630
|
+
|
631
|
+
envdir = FS::MemoryFile.a_directory(File.expand_path("envdir"), [
|
632
|
+
FS::MemoryFile.a_directory("env1", [
|
633
|
+
FS::MemoryFile.a_regular_file_containing("environment.conf", '')
|
634
|
+
]),
|
635
|
+
FS::MemoryFile.a_directory("env2", [
|
636
|
+
FS::MemoryFile.a_regular_file_containing("environment.conf", '')
|
637
|
+
]),
|
638
|
+
env3
|
639
|
+
])
|
640
|
+
|
641
|
+
loader_from(:filesystem => [envdir], :directory => envdir) do |loader|
|
642
|
+
cached = Puppet::Environments::Cached.new(loader)
|
643
|
+
cached.get(:env1)
|
644
|
+
cached.get(:env2)
|
645
|
+
cached.get(:env3)
|
646
|
+
env3.extend(FsRemove).remove
|
647
|
+
|
648
|
+
expect(cached.list).to contain_exactly(environment(:env1),environment(:env2))
|
649
|
+
expect(cached.get(:env3)).to be_nil
|
650
|
+
end
|
651
|
+
end
|
652
|
+
|
653
|
+
it "normalizes environment name to symbol" do
|
654
|
+
env = Puppet::Node::Environment.create(:cached, [])
|
655
|
+
mocked_loader = double('loader')
|
656
|
+
|
657
|
+
expect(mocked_loader).not_to receive(:get).with('cached')
|
658
|
+
expect(mocked_loader).to receive(:get).with(:cached).and_return(env).once
|
659
|
+
expect(mocked_loader).to receive(:get_conf).with(:cached).and_return(Puppet::Settings::EnvironmentConf.static_for(env, 20)).once
|
660
|
+
|
661
|
+
cached = Puppet::Environments::Cached.new(mocked_loader)
|
662
|
+
cached.get('cached')
|
663
|
+
cached.get(:cached)
|
664
|
+
end
|
665
|
+
|
666
|
+
it "caches environment name as symbol and only once" do
|
667
|
+
mocked_loader = double('loader')
|
668
|
+
|
669
|
+
env = Puppet::Node::Environment.create(:cached, [])
|
670
|
+
allow(mocked_loader).to receive(:get).with(:cached).and_return(env)
|
671
|
+
allow(mocked_loader).to receive(:get_conf).with(:cached).and_return(Puppet::Settings::EnvironmentConf.static_for(env, 20))
|
672
|
+
|
673
|
+
cached = Puppet::Environments::Cached.new(mocked_loader)
|
674
|
+
cached.get(:cached)
|
675
|
+
cached.get('cached')
|
676
|
+
|
677
|
+
expect(cached.instance_variable_get(:@cache).keys).to eq([:cached])
|
678
|
+
end
|
679
|
+
|
680
|
+
it "is able to cache multiple environments" do
|
681
|
+
mocked_loader = double('loader')
|
682
|
+
|
683
|
+
env1 = Puppet::Node::Environment.create(:env1, [])
|
684
|
+
allow(mocked_loader).to receive(:get).with(:env1).and_return(env1)
|
685
|
+
allow(mocked_loader).to receive(:get_conf).with(:env1).and_return(Puppet::Settings::EnvironmentConf.static_for(env1, 20))
|
686
|
+
|
687
|
+
env2 = Puppet::Node::Environment.create(:env2, [])
|
688
|
+
allow(mocked_loader).to receive(:get).with(:env2).and_return(env2)
|
689
|
+
allow(mocked_loader).to receive(:get_conf).with(:env2).and_return(Puppet::Settings::EnvironmentConf.static_for(env2, 20))
|
690
|
+
|
691
|
+
cached = Puppet::Environments::Cached.new(mocked_loader)
|
692
|
+
cached.get('env1')
|
693
|
+
cached.get('env2')
|
694
|
+
|
695
|
+
expect(cached.instance_variable_get(:@cache).keys).to eq([:env1, :env2])
|
696
|
+
end
|
697
|
+
|
610
698
|
it "returns nil if env not found" do
|
611
699
|
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
612
700
|
expect(loader.get(:doesnotexist)).to be_nil
|
@@ -662,6 +750,17 @@ config_version=$vardir/random/scripts
|
|
662
750
|
cached.get_conf(:cached)
|
663
751
|
end
|
664
752
|
|
753
|
+
it "normalizes environment name to symbol" do
|
754
|
+
env = Puppet::Node::Environment.create(:cached, [])
|
755
|
+
mocked_loader = double('loader')
|
756
|
+
expect(mocked_loader).to receive(:get_conf).with(:cached).and_return(Puppet::Settings::EnvironmentConf.static_for(env, 20)).twice
|
757
|
+
|
758
|
+
cached = Puppet::Environments::Cached.new(mocked_loader)
|
759
|
+
|
760
|
+
cached.get_conf('cached')
|
761
|
+
cached.get_conf(:cached)
|
762
|
+
end
|
763
|
+
|
665
764
|
it "returns nil if environment is not found" do
|
666
765
|
cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
|
667
766
|
expect(loader.get_conf(:doesnotexist)).to be_nil
|
@@ -751,6 +850,83 @@ config_version=$vardir/random/scripts
|
|
751
850
|
|
752
851
|
expect(service.evicted_envs).to eq([:an_environment])
|
753
852
|
end
|
853
|
+
|
854
|
+
context "when guarding an environment" do
|
855
|
+
before :each do
|
856
|
+
Puppet[:environment_timeout] = 0
|
857
|
+
end
|
858
|
+
|
859
|
+
let(:name) { :an_environment }
|
860
|
+
|
861
|
+
def with_guard(cached, name, &block)
|
862
|
+
cached.guard(name)
|
863
|
+
begin
|
864
|
+
yield
|
865
|
+
ensure
|
866
|
+
cached.unguard(name)
|
867
|
+
end
|
868
|
+
end
|
869
|
+
|
870
|
+
it "evicts an expired and unguarded environment" do
|
871
|
+
with_environment_loaded(service) do |cached|
|
872
|
+
cached.get!(name)
|
873
|
+
end
|
874
|
+
|
875
|
+
expect(service.created_envs).to eq([name, name])
|
876
|
+
expect(service.evicted_envs).to eq([name])
|
877
|
+
end
|
878
|
+
|
879
|
+
it "does not evict an expired, but guarded environment" do
|
880
|
+
with_environment_loaded(service) do |cached|
|
881
|
+
with_guard(cached, name) do
|
882
|
+
cached.get!(name) # these shouldn't reload
|
883
|
+
cached.get!(name)
|
884
|
+
end
|
885
|
+
end
|
886
|
+
|
887
|
+
expect(service.created_envs).to eq([name])
|
888
|
+
expect(service.evicted_envs).to eq([])
|
889
|
+
end
|
890
|
+
|
891
|
+
it "does not evict an environment marked for expiration, but is guarded" do
|
892
|
+
Puppet[:environment_timeout] = 'unlimited'
|
893
|
+
|
894
|
+
expect(service).to receive(:expired?).never
|
895
|
+
|
896
|
+
with_environment_loaded(service) do |cached|
|
897
|
+
with_guard(cached, name) do
|
898
|
+
cached.get!(name)
|
899
|
+
end
|
900
|
+
end
|
901
|
+
|
902
|
+
expect(service.created_envs).to eq([name])
|
903
|
+
expect(service.evicted_envs).to eq([])
|
904
|
+
end
|
905
|
+
|
906
|
+
it "evicts an environment that is no longer guarded" do
|
907
|
+
with_environment_loaded(service) do |cached|
|
908
|
+
with_guard(cached, name) {}
|
909
|
+
|
910
|
+
cached.get!(name) # this reloads
|
911
|
+
end
|
912
|
+
|
913
|
+
expect(service.created_envs).to eq([name, name])
|
914
|
+
expect(service.evicted_envs).to eq([name])
|
915
|
+
end
|
916
|
+
|
917
|
+
it "can nest guards" do
|
918
|
+
with_environment_loaded(service) do |cached|
|
919
|
+
with_guard(cached, name) do
|
920
|
+
with_guard(cached, name) do
|
921
|
+
cached.get!(name) # doesn't reload
|
922
|
+
end
|
923
|
+
end
|
924
|
+
end
|
925
|
+
|
926
|
+
expect(service.created_envs).to eq([name])
|
927
|
+
expect(service.evicted_envs).to eq([])
|
928
|
+
end
|
929
|
+
end
|
754
930
|
end
|
755
931
|
|
756
932
|
context '#clear' do
|
@@ -763,6 +939,14 @@ config_version=$vardir/random/scripts
|
|
763
939
|
|
764
940
|
expect(service.evicted_envs).to eq([:an_environment])
|
765
941
|
end
|
942
|
+
|
943
|
+
it "normalizes environment name to symbol" do
|
944
|
+
with_environment_loaded(service) do |cached|
|
945
|
+
cached.clear('an_environment')
|
946
|
+
end
|
947
|
+
|
948
|
+
expect(service.evicted_envs).to eq([:an_environment])
|
949
|
+
end
|
766
950
|
end
|
767
951
|
|
768
952
|
context '#clear_all' do
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Puppet::FacterImpl' do
|
4
|
+
subject(:facter_impl) { Puppet::FacterImpl.new }
|
5
|
+
|
6
|
+
it { is_expected.to respond_to(:value) }
|
7
|
+
it { is_expected.to respond_to(:add) }
|
8
|
+
|
9
|
+
describe '.value' do
|
10
|
+
let(:method_name) { :value }
|
11
|
+
|
12
|
+
before { allow(Facter).to receive(method_name) }
|
13
|
+
|
14
|
+
it 'delegates to Facter API' do
|
15
|
+
facter_impl.value('test_fact')
|
16
|
+
expect(Facter).to have_received(method_name).with('test_fact')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '.add' do
|
21
|
+
let(:block) { Proc.new { setcode 'test' } }
|
22
|
+
let(:method_name) { :add }
|
23
|
+
|
24
|
+
before { allow(Facter).to receive(method_name) }
|
25
|
+
|
26
|
+
it 'delegates to Facter API' do
|
27
|
+
facter_impl.add('test_fact', &block)
|
28
|
+
expect(Facter).to have_received(method_name).with('test_fact', &block)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -104,8 +104,8 @@ describe Puppet::FileBucket::Dipper, :uses_checksums => true do
|
|
104
104
|
# Diff without the context
|
105
105
|
# Lines we need to see match 'Content' instead of trimming diff output filter out
|
106
106
|
# surrounding noise...or hard code the check values
|
107
|
-
if
|
108
|
-
Puppet::Util::Package.versioncmp(
|
107
|
+
if Puppet.runtime[:facter].value(:osfamily) == 'Solaris' &&
|
108
|
+
Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:operatingsystemrelease), '11.0') >= 0
|
109
109
|
# Use gdiff on Solaris
|
110
110
|
diff12 = Puppet::Util::Execution.execute("gdiff -uN #{file1} #{file2}| grep Content")
|
111
111
|
diff21 = Puppet::Util::Execution.execute("gdiff -uN #{file2} #{file1}| grep Content")
|
@@ -159,6 +159,29 @@ describe Puppet::FileServing::Configuration::Parser do
|
|
159
159
|
end
|
160
160
|
end
|
161
161
|
|
162
|
+
describe Puppet::FileServing::Configuration::Parser, " when parsing the scripts mount" do
|
163
|
+
include FSConfigurationParserTesting
|
164
|
+
|
165
|
+
before do
|
166
|
+
@mount = double('scriptsmount', :name => "scripts", :validate => true)
|
167
|
+
end
|
168
|
+
|
169
|
+
it "should create an instance of the Scripts Mount class" do
|
170
|
+
write_config_file "[scripts]\n"
|
171
|
+
|
172
|
+
expect(Puppet::FileServing::Mount::Scripts).to receive(:new).with("scripts").and_return(@mount)
|
173
|
+
@parser.parse
|
174
|
+
end
|
175
|
+
|
176
|
+
it "should warn if a path is set" do
|
177
|
+
write_config_file "[scripts]\npath /some/path\n"
|
178
|
+
expect(Puppet::FileServing::Mount::Scripts).to receive(:new).with("scripts").and_return(@mount)
|
179
|
+
|
180
|
+
expect(Puppet).to receive(:warning)
|
181
|
+
@parser.parse
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
162
185
|
describe Puppet::FileServing::Configuration::Parser, " when parsing the plugins mount" do
|
163
186
|
include FSConfigurationParserTesting
|
164
187
|
|
@@ -80,15 +80,16 @@ describe Puppet::FileServing::Configuration do
|
|
80
80
|
expect(config.mounted?("one")).to be_truthy
|
81
81
|
end
|
82
82
|
|
83
|
-
it "should add modules, plugins, and tasks mounts even if the file does not exist" do
|
83
|
+
it "should add modules, plugins, scripts, and tasks mounts even if the file does not exist" do
|
84
84
|
expect(Puppet::FileSystem).to receive(:exist?).and_return(false) # the file doesn't exist
|
85
85
|
config = Puppet::FileServing::Configuration.configuration
|
86
86
|
expect(config.mounted?("modules")).to be_truthy
|
87
87
|
expect(config.mounted?("plugins")).to be_truthy
|
88
|
+
expect(config.mounted?("scripts")).to be_truthy
|
88
89
|
expect(config.mounted?("tasks")).to be_truthy
|
89
90
|
end
|
90
91
|
|
91
|
-
it "should allow all access to modules, plugins, and tasks if no fileserver.conf exists" do
|
92
|
+
it "should allow all access to modules, plugins, scripts, and tasks if no fileserver.conf exists" do
|
92
93
|
expect(Puppet::FileSystem).to receive(:exist?).and_return(false) # the file doesn't exist
|
93
94
|
modules = double('modules')
|
94
95
|
allow(Puppet::FileServing::Mount::Modules).to receive(:new).and_return(modules)
|
@@ -99,10 +100,13 @@ describe Puppet::FileServing::Configuration do
|
|
99
100
|
tasks = double('tasks')
|
100
101
|
allow(Puppet::FileServing::Mount::Tasks).to receive(:new).and_return(tasks)
|
101
102
|
|
103
|
+
scripts = double('scripts')
|
104
|
+
allow(Puppet::FileServing::Mount::Scripts).to receive(:new).and_return(scripts)
|
105
|
+
|
102
106
|
Puppet::FileServing::Configuration.configuration
|
103
107
|
end
|
104
108
|
|
105
|
-
it "should not allow access from all to modules, plugins, and tasks if the fileserver.conf provided some rules" do
|
109
|
+
it "should not allow access from all to modules, plugins, scripts, and tasks if the fileserver.conf provided some rules" do
|
106
110
|
expect(Puppet::FileSystem).to receive(:exist?).and_return(false) # the file doesn't exist
|
107
111
|
|
108
112
|
modules = double('modules')
|
@@ -114,15 +118,19 @@ describe Puppet::FileServing::Configuration do
|
|
114
118
|
tasks = double('tasks')
|
115
119
|
allow(Puppet::FileServing::Mount::Tasks).to receive(:new).and_return(tasks)
|
116
120
|
|
121
|
+
scripts = double('scripts', :empty? => false)
|
122
|
+
allow(Puppet::FileServing::Mount::Scripts).to receive(:new).and_return(scripts)
|
123
|
+
|
117
124
|
Puppet::FileServing::Configuration.configuration
|
118
125
|
end
|
119
126
|
|
120
|
-
it "should add modules, plugins, and tasks mounts even if they are not returned by the parser" do
|
127
|
+
it "should add modules, plugins, scripts, and tasks mounts even if they are not returned by the parser" do
|
121
128
|
expect(@parser).to receive(:parse).and_return("one" => double("mount"))
|
122
129
|
expect(Puppet::FileSystem).to receive(:exist?).and_return(true) # the file doesn't exist
|
123
130
|
config = Puppet::FileServing::Configuration.configuration
|
124
131
|
expect(config.mounted?("modules")).to be_truthy
|
125
132
|
expect(config.mounted?("plugins")).to be_truthy
|
133
|
+
expect(config.mounted?("scripts")).to be_truthy
|
126
134
|
expect(config.mounted?("tasks")).to be_truthy
|
127
135
|
end
|
128
136
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet/file_serving/mount/scripts'
|
3
|
+
|
4
|
+
describe Puppet::FileServing::Mount::Scripts do
|
5
|
+
before do
|
6
|
+
@mount = Puppet::FileServing::Mount::Scripts.new("scripts")
|
7
|
+
|
8
|
+
@environment = double('environment', :module => nil)
|
9
|
+
@request = double('request', :environment => @environment)
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "when finding files" do
|
13
|
+
it "should fail if no module is specified" do
|
14
|
+
expect { @mount.find("", @request) }.to raise_error(/No module specified/)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should use the provided environment to find the module" do
|
18
|
+
expect(@environment).to receive(:module)
|
19
|
+
|
20
|
+
@mount.find("foo", @request)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should treat the first field of the relative path as the module name" do
|
24
|
+
expect(@environment).to receive(:module).with("foo")
|
25
|
+
@mount.find("foo/bar/baz", @request)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return nil if the specified module does not exist" do
|
29
|
+
expect(@environment).to receive(:module).with("foo")
|
30
|
+
@mount.find("foo/bar/baz", @request)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should return the file path from the module" do
|
34
|
+
mod = double('module')
|
35
|
+
expect(mod).to receive(:script).with("bar/baz").and_return("eh")
|
36
|
+
expect(@environment).to receive(:module).with("foo").and_return(mod)
|
37
|
+
expect(@mount.find("foo/bar/baz", @request)).to eq("eh")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "when searching for files" do
|
42
|
+
it "should fail if no module is specified" do
|
43
|
+
expect { @mount.search("", @request) }.to raise_error(/No module specified/)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should use the node's environment to search the module" do
|
47
|
+
expect(@environment).to receive(:module)
|
48
|
+
|
49
|
+
@mount.search("foo", @request)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should treat the first field of the relative path as the module name" do
|
53
|
+
expect(@environment).to receive(:module).with("foo")
|
54
|
+
@mount.search("foo/bar/baz", @request)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should return nil if the specified module does not exist" do
|
58
|
+
expect(@environment).to receive(:module).with("foo").and_return(nil)
|
59
|
+
@mount.search("foo/bar/baz", @request)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should return the script path as an array from the module" do
|
63
|
+
mod = double('module')
|
64
|
+
expect(mod).to receive(:script).with("bar/baz").and_return("eh")
|
65
|
+
expect(@environment).to receive(:module).with("foo").and_return(mod)
|
66
|
+
expect(@mount.search("foo/bar/baz", @request)).to eq(["eh"])
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -290,6 +290,19 @@ describe "Puppet::FileSystem" do
|
|
290
290
|
expect(Puppet::FileSystem.read_preserve_line_endings(file)).to eq("file content \r\nsecond line \n")
|
291
291
|
end
|
292
292
|
end
|
293
|
+
|
294
|
+
it "should ignore leading BOM" do
|
295
|
+
with_file_content("\uFEFFfile content \n") do |file|
|
296
|
+
expect(Puppet::FileSystem.read_preserve_line_endings(file)).to eq("file content \n")
|
297
|
+
end
|
298
|
+
end
|
299
|
+
|
300
|
+
it "should not warn about misusage of BOM with non-UTF encoding" do
|
301
|
+
allow(Encoding).to receive(:default_external).and_return(Encoding::US_ASCII)
|
302
|
+
with_file_content("file content \n") do |file|
|
303
|
+
expect{ Puppet::FileSystem.read_preserve_line_endings(file) }.not_to output(/BOM with non-UTF encoding US-ASCII is nonsense/).to_stderr
|
304
|
+
end
|
305
|
+
end
|
293
306
|
end
|
294
307
|
|
295
308
|
context "read without an encoding specified" do
|
@@ -28,7 +28,7 @@ describe 'the assert_type function' do
|
|
28
28
|
it 'checks that first argument is a type' do
|
29
29
|
expect do
|
30
30
|
func.call({}, 10, 10)
|
31
|
-
end.to raise_error(ArgumentError, "'assert_type' expects one of:
|
31
|
+
end.to raise_error(ArgumentError, "The function 'assert_type' was called with arguments it does not accept. It expects one of:
|
32
32
|
(Type type, Any value, Callable[Type, Type] block?)
|
33
33
|
rejected: parameter 'type' expects a Type value, got Integer
|
34
34
|
(String type_string, Any value, Callable[Type, Type] block?)
|