openvox 8.28.1 → 8.30.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: 2237abcdd8a5a1ebb597961b356db775eb64b74e6735e0d3014a3b221bdf49e1
4
- data.tar.gz: 8a5f0e31309441c4883df565b8c65e0cecc239465b523d6d3ba97c78d95a808d
3
+ metadata.gz: bcf52c4710584e363c52de7ad3edcf6ee510cfc3117fa3bf87aa1e082f33ca56
4
+ data.tar.gz: 1a2c01a5f3fe5fc187acc86b98638e44ae9840ff8d7f546f2c8ebf3d31739043
5
5
  SHA512:
6
- metadata.gz: ff8595b526d3cb54553745f7932e5b67205f277335f596642625296fc6aecc8c0e26b06385bc2c7ad16d404cf7af0929ef885fadf0892efed3a0662df05a05cf
7
- data.tar.gz: b56a9c03db302d36b87ba431d5a4326f77c07626fcc891d6f72a953751def305e84573d55321356d12a80620b277ed061e6873815ff1d016fa4aeb98042efde7
6
+ metadata.gz: 34a0255bb2676b55da6ea8a5059074f25b578f2f70d8ed0cbf008e4ab0e30b8826a69a83688c6a8eea52c764b598edb731019eac55cb36b95f42422a40dcd9d7
7
+ data.tar.gz: 6d7d4d889feb3b7495f2674c8cf1a232e03c6b7b49fde5cde13ab84062378d24069c087b0f1049a405e4551ae6999642c574ea1b55a137262ffe94fdc931bc04
data/CHANGELOG.md CHANGED
@@ -2,7 +2,69 @@
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)
5
+ ## [8.30.0](https://github.com/openvoxproject/openvox/tree/8.30.0) (2026-10-07)
6
+
7
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.29.0...8.30.0)
8
+
9
+ **Fixed bugs:**
10
+
11
+ - \[Bug\]: use of "server\_list" \(instead of server\) throws an error [\#658](https://github.com/OpenVoxProject/openvox/issues/658)
12
+ - \[Bug\]: Ruby crashes on child side of fork pre-exec macOS 26 \(Tahoe\) [\#538](https://github.com/OpenVoxProject/openvox/issues/538)
13
+ - \[Backport 8.x\] Pin json below 3 to unblock CI [\#676](https://github.com/OpenVoxProject/openvox/pull/676) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
14
+ - \[backport 8.x\] fix: `Deferred` resolution of Puppet-language functions \(e.g. mocks in tests\) failing due to lack of `:global_scope` [\#671](https://github.com/OpenVoxProject/openvox/pull/671) ([griggi-ws](https://github.com/griggi-ws))
15
+ - \[Backport 8.x\] print "Loading facts" just once [\#663](https://github.com/OpenVoxProject/openvox/pull/663) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
16
+
17
+ **Closed issues:**
18
+
19
+ - json 3.0.0 breaks Puppet::Util::Json and the test suite [\#654](https://github.com/OpenVoxProject/openvox/issues/654)
20
+
21
+ **Merged pull requests:**
22
+
23
+ - \[Backport 8.x\] Skip the tests that need jruby-openssl in FIPS mode [\#714](https://github.com/OpenVoxProject/openvox/pull/714) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
24
+ - Promote openfact 5.7.2 into 8.x [\#711](https://github.com/OpenVoxProject/openvox/pull/711) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
25
+ - Promote puppet-runtime 2026.09.29.1 into 8.x [\#704](https://github.com/OpenVoxProject/openvox/pull/704) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
26
+ - \[Backport 8.x\] Kill the forked agent run if it outlives runtimeout [\#698](https://github.com/OpenVoxProject/openvox/pull/698) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
27
+ - \[Backport 8.x\] Wait for certificates in the forked child, not in the daemon [\#697](https://github.com/OpenVoxProject/openvox/pull/697) ([nmburgan](https://github.com/nmburgan))
28
+ - openfact: Update 5.7.0 -\> 5.7.1 [\#678](https://github.com/OpenVoxProject/openvox/pull/678) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
29
+ - \[Backport 8.x\] Proper markdown for alias reference documentation. [\#650](https://github.com/OpenVoxProject/openvox/pull/650) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
30
+
31
+ ## [8.29.0](https://github.com/openvoxproject/openvox/tree/8.29.0) (2026-09-04)
32
+
33
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.28.1...8.29.0)
34
+
35
+ **Implemented enhancements:**
36
+
37
+ - openfact: Allow 6.x [\#578](https://github.com/OpenVoxProject/openvox/pull/578) ([bastelfreak](https://github.com/bastelfreak))
38
+
39
+ **Fixed bugs:**
40
+
41
+ - \[Bug\]: Sometimes Error "This 'if' statement has no effect", sometimes not [\#542](https://github.com/OpenVoxProject/openvox/issues/542)
42
+ - \[Bug\]: Centralized filebucket not working properly [\#367](https://github.com/OpenVoxProject/openvox/issues/367)
43
+ - \[Bug\]: lines in file resource content looking like a checksum throws an error [\#169](https://github.com/OpenVoxProject/openvox/issues/169)
44
+ - \[Backport 8.x\] Fix excessive reads of /proc/mounts [\#621](https://github.com/OpenVoxProject/openvox/pull/621) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
45
+ - \[Backport 8.x\] Report errors when renewing a certificate fails [\#611](https://github.com/OpenVoxProject/openvox/pull/611) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
46
+ - \[Backport 8.x\] fix: Pacman provider uses unrecognized option '--update' [\#565](https://github.com/OpenVoxProject/openvox/pull/565) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
47
+
48
+ **Security fixes:**
49
+
50
+ - Promote puppet-runtime 2026.09.02.1 into 8.x [\#629](https://github.com/OpenVoxProject/openvox/pull/629) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
51
+
52
+ **Closed issues:**
53
+
54
+ - \[Deprecation\] Replace `puppet master` Terminology in User-Facing Docs/Help [\#347](https://github.com/OpenVoxProject/openvox/issues/347)
55
+ - \[Deprecation\] Fine-Grained `filetimeout` Control [\#345](https://github.com/OpenVoxProject/openvox/issues/345)
56
+ - \[Deprecation\] Data-Binding Settings [\#338](https://github.com/OpenVoxProject/openvox/issues/338)
57
+ - \[Deprecation\] `file { content => <checksum> }` Filebucket Retrieval Behavior [\#335](https://github.com/OpenVoxProject/openvox/issues/335)
58
+ - \[Deprecation\] `Puppet::Indirector::Hiera` Terminus [\#332](https://github.com/OpenVoxProject/openvox/issues/332)
59
+
60
+ **Merged pull requests:**
61
+
62
+ - \[Backport 8.x\] puppet generate: print module directory when types are missing [\#618](https://github.com/OpenVoxProject/openvox/pull/618) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
63
+ - \[Backport 8.x\] Fix a small typo in the markdown docs \(redux\) [\#606](https://github.com/OpenVoxProject/openvox/pull/606) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
64
+ - Remove unloadable CC-BY-1.0 RDoc template and generator [\#588](https://github.com/OpenVoxProject/openvox/pull/588) ([silug](https://github.com/silug))
65
+ - \[Backport 8.x\] Set `PUPPET_EXTRA_OPTS` variable to empty [\#561](https://github.com/OpenVoxProject/openvox/pull/561) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
66
+
67
+ ## [8.28.1](https://github.com/openvoxproject/openvox/tree/8.28.1) (2026-07-07)
6
68
 
7
69
  [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.28.0...8.28.1)
8
70
 
data/Gemfile CHANGED
@@ -16,7 +16,7 @@ end
16
16
  # the runtime_dependencies in openvox.gemspec match the runtime dependencies here
17
17
  # (like openfact, semantic_puppet, and puppet-resource_api)
18
18
 
19
- gem "openfact", *location_for(ENV['OPENFACT_LOCATION'] || ["~> 5.0"])
19
+ gem "openfact", *location_for(ENV['OPENFACT_LOCATION'] || [">= 5.0", "< 7"])
20
20
  gem "semantic_puppet", *location_for(ENV['SEMANTIC_PUPPET_LOCATION'] || ["~> 1.0"])
21
21
  gem "puppet-resource_api", *location_for(ENV['RESOURCE_API_LOCATION'] || ["~> 2.0"])
22
22
  # Need to update the openssl gem on MacOS to avoid SSL errors.
@@ -77,7 +77,7 @@ group(:packaging) do
77
77
  gem 'vanagon', *location_for(ENV['VANAGON_LOCATION'] || 'https://github.com/openvoxproject/vanagon#main')
78
78
  end
79
79
  gem 'artifactory'
80
- gem 'json'
80
+ gem 'json', '< 3'
81
81
  gem 'octokit'
82
82
  end
83
83
 
data/Rakefile CHANGED
@@ -159,7 +159,7 @@ begin
159
159
  HEADER
160
160
  config.user = "openvoxproject"
161
161
  config.project = "openvox"
162
- config.exclude_labels = %w[dependencies duplicate question invalid wontfix wont-fix modulesync skip-changelog]
162
+ config.exclude_labels = %w[dependencies duplicate question invalid wontfix wont-fix modulesync skip-changelog skip-8.x-changelog]
163
163
  config.since_tag = "8.18.1"
164
164
  config.future_release = Puppet::PUPPETVERSION
165
165
  config.exclude_tags_regex = /\A[7,9]\./
@@ -1,2 +1,3 @@
1
1
  # You may specify parameters to the puppet client here
2
2
  #PUPPET_EXTRA_OPTS=--waitforcert=500
3
+ PUPPET_EXTRA_OPTS=
data/lib/puppet/agent.rb CHANGED
@@ -22,6 +22,12 @@ class Puppet::Agent
22
22
  class RunTimeoutError < Exception # rubocop:disable Lint/InheritException
23
23
  end
24
24
 
25
+ # Exit status the forked child uses to tell the daemon that the SSL state
26
+ # machine gave up waiting for a certificate, so the daemon can exit as it
27
+ # did when the wait happened in the parent. Must not collide with the
28
+ # detailed exit codes returned by a run (0, 1, 2, 4, 6) or with 254 (NoMemoryError).
29
+ CERTIFICATE_FAILURE_EXIT_STATUS = 253
30
+
25
31
  attr_reader :client_class, :client, :should_fork
26
32
 
27
33
  def initialize(client_class, should_fork = true)
@@ -60,12 +66,28 @@ class Puppet::Agent
60
66
  end
61
67
  end
62
68
 
63
- # waiting for certs may sleep for awhile depending on onetime, waitforcert and maxwaitforcert!
64
- # this needs to happen before forking so that if we fail to obtain certs and try to exit, then
65
- # we exit the main process and not the forked child.
66
- ssl_context = wait_for_certificates(client_options)
67
-
68
69
  result = run_in_fork(should_fork) do
70
+ # waiting for certs may sleep for awhile depending on onetime, waitforcert and maxwaitforcert!
71
+ #
72
+ # This happens in the forked child, not in the long-lived daemon. Refreshing
73
+ # the CRL or renewing the certificate resolves the server's name, and on
74
+ # Ruby 3.3+ that runs in short-lived native threads. If the daemon forks
75
+ # while one of those threads is exiting, the child inherits glibc's
76
+ # resolv.conf lock in the locked state and every name lookup in the run
77
+ # hangs (#485). Keeping the lookups out of the parent avoids that.
78
+ #
79
+ # The state machine calls exit when it gives up waiting for a certificate
80
+ # (waitforcert 0 or maxwaitforcert exceeded). Report that back so the
81
+ # daemon exits, as it did when the wait happened in the parent.
82
+ begin
83
+ ssl_context = wait_for_certificates(client_options)
84
+ rescue SystemExit
85
+ next CERTIFICATE_FAILURE_EXIT_STATUS
86
+ rescue StandardError => detail
87
+ Puppet.log_exception(detail, _("Could not obtain certificates: %{detail}") % { detail: detail })
88
+ next nil
89
+ end
90
+
69
91
  with_client(client_options[:transaction_uuid], client_options[:job_id]) do |client|
70
92
  client_args = client_options.merge(:pluginsync => Puppet::Configurer.should_pluginsync?)
71
93
  begin
@@ -115,6 +137,9 @@ class Puppet::Agent
115
137
  end
116
138
  end
117
139
  end
140
+ # The child could not obtain a certificate and the state machine asked to exit.
141
+ exit(1) if result == CERTIFICATE_FAILURE_EXIT_STATUS
142
+
118
143
  true
119
144
  end
120
145
  Puppet.notice _("Shutdown/restart in progress (%{status}); skipping run") % { status: Puppet::Application.run_status.inspect } unless block_run
@@ -146,8 +171,55 @@ class Puppet::Agent
146
171
  atForkHandler.parent
147
172
  end
148
173
 
149
- exit_code = Process.waitpid2(child_pid)
150
- exit_code[1].exitstatus
174
+ _, status = wait_for_child(child_pid)
175
+ status.exitstatus
176
+ end
177
+
178
+ # Wait for the forked child to exit. The child enforces `runtimeout` on its
179
+ # own run, but it may fail to exit afterwards (a stranded thread, a hung
180
+ # subprocess, etc.). Without a deadline here, the parent blocks forever and
181
+ # the agent stops checking in. Once the run timeout plus a grace period has
182
+ # elapsed, the child is killed so the daemon can carry on.
183
+ def wait_for_child(child_pid)
184
+ deadline = child_deadline
185
+ return Process.waitpid2(child_pid) unless deadline
186
+
187
+ loop do
188
+ result = Process.waitpid2(child_pid, Process::WNOHANG)
189
+ return result if result
190
+
191
+ if monotonic_now >= deadline
192
+ Puppet.err _("Agent run (pid %{pid}) did not exit within %{timeout} seconds of the run timeout, killing it") %
193
+ { pid: child_pid, timeout: child_grace_period }
194
+ begin
195
+ Process.kill(:KILL, child_pid)
196
+ rescue Errno::ESRCH
197
+ # The child exited between the last check and the kill.
198
+ end
199
+ return Process.waitpid2(child_pid)
200
+ end
201
+
202
+ sleep 1
203
+ end
204
+ end
205
+
206
+ # After the run timeout fires inside the child, it may still need to send
207
+ # its report, which is bounded by the HTTP connect and read timeouts.
208
+ def child_grace_period
209
+ Puppet[:http_connect_timeout] + Puppet[:http_read_timeout]
210
+ end
211
+
212
+ # Returns the absolute monotonic deadline for the child, or nil when
213
+ # `runtimeout` is disabled.
214
+ def child_deadline
215
+ runtimeout = Puppet[:runtimeout]
216
+ return nil if runtimeout.nil? || runtimeout <= 0
217
+
218
+ monotonic_now + runtimeout + child_grace_period
219
+ end
220
+
221
+ def monotonic_now
222
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
151
223
  end
152
224
 
153
225
  private
@@ -304,13 +304,14 @@ class Puppet::Application::Ssl < Puppet::Application
304
304
  @cert_provider.delete_request(certname)
305
305
  cert
306
306
  rescue Puppet::HTTP::ResponseError => e
307
- if e.response.code == 404
308
- nil
309
- else
310
- raise Puppet::Error.new(_("Failed to download certificate: %{message}") % { message: e.message }, e)
311
- end
307
+ body = e.response.body.to_s.strip
308
+ raise Puppet::Error.new(_("Failed to renew certificate: %{code} %{reason}%{body}") % {
309
+ code: e.response.code,
310
+ reason: e.response.reason,
311
+ body: body.empty? ? '' : ": #{body}"
312
+ }, e)
312
313
  rescue => e
313
- raise Puppet::Error.new(_("Failed to download certificate: %{message}") % { message: e.message }, e)
314
+ raise Puppet::Error.new(_("Failed to renew certificate: %{message}") % { message: e.message }, e)
314
315
  end
315
316
 
316
317
  def verify(certname)
@@ -30,7 +30,7 @@
30
30
  # `tree_each($data) |$value| { <PUPPET CODE BLOCK> }`
31
31
  #
32
32
  # The parameter `$path` is always given as an `Array` containing the path that when applied to
33
- # the tree as `$data.dig(*$path) yields the `$value`.
33
+ # the tree as `$data.dig(*$path)` yields the `$value`.
34
34
  # The `$value` is the value at that path.
35
35
  #
36
36
  # For `Array` values, the path will contain `Integer` entries with the array index,
@@ -124,7 +124,7 @@ module Puppet
124
124
  environment.modules.each do |mod|
125
125
  directory = File.join(Puppet::Util::Autoload.cleanpath(mod.plugin_directory), 'puppet', 'type')
126
126
  unless Puppet::FileSystem.exist?(directory)
127
- Puppet.debug "Skipping '#{mod.name}' module because it contains no custom types."
127
+ Puppet.debug "Skipping '#{mod.name}' module because there is no readable puppet/type/ directory under: #{directory}"
128
128
  next
129
129
  end
130
130
 
@@ -62,21 +62,22 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
62
62
  end
63
63
  end.flatten + Puppet[:factpath].split(File::PATH_SEPARATOR)
64
64
 
65
- dirs = dirs.select do |dir|
66
- next false unless FileTest.directory?(dir)
67
-
68
- # Even through we no longer directly load facts in the terminus,
69
- # print out each .rb in the facts directory as module
70
- # developers may find that information useful for debugging purposes
71
- if Puppet::Util::Log.sendlevel?(:info)
72
- Puppet.info _("Loading facts")
73
- Dir.glob("#{dir}/*.rb").each do |file|
74
- Puppet.debug { "Loading facts from #{file}" }
65
+ dirs.select! { |dir| FileTest.directory?(dir) }
66
+
67
+ # Even though we no longer directly load facts in the terminus,
68
+ # print out each .rb in the facts directory as module
69
+ # developers may find that information useful for debugging purposes
70
+ unless dirs.empty?
71
+ Puppet.info _("Loading facts")
72
+ if Puppet::Util::Log.sendlevel?(:debug)
73
+ dirs.each do |dir|
74
+ Dir.glob("#{dir}/*.rb").each do |file|
75
+ Puppet.debug { "Loading facts from #{file}" }
76
+ end
75
77
  end
76
78
  end
77
-
78
- true
79
79
  end
80
+
80
81
  dirs << request.options[:custom_dir] if request.options[:custom_dir]
81
82
  Puppet.runtime[:facter].search(*dirs)
82
83
  end
@@ -48,7 +48,10 @@ class DeferredResolver
48
48
  # # Server facts are always about the local node's version etc.
49
49
  # @scope.set_server_facts(node.server_facts)
50
50
 
51
- resolver.resolve_futures(catalog)
51
+ # Must be wrapped in with_context_overrides to ensure global_scope is valid for Puppet-language functions
52
+ compiler.with_context_overrides do
53
+ resolver.resolve_futures(catalog)
54
+ end
52
55
  nil
53
56
  end
54
57
 
@@ -248,7 +248,7 @@ Puppet::Type.type(:package).provide :pacman, :parent => Puppet::Provider::Packag
248
248
  else
249
249
  fail _("Source %{source} is not supported by pacman") % { source: source }
250
250
  end
251
- pacman "--noconfirm", "--noprogressbar", "--update", source
251
+ pacman "--noconfirm", "--noprogressbar", "--upgrade", source
252
252
  end
253
253
 
254
254
  def install_from_repo
@@ -14,7 +14,7 @@ etc.), prevent Puppet from making changes (`noop`), and change logging verbosity
14
14
 
15
15
  ## Available Metaparameters
16
16
 
17
- }.dup
17
+ }.dup.strip + "\n"
18
18
  begin
19
19
  params = []
20
20
  Puppet::Type.eachmetaparam { |param|
@@ -16,9 +16,12 @@ module Puppet::Util::RDoc
16
16
 
17
17
  r = RDoc::RDoc.new
18
18
 
19
- # specify our own format & where to output
20
- options = ["--fmt", "puppet",
21
- "--quiet",
19
+ # Documentation is rendered by RDoc's default generator using our custom
20
+ # parser. The historical custom "puppet" generator and its HTML template
21
+ # targeted RDoc 1.x and could not be loaded under any supported RDoc; the
22
+ # template also carried a CC-BY-1.0 license, which is incompatible with
23
+ # the Debian Free Software Guidelines. Both were removed.
24
+ options = ["--quiet",
22
25
  "--exclude", "/modules/[^/]*/spec/.*$",
23
26
  "--exclude", "/modules/[^/]*/files/.*$",
24
27
  "--exclude", "/modules/[^/]*/tests/.*$",
@@ -18,6 +18,9 @@ module Puppet::Util::SELinux
18
18
  S_IFDIR = 0o040000
19
19
  S_IFLNK = 0o120000
20
20
 
21
+ @@mounts_cache = nil
22
+ @@mounts_mtime = nil
23
+
21
24
  def self.selinux_support?
22
25
  return false unless defined?(Selinux)
23
26
  if Selinux.is_selinux_enabled == 1
@@ -259,6 +262,16 @@ module Puppet::Util::SELinux
259
262
 
260
263
  # Internal helper function to read and parse /proc/mounts
261
264
  def read_mounts
265
+ current_mtime = begin
266
+ File.mtime('/proc/mounts')
267
+ rescue Errno::ENOENT, Errno::ENOTDIR
268
+ nil
269
+ end
270
+
271
+ if @@mounts_cache && current_mtime && @@mounts_mtime == current_mtime
272
+ return @@mounts_cache
273
+ end
274
+
262
275
  mounts = ''.dup
263
276
  begin
264
277
  if File.method_defined? "read_nonblock"
@@ -292,7 +305,9 @@ module Puppet::Util::SELinux
292
305
 
293
306
  mntpoint[params[1]] = params[2]
294
307
  end
295
- mntpoint
308
+
309
+ @@mounts_mtime = current_mtime
310
+ @@mounts_cache = mntpoint
296
311
  end
297
312
 
298
313
  # Internal helper function to return which type of filesystem a given file
@@ -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.1'
11
+ PUPPETVERSION = '8.30.0'
12
12
  IMPLEMENTATION = 'openvox'
13
13
 
14
14
  ##
data/tasks/vox.rake CHANGED
@@ -9,8 +9,8 @@ namespace :vox do
9
9
  puts "Setting version to #{version}"
10
10
 
11
11
  data = File.read('lib/puppet/version.rb')
12
- new_data = data.sub(/PUPPETVERSION = '\d+\.\d+\.\d+(\.rc\d+)?'/, "PUPPETVERSION = '#{version}'")
13
- warn 'Failed to update version in lib/puppet/version.rb' if data == new_data
12
+ new_data = data.sub(/PUPPETVERSION = '\d+\.\d+\.\d+(-(alpha|beta|rc)\d+)?'/, "PUPPETVERSION = '#{version}'")
13
+ fail 'Failed to update version in lib/puppet/version.rb' if data == new_data
14
14
 
15
15
  File.write('lib/puppet/version.rb', new_data)
16
16
  end
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.1
4
+ version: 8.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenVox Project
@@ -143,16 +143,22 @@ dependencies:
143
143
  name: openfact
144
144
  requirement: !ruby/object:Gem::Requirement
145
145
  requirements:
146
- - - "~>"
146
+ - - ">="
147
147
  - !ruby/object:Gem::Version
148
148
  version: '5.0'
149
+ - - "<"
150
+ - !ruby/object:Gem::Version
151
+ version: '7'
149
152
  type: :runtime
150
153
  prerelease: false
151
154
  version_requirements: !ruby/object:Gem::Requirement
152
155
  requirements:
153
- - - "~>"
156
+ - - ">="
154
157
  - !ruby/object:Gem::Version
155
158
  version: '5.0'
159
+ - - "<"
160
+ - !ruby/object:Gem::Version
161
+ version: '7'
156
162
  - !ruby/object:Gem::Dependency
157
163
  name: ostruct
158
164
  requirement: !ruby/object:Gem::Requirement
@@ -1257,8 +1263,6 @@ files:
1257
1263
  - lib/puppet/util/psych_support.rb
1258
1264
  - lib/puppet/util/rdoc.rb
1259
1265
  - lib/puppet/util/rdoc/code_objects.rb
1260
- - lib/puppet/util/rdoc/generators/puppet_generator.rb
1261
- - lib/puppet/util/rdoc/generators/template/puppet/puppet.rb
1262
1266
  - lib/puppet/util/rdoc/parser.rb
1263
1267
  - lib/puppet/util/rdoc/parser/puppet_parser_core.rb
1264
1268
  - lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb
@@ -1366,7 +1370,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1366
1370
  - !ruby/object:Gem::Version
1367
1371
  version: 1.3.1
1368
1372
  requirements: []
1369
- rubygems_version: 4.0.10
1373
+ rubygems_version: 4.0.16
1370
1374
  specification_version: 4
1371
1375
  summary: OpenVox, a community implementation of Puppet -- an automated configuration
1372
1376
  management tool