openvox 8.28.0 → 8.28.1
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/CHANGELOG.md +31 -0
- data/Gemfile +2 -2
- data/lib/puppet/generate/type.rb +5 -1
- data/lib/puppet/pops/serialization/to_data_converter.rb +1 -1
- data/lib/puppet/resource/type.rb +8 -8
- data/lib/puppet/ssl/state_machine.rb +6 -0
- data/lib/puppet/type/file/ensure.rb +14 -5
- data/lib/puppet/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2237abcdd8a5a1ebb597961b356db775eb64b74e6735e0d3014a3b221bdf49e1
|
|
4
|
+
data.tar.gz: 8a5f0e31309441c4883df565b8c65e0cecc239465b523d6d3ba97c78d95a808d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ff8595b526d3cb54553745f7932e5b67205f277335f596642625296fc6aecc8c0e26b06385bc2c7ad16d404cf7af0929ef885fadf0892efed3a0662df05a05cf
|
|
7
|
+
data.tar.gz: b56a9c03db302d36b87ba431d5a4326f77c07626fcc891d6f72a953751def305e84573d55321356d12a80620b277ed061e6873815ff1d016fa4aeb98042efde7
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [8.28.1](https://github.com/openvoxproject/openvox/tree/8.28.1) (2026-07-06)
|
|
6
|
+
|
|
7
|
+
[Full Changelog](https://github.com/openvoxproject/openvox/compare/8.28.0...8.28.1)
|
|
8
|
+
|
|
9
|
+
**Fixed bugs:**
|
|
10
|
+
|
|
11
|
+
- \[Bug\]: ca\_refresh\_interval is not respected — agent refreshes CA on every run when server responds 304 [\#435](https://github.com/OpenVoxProject/openvox/issues/435)
|
|
12
|
+
- \[Bug\]: Puppet 8 introduced a regex node definition regression [\#14](https://github.com/OpenVoxProject/openvox/issues/14)
|
|
13
|
+
- \[Backport 8.x\] Update ca\_last\_update/crl\_last\_update on HTTP 304 [\#526](https://github.com/OpenVoxProject/openvox/pull/526) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
14
|
+
- \[Backport 8.x\] Copy input mtime to files generated by puppet generate types [\#523](https://github.com/OpenVoxProject/openvox/pull/523) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
15
|
+
- \[Backport 8.x\] Fix regex node lookup regression from PUP-11515 [\#515](https://github.com/OpenVoxProject/openvox/pull/515) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
16
|
+
- \[Backport 8.x\] Tolerate concurrent creation of directories [\#507](https://github.com/OpenVoxProject/openvox/pull/507) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
17
|
+
|
|
18
|
+
**Closed issues:**
|
|
19
|
+
|
|
20
|
+
- \[Deprecation\] `Puppet::SSL::Certificate` Class [\#344](https://github.com/OpenVoxProject/openvox/issues/344)
|
|
21
|
+
- \[Deprecation\] PAL Script Evaluation APIs [\#343](https://github.com/OpenVoxProject/openvox/issues/343)
|
|
22
|
+
- \[Deprecation\] `source_permissions` File Parameter [\#340](https://github.com/OpenVoxProject/openvox/issues/340)
|
|
23
|
+
- \[Deprecation\] `pluginsync` Setting [\#339](https://github.com/OpenVoxProject/openvox/issues/339)
|
|
24
|
+
- \[Deprecation\] `configprint` Setting [\#337](https://github.com/OpenVoxProject/openvox/issues/337)
|
|
25
|
+
- \[Deprecation\] `regsubst()` Encoding Argument [\#336](https://github.com/OpenVoxProject/openvox/issues/336)
|
|
26
|
+
|
|
27
|
+
**Merged pull requests:**
|
|
28
|
+
|
|
29
|
+
- Promote puppet-resource\_api 1.9.2 into 8.x [\#527](https://github.com/OpenVoxProject/openvox/pull/527) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
30
|
+
- Promote puppet-resource\_api 1.9.1 into 8.x [\#518](https://github.com/OpenVoxProject/openvox/pull/518) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
31
|
+
- \[Backport 8.x\] Fix handling of Puppet::Pops serialization issues [\#514](https://github.com/OpenVoxProject/openvox/pull/514) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
32
|
+
- Promote puppet-runtime 2026.06.24.1 into 8.x [\#501](https://github.com/OpenVoxProject/openvox/pull/501) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
|
|
33
|
+
- Add arm64 support to acceptance 8.x [\#499](https://github.com/OpenVoxProject/openvox/pull/499) ([jpartlow](https://github.com/jpartlow))
|
|
34
|
+
- Add jruby 9.4.15 to CI [\#487](https://github.com/OpenVoxProject/openvox/pull/487) ([bastelfreak](https://github.com/bastelfreak))
|
|
35
|
+
|
|
5
36
|
## [8.28.0](https://github.com/openvoxproject/openvox/tree/8.28.0) (2026-06-10)
|
|
6
37
|
|
|
7
38
|
[Full Changelog](https://github.com/openvoxproject/openvox/compare/8.27.0...8.28.0)
|
data/Gemfile
CHANGED
|
@@ -45,11 +45,11 @@ end
|
|
|
45
45
|
group(:test) do
|
|
46
46
|
# 1.16.0 - 1.16.2 are broken on Windows
|
|
47
47
|
gem 'ffi', '>= 1.15.5', '< 2', '!= 1.16.0', '!= 1.16.1', '!= 1.16.2', require: false
|
|
48
|
-
gem "json-schema", '>= 2', '<
|
|
48
|
+
gem "json-schema", '>= 2', '< 7', require: false
|
|
49
49
|
gem "rake", *location_for(ENV['RAKE_LOCATION'] || '~> 13.0')
|
|
50
50
|
gem "rspec", "~> 3.1", require: false
|
|
51
51
|
gem "rspec-expectations", ["~> 3.9", "!= 3.9.3"]
|
|
52
|
-
gem "rspec-its", "~>
|
|
52
|
+
gem "rspec-its", "~> 2.0", require: false
|
|
53
53
|
gem 'rspec-mocks', '< 3.13.3', require: false # breaking change afterwards: https://github.com/rspec/rspec-mocks/pull/1596
|
|
54
54
|
gem 'vcr', '~> 6.1', require: false
|
|
55
55
|
gem 'webmock', '~> 3.0', require: false
|
data/lib/puppet/generate/type.rb
CHANGED
|
@@ -45,11 +45,14 @@ module Puppet
|
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
# Determines if the output file is up-to-date with respect to the input file.
|
|
48
|
+
# Generated files are stamped with their input's mtime, so the output is
|
|
49
|
+
# up-to-date only on an exact match; an input with older timestamps (e.g.
|
|
50
|
+
# a module downgrade) also triggers regeneration.
|
|
48
51
|
# @param [String, nil] The path to output to, or nil if determined by input
|
|
49
52
|
# @return [Boolean] Returns true if the output is up-to-date or false if not.
|
|
50
53
|
def up_to_date?(outputdir)
|
|
51
54
|
f = effective_output_path(outputdir)
|
|
52
|
-
Puppet::FileSystem.exist?(f) && (Puppet::FileSystem.stat(@path) <=> Puppet::FileSystem.stat(f))
|
|
55
|
+
Puppet::FileSystem.exist?(f) && (Puppet::FileSystem.stat(@path) <=> Puppet::FileSystem.stat(f)) == 0
|
|
53
56
|
end
|
|
54
57
|
|
|
55
58
|
# Gets the filename of the output file.
|
|
@@ -240,6 +243,7 @@ module Puppet
|
|
|
240
243
|
Puppet::FileSystem.open(effective_output_path, nil, 'w:UTF-8') do |file|
|
|
241
244
|
file.write(result)
|
|
242
245
|
end
|
|
246
|
+
Puppet::FileSystem.touch(effective_output_path, mtime: Puppet::FileSystem.stat(input.path).mtime)
|
|
243
247
|
rescue Exception => e
|
|
244
248
|
@bad_input = true
|
|
245
249
|
Puppet.log_exception(e, _("Failed to generate '%{effective_output_path}': %{message}") % { effective_output_path: effective_output_path, message: e.message })
|
|
@@ -305,7 +305,7 @@ module Serialization
|
|
|
305
305
|
if tos.empty?
|
|
306
306
|
semantic = Puppet::Pops::SemanticError.new(issue, nil, EMPTY_HASH)
|
|
307
307
|
else
|
|
308
|
-
file, line = stacktrace
|
|
308
|
+
file, line = Puppet::Pops::PuppetStack.stacktrace
|
|
309
309
|
semantic = Puppet::Pops::SemanticError.new(issue, nil, { :file => file, :line => line })
|
|
310
310
|
end
|
|
311
311
|
end
|
data/lib/puppet/resource/type.rb
CHANGED
|
@@ -34,13 +34,13 @@ class Puppet::Resource::Type
|
|
|
34
34
|
EMPTY_ARRAY = [].freeze
|
|
35
35
|
|
|
36
36
|
LOOKAROUND_OPERATORS = {
|
|
37
|
-
"(" => '
|
|
38
|
-
"?" => "
|
|
39
|
-
"<" => "
|
|
40
|
-
">" => "
|
|
41
|
-
"!" => "
|
|
42
|
-
"=" => "
|
|
43
|
-
")" => '
|
|
37
|
+
"(" => 'lp',
|
|
38
|
+
"?" => "qu",
|
|
39
|
+
"<" => "lt",
|
|
40
|
+
">" => "gt",
|
|
41
|
+
"!" => "ex",
|
|
42
|
+
"=" => "eq",
|
|
43
|
+
")" => 'rp'
|
|
44
44
|
}.freeze
|
|
45
45
|
|
|
46
46
|
attr_accessor :file, :line, :doc, :code, :parent, :resource_type_collection, :override
|
|
@@ -206,7 +206,7 @@ class Puppet::Resource::Type
|
|
|
206
206
|
|
|
207
207
|
def name
|
|
208
208
|
if type == :node && name_is_regex?
|
|
209
|
-
# Normalize
|
|
209
|
+
# Normalize lookaround regex pattern to a unique, lookup-safe lowercase string.
|
|
210
210
|
internal_name = @name.source.downcase.gsub(/\(\?[^)]*\)/) do |str|
|
|
211
211
|
str.gsub(/./) { |ch| LOOKAROUND_OPERATORS[ch] || ch }
|
|
212
212
|
end
|
|
@@ -121,6 +121,10 @@ class Puppet::SSL::StateMachine
|
|
|
121
121
|
rescue Puppet::HTTP::ResponseError => e
|
|
122
122
|
if e.response.code == 304
|
|
123
123
|
Puppet.info(_("CA certificate is unmodified, using existing CA certificate"))
|
|
124
|
+
# 304 confirms the local CA is current, so reset the TTL.
|
|
125
|
+
# Otherwise ca_last_update (backed by ca.pem mtime) never advances
|
|
126
|
+
# past the initial download and needs_refresh? triggers on every run.
|
|
127
|
+
@cert_provider.ca_last_update = Time.now
|
|
124
128
|
else
|
|
125
129
|
Puppet.info(_("Failed to refresh CA certificate, using existing CA certificate: %{message}") % { message: e.message })
|
|
126
130
|
end
|
|
@@ -219,6 +223,8 @@ class Puppet::SSL::StateMachine
|
|
|
219
223
|
rescue Puppet::HTTP::ResponseError => e
|
|
220
224
|
if e.response.code == 304
|
|
221
225
|
Puppet.info(_("CRL is unmodified, using existing CRL"))
|
|
226
|
+
# 304 confirms the local CRL is current, so reset the TTL.
|
|
227
|
+
@cert_provider.crl_last_update = Time.now
|
|
222
228
|
else
|
|
223
229
|
Puppet.info(_("Failed to refresh CRL, using existing CRL: %{message}") % { message: e.message })
|
|
224
230
|
end
|
|
@@ -86,12 +86,21 @@ module Puppet
|
|
|
86
86
|
raise Puppet::Error,
|
|
87
87
|
"Cannot create #{@resource[:path]}; parent directory #{parent} does not exist"
|
|
88
88
|
end
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
begin
|
|
90
|
+
if mode
|
|
91
|
+
Puppet::Util.withumask(0o00) do
|
|
92
|
+
Dir.mkdir(@resource[:path], symbolic_mode_to_int(mode, 0o755, true))
|
|
93
|
+
end
|
|
94
|
+
else
|
|
95
|
+
Dir.mkdir(@resource[:path])
|
|
92
96
|
end
|
|
93
|
-
|
|
94
|
-
|
|
97
|
+
rescue Errno::EEXIST
|
|
98
|
+
# Another process may have created the directory concurrently. If it
|
|
99
|
+
# really is a directory now, treat that as success.
|
|
100
|
+
#
|
|
101
|
+
# Directory mode, and other properties, will be checked and enforced by
|
|
102
|
+
# the call to `property_fix`.
|
|
103
|
+
raise unless Puppet::FileSystem.directory?(@resource[:path])
|
|
95
104
|
end
|
|
96
105
|
@resource.send(:property_fix)
|
|
97
106
|
return :directory_created
|
data/lib/puppet/version.rb
CHANGED