openvox 8.27.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: 4c843fbe86064f932413b012a552e6cecf6623ecd71be172a8db1b5ac350c8f6
4
- data.tar.gz: 87fbb8cf66802e3f367e014730960c81b3d5915ccb2a616f34ff32cc7f95fc40
3
+ metadata.gz: 2237abcdd8a5a1ebb597961b356db775eb64b74e6735e0d3014a3b221bdf49e1
4
+ data.tar.gz: 8a5f0e31309441c4883df565b8c65e0cecc239465b523d6d3ba97c78d95a808d
5
5
  SHA512:
6
- metadata.gz: ccb529f52fa44c2245eabdb509c75c4d430d21de88ec661c9f2013fbffeb2e8c23b85fa9fd619cdb38593c0b4f0c863fc4fd501fe6fdb2631df819fbb1ea9ae6
7
- data.tar.gz: c561244e6dd9d1f5e13faf50897dbb48ded025ef1917ba857f9b13a30504e6078ce1b7139aa0b6050a2532ce62d601d062b8e879c168172cdce7b529174ddb04
6
+ metadata.gz: ff8595b526d3cb54553745f7932e5b67205f277335f596642625296fc6aecc8c0e26b06385bc2c7ad16d404cf7af0929ef885fadf0892efed3a0662df05a05cf
7
+ data.tar.gz: b56a9c03db302d36b87ba431d5a4326f77c07626fcc891d6f72a953751def305e84573d55321356d12a80620b277ed061e6873815ff1d016fa4aeb98042efde7
data/CHANGELOG.md CHANGED
@@ -2,32 +2,69 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
- ## [8.27.0](https://github.com/openvoxproject/openvox/tree/8.27.0) (2026-05-15)
5
+ ## [8.28.1](https://github.com/openvoxproject/openvox/tree/8.28.1) (2026-07-06)
6
6
 
7
- [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.26.2...8.27.0)
7
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.28.0...8.28.1)
8
8
 
9
9
  **Fixed bugs:**
10
10
 
11
- - \[Bug\]: openvox-agent 8.26.2 reports 8.26.1 with --version option [\#415](https://github.com/OpenVoxProject/openvox/issues/415)
12
- - avoid badly anchored regular expression [\#414](https://github.com/OpenVoxProject/openvox/pull/414) ([corporate-gadfly](https://github.com/corporate-gadfly))
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))
13
17
 
14
18
  **Closed issues:**
15
19
 
16
- - \[docs\] use openvox-strings instead of puppet-strings [\#433](https://github.com/OpenVoxProject/openvox/issues/433)
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
+
36
+ ## [8.28.0](https://github.com/openvoxproject/openvox/tree/8.28.0) (2026-06-10)
37
+
38
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.27.0...8.28.0)
39
+
40
+ **Implemented enhancements:**
41
+
42
+ - Backport: Add Platform definitions for Fedora 44 to 8.x [\#459](https://github.com/OpenVoxProject/openvox/pull/459) ([Sharpie](https://github.com/Sharpie))
43
+
44
+ **Fixed bugs:**
45
+
46
+ - \[Backport 8.x\] Fix File.open Ruby 3.2 regression in FileSystem::Uniquefile [\#478](https://github.com/OpenVoxProject/openvox/pull/478) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
47
+ - \[Backport 8.x\] Manage group members on EL 10 without libuser [\#477](https://github.com/OpenVoxProject/openvox/pull/477) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
48
+
49
+ **Merged pull requests:**
50
+
51
+ - Promote puppet-runtime 2026.06.09.1 into 8.x [\#480](https://github.com/OpenVoxProject/openvox/pull/480) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
52
+
53
+ ## [8.27.0](https://github.com/openvoxproject/openvox/tree/8.27.0) (2026-05-15)
54
+
55
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.26.2...8.27.0)
56
+
57
+ **Fixed bugs:**
58
+
59
+ - avoid badly anchored regular expression [\#414](https://github.com/OpenVoxProject/openvox/pull/414) ([corporate-gadfly](https://github.com/corporate-gadfly))
17
60
 
18
61
  **Merged pull requests:**
19
62
 
20
- - Fix rubocop 1.86.2 lint [\#447](https://github.com/OpenVoxProject/openvox/pull/447) ([Sharpie](https://github.com/Sharpie))
21
- - Clarify "ref" description in GitHub build workflow [\#445](https://github.com/OpenVoxProject/openvox/pull/445) ([Sharpie](https://github.com/Sharpie))
22
- - Promote puppet-runtime 2026.05.11.1 into main [\#437](https://github.com/OpenVoxProject/openvox/pull/437) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
23
- - Promote openfact 5.6.1 into main [\#436](https://github.com/OpenVoxProject/openvox/pull/436) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
24
- - Switch from puppet-strings to openvox-strings [\#434](https://github.com/OpenVoxProject/openvox/pull/434) ([tuxmea](https://github.com/tuxmea))
25
- - Update acceptance defaults and descriptions for OpenVox 9 [\#431](https://github.com/OpenVoxProject/openvox/pull/431) ([nmburgan](https://github.com/nmburgan))
26
- - Promote puppet-runtime 2026.05.07.1 into main [\#429](https://github.com/OpenVoxProject/openvox/pull/429) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
27
- - Change branch name in promote workflow [\#428](https://github.com/OpenVoxProject/openvox/pull/428) ([nmburgan](https://github.com/nmburgan))
63
+ - 8.x Backport: Fix rubocop 1.86.2 lint [\#448](https://github.com/OpenVoxProject/openvox/pull/448) ([Sharpie](https://github.com/Sharpie))
64
+ - Promote puppet-runtime 2026.05.11.1 into 8.x [\#439](https://github.com/OpenVoxProject/openvox/pull/439) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
65
+ - Promote openfact 5.6.1 into 8.x [\#438](https://github.com/OpenVoxProject/openvox/pull/438) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
66
+ - Promote puppet-runtime 2026.05.07.1 into 8.x [\#430](https://github.com/OpenVoxProject/openvox/pull/430) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
28
67
  - Changes to prepare for 8.x branching [\#425](https://github.com/OpenVoxProject/openvox/pull/425) ([nmburgan](https://github.com/nmburgan))
29
- - Update github\_changelog\_generator [\#424](https://github.com/OpenVoxProject/openvox/pull/424) ([nmburgan](https://github.com/nmburgan))
30
- - Modify S3 copy command to suppress progress output [\#423](https://github.com/OpenVoxProject/openvox/pull/423) ([corporate-gadfly](https://github.com/corporate-gadfly))
31
68
  - Add release version check and stop trying to bump to an RC version [\#413](https://github.com/OpenVoxProject/openvox/pull/413) ([nmburgan](https://github.com/nmburgan))
32
69
 
33
70
  ## [8.26.2](https://github.com/openvoxproject/openvox/tree/8.26.2) (2026-04-18)
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
data/Rakefile CHANGED
@@ -162,7 +162,8 @@ begin
162
162
  config.exclude_labels = %w[dependencies duplicate question invalid wontfix wont-fix modulesync skip-changelog]
163
163
  config.since_tag = "8.18.1"
164
164
  config.future_release = Puppet::PUPPETVERSION
165
- config.exclude_tags_regex = /\A7\./
165
+ config.exclude_tags_regex = /\A[7,9]\./
166
+ config.release_branch = "8.x"
166
167
  end
167
168
  rescue LoadError
168
169
  task :changelog do
@@ -30,21 +30,18 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
30
30
  def initialize(basename, *rest)
31
31
  create_tmpname(basename, *rest) do |tmpname, _n, opts|
32
32
  mode = File::RDWR | File::CREAT | File::EXCL
33
- perm = 0o600
34
33
  if opts
35
34
  mode |= opts.delete(:mode) || 0
36
- opts[:perm] = perm
37
- perm = nil
35
+ opts.delete(:perm)
38
36
  else
39
- opts = perm
37
+ opts = {}
40
38
  end
41
39
  self.class.locking(tmpname) do
42
- @tmpfile = File.open(tmpname, mode, opts)
40
+ @tmpfile = File.open(tmpname, mode, 0o600, **opts)
43
41
  @tmpname = tmpname
44
42
  end
45
43
  @mode = mode & ~(File::CREAT | File::EXCL)
46
- perm or opts.freeze
47
- @opts = opts
44
+ @opts = opts.freeze
48
45
  end
49
46
 
50
47
  super(@tmpfile)
@@ -53,7 +50,7 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
53
50
  # Opens or reopens the file with mode "r+".
54
51
  def open
55
52
  @tmpfile.close if @tmpfile
56
- @tmpfile = File.open(@tmpname, @mode, @opts)
53
+ @tmpfile = File.open(@tmpname, @mode, 0o600, **@opts)
57
54
  __setobj__(@tmpfile)
58
55
  end
59
56
 
@@ -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
@@ -19,10 +19,14 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
19
19
 
20
20
  optional_commands :localadd => "lgroupadd", :localdelete => "lgroupdel", :localmodify => "lgroupmod", :purgemember => "usermod"
21
21
 
22
- has_feature :manages_local_users_and_groups if Puppet.features.libuser?
23
- has_feature :manages_members if Puppet.features.libuser? ||
24
- (Puppet.runtime[:facter].value('os.name') == "Fedora" &&
25
- Puppet.runtime[:facter].value('os.release.major').to_i >= 40)
22
+ if Puppet.features.libuser?
23
+ has_feature :manages_local_users_and_groups
24
+ has_feature :manages_members
25
+ elsif Puppet.runtime[:facter].value('os.name') == "Fedora"
26
+ has_feature :manages_members if Puppet.runtime[:facter].value('os.release.major').to_i >= 40
27
+ elsif Puppet.runtime[:facter].value('os.family') == "RedHat"
28
+ has_feature :manages_members if Puppet.runtime[:facter].value('os.release.major').to_i >= 10
29
+ end
26
30
 
27
31
  # Libuser's modify command 'lgroupmod' requires '-M' flag for member additions.
28
32
  # 'groupmod' command requires the '-aU' flags for it.
@@ -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.27.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.27.0
4
+ version: 8.28.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenVox Project