kitchen-openstack 1.9.0.dev → 2.0.0.dev

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
2
  SHA1:
3
- metadata.gz: 7d16c235a1abe82961c4184bf0e91329fc09257e
4
- data.tar.gz: 7d4dabf334f8c74f5101e8aae6514734fc33ccc3
3
+ metadata.gz: d0fcef6ed3a8627a5040fdd71bce12e068ea0fe2
4
+ data.tar.gz: b1325ba7444d75a0e88db8a2e3429e9f4d3514f6
5
5
  SHA512:
6
- metadata.gz: f671a2b04efe4191d91dcc92f9639cb736e02d5207afd8d2ef5e3f3f00573e97f9024ccf4f5e4e2f08f4147f3a211e175378cac7d8c415b346af04b6f730a853
7
- data.tar.gz: e294a4581e4d42042856e147546739ada5f3510b34b861da514f50d784c5866637ba6107b387f9b10218af12360592fc7c5e0a289c83e263529a1ec9be1c364b
6
+ metadata.gz: 7d89d7bc5d23ddb2617be2e43671d405282531891b2c6a63e70d3993681e301e3f0f46bac27f61cb5feffbd29ab095267240fb7f9c1a01e3b700583c4bb56bca
7
+ data.tar.gz: d5592746386dde26f22029973d9594407e764894331d3d66f9ec3b00060c2e4eefbbc633cc39094978ce4b5df41446062fd82326a06f14c41d02e68f9063612d
@@ -5,18 +5,7 @@ sudo: false
5
5
 
6
6
  gemfile:
7
7
  - Gemfile
8
- - Gemfile.ohai-7
9
8
 
10
9
  rvm:
11
- - 1.9.3
12
10
  - 2.0.0
13
- - ruby-head
14
-
15
- matrix:
16
- exclude:
17
- - rvm: 1.9.3
18
- gemfile: Gemfile
19
- - rvm: 2.0.0
20
- gemfile: Gemfile.ohai-7
21
- - rvm: ruby-head
22
- gemfile: Gemfile.ohai-7
11
+ - ruby-head
@@ -1,4 +1,10 @@
1
- # ?.?.? / ????-??-??
1
+ # 2.0.0 / ????-??-??
2
+
3
+ ### New Features
4
+
5
+ * Re-written for the new test-kitchen underlying framework
6
+ * Windows and WinRM support
7
+ * Stole some code from PR [#80][] - from [@jmahowald][]
2
8
 
3
9
  # 1.8.1 / 2015-07-22
4
10
 
data/README.md CHANGED
@@ -15,7 +15,9 @@
15
15
  An OpenStack Nova driver for Test Kitchen 1.0!
16
16
 
17
17
  Shamelessly copied from [Fletcher Nichol](https://github.com/fnichol)'s
18
- awesome work on an [EC2 driver](https://github.com/opscode/kitchen-ec2).
18
+ awesome work on an [EC2 driver](https://github.com/test-kitchen/kitchen-ec2),
19
+ and [Adam Leff](https://github.com/adamleff)'s
20
+ amazing work on an [VRO driver](https://github.com/chef-partners/kitchen-vro).
19
21
 
20
22
  ## Installation
21
23
 
@@ -39,18 +41,39 @@ Or if using [chefdk](https://downloads.chef.io/chef-dk) install with:
39
41
 
40
42
  Provide, at a minimum, the required driver options in your `.kitchen.yml` file:
41
43
 
42
- driver:
43
- name: openstack
44
- openstack_username: [YOUR OPENSTACK USERNAME]
45
- openstack_api_key: [YOUR OPENSTACK API KEY] # AKA your OPENSTACK PASSWORD
46
- openstack_auth_url: [YOUR OPENSTACK AUTH URL]
47
- require_chef_omnibus: [e.g. 'true' or a version number if you need Chef]
48
- image_ref: [SERVER IMAGE ID]
49
- flavor_ref: [SERVER FLAVOR ID]
44
+ ```yaml
45
+ driver:
46
+ name: openstack
47
+ openstack_username: [YOUR OPENSTACK USERNAME]
48
+ openstack_api_key: [YOUR OPENSTACK API KEY] # AKA your OPENSTACK PASSWORD
49
+ openstack_auth_url: [YOUR OPENSTACK AUTH URL]
50
+ require_chef_omnibus: [e.g. 'true' or a version number if you need Chef]
51
+ image_ref: [SERVER IMAGE ID]
52
+ flavor_ref: [SERVER FLAVOR ID]
53
+ ```
50
54
 
51
55
  The `image_ref` and `flavor_ref` options can be specified as an exact id,
52
56
  an exact name, or as a regular expression matching the name of the image or flavor.
53
57
 
58
+ Test Kitchen 1.4 supports multiple transports, and transports can be configure globally:
59
+
60
+ ```yaml
61
+ transport:
62
+ username: ubuntu
63
+ password: mysecretpassword
64
+ ```
65
+
66
+ ... or per-platform:
67
+
68
+ ```yaml
69
+ platforms:
70
+ name: ubuntu-14.04
71
+ transport:
72
+ password: myrootpassword
73
+ name: windows-2012r2
74
+ password: myadministratorpassword
75
+ ```
76
+
54
77
  By default, a unique server name will be generated and the current user's SSH
55
78
  key will be used (with an RSA key taking precedence over a DSA), though that
56
79
  behavior can be overridden with additional options:
@@ -85,18 +108,25 @@ behavior can be overridden with additional options:
85
108
  availability_zone: [THE BLOCK STORAGE AVAILABILITY ZONE, DEFAULTS TO nova]
86
109
  volume_type: [THE VOLUME TYPE, THIS IS OPTIONAL]
87
110
  delete_on_termination: [WILL DELETE VOLUME ON INSTANCE DESTROY WHEN true, OTHERWISE SET TO false]
111
+ winrm_wait: [DEFAULTS TO 0, BUT THIS HELPS CONFIRM WINRM IS IN A GOOD STATE BEFORE TRYING TO CONNECT]
88
112
 
89
113
  If a `server_name_prefix` is specified then this prefix will be used when
90
114
  generating random names of the form `<NAME PREFIX>-<RANDOM STRING>` e.g.
91
115
  `myproject-asdfghjk`. If both `server_name_prefix` and `server_name` are
92
116
  specified then the `server_name` takes precedence.
93
117
 
118
+ `winrm_wait` is a workaround to deal with how WinRM comes up during machine
119
+ creation. With `cloud-init` running on most OpenStack instances having this
120
+ wait makes sure that the machine is in a good state to work with.
121
+
94
122
  If a `key_name` is provided it will be used instead of any
95
123
  `public_key_path` that is specified.
96
124
 
97
125
  If a `key_name` is provided without any `private_key_path`, unexpected
98
126
  behavior may result if your local RSA/DSA private key doesn't match that
99
- OpenStack key.
127
+ OpenStack key. If you do key injection via `cloud-init` like this issue:
128
+ [#77](https://github.com/test-kitchen/kitchen-openstack/issues/77) the best
129
+ way is to make a "dummy-key."
100
130
 
101
131
  A specific `floating_ip` or the ID of a `floating_ip_pool` can be provided to
102
132
  bind a floating IP to the node. Any floating IP will be the IP used for
data/Rakefile CHANGED
@@ -3,11 +3,8 @@
3
3
  require 'bundler/setup'
4
4
  require 'bundler/gem_tasks'
5
5
  require 'rubocop/rake_task'
6
- require 'cane/rake_task'
7
6
  require 'rspec/core/rake_task'
8
7
 
9
- Cane::RakeTask.new
10
-
11
8
  RuboCop::RakeTask.new
12
9
 
13
10
  desc 'Display LOC stats'
@@ -7,8 +7,8 @@ require 'kitchen/driver/openstack_version'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'kitchen-openstack'
9
9
  spec.version = Kitchen::Driver::OPENSTACK_VERSION
10
- spec.authors = ['Jonathan Hartman']
11
- spec.email = ['j@p4nt5.com']
10
+ spec.authors = ['Jonathan Hartman', 'JJ Asghar']
11
+ spec.email = ['j@p4nt5.com', 'jj@chef.io']
12
12
  spec.description = 'A Test Kitchen OpenStack Nova driver'
13
13
  spec.summary = spec.description
14
14
  spec.homepage = 'https://github.com/test-kitchen/kitchen-openstack'
@@ -19,11 +19,10 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.required_ruby_version = '>= 1.9.3'
22
+ spec.required_ruby_version = '>= 2.0.0'
23
23
 
24
- spec.add_dependency 'test-kitchen', '~> 1.2'
25
- spec.add_dependency 'fog', '~> 1.18'
26
- # Newer Fogs throw a warning if unf isn't there :(
24
+ spec.add_dependency 'test-kitchen', '~> 1.4', '>= 1.4.1'
25
+ spec.add_dependency 'fog', '~> 1.33'
27
26
  spec.add_dependency 'unf'
28
27
  spec.add_dependency 'ohai'
29
28
 
@@ -1,8 +1,10 @@
1
- # Encoding: utf-8
1
+ # Encoding: UTF-8
2
2
  #
3
3
  # Author:: Jonathan Hartman (<j@p4nt5.com>)
4
+ # Author:: JJ Asghar (<jj@chef.io>)
4
5
  #
5
6
  # Copyright (C) 2013-2015, Jonathan Hartman
7
+ # Copyright (C) 2015, Chef Inc
6
8
  #
7
9
  # Licensed under the Apache License, Version 2.0 (the "License");
8
10
  # you may not use this file except in compliance with the License.
@@ -16,23 +18,20 @@
16
18
  # See the License for the specific language governing permissions and
17
19
  # limitations under the License.
18
20
 
19
- require 'benchmark'
20
- require 'fog'
21
21
  require 'kitchen'
22
- require 'etc'
23
- require 'ipaddr'
24
- require 'socket'
22
+ require 'fog'
25
23
  require 'ohai'
26
24
  require_relative 'openstack/volume'
27
25
 
28
26
  module Kitchen
29
27
  module Driver
30
- # Openstack driver for Kitchen.
31
- #
32
- # @author Jonathan Hartman <j@p4nt5.com>
33
- class Openstack < Kitchen::Driver::SSHBase # rubocop:disable Metrics/ClassLength, Metrics/LineLength
28
+ # This takes from the Base Class and creates the OpenStack driver.
29
+ class Openstack < Kitchen::Driver::Base # rubocop:disable Metrics/ClassLength, Metrics/LineLength
34
30
  @@ip_pool_lock = Mutex.new
35
31
 
32
+ kitchen_driver_api_version 2
33
+ plugin_version Kitchen::Driver::OPENSTACK_VERSION
34
+
36
35
  default_config :server_name, nil
37
36
  default_config :server_name_prefix, nil
38
37
  default_config :key_name, nil
@@ -62,6 +61,7 @@ module Kitchen
62
61
  default_config :network_ref, nil
63
62
  default_config :no_ssh_tcp_check, false
64
63
  default_config :no_ssh_tcp_check_sleep, 120
64
+ default_config :winrm_wait, 0
65
65
  default_config :block_device_mapping, nil
66
66
 
67
67
  required_config :private_key_path
@@ -82,23 +82,18 @@ module Kitchen
82
82
  config[:server_name] = default_name
83
83
  end
84
84
  end
85
- config[:disable_ssl_validation] && disable_ssl_validation
85
+ disable_ssl_validation if config[:disable_ssl_validation]
86
86
  server = create_server
87
87
  state[:server_id] = server.id
88
- info "OpenStack instance <#{state[:server_id]}> created."
89
- server.wait_for do
90
- print '.'
91
- ready?
92
- end
93
- info "\n(server ready)"
88
+ info "OpenStack instance with ID of <#{state[:server_id]}> is ready." # rubocop:disable Metrics/LineLength
89
+ sleep 30
94
90
  if config[:floating_ip]
95
91
  attach_ip(server, config[:floating_ip])
96
92
  elsif config[:floating_ip_pool]
97
93
  attach_ip_from_pool(server, config[:floating_ip_pool])
98
94
  end
99
- state[:hostname] = get_ip(server)
100
- setup_ssh(server, state)
101
- wait_for_ssh_key_access(state)
95
+ wait_for_server(state)
96
+ setup_ssh(server, state) if bourne_shell?
102
97
  add_ohai_hint(state)
103
98
  rescue Fog::Errors::Error, Excon::Errors::Error => ex
104
99
  raise ActionFailed, ex.message
@@ -107,7 +102,7 @@ module Kitchen
107
102
  def destroy(state)
108
103
  return if state[:server_id].nil?
109
104
 
110
- config[:disable_ssl_validation] && disable_ssl_validation
105
+ disable_ssl_validation if config[:disable_ssl_validation]
111
106
  server = compute.servers.get(state[:server_id])
112
107
  server.destroy unless server.nil?
113
108
  info "OpenStack instance <#{state[:server_id]}> destroyed."
@@ -117,25 +112,6 @@ module Kitchen
117
112
 
118
113
  private
119
114
 
120
- def wait_for_ssh_key_access(state)
121
- new_state = build_ssh_args(state)
122
- new_state[2][:number_of_password_prompts] = 0
123
- info 'Checking ssh key authentication'
124
- 30.times do
125
- ssh = Fog::SSH.new(*new_state)
126
- begin
127
- ssh.run([%(uname -a)])
128
- rescue => e
129
- info "Server not yet accepting SSH key: #{e.message}"
130
- sleep 1
131
- else
132
- info 'SSH key authetication successful'
133
- return
134
- end
135
- end
136
- fail "30 seconds went by and we couldn't connect, somethings broken"
137
- end
138
-
139
115
  def openstack_server
140
116
  server_def = {
141
117
  provider: 'OpenStack'
@@ -212,7 +188,7 @@ module Kitchen
212
188
  when :security_groups
213
189
  config[c] if config[c].is_a?(Array)
214
190
  when :user_data
215
- File.open(config[c]) { |f| f.read } if File.exist?(config[c])
191
+ File.open(config[c], &:read) if File.exist?(config[c])
216
192
  else
217
193
  config[c]
218
194
  end
@@ -299,7 +275,6 @@ module Kitchen
299
275
  def attach_ip(server, ip)
300
276
  info "Attaching floating IP <#{ip}>"
301
277
  server.associate_address ip
302
- (server.addresses['public'] ||= []) << { 'version' => 4, 'addr' => ip }
303
278
  end
304
279
 
305
280
  def get_public_private_ips(server)
@@ -344,12 +319,25 @@ module Kitchen
344
319
  end
345
320
 
346
321
  def add_ohai_hint(state)
347
- info 'Adding OpenStack hint for ohai'
348
- ssh = Fog::SSH.new(*build_ssh_args(state))
349
- ssh.run([
350
- %(sudo mkdir -p #{Ohai::Config[:hints_path][0]}),
351
- %(sudo touch #{Ohai::Config[:hints_path][0]}/openstack.json)
352
- ])
322
+ if bourne_shell?
323
+ info 'Adding OpenStack hint for ohai'
324
+ mkdir_cmd = "sudo mkdir -p #{hints_path}"
325
+ touch_cmd = "sudo touch #{hints_path}/openstack.json"
326
+ instance.transport.connection(state).execute(
327
+ "#{mkdir_cmd} && #{touch_cmd}"
328
+ )
329
+ elsif windows_os?
330
+ info 'Adding OpenStack hint for ohai'
331
+ mkdir_cmd = "mkdir #{hints_path}"
332
+ touch_cmd = "'' > #{hints_path}\\openstack.json"
333
+ instance.transport.connection(state).execute(
334
+ "#{mkdir_cmd} && #{touch_cmd}"
335
+ )
336
+ end
337
+ end
338
+
339
+ def hints_path
340
+ Ohai::Config[:hints_path][0]
353
341
  end
354
342
 
355
343
  def setup_ssh(server, state)
@@ -386,7 +374,7 @@ module Kitchen
386
374
  config[:username],
387
375
  port: config[:port])
388
376
  end
389
- info '(ssh ready)'
377
+ info "Server #{state[:hostname]} has ssh ready..."
390
378
  end
391
379
 
392
380
  def disable_ssl_validation
@@ -394,6 +382,29 @@ module Kitchen
394
382
  Excon.defaults[:ssl_verify_peer] = false
395
383
  end
396
384
 
385
+ def wait_for_server(state)
386
+ state[:hostname] = get_ip(state)
387
+ if config[:winrm_wait]
388
+ info "Sleeping for #{config[:winrm_wait]} seconds to let WinRM start up..." # rubocop:disable Metrics/LineLength
389
+ countdown(config[:winrm_wait])
390
+ end
391
+ info 'Waiting for server to be ready...'
392
+ instance.transport.connection(state).wait_until_ready
393
+ rescue
394
+ error "Server #{state[:hostname]} (#{state[:server_id]}) not reachable. Destroying server..." # rubocop:disable Metrics/LineLength
395
+ destroy(state)
396
+ raise
397
+ end
398
+
399
+ def countdown(seconds)
400
+ date1 = Time.now + seconds
401
+ while Time.now < date1
402
+ t = Time.at(date1.to_i - Time.now.to_i)
403
+ puts t.strftime('%M:%S')
404
+ sleep 1
405
+ end
406
+ end
407
+
397
408
  def find_matching(collection, name)
398
409
  name = name.to_s
399
410
  if name.start_with?('/') && name.end_with?('/')
@@ -21,7 +21,7 @@ require 'kitchen'
21
21
 
22
22
  module Kitchen
23
23
  module Driver
24
- class Openstack < Kitchen::Driver::SSHBase
24
+ class Openstack < Kitchen::Driver::Base
25
25
  # A class to allow the Kitchen Openstack driver
26
26
  # to use Openstack volumes
27
27
  #
@@ -21,6 +21,6 @@ module Kitchen
21
21
  #
22
22
  # @author Jonathan Hartman <j@p4nt5.com>
23
23
  module Driver
24
- OPENSTACK_VERSION = '1.9.0.dev'
24
+ OPENSTACK_VERSION = '2.0.0.dev'
25
25
  end
26
26
  end
@@ -7,6 +7,10 @@ require 'logger'
7
7
  require 'stringio'
8
8
  require 'rspec'
9
9
  require 'kitchen'
10
+ require 'kitchen/driver/openstack'
11
+ require 'kitchen/provisioner/dummy'
12
+ require 'kitchen/transport/dummy'
13
+ require 'kitchen/verifier/dummy'
10
14
  require 'ohai'
11
15
 
12
16
  describe Kitchen::Driver::Openstack do
@@ -17,10 +21,17 @@ describe Kitchen::Driver::Openstack do
17
21
  let(:dsa) { File.expand_path('~/.ssh/id_dsa') }
18
22
  let(:rsa) { File.expand_path('~/.ssh/id_rsa') }
19
23
  let(:instance_name) { 'potatoes' }
24
+ let(:transport) { Kitchen::Transport::Dummy.new }
25
+ let(:platform) { Kitchen::Platform.new(name: 'fake_platform') }
26
+ let(:driver) { Kitchen::Driver::Openstack.new(config) }
20
27
 
21
28
  let(:instance) do
22
29
  double(
23
- name: instance_name, logger: logger, to_str: 'instance'
30
+ name: instance_name,
31
+ transport: transport,
32
+ logger: logger,
33
+ platform: platform,
34
+ to_str: 'instance'
24
35
  )
25
36
  end
26
37
 
@@ -184,6 +195,7 @@ describe Kitchen::Driver::Openstack do
184
195
  allow(d).to receive(:get_ip).and_return('1.2.3.4')
185
196
  allow(d).to receive(:add_ohai_hint).and_return(true)
186
197
  allow(d).to receive(:do_ssh_setup).and_return(true)
198
+ allow(d).to receive(:sleep)
187
199
  d
188
200
  end
189
201
 
@@ -197,6 +209,28 @@ describe Kitchen::Driver::Openstack do
197
209
  }
198
210
  end
199
211
  end
212
+
213
+ context 'when executed with a bourne shell' do
214
+ before do
215
+ allow(driver).to receive(:bourne_shell?).and_return(true)
216
+ end
217
+
218
+ it 'executes the ssh setup' do
219
+ expect(driver).to receive(:setup_ssh)
220
+ driver.create(state)
221
+ end
222
+ end
223
+
224
+ context 'when executed in a non-bourne shell' do
225
+ before do
226
+ allow(driver).to receive(:bourne_shell?).and_return(false)
227
+ end
228
+
229
+ it 'does not execute the ssh setup' do
230
+ expect(driver).not_to receive(:setup_ssh)
231
+ driver.create(state)
232
+ end
233
+ end
200
234
  end
201
235
 
202
236
  describe '#destroy' do
@@ -812,8 +846,7 @@ describe Kitchen::Driver::Openstack do
812
846
  end
813
847
 
814
848
  it 'associates the IP address with the server' do
815
- expect(driver.send(:attach_ip, server, ip)).to eq(
816
- [{ 'version' => 4, 'addr' => ip }])
849
+ expect(driver.send(:attach_ip, server, ip)).to eq(true)
817
850
  end
818
851
  end
819
852
 
@@ -1067,14 +1100,7 @@ describe Kitchen::Driver::Openstack do
1067
1100
  s
1068
1101
  end
1069
1102
  it 'opens an SSH session to the server' do
1070
- allow(Fog::SSH).to receive(:new).with('host', 'root', anything)
1071
- .and_return(ssh)
1072
- res = driver.send(:add_ohai_hint, state)
1073
- expected = [
1074
- "sudo mkdir -p #{Ohai::Config[:hints_path][0]}",
1075
- "sudo touch #{Ohai::Config[:hints_path][0]}/openstack.json"
1076
- ]
1077
- expect(res).to eq(expected)
1103
+ driver.send(:add_ohai_hint, state)
1078
1104
  end
1079
1105
  end
1080
1106
 
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-openstack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0.dev
4
+ version: 2.0.0.dev
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Hartman
8
+ - JJ Asghar
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-09-03 00:00:00.000000000 Z
12
+ date: 2015-09-09 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: test-kitchen
@@ -16,28 +17,34 @@ dependencies:
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: '1.2'
20
+ version: '1.4'
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.4.1
20
24
  type: :runtime
21
25
  prerelease: false
22
26
  version_requirements: !ruby/object:Gem::Requirement
23
27
  requirements:
24
28
  - - "~>"
25
29
  - !ruby/object:Gem::Version
26
- version: '1.2'
30
+ version: '1.4'
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.4.1
27
34
  - !ruby/object:Gem::Dependency
28
35
  name: fog
29
36
  requirement: !ruby/object:Gem::Requirement
30
37
  requirements:
31
38
  - - "~>"
32
39
  - !ruby/object:Gem::Version
33
- version: '1.18'
40
+ version: '1.33'
34
41
  type: :runtime
35
42
  prerelease: false
36
43
  version_requirements: !ruby/object:Gem::Requirement
37
44
  requirements:
38
45
  - - "~>"
39
46
  - !ruby/object:Gem::Version
40
- version: '1.18'
47
+ version: '1.33'
41
48
  - !ruby/object:Gem::Dependency
42
49
  name: unf
43
50
  requirement: !ruby/object:Gem::Requirement
@@ -195,6 +202,7 @@ dependencies:
195
202
  description: A Test Kitchen OpenStack Nova driver
196
203
  email:
197
204
  - j@p4nt5.com
205
+ - jj@chef.io
198
206
  executables: []
199
207
  extensions: []
200
208
  extra_rdoc_files: []
@@ -204,7 +212,6 @@ files:
204
212
  - ".travis.yml"
205
213
  - CHANGELOG.md
206
214
  - Gemfile
207
- - Gemfile.ohai-7
208
215
  - LICENSE.txt
209
216
  - README.md
210
217
  - Rakefile
@@ -227,7 +234,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
227
234
  requirements:
228
235
  - - ">="
229
236
  - !ruby/object:Gem::Version
230
- version: 1.9.3
237
+ version: 2.0.0
231
238
  required_rubygems_version: !ruby/object:Gem::Requirement
232
239
  requirements:
233
240
  - - ">"
@@ -1,8 +0,0 @@
1
- # Encoding: UTF-8
2
-
3
- source 'https://rubygems.org'
4
-
5
- gem 'ohai', '~> 7.0'
6
-
7
- # Specify your gem's dependencies in kitchen-openstack.gemspec
8
- gemspec