kitchen-openstack 3.6.2 → 6.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +37 -17
- data/lib/kitchen/driver/openstack.rb +35 -24
- data/lib/kitchen/driver/openstack/volume.rb +16 -6
- data/lib/kitchen/driver/openstack_version.rb +2 -3
- metadata +17 -102
- data/.gitignore +0 -23
- data/.rubocop.yml +0 -16
- data/.travis.yml +0 -19
- data/CHANGELOG.md +0 -556
- data/Gemfile +0 -7
- data/LICENSE.txt +0 -17
- data/Rakefile +0 -20
- data/kitchen-openstack.gemspec +0 -40
- data/spec/kitchen/driver/openstack/volume_spec.rb +0 -127
- data/spec/kitchen/driver/openstack_spec.rb +0 -1360
- data/spec/spec_helper.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 16893c5388d5afa323c078534d17c9ad94bb294cb9db3577c67e7620d58cfcd7
|
4
|
+
data.tar.gz: d5ab4ff3115b267a77eb9084bfe354d25eea77bbd9afcabb02b24eec1c3c6190
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b333a6c382943d6fca7f647a77ff8248e688335fcd6c1719db6cb348d105016ffa63f94f9c21c7e8e37e1a66f6e6bfab5155ad2c86117bc678da0c879eea9d4
|
7
|
+
data.tar.gz: 52e4a20679da413c401b62e2982a48022992964514595bec563902117e737d017699d6a5d94c63afbf5f40c049a9f28fab23ee204d37db184fb70e703d990195
|
data/README.md
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
# <a name="title"></a> Kitchen::OpenStack: A Test Kitchen Driver for OpenStack
|
2
2
|
|
3
3
|
[![Gem Version](https://img.shields.io/gem/v/kitchen-openstack.svg)][gem]
|
4
|
-
|
5
|
-
[![Code Climate](https://img.shields.io/codeclimate/github/test-kitchen/kitchen-openstack.svg)][codeclimate]
|
6
|
-
[![Coverage Status](https://img.shields.io/coveralls/test-kitchen/kitchen-openstack.svg)][coveralls]
|
4
|
+
![CI](https://github.com/test-kitchen/kitchen-openstack/workflows/CI/badge.svg)
|
7
5
|
|
8
6
|
A [Test Kitchen][kitchen_ci] Driver for [OpenStack][openstack_web].
|
9
7
|
|
@@ -11,12 +9,22 @@ This driver uses the [fog gem][fog_web] to provision and destroy nova instances.
|
|
11
9
|
|
12
10
|
Shamelessly copied from [Fletcher Nichol](https://github.com/fnichol)'s awesome work on an [EC2 driver](https://github.com/test-kitchen/kitchen-ec2), and [Adam Leff](https://github.com/adamleff)'s amazing work on an [VRO driver](https://github.com/chef-partners/kitchen-vro).
|
13
11
|
|
12
|
+
## Status
|
13
|
+
|
14
|
+
This software project is no longer under active development as it has no active maintainers. The software may continue to work for some or all use cases, but issues filed in GitHub will most likely not be triaged. If a new maintainer is interested in working on this project please come chat with us in #test-kitchen on Chef Community Slack.
|
15
|
+
|
14
16
|
## Requirements
|
15
17
|
|
16
18
|
There are **no** external system requirements for this driver. However you will need access to an OpenStack cloud.
|
17
19
|
|
18
20
|
## Installation and Setup
|
19
21
|
|
22
|
+
This plugin ships out of the box with Chef Workstation, which is the easiest way to make sure you always have the latest testing dependencies in a single package.
|
23
|
+
|
24
|
+
[Download Chef Workstation](https://downloads.chef.io/tools/workstation) to get started
|
25
|
+
|
26
|
+
### Manual Installation
|
27
|
+
|
20
28
|
Add this line to your application's Gemfile:
|
21
29
|
|
22
30
|
```ruby
|
@@ -35,12 +43,6 @@ Or install it yourself as:
|
|
35
43
|
$ gem install kitchen-openstack
|
36
44
|
```
|
37
45
|
|
38
|
-
Or if using [chefdk][chefdk_dl] install with:
|
39
|
-
|
40
|
-
```bash
|
41
|
-
$ chef gem install kitchen-openstack
|
42
|
-
```
|
43
|
-
|
44
46
|
## Minimum Configuration
|
45
47
|
|
46
48
|
```yaml
|
@@ -176,7 +178,7 @@ security_groups:
|
|
176
178
|
|
177
179
|
### user\_data
|
178
180
|
|
179
|
-
If your
|
181
|
+
If your VMs have `cloud-init` enabled you can use the `user_data` in your
|
180
182
|
kitchen.yml to inject commands at boot time.
|
181
183
|
|
182
184
|
```
|
@@ -192,9 +194,28 @@ for example:
|
|
192
194
|
echo "do whatever you want to pre-configure your machine"
|
193
195
|
```
|
194
196
|
|
197
|
+
### cloud\_config
|
198
|
+
|
199
|
+
If your VMs have `cloud-init` enabled you can use `cloud_config` to generate userdata for use by cloud-init in the [cloud-config format](https://cloudinit.readthedocs.io/en/latest/topics/format.html#cloud-config-data). This provides a convenient way to specify cloud-init config inline. As the cloud-config format uses YAML the resulting userdata is essentially a copy+paste of `cloud_config` with the header line '#cloud-config'
|
200
|
+
|
201
|
+
```
|
202
|
+
driver_config:
|
203
|
+
cloud_config:
|
204
|
+
hostname: my-hostname
|
205
|
+
```
|
206
|
+
|
207
|
+
This will pass the following user data to OpenStack:
|
208
|
+
|
209
|
+
```
|
210
|
+
#cloud-config
|
211
|
+
hostname: my-hostname
|
212
|
+
```
|
213
|
+
|
214
|
+
The `cloud_config` and `user_data` options are mutually exclusive.
|
215
|
+
|
195
216
|
### config\_drive
|
196
217
|
|
197
|
-
If your
|
218
|
+
If your VMs require config drive.
|
198
219
|
|
199
220
|
```
|
200
221
|
config_drive: true
|
@@ -281,6 +302,9 @@ Otherwise set this to `false`.
|
|
281
302
|
#### creation\_timeout
|
282
303
|
Timeout to wait for volume to become available. If a large volume is provisioned, it might take time to provision it on the backend. Maximum amount of time to wait for volume to be created and be available.
|
283
304
|
|
305
|
+
#### attach\_timeout
|
306
|
+
If using a customized version of Openstack such a VMWare Integrated OPenstack (VIO), it may mark a volume active even though it is still performing some actions which may cause test kitchen to attach the volume to early which results in errors. Specify in seconds the amount of time to delay attaching the volume after its been marked active. Default timeout is 0.
|
307
|
+
|
284
308
|
#### Example
|
285
309
|
|
286
310
|
```yaml
|
@@ -291,6 +315,7 @@ block_device_mapping:
|
|
291
315
|
availability_zone: nova
|
292
316
|
delete_on_termination: false
|
293
317
|
creation_timeout: 120
|
318
|
+
attach_timeout: 240
|
294
319
|
```
|
295
320
|
|
296
321
|
## Network and Communication Configuration
|
@@ -444,10 +469,6 @@ Apache 2.0 (see [LICENSE][license])
|
|
444
469
|
|
445
470
|
|
446
471
|
[gem]: https://rubygems.org/gems/kitchen-openstack
|
447
|
-
[travis]: https://travis-ci.org/test-kitchen/kitchen-openstack
|
448
|
-
[codeclimate]: https://codeclimate.com/github/test-kitchen/kitchen-openstack
|
449
|
-
[coveralls]: https://coveralls.io/r/test-kitchen/kitchen-openstack
|
450
|
-
[gemnasium]: https://gemnasium.com/test-kitchen/kitchen-openstack
|
451
472
|
|
452
473
|
[author]: https://github.com/RoboticCheese
|
453
474
|
[maintainer]: https://github.com/jjasghar
|
@@ -455,8 +476,7 @@ Apache 2.0 (see [LICENSE][license])
|
|
455
476
|
[license]: https://github.com/test-kitchen/kitchen-openstack/blob/master/LICENSE.txt
|
456
477
|
[repo]: https://github.com/test-kitchen/kitchen-openstack
|
457
478
|
[driver_usage]: https://github.com/test-kitchen/kitchen-openstack
|
458
|
-
[chef_omnibus_dl]:
|
459
|
-
[chefdk_dl]: https://downloads.chef.io/chef-dk
|
479
|
+
[chef_omnibus_dl]: https://downloads.chef.io/tools/infra-client
|
460
480
|
[kitchen_ci]: http://kitchen.ci
|
461
481
|
|
462
482
|
[openstack_web]: http://www.openstack.org
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# Encoding: UTF-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
#
|
@@ -6,7 +5,7 @@
|
|
6
5
|
# Author:: JJ Asghar (<jj@chef.io>)
|
7
6
|
#
|
8
7
|
# Copyright (C) 2013-2015, Jonathan Hartman
|
9
|
-
# Copyright (C) 2015-
|
8
|
+
# Copyright (C) 2015-2020, Chef Software Inc.
|
10
9
|
#
|
11
10
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
12
11
|
# you may not use this file except in compliance with the License.
|
@@ -22,7 +21,8 @@
|
|
22
21
|
|
23
22
|
require "kitchen"
|
24
23
|
require "fog/openstack"
|
25
|
-
require "ohai"
|
24
|
+
require "ohai" unless defined?(Ohai::System)
|
25
|
+
require "yaml"
|
26
26
|
require_relative "openstack_version"
|
27
27
|
require_relative "openstack/volume"
|
28
28
|
|
@@ -117,8 +117,7 @@ module Kitchen
|
|
117
117
|
pub_ip = pub[config[:public_ip_order].to_i] || nil
|
118
118
|
if pub_ip
|
119
119
|
info "Retrieve the ID of floating IP <#{pub_ip}>"
|
120
|
-
floating_ip_id = network.list_floating_ips(floating_ip_address: pub_ip)
|
121
|
-
.body["floatingips"][0]["id"]
|
120
|
+
floating_ip_id = network.list_floating_ips(floating_ip_address: pub_ip).body["floatingips"][0]["id"]
|
122
121
|
network.delete_floating_ip(floating_ip_id)
|
123
122
|
info "OpenStack Floating IP <#{pub_ip}> released."
|
124
123
|
end
|
@@ -134,7 +133,6 @@ module Kitchen
|
|
134
133
|
|
135
134
|
def openstack_server
|
136
135
|
server_def = {
|
137
|
-
provider: "OpenStack",
|
138
136
|
connection_options: {},
|
139
137
|
}
|
140
138
|
required_server_settings.each { |s| server_def[s] = config[s] }
|
@@ -148,7 +146,7 @@ module Kitchen
|
|
148
146
|
end
|
149
147
|
|
150
148
|
def optional_server_settings
|
151
|
-
Fog::Compute
|
149
|
+
Fog::OpenStack::Compute.recognized.select do |k|
|
152
150
|
k.to_s.start_with?("openstack")
|
153
151
|
end - required_server_settings
|
154
152
|
end
|
@@ -158,11 +156,11 @@ module Kitchen
|
|
158
156
|
end
|
159
157
|
|
160
158
|
def network
|
161
|
-
Fog::Network.new(openstack_server)
|
159
|
+
Fog::OpenStack::Network.new(openstack_server)
|
162
160
|
end
|
163
161
|
|
164
162
|
def compute
|
165
|
-
Fog::Compute.new(openstack_server)
|
163
|
+
Fog::OpenStack::Compute.new(openstack_server)
|
166
164
|
end
|
167
165
|
|
168
166
|
def volume
|
@@ -175,7 +173,8 @@ module Kitchen
|
|
175
173
|
|
176
174
|
def create_server
|
177
175
|
server_def = init_configuration
|
178
|
-
|
176
|
+
raise(ActionFailed, "Cannot specify both network_ref and network_id") if config[:network_id] && config[:network_ref]
|
177
|
+
|
179
178
|
if config[:network_id]
|
180
179
|
networks = [].concat([config[:network_id]])
|
181
180
|
server_def[:nics] = networks.flatten.map do |net_id|
|
@@ -202,6 +201,12 @@ module Kitchen
|
|
202
201
|
server_def[c] = optional_config(c) if config[c]
|
203
202
|
end
|
204
203
|
|
204
|
+
if config[:cloud_config]
|
205
|
+
raise(ActionFailed, "Cannot specify both cloud_config and user_data") if config[:user_data]
|
206
|
+
|
207
|
+
server_def[:user_data] = Kitchen::Util.stringified_hash(config[:cloud_config]).to_yaml.gsub(/^---\n/, "#cloud-config\n")
|
208
|
+
end
|
209
|
+
|
205
210
|
# Can't use the Fog bootstrap and/or setup methods here; they require a
|
206
211
|
# public IP address that can't be guaranteed to exist across all
|
207
212
|
# OpenStack deployments (e.g. TryStack ARM only has private IPs).
|
@@ -209,8 +214,9 @@ module Kitchen
|
|
209
214
|
end
|
210
215
|
|
211
216
|
def init_configuration
|
212
|
-
|
213
|
-
|
217
|
+
raise(ActionFailed, "Cannot specify both image_ref and image_id") if config[:image_id] && config[:image_ref]
|
218
|
+
raise(ActionFailed, "Cannot specify both flavor_ref and flavor_id") if config[:flavor_id] && config[:flavor_ref]
|
219
|
+
|
214
220
|
{
|
215
221
|
name: config[:server_name],
|
216
222
|
image_ref: config[:image_id] || find_image(config[:image_ref]).id,
|
@@ -232,21 +238,24 @@ module Kitchen
|
|
232
238
|
|
233
239
|
def find_image(image_ref)
|
234
240
|
image = find_matching(compute.images, image_ref)
|
235
|
-
|
241
|
+
raise(ActionFailed, "Image not found") unless image
|
242
|
+
|
236
243
|
debug "Selected image: #{image.id} #{image.name}"
|
237
244
|
image
|
238
245
|
end
|
239
246
|
|
240
247
|
def find_flavor(flavor_ref)
|
241
248
|
flavor = find_matching(compute.flavors, flavor_ref)
|
242
|
-
|
249
|
+
raise(ActionFailed, "Flavor not found") unless flavor
|
250
|
+
|
243
251
|
debug "Selected flavor: #{flavor.id} #{flavor.name}"
|
244
252
|
flavor
|
245
253
|
end
|
246
254
|
|
247
255
|
def find_network(network_ref)
|
248
256
|
net = find_matching(network.networks.all, network_ref)
|
249
|
-
|
257
|
+
raise(ActionFailed, "Network not found") unless net
|
258
|
+
|
250
259
|
debug "Selected net: #{net.id} #{net.name}"
|
251
260
|
net
|
252
261
|
end
|
@@ -298,8 +307,10 @@ module Kitchen
|
|
298
307
|
@@ip_pool_lock.synchronize do
|
299
308
|
info "Attaching floating IP from <#{pool}> pool"
|
300
309
|
if config[:allocate_floating_ip]
|
301
|
-
network_id = network
|
302
|
-
|
310
|
+
network_id = network
|
311
|
+
.list_networks(
|
312
|
+
name: pool
|
313
|
+
).body["networks"][0]["id"]
|
303
314
|
resp = network.create_floating_ip(network_id)
|
304
315
|
ip = resp.body["floatingip"]["floating_ip_address"]
|
305
316
|
info "Created floating IP <#{ip}> from <#{pool}> pool"
|
@@ -309,8 +320,9 @@ module Kitchen
|
|
309
320
|
i.ip if i.fixed_ip.nil? && i.instance_id.nil? && i.pool == pool
|
310
321
|
end.compact
|
311
322
|
if free_addrs.empty?
|
312
|
-
|
323
|
+
raise ActionFailed, "No available IPs in pool <#{pool}>"
|
313
324
|
end
|
325
|
+
|
314
326
|
config[:floating_ip] = free_addrs[0]
|
315
327
|
end
|
316
328
|
attach_ip(server, config[:floating_ip])
|
@@ -326,7 +338,7 @@ module Kitchen
|
|
326
338
|
begin
|
327
339
|
pub = server.public_ip_addresses
|
328
340
|
priv = server.private_ip_addresses
|
329
|
-
rescue Fog::Compute::
|
341
|
+
rescue Fog::OpenStack::Compute::NotFound, Excon::Errors::Forbidden
|
330
342
|
# See Fog issue: https://github.com/fog/fog/issues/2160
|
331
343
|
addrs = server.addresses
|
332
344
|
addrs["public"] && pub = addrs["public"].map { |i| i["addr"] }
|
@@ -353,8 +365,7 @@ module Kitchen
|
|
353
365
|
# should also work for private networks
|
354
366
|
if config[:openstack_network_name]
|
355
367
|
debug "Using configured net: #{config[:openstack_network_name]}"
|
356
|
-
return filter_ips(server.addresses[config[:openstack_network_name]])
|
357
|
-
.first["addr"]
|
368
|
+
return filter_ips(server.addresses[config[:openstack_network_name]]).first["addr"]
|
358
369
|
end
|
359
370
|
|
360
371
|
pub, priv = get_public_private_ips(server)
|
@@ -362,7 +373,7 @@ module Kitchen
|
|
362
373
|
pub, priv = parse_ips(pub, priv)
|
363
374
|
pub[config[:public_ip_order].to_i] ||
|
364
375
|
priv[config[:private_ip_order].to_i] ||
|
365
|
-
|
376
|
+
raise(ActionFailed, "Could not find an IP")
|
366
377
|
end
|
367
378
|
|
368
379
|
def filter_ips(addresses)
|
@@ -407,7 +418,7 @@ module Kitchen
|
|
407
418
|
end
|
408
419
|
|
409
420
|
def disable_ssl_validation
|
410
|
-
require "excon"
|
421
|
+
require "excon" unless defined?(Excon)
|
411
422
|
Excon.defaults[:ssl_verify_peer] = false
|
412
423
|
end
|
413
424
|
|
@@ -437,7 +448,7 @@ module Kitchen
|
|
437
448
|
if name.start_with?("/") && name.end_with?("/")
|
438
449
|
regex = Regexp.new(name[1...-1])
|
439
450
|
# check for regex name match
|
440
|
-
collection.each { |single| return single if regex
|
451
|
+
collection.each { |single| return single if regex&.match?(single.name) }
|
441
452
|
else
|
442
453
|
# check for exact id match
|
443
454
|
collection.each { |single| return single if single.id == name }
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# Encoding: UTF-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
#
|
@@ -36,7 +35,7 @@ module Kitchen
|
|
36
35
|
end
|
37
36
|
|
38
37
|
def volume(openstack_server)
|
39
|
-
Fog::Volume.new(openstack_server)
|
38
|
+
Fog::OpenStack::Volume.new(openstack_server)
|
40
39
|
end
|
41
40
|
|
42
41
|
def create_volume(config, os)
|
@@ -48,10 +47,13 @@ module Kitchen
|
|
48
47
|
opt[key] = bdm[key]
|
49
48
|
end
|
50
49
|
@logger.info "Creating Volume..."
|
51
|
-
resp = volume(os)
|
52
|
-
|
53
|
-
|
54
|
-
|
50
|
+
resp = volume(os)
|
51
|
+
.create_volume(
|
52
|
+
"#{config[:server_name]}-volume",
|
53
|
+
"#{config[:server_name]} volume",
|
54
|
+
bdm[:volume_size],
|
55
|
+
opt
|
56
|
+
)
|
55
57
|
vol_id = resp[:body]["volume"]["id"]
|
56
58
|
|
57
59
|
# Get Volume Model to make waiting for ready easy
|
@@ -67,9 +69,17 @@ module Kitchen
|
|
67
69
|
vol_model.wait_for(creation_timeout) do
|
68
70
|
sleep(1)
|
69
71
|
raise("Failed to make volume") if status.casecmp("error".downcase) == 0
|
72
|
+
|
70
73
|
ready?
|
71
74
|
end
|
72
75
|
|
76
|
+
attach_timeout = bdm.key?(:attach_timeout) ? bdm[:attach_timeout] : 0
|
77
|
+
|
78
|
+
if attach_timeout > 0
|
79
|
+
@logger.debug "Sleeping for an additional #{attach_timeout} seconds before attaching volume to wait for Openstack to finish disk creation process.."
|
80
|
+
sleep(attach_timeout)
|
81
|
+
end
|
82
|
+
|
73
83
|
@logger.debug "Volume Ready"
|
74
84
|
|
75
85
|
vol_id
|
@@ -1,11 +1,10 @@
|
|
1
|
-
# Encoding: UTF-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
#
|
5
4
|
# Author:: Jonathan Hartman (<j@p4nt5.com>)
|
6
5
|
#
|
7
6
|
# Copyright (C) 2013-2015, Jonathan Hartman
|
8
|
-
# Copyright (C) 2015-
|
7
|
+
# Copyright (C) 2015-2021, Chef Software Inc
|
9
8
|
#
|
10
9
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
11
10
|
# you may not use this file except in compliance with the License.
|
@@ -24,6 +23,6 @@ module Kitchen
|
|
24
23
|
#
|
25
24
|
# @author Jonathan Hartman <j@p4nt5.com>
|
26
25
|
module Driver
|
27
|
-
OPENSTACK_VERSION = "
|
26
|
+
OPENSTACK_VERSION = "6.1.0"
|
28
27
|
end
|
29
28
|
end
|
metadata
CHANGED
@@ -1,64 +1,50 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-openstack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 6.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Hartman
|
8
8
|
- JJ Asghar
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-07-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: test-kitchen
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "~>"
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '1.4'
|
21
18
|
- - ">="
|
22
19
|
- !ruby/object:Gem::Version
|
23
20
|
version: 1.4.1
|
21
|
+
- - "<"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: '4'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
requirements:
|
28
|
-
- - "~>"
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: '1.4'
|
31
28
|
- - ">="
|
32
29
|
- !ruby/object:Gem::Version
|
33
30
|
version: 1.4.1
|
31
|
+
- - "<"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4'
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: fog-openstack
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0
|
40
|
+
version: '1.0'
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: unf
|
50
|
-
requirement: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
type: :runtime
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
47
|
+
version: '1.0'
|
62
48
|
- !ruby/object:Gem::Dependency
|
63
49
|
name: ohai
|
64
50
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,20 +101,6 @@ dependencies:
|
|
115
101
|
- - ">="
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
|
-
- !ruby/object:Gem::Dependency
|
119
|
-
name: cane
|
120
|
-
requirement: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
type: :development
|
126
|
-
prerelease: false
|
127
|
-
version_requirements: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
104
|
- !ruby/object:Gem::Dependency
|
133
105
|
name: countloc
|
134
106
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,48 +129,6 @@ dependencies:
|
|
157
129
|
- - ">="
|
158
130
|
- !ruby/object:Gem::Version
|
159
131
|
version: '0'
|
160
|
-
- !ruby/object:Gem::Dependency
|
161
|
-
name: simplecov
|
162
|
-
requirement: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
|
-
type: :development
|
168
|
-
prerelease: false
|
169
|
-
version_requirements: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
|
-
- !ruby/object:Gem::Dependency
|
175
|
-
name: simplecov-console
|
176
|
-
requirement: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ">="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
181
|
-
type: :development
|
182
|
-
prerelease: false
|
183
|
-
version_requirements: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - ">="
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: '0'
|
188
|
-
- !ruby/object:Gem::Dependency
|
189
|
-
name: coveralls
|
190
|
-
requirement: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - ">="
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '0'
|
195
|
-
type: :development
|
196
|
-
prerelease: false
|
197
|
-
version_requirements: !ruby/object:Gem::Requirement
|
198
|
-
requirements:
|
199
|
-
- - ">="
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: '0'
|
202
132
|
- !ruby/object:Gem::Dependency
|
203
133
|
name: github_changelog_generator
|
204
134
|
requirement: !ruby/object:Gem::Requirement
|
@@ -221,26 +151,15 @@ executables: []
|
|
221
151
|
extensions: []
|
222
152
|
extra_rdoc_files: []
|
223
153
|
files:
|
224
|
-
- ".gitignore"
|
225
|
-
- ".rubocop.yml"
|
226
|
-
- ".travis.yml"
|
227
|
-
- CHANGELOG.md
|
228
|
-
- Gemfile
|
229
|
-
- LICENSE.txt
|
230
154
|
- README.md
|
231
|
-
- Rakefile
|
232
|
-
- kitchen-openstack.gemspec
|
233
155
|
- lib/kitchen/driver/openstack.rb
|
234
156
|
- lib/kitchen/driver/openstack/volume.rb
|
235
157
|
- lib/kitchen/driver/openstack_version.rb
|
236
|
-
- spec/kitchen/driver/openstack/volume_spec.rb
|
237
|
-
- spec/kitchen/driver/openstack_spec.rb
|
238
|
-
- spec/spec_helper.rb
|
239
158
|
homepage: https://github.com/test-kitchen/kitchen-openstack
|
240
159
|
licenses:
|
241
|
-
- Apache
|
160
|
+
- Apache-2.0
|
242
161
|
metadata: {}
|
243
|
-
post_install_message:
|
162
|
+
post_install_message:
|
244
163
|
rdoc_options: []
|
245
164
|
require_paths:
|
246
165
|
- lib
|
@@ -248,19 +167,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
248
167
|
requirements:
|
249
168
|
- - ">="
|
250
169
|
- !ruby/object:Gem::Version
|
251
|
-
version: 2.
|
170
|
+
version: 2.6.0
|
252
171
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
253
172
|
requirements:
|
254
173
|
- - ">="
|
255
174
|
- !ruby/object:Gem::Version
|
256
175
|
version: '0'
|
257
176
|
requirements: []
|
258
|
-
|
259
|
-
|
260
|
-
signing_key:
|
177
|
+
rubygems_version: 3.2.15
|
178
|
+
signing_key:
|
261
179
|
specification_version: 4
|
262
180
|
summary: A Test Kitchen OpenStack Nova driver
|
263
|
-
test_files:
|
264
|
-
- spec/kitchen/driver/openstack/volume_spec.rb
|
265
|
-
- spec/kitchen/driver/openstack_spec.rb
|
266
|
-
- spec/spec_helper.rb
|
181
|
+
test_files: []
|