beaker-openstack 1.0.0 → 2.0.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 +4 -4
- data/.github/dependabot.yml +15 -6
- data/.github/workflows/release.yml +1 -1
- data/.github/workflows/test.yml +1 -6
- data/CHANGELOG.md +20 -0
- data/Gemfile +3 -19
- data/README.md +6 -0
- data/Rakefile +4 -3
- data/beaker-openstack.gemspec +5 -4
- data/lib/beaker/hypervisor/openstack.rb +107 -70
- data/lib/beaker-openstack/version.rb +1 -1
- metadata +24 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c5432c86653f848d141b7170b2f434bdd9479268956aad4dd821bfbb4f66eed7
|
|
4
|
+
data.tar.gz: a3e397ec1d79f453858d00e641211feaeef426f55bc95ee99ac3e5bdfcf60151
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8665d145f7d23bfcbc5fdb5bf504e333570156507b94e8bbbf5c251ca0a7eff95e4924a600dcbdb96b60f569e0068c38eea240c45553fd5738f6b420228d0979
|
|
7
|
+
data.tar.gz: b25f60256f8687260e3ac7f690789ebeec180d4f27fb88b06e9f8b8d0731faf7a899f38ea5e5b1f8842628e27490fbec4b2838a5c782adf678f77845b81db587
|
data/.github/dependabot.yml
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
version: 2
|
|
2
2
|
updates:
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
# raise PRs for gem updates
|
|
4
|
+
- package-ecosystem: bundler
|
|
5
|
+
directory: "/"
|
|
6
|
+
schedule:
|
|
7
|
+
interval: daily
|
|
8
|
+
time: "13:00"
|
|
9
|
+
open-pull-requests-limit: 10
|
|
10
|
+
|
|
11
|
+
# Maintain dependencies for GitHub Actions
|
|
12
|
+
- package-ecosystem: github-actions
|
|
13
|
+
directory: "/"
|
|
14
|
+
schedule:
|
|
15
|
+
interval: daily
|
|
16
|
+
time: "13:00"
|
|
17
|
+
open-pull-requests-limit: 10
|
data/.github/workflows/test.yml
CHANGED
|
@@ -11,19 +11,14 @@ jobs:
|
|
|
11
11
|
fail-fast: false
|
|
12
12
|
matrix:
|
|
13
13
|
ruby:
|
|
14
|
-
- "2.4"
|
|
15
|
-
- "2.5"
|
|
16
|
-
- "2.6"
|
|
17
14
|
- "2.7"
|
|
18
15
|
- "3.0"
|
|
19
16
|
steps:
|
|
20
|
-
- uses: actions/checkout@
|
|
17
|
+
- uses: actions/checkout@v4
|
|
21
18
|
- name: Install Ruby ${{ matrix.ruby }}
|
|
22
19
|
uses: ruby/setup-ruby@v1
|
|
23
20
|
with:
|
|
24
21
|
ruby-version: ${{ matrix.ruby }}
|
|
25
22
|
bundler-cache: true
|
|
26
|
-
env:
|
|
27
|
-
BUNDLE_WITHOUT: release
|
|
28
23
|
- name: Run tests
|
|
29
24
|
run: bundle exec rake spec
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [2.0.0](https://github.com/voxpupuli/beaker-openstack/tree/2.0.0) (2024-02-03)
|
|
6
|
+
|
|
7
|
+
[Full Changelog](https://github.com/voxpupuli/beaker-openstack/compare/1.0.0...2.0.0)
|
|
8
|
+
|
|
9
|
+
**Breaking changes:**
|
|
10
|
+
|
|
11
|
+
- Drop EoL Ruby 2.4/2.5/2.6 support [\#22](https://github.com/voxpupuli/beaker-openstack/pull/22) ([bastelfreak](https://github.com/bastelfreak))
|
|
12
|
+
|
|
13
|
+
**Implemented enhancements:**
|
|
14
|
+
|
|
15
|
+
- Add parallel instance creation opt-in option [\#20](https://github.com/voxpupuli/beaker-openstack/pull/20) ([canihavethisone](https://github.com/canihavethisone))
|
|
16
|
+
|
|
17
|
+
**Merged pull requests:**
|
|
18
|
+
|
|
19
|
+
- gemspec: Fix typo in Apache-2.0 license name [\#27](https://github.com/voxpupuli/beaker-openstack/pull/27) ([bastelfreak](https://github.com/bastelfreak))
|
|
20
|
+
- Apply best practices for our changelog generator [\#26](https://github.com/voxpupuli/beaker-openstack/pull/26) ([bastelfreak](https://github.com/bastelfreak))
|
|
21
|
+
- Cleanup Gemfile, add beaker as runtime dependency [\#24](https://github.com/voxpupuli/beaker-openstack/pull/24) ([bastelfreak](https://github.com/bastelfreak))
|
|
22
|
+
- dependabot: check for github actions and bundler [\#21](https://github.com/voxpupuli/beaker-openstack/pull/21) ([bastelfreak](https://github.com/bastelfreak))
|
|
23
|
+
- Update fakefs requirement from ~\> 1.3 to ~\> 2.4 [\#19](https://github.com/voxpupuli/beaker-openstack/pull/19) ([dependabot[bot]](https://github.com/apps/dependabot))
|
|
24
|
+
|
|
5
25
|
## [1.0.0](https://github.com/voxpupuli/beaker-openstack/tree/1.0.0) (2021-07-09)
|
|
6
26
|
|
|
7
27
|
[Full Changelog](https://github.com/voxpupuli/beaker-openstack/compare/0.3.0...1.0.0)
|
data/Gemfile
CHANGED
|
@@ -2,23 +2,7 @@ source ENV['GEM_SOURCE'] || "https://rubygems.org"
|
|
|
2
2
|
|
|
3
3
|
gemspec
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
elsif place =~ /^file:\/\/(.*)/
|
|
9
|
-
['>= 0', { :path => File.expand_path($1), :require => false }]
|
|
10
|
-
else
|
|
11
|
-
[place, { :require => false }]
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
# We don't put beaker in as a test dependency because we
|
|
17
|
-
# don't want to create a transitive dependency
|
|
18
|
-
group :acceptance_testing do
|
|
19
|
-
gem "beaker", *location_for(ENV['BEAKER_VERSION'] || '~> 4.0')
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
group :release do
|
|
23
|
-
gem 'github_changelog_generator', :require => false
|
|
5
|
+
group :release, optional: true do
|
|
6
|
+
gem 'faraday-retry', '~> 2.1', require: false
|
|
7
|
+
gem 'github_changelog_generator','~> 1.16', '>= 1.16.4', require: false
|
|
24
8
|
end
|
data/README.md
CHANGED
|
@@ -137,6 +137,7 @@ CONFIG:
|
|
|
137
137
|
openstack_volume_support: <true/false>
|
|
138
138
|
security_group: ['default']
|
|
139
139
|
preserve_hosts: <always/onfail/onpass/never>
|
|
140
|
+
create_in_parallel: true
|
|
140
141
|
run_in_parallel: ['configure', 'install']
|
|
141
142
|
type: <foss/git/pe>
|
|
142
143
|
```
|
|
@@ -154,6 +155,11 @@ Further, you can opt to use a static master by setting the master's hypervisor t
|
|
|
154
155
|
ip: <master_ip>
|
|
155
156
|
```
|
|
156
157
|
|
|
158
|
+
Additionally, you can set instance creation to occur in parallel instead of sequentially via this CONFIG entry:
|
|
159
|
+
```yaml
|
|
160
|
+
create_in_parallel: true
|
|
161
|
+
```
|
|
162
|
+
|
|
157
163
|
Additional parameter information is available at https://github.com/voxpupuli/beaker/blob/master/docs/concepts/argument_processing_and_precedence.md
|
|
158
164
|
|
|
159
165
|
There is a simple rake task to invoke acceptance test for the library once the two environment variables are set:
|
data/Rakefile
CHANGED
|
@@ -169,13 +169,14 @@ end
|
|
|
169
169
|
begin
|
|
170
170
|
require 'rubygems'
|
|
171
171
|
require 'github_changelog_generator/task'
|
|
172
|
-
|
|
172
|
+
rescue LoadError
|
|
173
|
+
# github_changelog_generator is an optional group
|
|
174
|
+
else
|
|
173
175
|
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
|
|
174
176
|
config.header = "# Changelog\n\nAll notable changes to this project will be documented in this file."
|
|
175
|
-
config.exclude_labels = %w
|
|
177
|
+
config.exclude_labels = %w[duplicate question invalid wontfix wont-fix skip-changelog github_actions]
|
|
176
178
|
config.user = 'voxpupuli'
|
|
177
179
|
config.project = 'beaker-openstack'
|
|
178
180
|
config.future_release = Gem::Specification.load("#{config.project}.gemspec").version
|
|
179
181
|
end
|
|
180
|
-
rescue LoadError
|
|
181
182
|
end
|
data/beaker-openstack.gemspec
CHANGED
|
@@ -10,17 +10,19 @@ Gem::Specification.new do |s|
|
|
|
10
10
|
s.homepage = 'https://github.com/voxpupuli/beaker-openstack'
|
|
11
11
|
s.summary = %q{Beaker DSL Extension Helpers!}
|
|
12
12
|
s.description = %q{For use for the Beaker acceptance testing tool}
|
|
13
|
-
s.license = '
|
|
13
|
+
s.license = 'Apache-2.0'
|
|
14
14
|
|
|
15
15
|
s.files = `git ls-files`.split("\n")
|
|
16
16
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
17
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
18
18
|
s.require_paths = ["lib"]
|
|
19
19
|
|
|
20
|
+
s.required_ruby_version = '>= 2.7', '< 4'
|
|
21
|
+
|
|
20
22
|
# Testing dependencies
|
|
21
23
|
s.add_development_dependency 'rspec', '~> 3.0'
|
|
22
24
|
s.add_development_dependency 'rspec-its'
|
|
23
|
-
s.add_development_dependency 'fakefs', '~>
|
|
25
|
+
s.add_development_dependency 'fakefs', '~> 2.4'
|
|
24
26
|
s.add_development_dependency 'rake', '>= 12.3.3'
|
|
25
27
|
s.add_development_dependency 'simplecov'
|
|
26
28
|
s.add_development_dependency 'pry', '~> 0.10'
|
|
@@ -33,6 +35,5 @@ Gem::Specification.new do |s|
|
|
|
33
35
|
# Run time dependencies
|
|
34
36
|
s.add_runtime_dependency 'stringify-hash', '~> 0.0.0'
|
|
35
37
|
s.add_runtime_dependency 'fog-openstack', '~> 1.0.0'
|
|
36
|
-
|
|
38
|
+
s.add_runtime_dependency 'beaker', '~> 5.6'
|
|
37
39
|
end
|
|
38
|
-
|
|
@@ -250,86 +250,123 @@ module Beaker
|
|
|
250
250
|
ip
|
|
251
251
|
end
|
|
252
252
|
|
|
253
|
-
#Create new instances in OpenStack
|
|
253
|
+
# Create new instances in OpenStack, depending on if create_in_parallel is true or not
|
|
254
254
|
def provision
|
|
255
|
-
@
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
create_or_associate_keypair(host, hostname)
|
|
268
|
-
@logger.debug "Provisioning #{host.name} (#{host[:vmhostname]})"
|
|
269
|
-
options = {
|
|
270
|
-
:flavor_ref => flavor(host[:flavor]).id,
|
|
271
|
-
:image_ref => image(host[:image]).id,
|
|
272
|
-
:nics => [ {'net_id' => network(@options[:openstack_network]).id } ],
|
|
273
|
-
:name => host[:vmhostname],
|
|
274
|
-
:hostname => host[:vmhostname],
|
|
275
|
-
:user_data => host[:user_data] || "#cloud-config\nmanage_etc_hosts: true\n",
|
|
276
|
-
:key_name => host[:keyname],
|
|
277
|
-
}
|
|
278
|
-
options[:security_groups] = security_groups(@options[:security_group]) unless @options[:security_group].nil?
|
|
279
|
-
vm = @compute_client.servers.create(options)
|
|
280
|
-
|
|
281
|
-
#wait for the new instance to start up
|
|
282
|
-
try = 1
|
|
283
|
-
attempts = @options[:timeout].to_i / SLEEPWAIT
|
|
284
|
-
|
|
285
|
-
while try <= attempts
|
|
286
|
-
begin
|
|
287
|
-
vm.wait_for(5) { ready? }
|
|
288
|
-
break
|
|
289
|
-
rescue Fog::Errors::TimeoutError => e
|
|
290
|
-
if try >= attempts
|
|
291
|
-
@logger.debug "Failed to connect to new OpenStack instance #{host.name} (#{host[:vmhostname]})"
|
|
292
|
-
raise e
|
|
293
|
-
end
|
|
294
|
-
@logger.debug "Timeout connecting to instance #{host.name} (#{host[:vmhostname]}), trying again..."
|
|
295
|
-
end
|
|
296
|
-
sleep SLEEPWAIT
|
|
297
|
-
try += 1
|
|
298
|
-
end
|
|
255
|
+
if @options[:create_in_parallel]
|
|
256
|
+
# Enable abort on exception for threads
|
|
257
|
+
Thread.abort_on_exception = true
|
|
258
|
+
@logger.notify "Provisioning OpenStack in parallel"
|
|
259
|
+
provision_parallel
|
|
260
|
+
else
|
|
261
|
+
@logger.notify "Provisioning OpenStack sequentially"
|
|
262
|
+
provision_sequential
|
|
263
|
+
end
|
|
264
|
+
hack_etc_hosts @hosts, @options
|
|
265
|
+
end
|
|
299
266
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
# OpenStack UI
|
|
307
|
-
host[:ip] = vm.addresses.first[1][0]["addr"]
|
|
267
|
+
# Parallel creation wrapper
|
|
268
|
+
def provision_parallel
|
|
269
|
+
# Array to store threads
|
|
270
|
+
threads = @hosts.map do |host|
|
|
271
|
+
Thread.new do
|
|
272
|
+
create_instance_resources(host)
|
|
308
273
|
end
|
|
274
|
+
end
|
|
275
|
+
# Wait for all threads to finish
|
|
276
|
+
threads.each(&:join)
|
|
277
|
+
end
|
|
309
278
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
@vms << vm
|
|
317
|
-
|
|
318
|
-
# Wait for the host to accept ssh logins
|
|
319
|
-
host.wait_for_port(22)
|
|
279
|
+
# Sequential creation wrapper
|
|
280
|
+
def provision_sequential
|
|
281
|
+
@hosts.each do |host|
|
|
282
|
+
create_instance_resources(host)
|
|
283
|
+
end
|
|
284
|
+
end
|
|
320
285
|
|
|
321
|
-
|
|
322
|
-
|
|
286
|
+
# Create the actual instance resources
|
|
287
|
+
def create_instance_resources(host)
|
|
288
|
+
@logger.notify "Provisioning OpenStack"
|
|
289
|
+
if @options[:openstack_floating_ip]
|
|
290
|
+
ip = get_floating_ip
|
|
291
|
+
hostname = ip.ip.gsub('.', '-')
|
|
292
|
+
host[:vmhostname] = hostname + '.rfc1918.puppetlabs.net'
|
|
293
|
+
else
|
|
294
|
+
hostname = ('a'..'z').to_a.shuffle[0, 10].join
|
|
295
|
+
host[:vmhostname] = hostname
|
|
296
|
+
end
|
|
323
297
|
|
|
324
|
-
|
|
325
|
-
|
|
298
|
+
create_or_associate_keypair(host, hostname)
|
|
299
|
+
@logger.debug "Provisioning #{host.name} (#{host[:vmhostname]})"
|
|
300
|
+
options = {
|
|
301
|
+
:flavor_ref => flavor(host[:flavor]).id,
|
|
302
|
+
:image_ref => image(host[:image]).id,
|
|
303
|
+
:nics => [{'net_id' => network(@options[:openstack_network]).id}],
|
|
304
|
+
:name => host[:vmhostname],
|
|
305
|
+
:hostname => host[:vmhostname],
|
|
306
|
+
:user_data => host[:user_data] || "#cloud-config\nmanage_etc_hosts: true\n",
|
|
307
|
+
:key_name => host[:keyname],
|
|
308
|
+
}
|
|
309
|
+
options[:security_groups] = security_groups(@options[:security_group]) unless @options[:security_group].nil?
|
|
310
|
+
vm = @compute_client.servers.create(options)
|
|
311
|
+
|
|
312
|
+
# Wait for the new instance to start up
|
|
313
|
+
try = 1
|
|
314
|
+
attempts = @options[:timeout].to_i / SLEEPWAIT
|
|
315
|
+
|
|
316
|
+
while try <= attempts
|
|
317
|
+
begin
|
|
318
|
+
vm.wait_for(5) { ready? }
|
|
319
|
+
break
|
|
320
|
+
rescue Fog::Errors::TimeoutError => e
|
|
321
|
+
if try >= attempts
|
|
322
|
+
@logger.debug "Failed to connect to new OpenStack instance #{host.name} (#{host[:vmhostname]})"
|
|
323
|
+
raise e
|
|
324
|
+
end
|
|
325
|
+
@logger.debug "Timeout connecting to instance #{host.name} (#{host[:vmhostname]}), trying again..."
|
|
326
|
+
end
|
|
327
|
+
sleep SLEEPWAIT
|
|
328
|
+
try += 1
|
|
326
329
|
end
|
|
327
330
|
|
|
328
|
-
|
|
331
|
+
if @options[:openstack_floating_ip]
|
|
332
|
+
# Associate a public IP to the VM
|
|
333
|
+
ip.server = vm
|
|
334
|
+
host[:ip] = ip.ip
|
|
335
|
+
else
|
|
336
|
+
# Get the first address of the VM that was just created just like in the
|
|
337
|
+
# OpenStack UI
|
|
338
|
+
host[:ip] = vm.addresses.first[1][0]["addr"]
|
|
339
|
+
end
|
|
329
340
|
|
|
341
|
+
@logger.debug "OpenStack host #{host.name} (#{host[:vmhostname]}) assigned ip: #{host[:ip]}"
|
|
342
|
+
|
|
343
|
+
# Set metadata
|
|
344
|
+
vm.metadata.update({:jenkins_build_url => @options[:jenkins_build_url].to_s,
|
|
345
|
+
:department => @options[:department].to_s,
|
|
346
|
+
:project => @options[:project].to_s })
|
|
347
|
+
@vms << vm
|
|
348
|
+
|
|
349
|
+
# Wait for the host to accept SSH logins
|
|
350
|
+
host.wait_for_port(22)
|
|
351
|
+
|
|
352
|
+
# Enable root if the user is not root
|
|
353
|
+
enable_root(host)
|
|
354
|
+
|
|
355
|
+
provision_storage(host, vm) if @options[:openstack_volume_support]
|
|
356
|
+
@logger.notify "OpenStack Volume Support Disabled, can't provision volumes" if not @options[:openstack_volume_support]
|
|
357
|
+
|
|
358
|
+
# Handle exceptions in the thread
|
|
359
|
+
rescue => e
|
|
360
|
+
@logger.error "Thread #{host} failed with error: #{e.message}"
|
|
361
|
+
# Call cleanup function to delete orphaned hosts
|
|
362
|
+
cleanup
|
|
363
|
+
# Pass the error to the main thread to terminate all threads
|
|
364
|
+
Thread.main.raise(e)
|
|
365
|
+
# Terminate the current thread (to prevent hack_etc_hosts trying to run after error raised)
|
|
366
|
+
Thread.kill(Thread.current)
|
|
330
367
|
end
|
|
331
368
|
|
|
332
|
-
#Destroy any OpenStack instances
|
|
369
|
+
# Destroy any OpenStack instances
|
|
333
370
|
def cleanup
|
|
334
371
|
@logger.notify "Cleaning up OpenStack"
|
|
335
372
|
@vms.each do |vm|
|
|
@@ -361,7 +398,7 @@ module Beaker
|
|
|
361
398
|
end
|
|
362
399
|
end
|
|
363
400
|
|
|
364
|
-
#
|
|
401
|
+
# Enable root on a single host (the current one presumably) but only
|
|
365
402
|
# if the username isn't 'root'
|
|
366
403
|
def enable_root(host)
|
|
367
404
|
if host['user'] != 'root'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: beaker-openstack
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vox Pupuli
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-02-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rspec
|
|
@@ -44,14 +44,14 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
47
|
+
version: '2.4'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
54
|
+
version: '2.4'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: rake
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -164,6 +164,20 @@ dependencies:
|
|
|
164
164
|
- - "~>"
|
|
165
165
|
- !ruby/object:Gem::Version
|
|
166
166
|
version: 1.0.0
|
|
167
|
+
- !ruby/object:Gem::Dependency
|
|
168
|
+
name: beaker
|
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
|
170
|
+
requirements:
|
|
171
|
+
- - "~>"
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '5.6'
|
|
174
|
+
type: :runtime
|
|
175
|
+
prerelease: false
|
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - "~>"
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '5.6'
|
|
167
181
|
description: For use for the Beaker acceptance testing tool
|
|
168
182
|
email: voxpupuli@groups.io
|
|
169
183
|
executables:
|
|
@@ -190,7 +204,7 @@ files:
|
|
|
190
204
|
- spec/spec_helper.rb
|
|
191
205
|
homepage: https://github.com/voxpupuli/beaker-openstack
|
|
192
206
|
licenses:
|
|
193
|
-
-
|
|
207
|
+
- Apache-2.0
|
|
194
208
|
metadata: {}
|
|
195
209
|
post_install_message:
|
|
196
210
|
rdoc_options: []
|
|
@@ -200,14 +214,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
200
214
|
requirements:
|
|
201
215
|
- - ">="
|
|
202
216
|
- !ruby/object:Gem::Version
|
|
203
|
-
version: '
|
|
217
|
+
version: '2.7'
|
|
218
|
+
- - "<"
|
|
219
|
+
- !ruby/object:Gem::Version
|
|
220
|
+
version: '4'
|
|
204
221
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
222
|
requirements:
|
|
206
223
|
- - ">="
|
|
207
224
|
- !ruby/object:Gem::Version
|
|
208
225
|
version: '0'
|
|
209
226
|
requirements: []
|
|
210
|
-
rubygems_version: 3.2.
|
|
227
|
+
rubygems_version: 3.2.33
|
|
211
228
|
signing_key:
|
|
212
229
|
specification_version: 4
|
|
213
230
|
summary: Beaker DSL Extension Helpers!
|