puppet 7.24.0 → 7.26.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +5 -5
  3. data/Gemfile.lock +37 -37
  4. data/ext/project_data.yaml +1 -1
  5. data/lib/puppet/defaults.rb +10 -5
  6. data/lib/puppet/http/client.rb +12 -5
  7. data/lib/puppet/indirector/catalog/json.rb +8 -3
  8. data/lib/puppet/network/http/api/indirected_routes.rb +7 -2
  9. data/lib/puppet/pops/evaluator/deferred_resolver.rb +20 -3
  10. data/lib/puppet/ssl/oids.rb +1 -0
  11. data/lib/puppet/thread_local.rb +1 -4
  12. data/lib/puppet/version.rb +1 -1
  13. data/man/man5/puppet.conf.5 +10 -2
  14. data/man/man8/puppet-agent.8 +1 -1
  15. data/man/man8/puppet-apply.8 +1 -1
  16. data/man/man8/puppet-catalog.8 +1 -1
  17. data/man/man8/puppet-config.8 +1 -1
  18. data/man/man8/puppet-describe.8 +1 -1
  19. data/man/man8/puppet-device.8 +1 -1
  20. data/man/man8/puppet-doc.8 +1 -1
  21. data/man/man8/puppet-epp.8 +1 -1
  22. data/man/man8/puppet-facts.8 +1 -1
  23. data/man/man8/puppet-filebucket.8 +1 -1
  24. data/man/man8/puppet-generate.8 +1 -1
  25. data/man/man8/puppet-help.8 +1 -1
  26. data/man/man8/puppet-lookup.8 +1 -1
  27. data/man/man8/puppet-module.8 +1 -1
  28. data/man/man8/puppet-node.8 +1 -1
  29. data/man/man8/puppet-parser.8 +1 -1
  30. data/man/man8/puppet-plugin.8 +1 -1
  31. data/man/man8/puppet-report.8 +1 -1
  32. data/man/man8/puppet-resource.8 +1 -1
  33. data/man/man8/puppet-script.8 +1 -1
  34. data/man/man8/puppet-ssl.8 +1 -1
  35. data/man/man8/puppet.8 +2 -2
  36. data/spec/integration/application/apply_spec.rb +14 -0
  37. data/spec/integration/http/client_spec.rb +16 -0
  38. data/spec/unit/defaults_spec.rb +2 -40
  39. data/spec/unit/network/http/api/indirected_routes_spec.rb +26 -0
  40. metadata +3 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47e0cff124dff6b6d9ddd406d242723608d4746646040d9a23a9ed8c26ddf54e
4
- data.tar.gz: eb491dfb35043c67937b809e6971d4d90b5e1bed94bd6a0502ef337644bafd6f
3
+ metadata.gz: 4350a93f3369c12583813d15ee2ff5f3a723acef569dcbb6e70f56e462a9e13a
4
+ data.tar.gz: b4194a13ab7e9f12eb46a82d5995e483b203ed578be64b9b39fd1d77e1f6199a
5
5
  SHA512:
6
- metadata.gz: b754e7be29fef90b986e26e8b3ce3f133ceb8f047d1ae82a9e3feca42fc4c978bbc094d2db4a807cab679aef29d27fc260c603664cf5cc7306103e33a207683f
7
- data.tar.gz: 1d9c17d7e425e7df934e3fb845e3d66f57d3daa907e087cf7d354a1713fe392ea5bc0c5564782451926752b6520bced76d7dd689afff6d9517cdff3dc7200f09
6
+ metadata.gz: 87919389e1447dd22cb532cc81f0c5c432cd375b5822b5849eedb179047cf496828f101039e955c848643029f29dfb147b7e8fed98ba41bd958b726858ad730a
7
+ data.tar.gz: 04ed925c840517e266cf62475897d32e6564f6bef383e3c57d0f144d89df13a584c21f4e95170f97d4fb8a71c6c7167f5e28dceb0591ba57c86771a84dae6da9
data/CODEOWNERS CHANGED
@@ -1,11 +1,11 @@
1
1
  # defaults
2
- * @puppetlabs/phoenix @puppetlabs/puppetserver-maintainers
2
+ * @puppetlabs/phoenix
3
3
 
4
4
  # PAL
5
5
  /lib/puppet/pal @puppetlabs/bolt
6
6
 
7
7
  # puppet module
8
- /lib/puppet/application/module.rb @puppetlabs/pdk
9
- /lib/puppet/face/module @puppetlabs/pdk
10
- /lib/puppet/forge @puppetlabs/pdk
11
- /lib/puppet/module_tool @puppetlabs/pdk
8
+ /lib/puppet/application/module.rb @puppetlabs/modules
9
+ /lib/puppet/face/module @puppetlabs/modules
10
+ /lib/puppet/forge @puppetlabs/modules
11
+ /lib/puppet/module_tool @puppetlabs/modules
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  GIT
2
2
  remote: https://github.com/puppetlabs/packaging
3
- revision: f1c483d29ce1ff6d7ca7be42014eab998f499625
3
+ revision: affecba5dfacc5862fc7199895ccf11b69153570
4
4
  branch: 1.0.x
5
5
  specs:
6
- packaging (0.109.5)
6
+ packaging (0)
7
7
  apt_stage_artifacts
8
8
  artifactory (~> 3)
9
9
  csv (>= 3.1.5)
@@ -15,9 +15,9 @@ GIT
15
15
  PATH
16
16
  remote: .
17
17
  specs:
18
- puppet (7.24.0)
18
+ puppet (7.26.0)
19
19
  CFPropertyList (~> 2.2)
20
- concurrent-ruby (~> 1.0, < 1.2.0)
20
+ concurrent-ruby (~> 1.0)
21
21
  deep_merge (~> 1.0)
22
22
  facter (>= 2.4.0, < 5)
23
23
  fast_gettext (>= 1.1, < 3)
@@ -31,27 +31,27 @@ GEM
31
31
  remote: https://artifactory.delivery.puppetlabs.net/artifactory/api/gems/rubygems/
32
32
  specs:
33
33
  CFPropertyList (2.3.6)
34
- addressable (2.8.3)
34
+ addressable (2.8.5)
35
35
  public_suffix (>= 2.0.2, < 6.0)
36
36
  apt_stage_artifacts (0.11.0)
37
37
  docopt
38
38
  artifactory (3.0.15)
39
39
  ast (2.4.2)
40
40
  coderay (1.1.3)
41
- concurrent-ruby (1.1.10)
41
+ concurrent-ruby (1.2.2)
42
42
  crack (0.4.5)
43
43
  rexml
44
- csv (3.2.6)
44
+ csv (3.2.7)
45
45
  declarative (0.0.20)
46
46
  deep_merge (1.2.2)
47
47
  diff-lcs (1.5.0)
48
- digest-crc (0.6.4)
48
+ digest-crc (0.6.5)
49
49
  rake (>= 12.0.0, < 14.0.0)
50
50
  docopt (0.6.1)
51
- facter (4.3.0)
51
+ facter (4.4.2)
52
52
  hocon (~> 1.3)
53
53
  thor (>= 1.0.1, < 2.0)
54
- faraday (2.7.4)
54
+ faraday (2.7.10)
55
55
  faraday-net_http (>= 2.0, < 3.1)
56
56
  ruby2_keywords (>= 0.0.4)
57
57
  faraday-net_http (3.0.2)
@@ -64,7 +64,7 @@ GEM
64
64
  fast_gettext (~> 1.1.0)
65
65
  gettext (>= 3.0.2, < 3.3.0)
66
66
  locale
67
- google-apis-core (0.11.0)
67
+ google-apis-core (0.11.1)
68
68
  addressable (~> 2.5, >= 2.5.1)
69
69
  googleauth (>= 0.16.2, < 2.a)
70
70
  httpclient (>= 2.8.1, < 3.a)
@@ -91,7 +91,7 @@ GEM
91
91
  google-cloud-core (~> 1.6)
92
92
  googleauth (>= 0.16.2, < 2.a)
93
93
  mini_mime (~> 1.0)
94
- googleauth (1.5.0)
94
+ googleauth (1.7.0)
95
95
  faraday (>= 0.17.3, < 3.a)
96
96
  jwt (>= 1.4, < 3.0)
97
97
  memoist (~> 0.16)
@@ -100,7 +100,7 @@ GEM
100
100
  signet (>= 0.16, < 2.a)
101
101
  hashdiff (1.0.1)
102
102
  hiera (3.12.0)
103
- hiera-eyaml (3.3.0)
103
+ hiera-eyaml (3.4.0)
104
104
  highline
105
105
  optimist
106
106
  highline (2.1.0)
@@ -109,35 +109,36 @@ GEM
109
109
  httpclient (2.8.3)
110
110
  json-schema (2.8.1)
111
111
  addressable (>= 2.4)
112
- jwt (2.7.0)
112
+ jwt (2.7.1)
113
113
  locale (2.1.3)
114
114
  memoist (0.16.2)
115
115
  memory_profiler (1.0.1)
116
116
  method_source (1.0.0)
117
- mini_mime (1.1.2)
117
+ mini_mime (1.1.5)
118
118
  minitar (0.9)
119
- msgpack (1.7.0)
119
+ msgpack (1.7.2)
120
120
  multi_json (1.15.0)
121
121
  mustache (1.1.1)
122
- optimist (3.0.1)
122
+ optimist (3.1.0)
123
123
  os (1.1.4)
124
- parallel (1.22.1)
125
- parser (3.2.2.0)
124
+ parallel (1.23.0)
125
+ parser (3.2.2.3)
126
126
  ast (~> 2.4.1)
127
+ racc
127
128
  pry (0.14.2)
128
129
  coderay (~> 1.1)
129
130
  method_source (~> 1.0)
130
- public_suffix (5.0.1)
131
- puppet-resource_api (1.8.14)
131
+ public_suffix (5.0.3)
132
+ puppet-resource_api (1.9.0)
132
133
  hocon (>= 1.0)
133
- puppetserver-ca (2.5.0)
134
+ puppetserver-ca (2.6.0)
134
135
  facter (>= 2.0.1, < 5)
135
136
  racc (1.5.2)
136
137
  rainbow (3.1.1)
137
138
  rake (13.0.6)
138
- rdiscount (2.2.7)
139
+ rdiscount (2.2.7.1)
139
140
  rdoc (6.3.3)
140
- regexp_parser (2.7.0)
141
+ regexp_parser (2.8.1)
141
142
  release-metrics (1.1.0)
142
143
  csv
143
144
  docopt
@@ -146,7 +147,7 @@ GEM
146
147
  trailblazer-option (>= 0.1.1, < 0.2.0)
147
148
  uber (< 0.2.0)
148
149
  retriable (3.1.2)
149
- rexml (3.2.5)
150
+ rexml (3.2.6)
150
151
  ronn (0.7.3)
151
152
  hpricot (>= 0.8.2)
152
153
  mustache (>= 0.7.0)
@@ -155,18 +156,18 @@ GEM
155
156
  rspec-core (~> 3.12.0)
156
157
  rspec-expectations (~> 3.12.0)
157
158
  rspec-mocks (~> 3.12.0)
158
- rspec-core (3.12.1)
159
+ rspec-core (3.12.2)
159
160
  rspec-support (~> 3.12.0)
160
- rspec-expectations (3.12.2)
161
+ rspec-expectations (3.12.3)
161
162
  diff-lcs (>= 1.2.0, < 2.0)
162
163
  rspec-support (~> 3.12.0)
163
164
  rspec-its (1.3.0)
164
165
  rspec-core (>= 3.0.0)
165
166
  rspec-expectations (>= 3.0.0)
166
- rspec-mocks (3.12.5)
167
+ rspec-mocks (3.12.6)
167
168
  diff-lcs (>= 1.2.0, < 2.0)
168
169
  rspec-support (~> 3.12.0)
169
- rspec-support (3.12.0)
170
+ rspec-support (3.12.1)
170
171
  rubocop (1.28.0)
171
172
  parallel (~> 1.10)
172
173
  parser (>= 3.1.0.0)
@@ -176,22 +177,22 @@ GEM
176
177
  rubocop-ast (>= 1.17.0, < 2.0)
177
178
  ruby-progressbar (~> 1.7)
178
179
  unicode-display_width (>= 1.4.0, < 3.0)
179
- rubocop-ast (1.28.0)
180
+ rubocop-ast (1.29.0)
180
181
  parser (>= 3.2.1.0)
181
182
  rubocop-i18n (3.0.0)
182
183
  rubocop (~> 1.0)
183
- ruby-prof (1.6.1)
184
+ ruby-prof (1.6.3)
184
185
  ruby-progressbar (1.13.0)
185
186
  ruby2_keywords (0.0.5)
186
187
  scanf (1.0.0)
187
- semantic_puppet (1.0.4)
188
+ semantic_puppet (1.1.0)
188
189
  signet (0.17.0)
189
190
  addressable (~> 2.8)
190
191
  faraday (>= 0.17.5, < 3.a)
191
192
  jwt (>= 1.5, < 3.0)
192
193
  multi_json (~> 1.10)
193
194
  text (1.3.1)
194
- thor (1.2.1)
195
+ thor (1.2.2)
195
196
  trailblazer-option (0.1.2)
196
197
  uber (0.1.0)
197
198
  unicode-display_width (2.4.2)
@@ -200,9 +201,8 @@ GEM
200
201
  addressable (>= 2.8.0)
201
202
  crack (>= 0.3.2)
202
203
  hashdiff (>= 0.4.0, < 2.0.0)
203
- webrick (1.7.0)
204
- yard (0.9.28)
205
- webrick (~> 1.7.0)
204
+ webrick (1.8.1)
205
+ yard (0.9.34)
206
206
 
207
207
  PLATFORMS
208
208
  x86_64-linux
@@ -238,4 +238,4 @@ DEPENDENCIES
238
238
  yard
239
239
 
240
240
  BUNDLED WITH
241
- 2.3.22
241
+ 2.4.12
@@ -25,7 +25,7 @@ gem_runtime_dependencies:
25
25
  locale: '~> 2.1'
26
26
  multi_json: '~> 1.10'
27
27
  puppet-resource_api: '~>1.5'
28
- concurrent-ruby: ["~> 1.0", "< 1.2.0"]
28
+ concurrent-ruby: "~> 1.0"
29
29
  deep_merge: '~> 1.0'
30
30
  scanf: '~> 1.0'
31
31
  gem_rdoc_options:
@@ -3,11 +3,7 @@ require_relative '../puppet/util/platform'
3
3
  module Puppet
4
4
 
5
5
  def self.default_diffargs
6
- if (Puppet.runtime[:facter].value(:kernel) == "AIX" && Puppet.runtime[:facter].value(:kernelmajversion) == "5300")
7
- ""
8
- else
9
- "-u"
10
- end
6
+ '-u'
11
7
  end
12
8
 
13
9
  def self.default_digest_algorithm
@@ -1711,6 +1707,15 @@ EOT
1711
1707
  can be guaranteed to support this format, but it will be used for all
1712
1708
  classes that support it.",
1713
1709
  },
1710
+ :allow_pson_serialization => {
1711
+ :default => true,
1712
+ :type => :boolean,
1713
+ :desc => "Whether when unable to serialize to JSON or other formats,
1714
+ Puppet falls back to PSON. This option affects both puppetserver's
1715
+ configuration management service responses and when the agent saves its
1716
+ cached catalog. This option is useful in preventing the loss of data because
1717
+ rich data cannot be serialized via PSON.",
1718
+ },
1714
1719
  :agent_catalog_run_lockfile => {
1715
1720
  :default => "$statedir/agent_catalog_run.lock",
1716
1721
  :type => :string, # (#2888) Ensure this file is not added to the settings catalog.
@@ -367,6 +367,7 @@ class Puppet::HTTP::Client
367
367
  apply_auth(request, basic_auth) if redirects.zero?
368
368
 
369
369
  # don't call return within the `request` block
370
+ close_and_sleep = nil
370
371
  http.request(request) do |nethttp|
371
372
  response = Puppet::HTTP::ResponseNetHTTP.new(request.uri, nethttp)
372
373
  begin
@@ -380,12 +381,14 @@ class Puppet::HTTP::Client
380
381
  interval = @retry_after_handler.retry_after_interval(request, response, retries)
381
382
  retries += 1
382
383
  if interval
383
- if http.started?
384
- Puppet.debug("Closing connection for #{Puppet::HTTP::Site.from_uri(request.uri)}")
385
- http.finish
384
+ close_and_sleep = proc do
385
+ if http.started?
386
+ Puppet.debug("Closing connection for #{Puppet::HTTP::Site.from_uri(request.uri)}")
387
+ http.finish
388
+ end
389
+ Puppet.warning(_("Sleeping for %{interval} seconds before retrying the request") % { interval: interval })
390
+ ::Kernel.sleep(interval)
386
391
  end
387
- Puppet.warning(_("Sleeping for %{interval} seconds before retrying the request") % { interval: interval })
388
- ::Kernel.sleep(interval)
389
392
  next
390
393
  end
391
394
  end
@@ -404,6 +407,10 @@ class Puppet::HTTP::Client
404
407
 
405
408
  done = true
406
409
  end
410
+ ensure
411
+ # If a server responded with a retry, make sure the connection is closed and then
412
+ # sleep the specified time.
413
+ close_and_sleep.call if close_and_sleep
407
414
  end
408
415
  end
409
416
 
@@ -18,9 +18,14 @@ class Puppet::Resource::Catalog::Json < Puppet::Indirector::JSON
18
18
  def to_json(object)
19
19
  object.render(json_format)
20
20
  rescue Puppet::Network::FormatHandler::FormatError => err
21
- Puppet.info(_("Unable to serialize catalog to json, retrying with pson"))
22
- Puppet.log_exception(err, err.message, level: :debug)
23
- object.render('pson').force_encoding(Encoding::BINARY)
21
+ if Puppet[:allow_pson_serialization]
22
+ Puppet.info(_("Unable to serialize catalog to json, retrying with pson. PSON is deprecated and will be removed in a future release"))
23
+ Puppet.log_exception(err, err.message, level: :debug)
24
+ object.render('pson').force_encoding(Encoding::BINARY)
25
+ else
26
+ Puppet.info(_("Unable to serialize catalog to json, no other acceptable format"))
27
+ Puppet.log_exception(err, err.message, level: :err)
28
+ end
24
29
  end
25
30
 
26
31
  private
@@ -192,8 +192,13 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
192
192
  yield format
193
193
  true
194
194
  rescue Puppet::Network::FormatHandler::FormatError => err
195
- Puppet.warning(_("Failed to serialize %{model} for '%{key}': %{detail}") %
196
- {model: model, key: key, detail: err})
195
+ msg = _("Failed to serialize %{model} for '%{key}': %{detail}") %
196
+ {model: model, key: key, detail: err}
197
+ if Puppet[:allow_pson_serialization]
198
+ Puppet.warning(msg)
199
+ else
200
+ raise Puppet::Network::FormatHandler::FormatError.new(msg)
201
+ end
197
202
  false
198
203
  end
199
204
  end
@@ -9,7 +9,13 @@ class DeferredValue
9
9
  end
10
10
 
11
11
  def resolve
12
- @proc.call
12
+ val = @proc.call
13
+ # Deferred sensitive values will be marked as such in resolve_futures()
14
+ if val.is_a?(Puppet::Pops::Types::PSensitiveType::Sensitive)
15
+ val.unwrap
16
+ else
17
+ val
18
+ end
13
19
  end
14
20
  end
15
21
 
@@ -87,8 +93,12 @@ class DeferredResolver
87
93
  #
88
94
  if resolved.is_a?(Puppet::Pops::Types::PSensitiveType::Sensitive)
89
95
  resolved = resolved.unwrap
90
- unless r.sensitive_parameters.include?(k.to_sym)
91
- r.sensitive_parameters = (r.sensitive_parameters + [k.to_sym]).freeze
96
+ mark_sensitive_parameters(r, k)
97
+ # If the value is a DeferredValue and it has an argument of type PSensitiveType, mark it as sensitive
98
+ # The DeferredValue.resolve method will unwrap it during catalog application
99
+ elsif resolved.is_a?(Puppet::Pops::Evaluator::DeferredValue)
100
+ if v.arguments.any? {|arg| arg.is_a?(Puppet::Pops::Types::PSensitiveType)}
101
+ mark_sensitive_parameters(r, k)
92
102
  end
93
103
  end
94
104
  overrides[ k ] = resolved
@@ -97,6 +107,13 @@ class DeferredResolver
97
107
  end
98
108
  end
99
109
 
110
+ def mark_sensitive_parameters(r, k)
111
+ unless r.sensitive_parameters.include?(k.to_sym)
112
+ r.sensitive_parameters = (r.sensitive_parameters + [k.to_sym]).freeze
113
+ end
114
+ end
115
+ private :mark_sensitive_parameters
116
+
100
117
  def resolve(x)
101
118
  if x.class == @deferred_class
102
119
  resolve_future(x)
@@ -71,6 +71,7 @@ module Puppet::SSL::Oids
71
71
 
72
72
  ["1.3.6.1.4.1.34380.1.3.1", 'pp_authorization', 'Certificate Extension Authorization'],
73
73
  ["1.3.6.1.4.1.34380.1.3.13", 'pp_auth_role', 'Puppet Node Role Name for Authorization'],
74
+ ["1.3.6.1.4.1.34380.1.3.39", 'pp_cli_auth', 'Puppetserver CA CLI Authorization'],
74
75
  ]
75
76
 
76
77
  @did_register_puppet_oids = false
@@ -1,7 +1,4 @@
1
1
  require 'concurrent'
2
2
 
3
- # We want to use the pure Ruby implementation even on JRuby. If we use the Java
4
- # implementation of ThreadLocal, we end up leaking references to JRuby instances
5
- # and preventing them from being garbage collected.
6
- class Puppet::ThreadLocal < Concurrent::RubyThreadLocalVar
3
+ class Puppet::ThreadLocal < Concurrent::ThreadLocalVar
7
4
  end
@@ -6,7 +6,7 @@
6
6
  # Raketasks and such to set the version based on the output of `git describe`
7
7
 
8
8
  module Puppet
9
- PUPPETVERSION = '7.24.0'
9
+ PUPPETVERSION = '7.26.0'
10
10
 
11
11
  ##
12
12
  # version is a public API method intended to always provide a fast and
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPETCONF" "5" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPETCONF" "5" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  \fBThis page is autogenerated; any changes will get overwritten\fR
6
6
  .
7
7
  .SH "Configuration settings"
@@ -62,6 +62,14 @@ Whether to allow a new certificate request to overwrite an existing certificate
62
62
  .
63
63
  .IP "" 0
64
64
  .
65
+ .SS "allow_pson_serialization"
66
+ Whether when unable to serialize to JSON or other formats, Puppet falls back to PSON\. This option affects both puppetserver\'s configuration management service responses and when the agent saves its cached catalog\. This option is useful in preventing the loss of data because rich data cannot be serialized via PSON\.
67
+ .
68
+ .IP "\(bu" 4
69
+ \fIDefault\fR: \fBtrue\fR
70
+ .
71
+ .IP "" 0
72
+ .
65
73
  .SS "always_retry_plugins"
66
74
  Affects how we cache attempts to load Puppet resource types and features\. If true, then calls to \fBPuppet\.type\.<type>?\fR \fBPuppet\.feature\.<feature>?\fR will always attempt to load the type or feature (which can be an expensive operation) unless it has already been loaded successfully\. This makes it possible for a single agent run to, e\.g\., install a package that provides the underlying capabilities for a type or feature, and then later load that type or feature during the same run (even if the type or feature had been tested earlier and had not been available)\.
67
75
  .
@@ -937,7 +945,7 @@ The time to wait for data to be read from an HTTP connection\. If nothing is rea
937
945
  The HTTP User\-Agent string to send when making network requests\.
938
946
  .
939
947
  .IP "\(bu" 4
940
- \fIDefault\fR: \fBPuppet/7\.24\.0 Ruby/2\.7\.5\-p203 (x86_64\-linux)\fR
948
+ \fIDefault\fR: \fBPuppet/7\.26\.0 Ruby/2\.7\.5\-p203 (x86_64\-linux)\fR
941
949
  .
942
950
  .IP "" 0
943
951
  .
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-AGENT" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-AGENT" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-agent\fR \- The puppet agent daemon
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-APPLY" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-APPLY" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-apply\fR \- Apply Puppet manifests locally
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-CATALOG" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-CATALOG" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-catalog\fR \- Compile, save, view, and convert catalogs\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-CONFIG" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-CONFIG" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-config\fR \- Interact with Puppet\'s settings\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-DESCRIBE" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-DESCRIBE" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-describe\fR \- Display help about resource types
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-DEVICE" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-DEVICE" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-device\fR \- Manage remote network devices
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-DOC" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-DOC" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-doc\fR \- Generate Puppet references
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-EPP" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-EPP" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-epp\fR \- Interact directly with the EPP template parser/renderer\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-FACTS" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-FACTS" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-facts\fR \- Retrieve and store facts\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-FILEBUCKET" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-FILEBUCKET" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-filebucket\fR \- Store and retrieve files in a filebucket
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-GENERATE" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-GENERATE" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-generate\fR \- Generates Puppet code from Ruby definitions\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-HELP" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-HELP" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-help\fR \- Display Puppet help\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-LOOKUP" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-LOOKUP" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-lookup\fR \- Interactive Hiera lookup
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-MODULE" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-MODULE" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-module\fR \- Creates, installs and searches for modules on the Puppet Forge\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-NODE" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-NODE" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-node\fR \- View and manage node definitions\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-PARSER" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-PARSER" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-parser\fR \- Interact directly with the parser\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-PLUGIN" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-PLUGIN" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-plugin\fR \- Interact with the Puppet plugin system\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-REPORT" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-REPORT" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-report\fR \- Create, display, and submit reports\.
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-RESOURCE" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-RESOURCE" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-resource\fR \- The resource abstraction layer shell
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-SCRIPT" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-SCRIPT" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-script\fR \- Run a puppet manifests as a script without compiling a catalog
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET\-SSL" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET\-SSL" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\-ssl\fR \- Manage SSL keys and certificates for puppet SSL clients
data/man/man8/puppet.8 CHANGED
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "PUPPET" "8" "March 2023" "Puppet, Inc." "Puppet manual"
4
+ .TH "PUPPET" "8" "August 2023" "Puppet, Inc." "Puppet manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBpuppet\fR
@@ -25,4 +25,4 @@ Specialized:
25
25
  catalog Compile, save, view, and convert catalogs\. describe Display help about resource types device Manage remote network devices doc Generate Puppet references epp Interact directly with the EPP template parser/renderer\. facts Retrieve and store facts\. filebucket Store and retrieve files in a filebucket generate Generates Puppet code from Ruby definitions\. node View and manage node definitions\. parser Interact directly with the parser\. plugin Interact with the Puppet plugin system\. script Run a puppet manifests as a script without compiling a catalog ssl Manage SSL keys and certificates for puppet SSL clients
26
26
  .
27
27
  .P
28
- See \'puppet help \fIsubcommand\fR \fIaction\fR\' for help on a specific subcommand action\. See \'puppet help \fIsubcommand\fR\' for help on a specific subcommand\. Puppet v7\.24\.0
28
+ See \'puppet help \fIsubcommand\fR \fIaction\fR\' for help on a specific subcommand action\. See \'puppet help \fIsubcommand\fR\' for help on a specific subcommand\. Puppet v7\.26\.0
@@ -755,5 +755,19 @@ class amod::bad_type {
755
755
  .and output(/Notify\[runs before file\]/).to_stdout
756
756
  .and output(/Validation of File.* failed: You cannot specify more than one of content, source, target/).to_stderr
757
757
  end
758
+
759
+ it "applies deferred sensitive file content" do
760
+ manifest = <<~END
761
+ file { '#{deferred_file}':
762
+ ensure => file,
763
+ content => Deferred('new', [Sensitive, "hello\n"])
764
+ }
765
+ END
766
+ apply.command_line.args = ['-e', manifest]
767
+ expect {
768
+ apply.run
769
+ }.to exit_with(0)
770
+ .and output(/ensure: changed \[redacted\] to \[redacted\]/).to_stdout
771
+ end
758
772
  end
759
773
  end
@@ -175,6 +175,22 @@ describe Puppet::HTTP::Client, unless: Puppet::Util::Platform.jruby? do
175
175
  end
176
176
  end
177
177
 
178
+ context 'ensure that retrying does not attempt to read the body after closing the connection' do
179
+ let(:client) { Puppet::HTTP::Client.new(retry_limit: 1) }
180
+ it 'raises a retry error instead' do
181
+ response_proc = -> (req, res) {
182
+ res['Retry-After'] = 1
183
+ res.status = 503
184
+ }
185
+
186
+ https_server.start_server(response_proc: response_proc) do |port|
187
+ uri = URI("https://127.0.0.1:#{port}")
188
+ kwargs = {headers: {'Content-Type' => 'text/plain'}, options: {ssl_context: root_context}}
189
+ expect{client.post(uri, '', **kwargs)}.to raise_error(Puppet::HTTP::TooManyRetryAfters)
190
+ end
191
+ end
192
+ end
193
+
178
194
  context 'persistent connections' do
179
195
  it "detects when the server has closed the connection and reconnects" do
180
196
  Puppet[:http_debug] = true
@@ -3,46 +3,8 @@ require 'puppet/settings'
3
3
 
4
4
  describe "Defaults" do
5
5
  describe ".default_diffargs" do
6
- describe "on AIX" do
7
- before(:each) do
8
- allow(Facter).to receive(:value).with(:kernel).and_return("AIX")
9
- end
10
-
11
- describe "on 5.3" do
12
- before(:each) do
13
- allow(Facter).to receive(:value).with(:kernelmajversion).and_return("5300")
14
- end
15
-
16
- it "should be empty" do
17
- expect(Puppet.default_diffargs).to eq("")
18
- end
19
- end
20
-
21
- [ "",
22
- nil,
23
- "6300",
24
- "7300",
25
- ].each do |kernel_version|
26
- describe "on kernel version #{kernel_version.inspect}" do
27
- before(:each) do
28
- allow(Facter).to receive(:value).with(:kernelmajversion).and_return(kernel_version)
29
- end
30
-
31
- it "should be '-u'" do
32
- expect(Puppet.default_diffargs).to eq("-u")
33
- end
34
- end
35
- end
36
- end
37
-
38
- describe "on everything else" do
39
- before(:each) do
40
- allow(Facter).to receive(:value).with(:kernel).and_return("NOT_AIX")
41
- end
42
-
43
- it "should be '-u'" do
44
- expect(Puppet.default_diffargs).to eq("-u")
45
- end
6
+ it "should be '-u'" do
7
+ expect(Puppet.default_diffargs).to eq("-u")
46
8
  end
47
9
  end
48
10
 
@@ -210,6 +210,19 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
210
210
  handler.call(request, response)
211
211
  }.to raise_error(not_found_error)
212
212
  end
213
+
214
+ it "should raise FormatError if tries to fallback and pson serialization is not allowed" do
215
+ Puppet[:allow_pson_serialization] = false
216
+ data = Puppet::IndirectorTesting.new("my data")
217
+ indirection.save(data, "my data")
218
+ request = a_request_that_finds(data, :accept_header => "unknown, text/pson")
219
+ allow(data).to receive(:to_pson).and_raise(Puppet::Network::FormatHandler::FormatError, 'Could not render to Puppet::Network::Format[pson]: source sequence is illegal/malformed utf-8')
220
+
221
+ expect {
222
+ handler.call(request, response)
223
+ }.to raise_error(Puppet::Network::FormatHandler::FormatError,
224
+ %r{Failed to serialize Puppet::IndirectorTesting for 'my data': Could not render to Puppet::Network::Format\[pson\]})
225
+ end
213
226
  end
214
227
 
215
228
  describe "when searching for model instances" do
@@ -250,6 +263,19 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
250
263
  %r{No supported formats are acceptable \(Accept: application/json, text/pson\)})
251
264
  end
252
265
 
266
+ it "raises FormatError if tries to fallback and pson serialization is not allowed" do
267
+ Puppet[:allow_pson_serialization] = false
268
+ data = Puppet::IndirectorTesting.new("my data")
269
+ indirection.save(data, "my data")
270
+ request = a_request_that_searches(Puppet::IndirectorTesting.new("my"), :accept_header => "unknown, text/pson")
271
+ allow(data).to receive(:to_pson).and_raise(Puppet::Network::FormatHandler::FormatError, 'Could not render to Puppet::Network::Format[pson]: source sequence is illegal/malformed utf-8')
272
+
273
+ expect {
274
+ handler.call(request, response)
275
+ }.to raise_error(Puppet::Network::FormatHandler::FormatError,
276
+ %r{Failed to serialize Puppet::IndirectorTesting for 'my': Could not render_multiple to Puppet::Network::Format\[pson\]})
277
+ end
278
+
253
279
  it "should return [] when searching returns an empty array" do
254
280
  request = a_request_that_searches(Puppet::IndirectorTesting.new("nothing"), :accept_header => "unknown, application/json")
255
281
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.24.0
4
+ version: 7.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-04 00:00:00.000000000 Z
11
+ date: 2023-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: facter
@@ -133,9 +133,6 @@ dependencies:
133
133
  - - "~>"
134
134
  - !ruby/object:Gem::Version
135
135
  version: '1.0'
136
- - - "<"
137
- - !ruby/object:Gem::Version
138
- version: 1.2.0
139
136
  type: :runtime
140
137
  prerelease: false
141
138
  version_requirements: !ruby/object:Gem::Requirement
@@ -143,9 +140,6 @@ dependencies:
143
140
  - - "~>"
144
141
  - !ruby/object:Gem::Version
145
142
  version: '1.0'
146
- - - "<"
147
- - !ruby/object:Gem::Version
148
- version: 1.2.0
149
143
  - !ruby/object:Gem::Dependency
150
144
  name: deep_merge
151
145
  requirement: !ruby/object:Gem::Requirement
@@ -2547,7 +2541,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
2547
2541
  - !ruby/object:Gem::Version
2548
2542
  version: 1.3.1
2549
2543
  requirements: []
2550
- rubygems_version: 3.1.6
2544
+ rubygems_version: 3.4.12
2551
2545
  signing_key:
2552
2546
  specification_version: 4
2553
2547
  summary: Puppet, an automated configuration management tool