puppet 7.9.0-x86-mingw32 → 7.12.1-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/Gemfile.lock +12 -12
- 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/lib/puppet/application/agent.rb +4 -0
- data/lib/puppet/application/apply.rb +20 -2
- data/lib/puppet/application/resource.rb +15 -13
- data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
- data/lib/puppet/configurer.rb +236 -58
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/defaults.rb +66 -29
- data/lib/puppet/environments.rb +66 -26
- 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.rb +2 -1
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/functions/find_template.rb +2 -2
- 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/terminus.rb +4 -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 +8 -4
- data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.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/resource.rb +1 -1
- data/lib/puppet/parser/scope.rb +8 -7
- data/lib/puppet/parser/templatewrapper.rb +1 -0
- data/lib/puppet/pops/evaluator/closure.rb +7 -5
- data/lib/puppet/pops/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 +14 -13
- data/lib/puppet/pops/parser/egrammar.ra +2 -2
- data/lib/puppet/pops/parser/eparser.rb +752 -753
- data/lib/puppet/pops/parser/lexer2.rb +69 -68
- data/lib/puppet/pops/parser/slurp_support.rb +1 -0
- data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
- data/lib/puppet/pops/types/type_formatter.rb +7 -6
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/provider/aix_object.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/package/pkg.rb +19 -2
- data/lib/puppet/provider/package/puppet_gem.rb +1 -1
- data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/init.rb +5 -5
- data/lib/puppet/provider/service/launchd.rb +2 -2
- data/lib/puppet/provider/service/redhat.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +2 -2
- data/lib/puppet/provider/service/upstart.rb +5 -5
- data/lib/puppet/provider/user/aix.rb +44 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +72 -16
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/reference/providers.rb +2 -2
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/resource/type_collection.rb +2 -1
- data/lib/puppet/resource.rb +38 -5
- data/lib/puppet/runtime.rb +11 -1
- data/lib/puppet/settings/file_setting.rb +3 -8
- data/lib/puppet/settings.rb +2 -2
- data/lib/puppet/test/test_helper.rb +4 -1
- data/lib/puppet/transaction/persistence.rb +11 -1
- data/lib/puppet/transaction/report.rb +15 -1
- data/lib/puppet/type/exec.rb +19 -2
- data/lib/puppet/type/file.rb +6 -6
- data/lib/puppet/type/filebucket.rb +2 -2
- data/lib/puppet/type/group.rb +0 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/service.rb +8 -3
- data/lib/puppet/type/user.rb +0 -1
- data/lib/puppet/type.rb +1 -1
- data/lib/puppet/util/autoload.rb +1 -1
- data/lib/puppet/util/command_line.rb +1 -1
- data/lib/puppet/util/filetype.rb +2 -2
- data/lib/puppet/util/json.rb +3 -0
- data/lib/puppet/util/log.rb +1 -2
- data/lib/puppet/util/logging.rb +1 -25
- data/lib/puppet/util/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/tagging.rb +1 -0
- data/lib/puppet/util/windows/service.rb +0 -5
- data/lib/puppet/util/windows/user.rb +0 -1
- data/lib/puppet/util/windows.rb +3 -0
- data/lib/puppet/util.rb +4 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +2 -6
- data/locales/puppet.pot +265 -221
- data/man/man5/puppet.conf.5 +73 -25
- data/man/man8/puppet-agent.8 +4 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- 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 +1 -1
- 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 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- 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/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/integration/application/agent_spec.rb +146 -52
- data/spec/integration/application/filebucket_spec.rb +5 -0
- data/spec/integration/configurer_spec.rb +18 -2
- data/spec/integration/indirector/facts/facter_spec.rb +3 -3
- 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/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_spec/modules.rb +13 -2
- data/spec/lib/puppet_spec/puppetserver.rb +15 -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 +353 -57
- data/spec/unit/environments_spec.rb +150 -1
- 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 +7 -0
- data/spec/unit/functions/logging_spec.rb +1 -0
- data/spec/unit/functions/lookup_spec.rb +64 -0
- 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/interface/action_spec.rb +0 -9
- data/spec/unit/module_spec.rb +14 -0
- data/spec/unit/module_tool/applications/installer_spec.rb +39 -12
- data/spec/unit/network/formats_spec.rb +6 -0
- data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
- data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +1 -1
- data/spec/unit/provider/package/pip2_spec.rb +1 -1
- data/spec/unit/provider/package/pip3_spec.rb +1 -1
- data/spec/unit/provider/package/pip_spec.rb +1 -1
- data/spec/unit/provider/package/pkg_spec.rb +34 -5
- data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
- data/spec/unit/provider/service/launchd_spec.rb +11 -0
- data/spec/unit/provider/service/systemd_spec.rb +1 -1
- data/spec/unit/provider/user/aix_spec.rb +100 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +1 -1
- data/spec/unit/provider/user/useradd_spec.rb +43 -2
- data/spec/unit/provider_spec.rb +4 -4
- data/spec/unit/puppet_spec.rb +12 -4
- data/spec/unit/resource/catalog_spec.rb +14 -1
- data/spec/unit/resource_spec.rb +58 -2
- data/spec/unit/settings/file_setting_spec.rb +10 -7
- data/spec/unit/type/service_spec.rb +27 -0
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +25 -8
- data/spec/unit/util/logging_spec.rb +2 -0
- data/tasks/parallel.rake +3 -3
- metadata +37 -94
- 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
@@ -2,11 +2,27 @@ require 'spec_helper'
|
|
2
2
|
require 'puppet/configurer'
|
3
3
|
|
4
4
|
describe Puppet::Configurer do
|
5
|
+
include PuppetSpec::Files
|
6
|
+
|
5
7
|
before do
|
6
8
|
Puppet[:server] = "puppetmaster"
|
7
9
|
Puppet[:report] = true
|
8
10
|
|
9
11
|
catalog.add_resource(resource)
|
12
|
+
allow_any_instance_of(described_class).to(
|
13
|
+
receive(:valid_server_environment?).and_return(true)
|
14
|
+
)
|
15
|
+
|
16
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', <<~SUMMARY)
|
17
|
+
---
|
18
|
+
version:
|
19
|
+
config: 1624882680
|
20
|
+
puppet: #{Puppet.version}
|
21
|
+
application:
|
22
|
+
initial_environment: #{Puppet[:environment]}
|
23
|
+
converged_environment: #{Puppet[:environment]}
|
24
|
+
run_mode: agent
|
25
|
+
SUMMARY
|
10
26
|
end
|
11
27
|
|
12
28
|
let(:node_name) { Puppet[:node_name_value] }
|
@@ -78,10 +94,10 @@ describe Puppet::Configurer do
|
|
78
94
|
configurer.run(:pluginsync => false)
|
79
95
|
end
|
80
96
|
|
81
|
-
it "
|
82
|
-
|
83
|
-
expect(
|
84
|
-
|
97
|
+
it "does not download plugins when specified environment is not vaild on server" do
|
98
|
+
expect(configurer).to receive(:valid_server_environment?).and_return(false)
|
99
|
+
expect(configurer).not_to receive(:download_plugins)
|
100
|
+
configurer.run(:pluginsync => true)
|
85
101
|
end
|
86
102
|
|
87
103
|
it "fails the run if pluginsync fails when usecacheonfailure is false" do
|
@@ -125,7 +141,6 @@ describe Puppet::Configurer do
|
|
125
141
|
it "applies a cached catalog when it can't connect to the master" do
|
126
142
|
error = Errno::ECONNREFUSED.new('Connection refused - connect(2)')
|
127
143
|
|
128
|
-
expect(Puppet::Node.indirection).to receive(:find).and_raise(error)
|
129
144
|
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(:ignore_cache => true)).and_raise(error)
|
130
145
|
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(:ignore_terminus => true)).and_return(catalog)
|
131
146
|
|
@@ -149,6 +164,126 @@ describe Puppet::Configurer do
|
|
149
164
|
expect(report.host).to eq('node_name_from_fact')
|
150
165
|
end
|
151
166
|
|
167
|
+
it "should warn the user when the fact value length limits are exceeded" do
|
168
|
+
Puppet[:fact_name_length_soft_limit] = 0
|
169
|
+
Puppet[:fact_value_length_soft_limit] = 1
|
170
|
+
Puppet[:top_level_facts_soft_limit] = 0
|
171
|
+
Puppet[:number_of_facts_soft_limit] = 0
|
172
|
+
Puppet[:payload_soft_limit] = 0
|
173
|
+
|
174
|
+
facts.values = { 'processors' => {
|
175
|
+
'cores' => 1,
|
176
|
+
'count' => 2,
|
177
|
+
'isa' => "i386",
|
178
|
+
'models' => [
|
179
|
+
"CPU1 @ 2.80GHz"
|
180
|
+
],
|
181
|
+
'physicalcount' => 4 }
|
182
|
+
}
|
183
|
+
Puppet::Node::Facts.indirection.save(facts)
|
184
|
+
|
185
|
+
expect(Puppet).to receive(:warning).with(/Fact value '.+' with the value length: '[1-9]*' exceeds the value length limit: [1-9]*/).twice
|
186
|
+
configurer.run
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should warn the user when the payload limits are exceeded" do
|
190
|
+
Puppet[:fact_name_length_soft_limit] = 0
|
191
|
+
Puppet[:fact_value_length_soft_limit] = 0
|
192
|
+
Puppet[:top_level_facts_soft_limit] = 0
|
193
|
+
Puppet[:number_of_facts_soft_limit] = 0
|
194
|
+
Puppet[:payload_soft_limit] = 1
|
195
|
+
|
196
|
+
facts.values = { 'processors' => {
|
197
|
+
'cores' => 1,
|
198
|
+
'count' => 2,
|
199
|
+
'isa' => "i386",
|
200
|
+
'models' => [
|
201
|
+
"CPU1 @ 2.80GHz"
|
202
|
+
],
|
203
|
+
'physicalcount' => 4 }
|
204
|
+
}
|
205
|
+
Puppet::Node::Facts.indirection.save(facts)
|
206
|
+
|
207
|
+
expect(Puppet).to receive(:warning).with(/Payload with the current size of: '\d*' exceeds the payload size limit: \d*/)
|
208
|
+
configurer.run
|
209
|
+
end
|
210
|
+
|
211
|
+
it "should warn the user when the total number of facts limit is exceeded" do
|
212
|
+
Puppet[:fact_name_length_soft_limit] = 0
|
213
|
+
Puppet[:fact_value_length_soft_limit] = 0
|
214
|
+
Puppet[:top_level_facts_soft_limit] = 0
|
215
|
+
Puppet[:number_of_facts_soft_limit] = 1
|
216
|
+
Puppet[:payload_soft_limit] = 0
|
217
|
+
|
218
|
+
facts.values = {
|
219
|
+
'processors' => {
|
220
|
+
'cores' => 1,
|
221
|
+
'count' => 2,
|
222
|
+
'isa' => "i386",
|
223
|
+
'models' => [
|
224
|
+
"CPU1 @ 2.80GHz",
|
225
|
+
"CPU1 @ 2.80GHz",
|
226
|
+
"CPU1 @ 2.80GHz",
|
227
|
+
"CPU1 @ 2.80GHz",
|
228
|
+
"CPU1 @ 2.80GHz",
|
229
|
+
{
|
230
|
+
'processors' => {
|
231
|
+
'cores' => [1,2]
|
232
|
+
}
|
233
|
+
}
|
234
|
+
],
|
235
|
+
'physicalcount' => 4
|
236
|
+
}
|
237
|
+
}
|
238
|
+
Puppet::Node::Facts.indirection.save(facts)
|
239
|
+
|
240
|
+
expect(Puppet).to receive(:warning).with(/The current total number of facts: [1-9]* exceeds the number of facts limit: [1-9]*/)
|
241
|
+
configurer.run
|
242
|
+
end
|
243
|
+
|
244
|
+
it "should warn the user when the top level facts size limits are exceeded" do
|
245
|
+
Puppet[:fact_name_length_soft_limit] = 0
|
246
|
+
Puppet[:fact_value_length_soft_limit] = 0
|
247
|
+
Puppet[:top_level_facts_soft_limit] = 1
|
248
|
+
Puppet[:number_of_facts_soft_limit] = 0
|
249
|
+
Puppet[:payload_soft_limit] = 0
|
250
|
+
|
251
|
+
facts.values = {'my_new_fact_name' => 'my_new_fact_value',
|
252
|
+
'my_new_fact_name2' => 'my_new_fact_value2'}
|
253
|
+
Puppet::Node::Facts.indirection.save(facts)
|
254
|
+
|
255
|
+
expect(Puppet).to receive(:warning).with(/The current number of top level facts: [1-9]* exceeds the top facts limit: [1-9]*/)
|
256
|
+
configurer.run
|
257
|
+
end
|
258
|
+
|
259
|
+
it "should warn the user when the fact name length limits are exceeded" do
|
260
|
+
Puppet[:fact_name_length_soft_limit] = 1
|
261
|
+
Puppet[:fact_value_length_soft_limit] = 0
|
262
|
+
Puppet[:top_level_facts_soft_limit] = 0
|
263
|
+
Puppet[:number_of_facts_soft_limit] = 0
|
264
|
+
Puppet[:payload_soft_limit] = 0
|
265
|
+
|
266
|
+
facts.values = {'my_new_fact_name' => 'my_new_fact_value'}
|
267
|
+
Puppet::Node::Facts.indirection.save(facts)
|
268
|
+
|
269
|
+
expect(Puppet).to receive(:warning).with(/Fact .+ with length: '[1-9]*' exceeds the length limit: [1-9]*/)
|
270
|
+
configurer.run
|
271
|
+
end
|
272
|
+
|
273
|
+
it "shouldn't warn the user when the fact limit settings are set to 0" do
|
274
|
+
Puppet[:fact_name_length_soft_limit] = 0
|
275
|
+
Puppet[:fact_value_length_soft_limit] = 0
|
276
|
+
Puppet[:top_level_facts_soft_limit] = 0
|
277
|
+
Puppet[:number_of_facts_soft_limit] = 0
|
278
|
+
Puppet[:payload_soft_limit] = 0
|
279
|
+
|
280
|
+
facts.values = {'my_new_fact_name' => 'my_new_fact_value'}
|
281
|
+
Puppet::Node::Facts.indirection.save(facts)
|
282
|
+
|
283
|
+
expect(Puppet).not_to receive(:warning)
|
284
|
+
configurer.run
|
285
|
+
end
|
286
|
+
|
152
287
|
it "creates a new report when applying the catalog" do
|
153
288
|
options = {}
|
154
289
|
configurer.run(options)
|
@@ -461,7 +596,7 @@ describe Puppet::Configurer do
|
|
461
596
|
it "should save the report if reporting is enabled" do
|
462
597
|
Puppet.settings[:report] = true
|
463
598
|
|
464
|
-
expect(Puppet::Transaction::Report.indirection).to receive(:save).with(report, nil, instance_of(Hash))
|
599
|
+
expect(Puppet::Transaction::Report.indirection).to receive(:save).with(report, nil, instance_of(Hash)).twice
|
465
600
|
configurer.send_report(report)
|
466
601
|
end
|
467
602
|
|
@@ -489,12 +624,22 @@ describe Puppet::Configurer do
|
|
489
624
|
it "should log but not fail if saving the report fails" do
|
490
625
|
Puppet.settings[:report] = true
|
491
626
|
|
492
|
-
expect(Puppet::Transaction::Report.indirection).to receive(:save).and_raise("whatever")
|
627
|
+
expect(Puppet::Transaction::Report.indirection).to receive(:save).with(report, nil, hash_including(ignore_cache: true)).and_raise("whatever")
|
628
|
+
expect(Puppet::Transaction::Report.indirection).to receive(:save).with(report, nil, hash_including(ignore_terminus: true))
|
493
629
|
|
494
630
|
configurer.send_report(report)
|
495
631
|
|
496
632
|
expect(@logs).to include(an_object_having_attributes(level: :err, message: 'Could not send report: whatever'))
|
497
633
|
end
|
634
|
+
|
635
|
+
it "should save the cached report if fails to send the report" do
|
636
|
+
allow(Puppet::Transaction::Report.indirection).to receive(:save).with(report, nil, hash_including(ignore_terminus: true)).and_call_original
|
637
|
+
allow(Puppet::Transaction::Report.indirection).to receive(:save).with(report, nil, hash_including(ignore_cache: true)).and_raise("whatever")
|
638
|
+
|
639
|
+
expect(File).to_not be_exist(Puppet[:lastrunfile])
|
640
|
+
configurer.send_report(report)
|
641
|
+
expect(File.read(Puppet[:lastrunfile])).to match(/puppet: #{Puppet::PUPPETVERSION}/)
|
642
|
+
end
|
498
643
|
end
|
499
644
|
|
500
645
|
describe "when saving the summary report file" do
|
@@ -553,24 +698,6 @@ describe Puppet::Configurer do
|
|
553
698
|
end
|
554
699
|
end
|
555
700
|
|
556
|
-
describe "when requesting a node" do
|
557
|
-
it "uses the transaction uuid in the request" do
|
558
|
-
expect(Puppet::Node.indirection).to receive(:find).with(anything, hash_including(transaction_uuid: anything)).twice
|
559
|
-
configurer.run
|
560
|
-
end
|
561
|
-
|
562
|
-
it "sends an explicitly configured environment request" do
|
563
|
-
expect(Puppet.settings).to receive(:set_by_config?).with(:environment).and_return(true)
|
564
|
-
expect(Puppet::Node.indirection).to receive(:find).with(anything, hash_including(configured_environment: Puppet[:environment])).twice
|
565
|
-
configurer.run
|
566
|
-
end
|
567
|
-
|
568
|
-
it "does not send a configured_environment when using the default" do
|
569
|
-
expect(Puppet::Node.indirection).to receive(:find).with(anything, hash_including(configured_environment: nil)).twice
|
570
|
-
configurer.run
|
571
|
-
end
|
572
|
-
end
|
573
|
-
|
574
701
|
def expects_pluginsync
|
575
702
|
metadata = "[{\"path\":\"/etc/puppetlabs/code\",\"relative_path\":\".\",\"links\":\"follow\",\"owner\":0,\"group\":0,\"mode\":420,\"checksum\":{\"type\":\"ctime\",\"value\":\"{ctime}2020-07-10 14:00:00 -0700\"},\"type\":\"directory\",\"destination\":null}]"
|
576
703
|
stub_request(:get, %r{/puppet/v3/file_metadatas/(plugins|locales)}).to_return(status: 200, body: metadata, headers: {'Content-Type' => 'application/json'})
|
@@ -581,7 +708,7 @@ describe Puppet::Configurer do
|
|
581
708
|
end
|
582
709
|
|
583
710
|
def expects_new_catalog_only(catalog)
|
584
|
-
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_cache: true)).and_return(catalog)
|
711
|
+
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_cache: true, check_environment: true)).and_return(catalog)
|
585
712
|
expect(Puppet::Resource::Catalog.indirection).not_to receive(:find).with(anything, hash_including(ignore_terminus: true))
|
586
713
|
end
|
587
714
|
|
@@ -598,7 +725,7 @@ describe Puppet::Configurer do
|
|
598
725
|
def expects_fallback_to_new_catalog(catalog)
|
599
726
|
expects_pluginsync
|
600
727
|
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_terminus: true)).and_return(nil)
|
601
|
-
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_cache: true)).and_return(catalog)
|
728
|
+
expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_cache: true, check_environment: true)).and_return(catalog)
|
602
729
|
end
|
603
730
|
|
604
731
|
def expects_neither_new_or_cached_catalog
|
@@ -622,21 +749,13 @@ describe Puppet::Configurer do
|
|
622
749
|
configurer.run
|
623
750
|
end
|
624
751
|
|
625
|
-
it "should not
|
626
|
-
expect(Puppet::Node.indirection).not_to receive(:find)
|
752
|
+
it "should not pluginsync when a cached catalog is successfully retrieved" do
|
627
753
|
expects_cached_catalog_only(catalog)
|
628
754
|
expect(configurer).not_to receive(:download_plugins)
|
629
755
|
|
630
756
|
configurer.run
|
631
757
|
end
|
632
758
|
|
633
|
-
it "should make a node request and pluginsync when a cached catalog cannot be retrieved" do
|
634
|
-
expect(Puppet::Node.indirection).to receive(:find).and_return(nil)
|
635
|
-
expects_fallback_to_new_catalog(catalog)
|
636
|
-
|
637
|
-
configurer.run
|
638
|
-
end
|
639
|
-
|
640
759
|
it "should set its cached_catalog_status to 'explicitly_requested'" do
|
641
760
|
expects_cached_catalog_only(catalog)
|
642
761
|
|
@@ -672,7 +791,6 @@ describe Puppet::Configurer do
|
|
672
791
|
it "should not attempt to retrieve a cached catalog again if the first attempt failed" do
|
673
792
|
Puppet[:ignore_plugin_errors] = true
|
674
793
|
|
675
|
-
expect(Puppet::Node.indirection).to receive(:find).and_return(nil)
|
676
794
|
expects_neither_new_or_cached_catalog
|
677
795
|
expects_pluginsync
|
678
796
|
|
@@ -728,16 +846,6 @@ describe Puppet::Configurer do
|
|
728
846
|
Puppet.settings[:strict_environment_mode] = true
|
729
847
|
end
|
730
848
|
|
731
|
-
it "should not make a node request" do
|
732
|
-
stub_request(:get, %r{/puppet/v3/file_metadatas?/plugins}).to_return(:status => 404)
|
733
|
-
stub_request(:get, %r{/puppet/v3/file_metadatas?/pluginfacts}).to_return(:status => 404)
|
734
|
-
expects_new_catalog_only(catalog)
|
735
|
-
|
736
|
-
expect(Puppet::Node.indirection).not_to receive(:find)
|
737
|
-
|
738
|
-
configurer.run
|
739
|
-
end
|
740
|
-
|
741
849
|
it "should return nil when the catalog's environment doesn't match the agent specified environment" do
|
742
850
|
Puppet[:environment] = 'second_env'
|
743
851
|
configurer = Puppet::Configurer.new
|
@@ -771,7 +879,7 @@ describe Puppet::Configurer do
|
|
771
879
|
expect(configurer.run).to be_nil
|
772
880
|
end
|
773
881
|
|
774
|
-
it "should proceed with the cached catalog if its environment
|
882
|
+
it "should proceed with the cached catalog if its environment matches the local environment" do
|
775
883
|
expects_cached_catalog_only(catalog)
|
776
884
|
|
777
885
|
expect(configurer.run).to eq(0)
|
@@ -951,9 +1059,23 @@ describe Puppet::Configurer do
|
|
951
1059
|
expect(Puppet::Resource::Catalog.indirection).to receive(:find).and_return(apple, banana, banana)
|
952
1060
|
|
953
1061
|
allow(Puppet).to receive(:notice)
|
1062
|
+
allow(Puppet).to receive(:push_context)
|
954
1063
|
expect(Puppet).to receive(:notice).with("Local environment: 'production' doesn't match server specified environment 'apple', restarting agent run with environment 'apple'")
|
955
1064
|
expect(Puppet).to receive(:notice).with("Local environment: 'apple' doesn't match server specified environment 'banana', restarting agent run with environment 'banana'")
|
956
1065
|
|
1066
|
+
expect(Puppet).to receive(:push_context).with(
|
1067
|
+
hash_including(current_environment: an_object_having_attributes(name: :production)),
|
1068
|
+
'Local node environment production for configurer transaction'
|
1069
|
+
)
|
1070
|
+
expect(Puppet).to receive(:push_context).with(
|
1071
|
+
hash_including(current_environment: an_object_having_attributes(name: :apple)),
|
1072
|
+
'Local node environment apple for configurer transaction'
|
1073
|
+
)
|
1074
|
+
expect(Puppet).to receive(:push_context).with(
|
1075
|
+
hash_including(current_environment: an_object_having_attributes(name: :banana)),
|
1076
|
+
'Local node environment banana for configurer transaction'
|
1077
|
+
)
|
1078
|
+
|
957
1079
|
configurer.run
|
958
1080
|
end
|
959
1081
|
|
@@ -1110,20 +1232,194 @@ describe Puppet::Configurer do
|
|
1110
1232
|
expect(configurer.run(options)).to eq(0)
|
1111
1233
|
expect(options[:report].server_used).to be_nil
|
1112
1234
|
end
|
1235
|
+
end
|
1113
1236
|
|
1114
|
-
|
1115
|
-
|
1237
|
+
describe "when selecting an environment" do
|
1238
|
+
include PuppetSpec::Settings
|
1116
1239
|
|
1117
|
-
|
1118
|
-
|
1240
|
+
describe "when the last used environment is available" do
|
1241
|
+
let(:last_server_specified_environment) { 'development' }
|
1119
1242
|
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1243
|
+
before do
|
1244
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', <<~SUMMARY)
|
1245
|
+
---
|
1246
|
+
version:
|
1247
|
+
config: 1624882680
|
1248
|
+
puppet: 6.24.0
|
1249
|
+
application:
|
1250
|
+
initial_environment: #{Puppet[:environment]}
|
1251
|
+
converged_environment: #{last_server_specified_environment}
|
1252
|
+
run_mode: agent
|
1253
|
+
SUMMARY
|
1123
1254
|
|
1124
|
-
|
1255
|
+
expect(Puppet::Node.indirection).not_to receive(:find)
|
1256
|
+
.with(anything, hash_including(:ignore_cache => true, :fail_on_404 => true))
|
1257
|
+
end
|
1258
|
+
|
1259
|
+
it "prefers the environment set via cli" do
|
1260
|
+
Puppet.settings.handlearg('--environment', 'usethis')
|
1261
|
+
configurer.run
|
1262
|
+
|
1263
|
+
expect(configurer.environment).to eq('usethis')
|
1264
|
+
end
|
1265
|
+
|
1266
|
+
it "prefers the environment set via lastrunfile over config" do
|
1267
|
+
FileUtils.mkdir_p(Puppet[:confdir])
|
1268
|
+
set_puppet_conf(Puppet[:confdir], <<~CONF)
|
1269
|
+
[main]
|
1270
|
+
environment = usethis
|
1271
|
+
lastrunfile = #{Puppet[:lastrunfile]}
|
1272
|
+
CONF
|
1273
|
+
|
1274
|
+
Puppet.initialize_settings
|
1275
|
+
configurer.run
|
1276
|
+
|
1277
|
+
expect(configurer.environment).to eq(last_server_specified_environment)
|
1278
|
+
end
|
1279
|
+
|
1280
|
+
it "uses the environment from Puppet[:environment] if given a catalog" do
|
1281
|
+
configurer.run(catalog: catalog)
|
1282
|
+
|
1283
|
+
expect(configurer.environment).to eq(Puppet[:environment])
|
1284
|
+
end
|
1285
|
+
|
1286
|
+
it "uses the environment from Puppet[:environment] if use_cached_catalog = true" do
|
1287
|
+
Puppet[:use_cached_catalog] = true
|
1288
|
+
expects_cached_catalog_only(catalog)
|
1289
|
+
configurer.run
|
1290
|
+
|
1291
|
+
expect(configurer.environment).to eq(Puppet[:environment])
|
1292
|
+
end
|
1293
|
+
|
1294
|
+
describe "when the environment is not set via CLI" do
|
1295
|
+
it "uses the environment found in lastrunfile if the key exists" do
|
1296
|
+
configurer.run
|
1297
|
+
|
1298
|
+
expect(configurer.environment).to eq(last_server_specified_environment)
|
1299
|
+
end
|
1300
|
+
|
1301
|
+
it "pushes the converged environment found in lastrunfile over the existing context" do
|
1302
|
+
initial_env = Puppet::Node::Environment.remote('production')
|
1303
|
+
Puppet.push_context(
|
1304
|
+
current_environment: initial_env,
|
1305
|
+
loaders: Puppet::Pops::Loaders.new(initial_env, true))
|
1306
|
+
|
1307
|
+
expect(Puppet).to receive(:push_context).with(
|
1308
|
+
hash_including(:current_environment, :loaders),
|
1309
|
+
"Local node environment #{last_server_specified_environment} for configurer transaction"
|
1310
|
+
).once.and_call_original
|
1311
|
+
|
1312
|
+
configurer.run
|
1313
|
+
end
|
1125
1314
|
|
1126
|
-
|
1315
|
+
it "uses the environment from Puppet[:environment] if strict_environment_mode is set" do
|
1316
|
+
Puppet[:strict_environment_mode] = true
|
1317
|
+
configurer.run
|
1318
|
+
|
1319
|
+
expect(configurer.environment).to eq(Puppet[:environment])
|
1320
|
+
end
|
1321
|
+
|
1322
|
+
it "uses the environment from Puppet[:environment] if initial_environment is the same as converged_environment" do
|
1323
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', <<~SUMMARY)
|
1324
|
+
---
|
1325
|
+
version:
|
1326
|
+
config: 1624882680
|
1327
|
+
puppet: 6.24.0
|
1328
|
+
application:
|
1329
|
+
initial_environment: development
|
1330
|
+
converged_environment: development
|
1331
|
+
run_mode: agent
|
1332
|
+
SUMMARY
|
1333
|
+
configurer.run
|
1334
|
+
|
1335
|
+
expect(configurer.environment).to eq(Puppet[:environment])
|
1336
|
+
end
|
1337
|
+
end
|
1338
|
+
end
|
1339
|
+
|
1340
|
+
describe "when the last used environment is not available" do
|
1341
|
+
describe "when the node request succeeds" do
|
1342
|
+
let(:node_environment) { Puppet::Node::Environment.remote(:salam) }
|
1343
|
+
let(:node) { Puppet::Node.new(Puppet[:node_name_value]) }
|
1344
|
+
let(:last_server_specified_environment) { 'development' }
|
1345
|
+
|
1346
|
+
before do
|
1347
|
+
node.environment = node_environment
|
1348
|
+
|
1349
|
+
allow(Puppet::Node.indirection).to receive(:find)
|
1350
|
+
allow(Puppet::Node.indirection).to receive(:find)
|
1351
|
+
.with(anything, hash_including(:ignore_cache => true, :fail_on_404 => true))
|
1352
|
+
.and_return(node)
|
1353
|
+
end
|
1354
|
+
|
1355
|
+
it "uses the environment from the node request if the run mode doesn't match" do
|
1356
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', <<~SUMMARY)
|
1357
|
+
---
|
1358
|
+
version:
|
1359
|
+
config: 1624882680
|
1360
|
+
puppet: 6.24.0
|
1361
|
+
application:
|
1362
|
+
initial_environment: #{Puppet[:environment]}
|
1363
|
+
converged_environment: #{last_server_specified_environment}
|
1364
|
+
run_mode: user
|
1365
|
+
SUMMARY
|
1366
|
+
configurer.run
|
1367
|
+
|
1368
|
+
expect(configurer.environment).to eq(node_environment.name.to_s)
|
1369
|
+
end
|
1370
|
+
|
1371
|
+
it "uses the environment from the node request if lastrunfile does not contain the expected keys" do
|
1372
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', <<~SUMMARY)
|
1373
|
+
---
|
1374
|
+
version:
|
1375
|
+
config: 1624882680
|
1376
|
+
puppet: 6.24.0
|
1377
|
+
SUMMARY
|
1378
|
+
configurer.run
|
1379
|
+
|
1380
|
+
expect(configurer.environment).to eq(node_environment.name.to_s)
|
1381
|
+
end
|
1382
|
+
|
1383
|
+
it "uses the environment from the node request if lastrunfile is invalid YAML" do
|
1384
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', <<~SUMMARY)
|
1385
|
+
Key: 'this is my very very very ' +
|
1386
|
+
'long string'
|
1387
|
+
SUMMARY
|
1388
|
+
configurer.run
|
1389
|
+
|
1390
|
+
expect(configurer.environment).to eq(node_environment.name.to_s)
|
1391
|
+
end
|
1392
|
+
|
1393
|
+
it "uses the environment from the node request if lastrunfile exists but is empty" do
|
1394
|
+
Puppet[:lastrunfile] = file_containing('last_run_summary.yaml', '')
|
1395
|
+
configurer.run
|
1396
|
+
|
1397
|
+
expect(configurer.environment).to eq(node_environment.name.to_s)
|
1398
|
+
end
|
1399
|
+
|
1400
|
+
it "uses the environment from the node request if the last used one cannot be found" do
|
1401
|
+
Puppet[:lastrunfile] = tmpfile('last_run_summary.yaml')
|
1402
|
+
configurer.run
|
1403
|
+
|
1404
|
+
expect(configurer.environment).to eq(node_environment.name.to_s)
|
1405
|
+
end
|
1406
|
+
end
|
1407
|
+
|
1408
|
+
describe "when the node request fails" do
|
1409
|
+
before do
|
1410
|
+
allow(Puppet::Node.indirection).to receive(:find).and_call_original
|
1411
|
+
allow(Puppet::Node.indirection).to receive(:find)
|
1412
|
+
.with(anything, hash_including(:ignore_cache => true, :fail_on_404 => true))
|
1413
|
+
.and_raise(Puppet::Error)
|
1414
|
+
end
|
1415
|
+
|
1416
|
+
it "uses the environment from Puppet[:environment] if the last used one cannot be found" do
|
1417
|
+
Puppet[:lastrunfile] = tmpfile('last_run_summary.yaml')
|
1418
|
+
configurer.run
|
1419
|
+
|
1420
|
+
expect(configurer.environment).to eq(Puppet[:environment])
|
1421
|
+
end
|
1422
|
+
end
|
1127
1423
|
end
|
1128
1424
|
end
|
1129
1425
|
end
|