kitchen-openstack 1.9.0.dev → 2.0.0.dev

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
  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