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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22a10676212dffb7385dd0b2a93b63e82b431be1721c626845e9b8c9aa3244a3
4
- data.tar.gz: 8b11717749ebc30080d5868897d2af18734696ef84bf52f9e0390ecf5e381431
3
+ metadata.gz: 2237abcdd8a5a1ebb597961b356db775eb64b74e6735e0d3014a3b221bdf49e1
4
+ data.tar.gz: 8a5f0e31309441c4883df565b8c65e0cecc239465b523d6d3ba97c78d95a808d
5
5
  SHA512:
6
- metadata.gz: d83254af4656f5ba95cc0710ac577d80a53c6d8881c4905601d689eff159838dba3b59635c2db446cae49a5bf137453d055bd067d0c61541e00f6d5a73062d82
7
- data.tar.gz: 77ee41bb27713bf2867d9b616580904347595e64a87b24f9d3ba0b3c1c2cc63198cba689b3b806e612db26df8f2cc0e833d6a16e169bf17f393204cf0743a77e
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', '< 6', require: false
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", "~> 1.1", require: false
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
@@ -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)) <= 0
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
@@ -34,13 +34,13 @@ class Puppet::Resource::Type
34
34
  EMPTY_ARRAY = [].freeze
35
35
 
36
36
  LOOKAROUND_OPERATORS = {
37
- "(" => 'LP',
38
- "?" => "QU",
39
- "<" => "LT",
40
- ">" => "GT",
41
- "!" => "EX",
42
- "=" => "EQ",
43
- ")" => 'RP'
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 lookarround regex patthern
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
- if mode
90
- Puppet::Util.withumask(0o00) do
91
- Dir.mkdir(@resource[:path], symbolic_mode_to_int(mode, 0o755, true))
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
- else
94
- Dir.mkdir(@resource[:path])
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
@@ -8,7 +8,7 @@
8
8
  # Raketasks and such to set the version based on the output of `git describe`
9
9
 
10
10
  module Puppet
11
- PUPPETVERSION = '8.28.0'
11
+ PUPPETVERSION = '8.28.1'
12
12
  IMPLEMENTATION = 'openvox'
13
13
 
14
14
  ##
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openvox
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.28.0
4
+ version: 8.28.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenVox Project