kitchen-openstack 3.6.1 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: bf1574cdbe6419f37ab9bc32f6413f7164314932
4
- data.tar.gz: ae7cda2a687a2be7324cc9e847da7f048f1563ab
2
+ SHA256:
3
+ metadata.gz: d3c139f8629d8896b075e11cb86e24e39895b8d98f82fe252577b781a1181f65
4
+ data.tar.gz: 178e6d4f4fbdc151d8cb90a3a9073f39901aab259b35955a970d1152fc4b3e2f
5
5
  SHA512:
6
- metadata.gz: 48aaf584c9a96d253155688c2dfc71b0d5bc05e09f4e42a7857e42808af41fa90714eb624c5f78a20fd08d36562a1dae373152c0fcf24096d0bdb0b58f5fa8f3
7
- data.tar.gz: 51923035e0b3ceda15cfa7f526ca7f0d5272c29991478acdb40726f8191c10be1d90e57558f90222b899bfc93074b0d2d2b758f2f71d36218c321a031fb8735e
6
+ metadata.gz: ab2a070947110663f54193aa73379f5740ec0bc353f962e4523fcc1cd721382f216db25f97a0d1199ba22208126543460fbd76e2da63493c88884f1f956fe6b4
7
+ data.tar.gz: 4d1f3d1d6f753183beabf8493c87335fd7e42485d6e889410ed4e115031c5480e7fab107a7419b6166797a081ff67a293692fd7fc27598368f31eb890377108d
data/README.md CHANGED
@@ -1,10 +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
- [![Build Status](https://img.shields.io/travis/test-kitchen/kitchen-openstack.svg)][travis]
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]
7
- [![Dependency Status](https://img.shields.io/gemnasium/test-kitchen/kitchen-openstack.svg)][gemnasium]
4
+ ![CI](https://github.com/test-kitchen/kitchen-openstack/workflows/CI/badge.svg)
8
5
 
9
6
  A [Test Kitchen][kitchen_ci] Driver for [OpenStack][openstack_web].
10
7
 
@@ -12,12 +9,22 @@ This driver uses the [fog gem][fog_web] to provision and destroy nova instances.
12
9
 
13
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).
14
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
+
15
16
  ## Requirements
16
17
 
17
18
  There are **no** external system requirements for this driver. However you will need access to an OpenStack cloud.
18
19
 
19
20
  ## Installation and Setup
20
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
+
21
28
  Add this line to your application's Gemfile:
22
29
 
23
30
  ```ruby
@@ -36,12 +43,6 @@ Or install it yourself as:
36
43
  $ gem install kitchen-openstack
37
44
  ```
38
45
 
39
- Or if using [chefdk][chefdk_dl] install with:
40
-
41
- ```bash
42
- $ chef gem install kitchen-openstack
43
- ```
44
-
45
46
  ## Minimum Configuration
46
47
 
47
48
  ```yaml
@@ -177,7 +178,7 @@ security_groups:
177
178
 
178
179
  ### user\_data
179
180
 
180
- If your vms have `cloud-init` enabled you can use the `user_data` in your
181
+ If your VMs have `cloud-init` enabled you can use the `user_data` in your
181
182
  kitchen.yml to inject commands at boot time.
182
183
 
183
184
  ```
@@ -193,9 +194,28 @@ for example:
193
194
  echo "do whatever you want to pre-configure your machine"
194
195
  ```
195
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
+
196
216
  ### config\_drive
197
217
 
198
- If your vms require config drive.
218
+ If your VMs require config drive.
199
219
 
200
220
  ```
201
221
  config_drive: true
@@ -282,6 +302,9 @@ Otherwise set this to `false`.
282
302
  #### creation\_timeout
283
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.
284
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
+
285
308
  #### Example
286
309
 
287
310
  ```yaml
@@ -292,6 +315,7 @@ block_device_mapping:
292
315
  availability_zone: nova
293
316
  delete_on_termination: false
294
317
  creation_timeout: 120
318
+ attach_timeout: 240
295
319
  ```
296
320
 
297
321
  ## Network and Communication Configuration
@@ -445,10 +469,6 @@ Apache 2.0 (see [LICENSE][license])
445
469
 
446
470
 
447
471
  [gem]: https://rubygems.org/gems/kitchen-openstack
448
- [travis]: https://travis-ci.org/test-kitchen/kitchen-openstack
449
- [codeclimate]: https://codeclimate.com/github/test-kitchen/kitchen-openstack
450
- [coveralls]: https://coveralls.io/r/test-kitchen/kitchen-openstack
451
- [gemnasium]: https://gemnasium.com/test-kitchen/kitchen-openstack
452
472
 
453
473
  [author]: https://github.com/RoboticCheese
454
474
  [maintainer]: https://github.com/jjasghar
@@ -456,8 +476,7 @@ Apache 2.0 (see [LICENSE][license])
456
476
  [license]: https://github.com/test-kitchen/kitchen-openstack/blob/master/LICENSE.txt
457
477
  [repo]: https://github.com/test-kitchen/kitchen-openstack
458
478
  [driver_usage]: https://github.com/test-kitchen/kitchen-openstack
459
- [chef_omnibus_dl]: http://www.chef.io/chef/install/
460
- [chefdk_dl]: https://downloads.chef.io/chef-dk
479
+ [chef_omnibus_dl]: https://downloads.chef.io/tools/infra-client
461
480
  [kitchen_ci]: http://kitchen.ci
462
481
 
463
482
  [openstack_web]: http://www.openstack.org
@@ -1,11 +1,11 @@
1
- # Encoding: UTF-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  #
4
4
  # Author:: Jonathan Hartman (<j@p4nt5.com>)
5
5
  # Author:: JJ Asghar (<jj@chef.io>)
6
6
  #
7
7
  # Copyright (C) 2013-2015, Jonathan Hartman
8
- # Copyright (C) 2015-2017, Chef Inc
8
+ # Copyright (C) 2015-2020, Chef Software Inc.
9
9
  #
10
10
  # Licensed under the Apache License, Version 2.0 (the "License");
11
11
  # you may not use this file except in compliance with the License.
@@ -21,7 +21,8 @@
21
21
 
22
22
  require "kitchen"
23
23
  require "fog/openstack"
24
- require "ohai"
24
+ require "ohai" unless defined?(Ohai::System)
25
+ require "yaml"
25
26
  require_relative "openstack_version"
26
27
  require_relative "openstack/volume"
27
28
 
@@ -116,8 +117,7 @@ module Kitchen
116
117
  pub_ip = pub[config[:public_ip_order].to_i] || nil
117
118
  if pub_ip
118
119
  info "Retrieve the ID of floating IP <#{pub_ip}>"
119
- floating_ip_id = network.list_floating_ips(floating_ip_address: pub_ip)
120
- .body["floatingips"][0]["id"]
120
+ floating_ip_id = network.list_floating_ips(floating_ip_address: pub_ip).body["floatingips"][0]["id"]
121
121
  network.delete_floating_ip(floating_ip_id)
122
122
  info "OpenStack Floating IP <#{pub_ip}> released."
123
123
  end
@@ -133,7 +133,6 @@ module Kitchen
133
133
 
134
134
  def openstack_server
135
135
  server_def = {
136
- provider: "OpenStack",
137
136
  connection_options: {},
138
137
  }
139
138
  required_server_settings.each { |s| server_def[s] = config[s] }
@@ -147,7 +146,7 @@ module Kitchen
147
146
  end
148
147
 
149
148
  def optional_server_settings
150
- Fog::Compute::OpenStack.recognized.select do |k|
149
+ Fog::OpenStack::Compute.recognized.select do |k|
151
150
  k.to_s.start_with?("openstack")
152
151
  end - required_server_settings
153
152
  end
@@ -157,11 +156,11 @@ module Kitchen
157
156
  end
158
157
 
159
158
  def network
160
- Fog::Network.new(openstack_server)
159
+ Fog::OpenStack::Network.new(openstack_server)
161
160
  end
162
161
 
163
162
  def compute
164
- Fog::Compute.new(openstack_server)
163
+ Fog::OpenStack::Compute.new(openstack_server)
165
164
  end
166
165
 
167
166
  def volume
@@ -174,7 +173,8 @@ module Kitchen
174
173
 
175
174
  def create_server
176
175
  server_def = init_configuration
177
- fail(ActionFailed, "Cannot specify both network_ref and network_id") if config[:network_id] && config[:network_ref] # rubocop:disable SignalException
176
+ raise(ActionFailed, "Cannot specify both network_ref and network_id") if config[:network_id] && config[:network_ref]
177
+
178
178
  if config[:network_id]
179
179
  networks = [].concat([config[:network_id]])
180
180
  server_def[:nics] = networks.flatten.map do |net_id|
@@ -201,6 +201,12 @@ module Kitchen
201
201
  server_def[c] = optional_config(c) if config[c]
202
202
  end
203
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
+
204
210
  # Can't use the Fog bootstrap and/or setup methods here; they require a
205
211
  # public IP address that can't be guaranteed to exist across all
206
212
  # OpenStack deployments (e.g. TryStack ARM only has private IPs).
@@ -208,8 +214,9 @@ module Kitchen
208
214
  end
209
215
 
210
216
  def init_configuration
211
- fail(ActionFailed, "Cannot specify both image_ref and image_id") if config[:image_id] && config[:image_ref] # rubocop:disable SignalException
212
- fail(ActionFailed, "Cannot specify both flavor_ref and flavor_id") if config[:flavor_id] && config[:flavor_ref] # rubocop:disable SignalException
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
+
213
220
  {
214
221
  name: config[:server_name],
215
222
  image_ref: config[:image_id] || find_image(config[:image_ref]).id,
@@ -231,21 +238,24 @@ module Kitchen
231
238
 
232
239
  def find_image(image_ref)
233
240
  image = find_matching(compute.images, image_ref)
234
- fail(ActionFailed, "Image not found") unless image # rubocop:disable SignalException
241
+ raise(ActionFailed, "Image not found") unless image
242
+
235
243
  debug "Selected image: #{image.id} #{image.name}"
236
244
  image
237
245
  end
238
246
 
239
247
  def find_flavor(flavor_ref)
240
248
  flavor = find_matching(compute.flavors, flavor_ref)
241
- fail(ActionFailed, "Flavor not found") unless flavor # rubocop:disable SignalException
249
+ raise(ActionFailed, "Flavor not found") unless flavor
250
+
242
251
  debug "Selected flavor: #{flavor.id} #{flavor.name}"
243
252
  flavor
244
253
  end
245
254
 
246
255
  def find_network(network_ref)
247
256
  net = find_matching(network.networks.all, network_ref)
248
- fail(ActionFailed, "Network not found") unless net # rubocop:disable SignalException
257
+ raise(ActionFailed, "Network not found") unless net
258
+
249
259
  debug "Selected net: #{net.id} #{net.name}"
250
260
  net
251
261
  end
@@ -261,7 +271,7 @@ module Kitchen
261
271
  def default_name
262
272
  [
263
273
  instance.name.gsub(/\W/, "")[0..14],
264
- (Etc.getpwuid.name || "nologin").gsub(/\W/, "")[0..14],
274
+ ((Etc.getpwuid ? Etc.getpwuid.name : Etc.getlogin) || "nologin").gsub(/\W/, "")[0..14],
265
275
  Socket.gethostname.gsub(/\W/, "")[0..22],
266
276
  Array.new(7) { rand(36).to_s(36) }.join,
267
277
  ].join("-")
@@ -297,8 +307,10 @@ module Kitchen
297
307
  @@ip_pool_lock.synchronize do
298
308
  info "Attaching floating IP from <#{pool}> pool"
299
309
  if config[:allocate_floating_ip]
300
- network_id = network.list_networks(name: pool)
301
- .body["networks"][0]["id"]
310
+ network_id = network
311
+ .list_networks(
312
+ name: pool
313
+ ).body["networks"][0]["id"]
302
314
  resp = network.create_floating_ip(network_id)
303
315
  ip = resp.body["floatingip"]["floating_ip_address"]
304
316
  info "Created floating IP <#{ip}> from <#{pool}> pool"
@@ -308,8 +320,9 @@ module Kitchen
308
320
  i.ip if i.fixed_ip.nil? && i.instance_id.nil? && i.pool == pool
309
321
  end.compact
310
322
  if free_addrs.empty?
311
- fail ActionFailed, "No available IPs in pool <#{pool}>" # rubocop:disable SignalException
323
+ raise ActionFailed, "No available IPs in pool <#{pool}>"
312
324
  end
325
+
313
326
  config[:floating_ip] = free_addrs[0]
314
327
  end
315
328
  attach_ip(server, config[:floating_ip])
@@ -325,7 +338,7 @@ module Kitchen
325
338
  begin
326
339
  pub = server.public_ip_addresses
327
340
  priv = server.private_ip_addresses
328
- rescue Fog::Compute::OpenStack::NotFound, Excon::Errors::Forbidden
341
+ rescue Fog::OpenStack::Compute::NotFound, Excon::Errors::Forbidden
329
342
  # See Fog issue: https://github.com/fog/fog/issues/2160
330
343
  addrs = server.addresses
331
344
  addrs["public"] && pub = addrs["public"].map { |i| i["addr"] }
@@ -352,8 +365,7 @@ module Kitchen
352
365
  # should also work for private networks
353
366
  if config[:openstack_network_name]
354
367
  debug "Using configured net: #{config[:openstack_network_name]}"
355
- return filter_ips(server.addresses[config[:openstack_network_name]])
356
- .first["addr"]
368
+ return filter_ips(server.addresses[config[:openstack_network_name]]).first["addr"]
357
369
  end
358
370
 
359
371
  pub, priv = get_public_private_ips(server)
@@ -361,7 +373,7 @@ module Kitchen
361
373
  pub, priv = parse_ips(pub, priv)
362
374
  pub[config[:public_ip_order].to_i] ||
363
375
  priv[config[:private_ip_order].to_i] ||
364
- fail(ActionFailed, "Could not find an IP") # rubocop:disable SignalException
376
+ raise(ActionFailed, "Could not find an IP")
365
377
  end
366
378
 
367
379
  def filter_ips(addresses)
@@ -406,7 +418,7 @@ module Kitchen
406
418
  end
407
419
 
408
420
  def disable_ssl_validation
409
- require "excon"
421
+ require "excon" unless defined?(Excon)
410
422
  Excon.defaults[:ssl_verify_peer] = false
411
423
  end
412
424
 
@@ -436,7 +448,7 @@ module Kitchen
436
448
  if name.start_with?("/") && name.end_with?("/")
437
449
  regex = Regexp.new(name[1...-1])
438
450
  # check for regex name match
439
- collection.each { |single| return single if regex =~ single.name }
451
+ collection.each { |single| return single if regex&.match?(single.name) }
440
452
  else
441
453
  # check for exact id match
442
454
  collection.each { |single| return single if single.id == name }
@@ -1,4 +1,4 @@
1
- # Encoding: UTF-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  #
4
4
  # Author:: Jonathan Hartman (<j@p4nt5.com>)
@@ -35,7 +35,7 @@ module Kitchen
35
35
  end
36
36
 
37
37
  def volume(openstack_server)
38
- Fog::Volume.new(openstack_server)
38
+ Fog::OpenStack::Volume.new(openstack_server)
39
39
  end
40
40
 
41
41
  def create_volume(config, os)
@@ -47,10 +47,13 @@ module Kitchen
47
47
  opt[key] = bdm[key]
48
48
  end
49
49
  @logger.info "Creating Volume..."
50
- resp = volume(os).create_volume("#{config[:server_name]}-volume",
51
- "#{config[:server_name]} volume",
52
- bdm[:volume_size],
53
- opt)
50
+ resp = volume(os)
51
+ .create_volume(
52
+ "#{config[:server_name]}-volume",
53
+ "#{config[:server_name]} volume",
54
+ bdm[:volume_size],
55
+ opt
56
+ )
54
57
  vol_id = resp[:body]["volume"]["id"]
55
58
 
56
59
  # Get Volume Model to make waiting for ready easy
@@ -66,9 +69,17 @@ module Kitchen
66
69
  vol_model.wait_for(creation_timeout) do
67
70
  sleep(1)
68
71
  raise("Failed to make volume") if status.casecmp("error".downcase) == 0
72
+
69
73
  ready?
70
74
  end
71
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
+
72
83
  @logger.debug "Volume Ready"
73
84
 
74
85
  vol_id
@@ -1,10 +1,10 @@
1
- # Encoding: UTF-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  #
4
4
  # Author:: Jonathan Hartman (<j@p4nt5.com>)
5
5
  #
6
6
  # Copyright (C) 2013-2015, Jonathan Hartman
7
- # Copyright (C) 2015-2018, Chef Software Inc
7
+ # Copyright (C) 2015-2021, Chef Software Inc
8
8
  #
9
9
  # Licensed under the Apache License, Version 2.0 (the "License");
10
10
  # you may not use this file except in compliance with the License.
@@ -23,6 +23,6 @@ module Kitchen
23
23
  #
24
24
  # @author Jonathan Hartman <j@p4nt5.com>
25
25
  module Driver
26
- OPENSTACK_VERSION = "3.6.1".freeze
26
+ OPENSTACK_VERSION = "6.0.0"
27
27
  end
28
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: 3.6.1
4
+ version: 6.0.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: 2018-06-06 00:00:00.000000000 Z
12
+ date: 2021-02-17 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: '3'
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: '3'
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.1'
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.1'
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.0.0
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
- rubyforge_project:
259
- rubygems_version: 2.5.1
260
- signing_key:
177
+ rubygems_version: 3.1.4
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: []