openvox 8.23.0 → 8.24.0

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: aed4767f47fbc8e2cada7f28bd3eb89af5c63a93d77c51cfe6863db5613f360d
4
- data.tar.gz: 35906d9b41395c95d8162d1cc3af5109c265c4bd6a9749483f3572de3802940f
3
+ metadata.gz: 8539e4acc457b949d7cc5c1a7e09202876ef974ad377db45611d10b16c3f739f
4
+ data.tar.gz: 017f35ebb2dcd54f0156032584666a41a57c3200ce1db0e59e19326c681b7927
5
5
  SHA512:
6
- metadata.gz: 23098a31bba7f56c0c52c81a7f22964034f11e695ac23f19fcf927ff51ffd74d2e41b1fd6cb2bf0c6d3e88aacad039e0e84e77717c0601ec546289d3c1809d6d
7
- data.tar.gz: 24aa9b6b9f4b03bcff0c52de755ce6d29584cc8462a985b3fd7474124aee6edeeaca5b5be4dc139776246b441fd6c886d74d3c455986106734b795cfcc0e31b6
6
+ metadata.gz: 2f47947b7f4d4488dc92dfcf1d8a8080b6e7b2d19cd7e4a5fa8741300f2d560ee93802bde457e0819469ff49887167b88f9a912ea6bd75913f04fcb791e65bbe
7
+ data.tar.gz: 2b3542752db23ed3f37eff8800e59d3bdd2e0fb271d6866632c491b521bfaf22439ea64a3b1ad4133638be987da4a1548ed034f75fa69f77e34505b6a4840e28
data/CHANGELOG.md CHANGED
@@ -2,6 +2,53 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [8.24.0](https://github.com/openvoxproject/openvox/tree/8.24.0) (2025-12-04)
6
+
7
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.23.1...8.24.0)
8
+
9
+ **Implemented enhancements:**
10
+
11
+ - Loosen some gem dependencies for new versions and update minitar usage [\#242](https://github.com/OpenVoxProject/openvox/pull/242) ([nmburgan](https://github.com/nmburgan))
12
+ - Create execution\_wrapper.bat to allow Choria to work with Windows [\#222](https://github.com/OpenVoxProject/openvox/pull/222) ([magarvo](https://github.com/magarvo))
13
+ - feat: add opkg package management support for TurrisOS [\#221](https://github.com/OpenVoxProject/openvox/pull/221) ([VILJkid](https://github.com/VILJkid))
14
+ - Add jruby-9.4.14.0 to CI matrix [\#210](https://github.com/OpenVoxProject/openvox/pull/210) ([bastelfreak](https://github.com/bastelfreak))
15
+
16
+ **Fixed bugs:**
17
+
18
+ - \[Bug\]: `implementation` is just a local fact [\#220](https://github.com/OpenVoxProject/openvox/issues/220)
19
+ - \[Bug\]: puppet apply warns about missing client certificates [\#21](https://github.com/OpenVoxProject/openvox/issues/21)
20
+
21
+ **Merged pull requests:**
22
+
23
+ - Promote openfact 5.2.0 [\#258](https://github.com/OpenVoxProject/openvox/pull/258) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
24
+ - Promote openfact 6a26ce51cf65f7cc325330c40922e9556651cf35 [\#257](https://github.com/OpenVoxProject/openvox/pull/257) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
25
+ - Use PR for promotion action [\#255](https://github.com/OpenVoxProject/openvox/pull/255) ([nmburgan](https://github.com/nmburgan))
26
+ - Use token when checking out repo [\#254](https://github.com/OpenVoxProject/openvox/pull/254) ([nmburgan](https://github.com/nmburgan))
27
+ - Add promote action [\#253](https://github.com/OpenVoxProject/openvox/pull/253) ([nmburgan](https://github.com/nmburgan))
28
+ - Update release automation [\#252](https://github.com/OpenVoxProject/openvox/pull/252) ([nmburgan](https://github.com/nmburgan))
29
+ - add note about server\_list precedence [\#251](https://github.com/OpenVoxProject/openvox/pull/251) ([binford2k](https://github.com/binford2k))
30
+ - Fix description of `source` since `yum` allows it now [\#249](https://github.com/OpenVoxProject/openvox/pull/249) ([binford2k](https://github.com/binford2k))
31
+ - include "local" facts in facts output [\#240](https://github.com/OpenVoxProject/openvox/pull/240) ([binford2k](https://github.com/binford2k))
32
+ - Correct homepage in gemspec [\#223](https://github.com/OpenVoxProject/openvox/pull/223) ([ekohl](https://github.com/ekohl))
33
+ - CI: Build gem for each PR & Move packaging checks to global config & Windows: Run one spec file per CPU core [\#216](https://github.com/OpenVoxProject/openvox/pull/216) ([bastelfreak](https://github.com/bastelfreak))
34
+ - Add switch for uploading to S3 [\#212](https://github.com/OpenVoxProject/openvox/pull/212) ([nmburgan](https://github.com/nmburgan))
35
+ - Update acceptance workflow for changed beaker acceptance [\#209](https://github.com/OpenVoxProject/openvox/pull/209) ([jpartlow](https://github.com/jpartlow))
36
+ - `yum` package provider: add `assumeyes` to `yum check-update` [\#188](https://github.com/OpenVoxProject/openvox/pull/188) ([SvenVD-be](https://github.com/SvenVD-be))
37
+ - Prevents spurious clientcert warnings in serverless mode [\#22](https://github.com/OpenVoxProject/openvox/pull/22) ([binford2k](https://github.com/binford2k))
38
+
39
+ ## [8.23.1](https://github.com/openvoxproject/openvox/tree/8.23.1) (2025-09-08)
40
+
41
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.23.0...8.23.1)
42
+
43
+ **Fixed bugs:**
44
+
45
+ - Fix how we find the version library [\#203](https://github.com/OpenVoxProject/openvox/pull/203) ([nmburgan](https://github.com/nmburgan))
46
+
47
+ **Merged pull requests:**
48
+
49
+ - Promote puppet-runtime 2025.09.08.1 [\#204](https://github.com/OpenVoxProject/openvox/pull/204) ([nmburgan](https://github.com/nmburgan))
50
+ - Test for r10k failure condition [\#202](https://github.com/OpenVoxProject/openvox/pull/202) ([nmburgan](https://github.com/nmburgan))
51
+
5
52
  ## [8.23.0](https://github.com/openvoxproject/openvox/tree/8.23.0) (2025-09-07)
6
53
 
7
54
  [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.22.0...8.23.0)
data/Gemfile CHANGED
@@ -18,7 +18,11 @@ end
18
18
 
19
19
  gem "openfact", *location_for(ENV['OPENFACT_LOCATION'] || ["~> 5.0"])
20
20
  gem "semantic_puppet", *location_for(ENV['SEMANTIC_PUPPET_LOCATION'] || ["~> 1.0"])
21
- gem "puppet-resource_api", *location_for(ENV['RESOURCE_API_LOCATION'] || ["~> 1.5"])
21
+ gem "puppet-resource_api", *location_for(ENV['RESOURCE_API_LOCATION'] || ["~> 2.0"])
22
+ # Need to update the openssl gem on MacOS to avoid SSL errors. Doesn't hurt to have the newest
23
+ # for all platforms.
24
+ # https://www.rubyonmac.dev/certificate-verify-failed-unable-to-get-certificate-crl-openssl-ssl-sslerror
25
+ gem 'openssl' unless `uname -o`.chomp == 'Cygwin'
22
26
 
23
27
  group(:features) do
24
28
  gem 'diff-lcs', '~> 1.3', require: false
@@ -27,7 +31,7 @@ group(:features) do
27
31
  gem 'hocon', '~> 1.0', require: false
28
32
  # requires native libshadow headers/libs
29
33
  #gem 'ruby-shadow', '~> 2.5', require: false, platforms: [:ruby]
30
- gem 'minitar', '~> 0.9', require: false
34
+ gem 'minitar', '~> 1.0', require: false
31
35
  gem 'msgpack', '~> 1.2', require: false
32
36
  gem 'rdoc', ['~> 6.0', '< 6.4.0'], require: false, platforms: [:ruby]
33
37
  # requires native augeas headers/libs
@@ -41,7 +45,7 @@ end
41
45
 
42
46
  group(:test) do
43
47
  # 1.16.0 - 1.16.2 are broken on Windows
44
- gem 'ffi', '>= 1.15.5', '< 1.17.0', '!= 1.16.0', '!= 1.16.1', '!= 1.16.2', require: false
48
+ gem 'ffi', '>= 1.15.5', '< 2', '!= 1.16.0', '!= 1.16.1', '!= 1.16.2', require: false
45
49
  gem "json-schema", '>= 2', '< 6', require: false
46
50
  gem "rake", *location_for(ENV['RAKE_LOCATION'] || '~> 13.0')
47
51
  gem "rspec", "~> 3.1", require: false
@@ -53,7 +57,7 @@ group(:test) do
53
57
  gem 'webrick', '~> 1.7', require: false
54
58
  gem 'yard', require: false
55
59
 
56
- gem 'rubocop', '~> 1.80.0', require: false, platforms: [:ruby]
60
+ gem 'rubocop', '~> 1.81.6', require: false, platforms: [:ruby]
57
61
  gem 'rubocop-i18n', '~> 3.0', require: false, platforms: [:ruby]
58
62
  gem 'rubocop-performance', '~> 1.0', require: false, platforms: [:ruby]
59
63
  gem 'rubocop-rake', '~> 0.6', require: false, platforms: [:ruby]
data/Rakefile CHANGED
@@ -61,10 +61,10 @@ namespace :pl_ci do
61
61
  task :gem_build, [:gemspec] do |t, args|
62
62
  args.with_defaults(gemspec: 'openvox.gemspec')
63
63
  stdout, stderr, status = Open3.capture3(<<~END)
64
- gem build #{args.gemspec} --platform x86-mingw32 && \
65
- gem build #{args.gemspec} --platform x64-mingw32 && \
66
- gem build #{args.gemspec} --platform universal-darwin && \
67
- gem build #{args.gemspec}
64
+ gem build #{args.gemspec} --verbose --strict --platform x86-mingw32 && \
65
+ gem build #{args.gemspec} --verbose --strict --platform x64-mingw32 && \
66
+ gem build #{args.gemspec} --verbose --strict --platform universal-darwin && \
67
+ gem build #{args.gemspec} --verbose --strict
68
68
  END
69
69
  if !status.exitstatus.zero?
70
70
  puts "Error building #{args.gemspec}\n#{stdout} \n#{stderr}"
@@ -1651,13 +1651,14 @@ EOT
1651
1651
  },
1652
1652
  :server => {
1653
1653
  :default => "puppet",
1654
- :desc => "The primary Puppet server to which the Puppet agent should connect.",
1654
+ :desc => "The primary Puppet server to which the Puppet agent should connect. This setting is ignored when `server_list` is specified.",
1655
1655
  },
1656
1656
  :server_list => {
1657
1657
  :default => [],
1658
1658
  :type => :server_list,
1659
1659
  :desc => "The list of primary Puppet servers to which the Puppet agent should connect,
1660
- in the order that they will be tried. Each value should be a fully qualified domain name, followed by an optional ':' and port number. If a port is omitted, Puppet uses masterport for that host.",
1660
+ in the order that they will be tried. Each value should be a fully qualified domain name, followed by an optional ':' and port number.
1661
+ If a port is omitted, Puppet uses masterport for that host. This setting takes precedence over `server`.",
1661
1662
  },
1662
1663
  :use_srv_records => {
1663
1664
  :default => false,
@@ -47,7 +47,7 @@ Puppet.features.add(:sqlite, :libs => ["sqlite3"])
47
47
  # We have Hiera
48
48
  Puppet.features.add(:hiera, :libs => ["hiera"])
49
49
 
50
- Puppet.features.add(:minitar, :libs => ["archive/tar/minitar"])
50
+ Puppet.features.add(:minitar, :libs => ["minitar"])
51
51
 
52
52
  # We can manage symlinks
53
53
  Puppet.features.add(:manages_symlinks) do
@@ -49,7 +49,7 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
49
49
  Puppet::Node::Facts.new(request.key, facts.to_h)
50
50
  end
51
51
 
52
- result.add_local_facts unless request.options[:resolve_options]
52
+ result.add_local_facts(request.options[:user_query])
53
53
  result.sanitize
54
54
  result
55
55
  end
@@ -3,17 +3,11 @@
3
3
  class Puppet::ModuleTool::Tar::Mini
4
4
  def unpack(sourcefile, destdir, _)
5
5
  Zlib::GzipReader.open(sourcefile) do |reader|
6
- # puppet doesn't have a hard dependency on minitar, so we
7
- # can't be certain which version is installed. If it's 0.9
8
- # or above then we can prevent minitar from fsync'ing each
9
- # extracted file and directory, otherwise fallback to the
10
- # old behavior
11
6
  args = [reader, destdir, find_valid_files(reader)]
12
- spec = Gem::Specification.find_by_name('minitar')
13
- if spec && spec.version >= Gem::Version.new('0.9')
14
- args << { :fsync => false }
15
- end
16
- Archive::Tar::Minitar.unpack(*args) do |action, name, stats|
7
+ # With minitar >= 0.9, we can prevent minitar from fsync'ing
8
+ # each extracted file and directory
9
+ args << { :fsync => false }
10
+ Minitar.unpack(*args) do |action, name, stats|
17
11
  case action
18
12
  when :dir
19
13
  validate_entry(destdir, name)
@@ -33,7 +27,7 @@ class Puppet::ModuleTool::Tar::Mini
33
27
 
34
28
  def pack(sourcedir, destfile)
35
29
  Zlib::GzipWriter.open(destfile) do |writer|
36
- Archive::Tar::Minitar.pack(sourcedir, writer) do |step, name, stats|
30
+ Minitar.pack(sourcedir, writer) do |step, name, stats|
37
31
  # TODO smcclellan 2017-10-31 Set permissions here when this yield block
38
32
  # executes before the header is written. As it stands, the `stats`
39
33
  # argument isn't mutable in a way that will effect the desired mode for
@@ -93,7 +87,7 @@ class Puppet::ModuleTool::Tar::Mini
93
87
  # tar format info: https://pic.dhe.ibm.com/infocenter/zos/v1r13/index.jsp?topic=%2Fcom.ibm.zos.r13.bpxa500%2Ftaf.htm
94
88
  # pax format info: https://pic.dhe.ibm.com/infocenter/zos/v1r13/index.jsp?topic=%2Fcom.ibm.zos.r13.bpxa500%2Fpxarchfm.htm
95
89
  def find_valid_files(tarfile)
96
- Archive::Tar::Minitar.open(tarfile).collect do |entry|
90
+ Minitar.open(tarfile).collect do |entry|
97
91
  flag = entry.typeflag
98
92
  if flag.nil? || flag =~ /[[:digit:]]/ && (0..7).cover?(flag.to_i)
99
93
  entry.full_name
@@ -27,11 +27,12 @@ class Puppet::Node::Facts
27
27
 
28
28
  attr_accessor :name, :values, :timestamp
29
29
 
30
- def add_local_facts
31
- values["implementation"] = Puppet.implementation
32
- values["clientcert"] = Puppet.settings[:certname]
33
- values["clientversion"] = Puppet.version.to_s
34
- values["clientnoop"] = Puppet.settings[:noop]
30
+ def add_local_facts(query = [])
31
+ query = Array(query) # some use cases result in a nil being passed in
32
+ values["implementation"] = Puppet.implementation if query.empty? or query.include? 'implementation'
33
+ values["clientcert"] = Puppet.settings[:certname] if query.empty? or query.include? 'clientcert'
34
+ values["clientversion"] = Puppet.version.to_s if query.empty? or query.include? 'clientversion'
35
+ values["clientnoop"] = Puppet.settings[:noop] if query.empty? or query.include? 'clientnoop'
35
36
  end
36
37
 
37
38
  def initialize(name, values = {})
@@ -3,12 +3,12 @@
3
3
  require_relative '../../../puppet/provider/package'
4
4
 
5
5
  Puppet::Type.type(:package).provide :opkg, :source => :opkg, :parent => Puppet::Provider::Package do
6
- desc "Opkg packaging support. Common on OpenWrt and OpenEmbedded platforms"
6
+ desc "Opkg packaging support. Common on OpenWrt, TurrisOS, and OpenEmbedded platforms"
7
7
 
8
8
  commands :opkg => "opkg"
9
9
 
10
- confine 'os.name' => :openwrt
11
- defaultfor 'os.name' => :openwrt
10
+ confine 'os.name' => [:openwrt, :turrisos]
11
+ defaultfor 'os.name' => [:openwrt, :turrisos]
12
12
 
13
13
  def self.instances
14
14
  packages = []
@@ -41,7 +41,7 @@ Puppet::Type.type(:package).provide :opkg, :source => :opkg, :parent => Puppet::
41
41
  end
42
42
 
43
43
  def install
44
- # OpenWrt package lists are ephemeral, make sure we have at least
44
+ # OpenWrt and TurrisOS package lists are ephemeral, make sure we have at least
45
45
  # some entries in the list directory for opkg to use
46
46
  opkg('update') if package_lists.size <= 2
47
47
 
@@ -111,7 +111,7 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
111
111
  # @return [Hash<String, Array<Hash<String, String>>>] All packages that were
112
112
  # found with a list of found versions for each package.
113
113
  def self.check_updates(disablerepo, enablerepo, disableexcludes)
114
- args = [command(:cmd), 'check-update']
114
+ args = [command(:cmd), '-y', 'check-update']
115
115
  args.concat(disablerepo.map { |repo| ["--disablerepo=#{repo}"] }.flatten)
116
116
  args.concat(enablerepo.map { |repo| ["--enablerepo=#{repo}"] }.flatten)
117
117
  args.concat(disableexcludes.map { |repo| ["--disableexcludes=#{repo}"] }.flatten)
@@ -97,12 +97,14 @@ class Puppet::SSL::SSLProvider
97
97
  cert_provider = Puppet::X509::CertProvider.new
98
98
  private_key = cert_provider.load_private_key(Puppet[:certname], required: false)
99
99
  unless private_key
100
- Puppet.warning("Private key for '#{Puppet[:certname]}' does not exist")
100
+ msg = "Private key for '#{Puppet[:certname]}' does not exist"
101
+ Puppet.run_mode.name == :user ? Puppet.info(msg) : Puppet.warning(msg)
101
102
  end
102
103
 
103
104
  client_cert = cert_provider.load_client_cert(Puppet[:certname], required: false)
104
105
  unless client_cert
105
- Puppet.warning("Client certificate for '#{Puppet[:certname]}' does not exist")
106
+ msg = "Client certificate for '#{Puppet[:certname]}' does not exist"
107
+ Puppet.run_mode.name == :user ? Puppet.info(msg) : Puppet.warning(msg)
106
108
  end
107
109
 
108
110
  if private_key && client_cert
@@ -426,7 +426,7 @@ module Puppet
426
426
  newparam(:source) do
427
427
  desc "Where to find the package file. This is mostly used by providers that don't
428
428
  automatically download packages from a central repository. (For example:
429
- the `yum` provider ignores this attribute, `apt` provider uses it if present
429
+ the `macports` provider ignores this attribute, `apt` provider uses it if present
430
430
  and the `rpm` and `dpkg` providers require it.)
431
431
 
432
432
  Different providers accept different values for `source`. Most providers
@@ -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.23.0'
11
+ PUPPETVERSION = '8.24.0'
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.23.0
4
+ version: 8.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenVox Project
@@ -38,7 +38,7 @@ dependencies:
38
38
  version: '0.3'
39
39
  - - "<"
40
40
  - !ruby/object:Gem::Version
41
- version: '0.5'
41
+ version: '0.6'
42
42
  type: :runtime
43
43
  prerelease: false
44
44
  version_requirements: !ruby/object:Gem::Requirement
@@ -48,7 +48,7 @@ dependencies:
48
48
  version: '0.3'
49
49
  - - "<"
50
50
  - !ruby/object:Gem::Version
51
- version: '0.5'
51
+ version: '0.6'
52
52
  - !ruby/object:Gem::Dependency
53
53
  name: concurrent-ruby
54
54
  requirement: !ruby/object:Gem::Requirement
@@ -173,14 +173,14 @@ dependencies:
173
173
  requirements:
174
174
  - - "~>"
175
175
  - !ruby/object:Gem::Version
176
- version: '1.5'
176
+ version: '2.0'
177
177
  type: :runtime
178
178
  prerelease: false
179
179
  version_requirements: !ruby/object:Gem::Requirement
180
180
  requirements:
181
181
  - - "~>"
182
182
  - !ruby/object:Gem::Version
183
- version: '1.5'
183
+ version: '2.0'
184
184
  - !ruby/object:Gem::Dependency
185
185
  name: racc
186
186
  requirement: !ruby/object:Gem::Requirement
@@ -1334,10 +1334,9 @@ files:
1334
1334
  - man/man8/puppet.8
1335
1335
  - tasks/build.rake
1336
1336
  - tasks/cleanup.rake
1337
- - tasks/promote.rake
1338
1337
  - tasks/upload.rake
1339
1338
  - tasks/vox.rake
1340
- homepage: https://github.com/OpenVoxProject/puppet
1339
+ homepage: https://github.com/OpenVoxProject/openvox
1341
1340
  licenses:
1342
1341
  - Apache-2.0
1343
1342
  metadata: {}
data/tasks/promote.rake DELETED
@@ -1,36 +0,0 @@
1
- namespace :vox do
2
- desc 'Promote a component with a given ref into this repo. For puppet-runtime and pxp-agent, use the tag that has been built and uploaded to openvox-artifacts.'
3
- task :promote, [:component, :ref] do |_, args|
4
- component = args[:component]
5
- ref = args[:ref]
6
-
7
- abort 'You must specify a component.' if component.nil? || component.empty?
8
- abort "Could not find configs/components/#{component}.json" unless File.exist?("packaging/configs/components/#{component}.json")
9
- abort 'You must provide a ref.' if ref.nil? || ref.empty?
10
-
11
- if component == 'puppet-runtime'
12
- munged = ref.gsub('-', '.')
13
- data = <<~DATA
14
- {"location":"https://s3.osuosl.org/openvox-artifacts/#{component}/#{ref}/","version":"#{munged}"}
15
- DATA
16
- else
17
- data = <<~DATA
18
- {"url":"https://github.com/openvoxproject/#{component}.git","ref":"#{ref}"}
19
- DATA
20
- end
21
-
22
- branch = run_command('git rev-parse --abbrev-ref HEAD')
23
-
24
- Dir.chdir('packaging') do
25
- puts "Writing #{component}.json"
26
- File.write("configs/components/#{component}.json", data)
27
- run_command("git add configs/components/#{component}.json")
28
- puts 'Creating commit'
29
- run_command("git commit -m 'Promote #{component} #{ref}'")
30
- if ENV['NOPUSH'].nil?
31
- puts 'Pushing to origin'
32
- run_command("git push origin #{branch}")
33
- end
34
- end
35
- end
36
- end