kitchen-openstack 1.8.1 → 1.9.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: cb6b914b94611866e422dabc3cf49b12b27a669e
4
- data.tar.gz: 8afa9715342e7030ef1ff79502f52ee903093380
3
+ metadata.gz: 7d16c235a1abe82961c4184bf0e91329fc09257e
4
+ data.tar.gz: 7d4dabf334f8c74f5101e8aae6514734fc33ccc3
5
5
  SHA512:
6
- metadata.gz: 50a5e198899b658931381439aace29a5f745c64e76ffe9e9db64a227aac60157fe1fd3836b956f09eda16f471b4b8f72662e93b27ad64f9db642896bc8c981a9
7
- data.tar.gz: 31181fa626deffd2467bcf84ebb5e49b1545d70169feebd9687f99000494457268af995964116e5bfac1921b559010136a6ec3364b4a52d04e4a2d02516d4a9d
6
+ metadata.gz: f671a2b04efe4191d91dcc92f9639cb736e02d5207afd8d2ef5e3f3f00573e97f9024ccf4f5e4e2f08f4147f3a211e175378cac7d8c415b346af04b6f730a853
7
+ data.tar.gz: e294a4581e4d42042856e147546739ada5f3510b34b861da514f50d784c5866637ba6107b387f9b10218af12360592fc7c5e0a289c83e263529a1ec9be1c364b
@@ -1,3 +1,5 @@
1
+ # ?.?.? / ????-??-??
2
+
1
3
  # 1.8.1 / 2015-07-22
2
4
 
3
5
  ### Bug Fixes
data/README.md CHANGED
@@ -105,6 +105,28 @@ Test Kitchen's SSH calls to the node.
105
105
  floating_ip: [A SPECIFIC FLOATING IP TO ASSIGN]
106
106
  floating_ip_pool: [AN OPENSTACK POOL NAME TO ASSIGN THE NEXT IP FROM]
107
107
 
108
+ In some complex network scenarios you can have several IP addresses designated
109
+ as public or private. Use `public_ip_order` or `private_ip_order` to control
110
+ which one to use for further SSH connection. Default is 0 (first one)
111
+
112
+ For example if you have openstack istance that has network with several IPs assigned like
113
+
114
+ ```
115
+ +--------------------------------------+------------+--------+------------+-------------+----------------------------------+
116
+ | ID | Name | Status | Task State | Power State | Networks |
117
+ +--------------------------------------+------------+--------+------------+-------------+----------------------------------+
118
+ | 31c98de4-026f-4d12-b03f-a8a35c6e730b | kitchen | ACTIVE | None | Running | test=10.0.0.1, 10.0.1.1 |
119
+
120
+ ```
121
+
122
+ to use second `10.0.1.1` IP address you need to specify
123
+
124
+ ```yaml
125
+ private_ip_order: 1
126
+
127
+ ```
128
+ assuming that test network is configured as private.
129
+
108
130
  The `network_ref` option can be specified as an exact id, an exact name,
109
131
  or as a regular expression matching the name of the network. You can pass one
110
132
 
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  # Encoding: UTF-8
2
2
 
3
3
  require 'bundler/setup'
4
+ require 'bundler/gem_tasks'
4
5
  require 'rubocop/rake_task'
5
6
  require 'cane/rake_task'
6
7
  require 'rspec/core/rake_task'
@@ -17,4 +18,4 @@ end
17
18
 
18
19
  RSpec::Core::RakeTask.new(:spec)
19
20
 
20
- task default: [:cane, :rubocop, :loc, :spec]
21
+ task default: [:rubocop, :loc, :spec]
@@ -1,4 +1,4 @@
1
- # Encoding: UTF-8
1
+ # Encoding: utf-8
2
2
  #
3
3
  # Author:: Jonathan Hartman (<j@p4nt5.com>)
4
4
  #
@@ -30,7 +30,7 @@ module Kitchen
30
30
  # Openstack driver for Kitchen.
31
31
  #
32
32
  # @author Jonathan Hartman <j@p4nt5.com>
33
- class Openstack < Kitchen::Driver::SSHBase
33
+ class Openstack < Kitchen::Driver::SSHBase # rubocop:disable Metrics/ClassLength, Metrics/LineLength
34
34
  @@ip_pool_lock = Mutex.new
35
35
 
36
36
  default_config :server_name, nil
@@ -55,6 +55,8 @@ module Kitchen
55
55
  default_config :openstack_network_name, nil
56
56
  default_config :floating_ip_pool, nil
57
57
  default_config :floating_ip, nil
58
+ default_config :private_ip_order, 0
59
+ default_config :public_ip_order, 0
58
60
  default_config :availability_zone, nil
59
61
  default_config :security_groups, nil
60
62
  default_config :network_ref, nil
@@ -96,6 +98,7 @@ module Kitchen
96
98
  end
97
99
  state[:hostname] = get_ip(server)
98
100
  setup_ssh(server, state)
101
+ wait_for_ssh_key_access(state)
99
102
  add_ohai_hint(state)
100
103
  rescue Fog::Errors::Error, Excon::Errors::Error => ex
101
104
  raise ActionFailed, ex.message
@@ -114,6 +117,25 @@ module Kitchen
114
117
 
115
118
  private
116
119
 
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
+
117
139
  def openstack_server
118
140
  server_def = {
119
141
  provider: 'OpenStack'
@@ -305,7 +327,9 @@ module Kitchen
305
327
  pub, priv = get_public_private_ips(server)
306
328
  priv ||= server.ip_addresses unless pub
307
329
  pub, priv = parse_ips(pub, priv)
308
- pub.first || priv.first || fail(ActionFailed, 'Could not find an IP')
330
+ pub[config[:public_ip_order].to_i] ||
331
+ priv[config[:private_ip_order].to_i] ||
332
+ fail(ActionFailed, 'Could not find an IP')
309
333
  end
310
334
 
311
335
  def parse_ips(pub, priv)
@@ -21,6 +21,6 @@ module Kitchen
21
21
  #
22
22
  # @author Jonathan Hartman <j@p4nt5.com>
23
23
  module Driver
24
- OPENSTACK_VERSION = '1.8.1'
24
+ OPENSTACK_VERSION = '1.9.0.dev'
25
25
  end
26
26
  end
@@ -196,35 +196,6 @@ describe Kitchen::Driver::Openstack do
196
196
  openstack_tenant: 'www'
197
197
  }
198
198
  end
199
-
200
- it 'generates a server name in the absence of one' do
201
- driver.create(state)
202
- expect(driver[:server_name]).to eq('a_monkey!')
203
- end
204
-
205
- it 'gets a proper server ID' do
206
- driver.create(state)
207
- expect(state[:server_id]).to eq('test123')
208
- end
209
-
210
- it 'gets a proper hostname (IP)' do
211
- driver.create(state)
212
- expect(state[:hostname]).to eq('1.2.3.4')
213
- end
214
-
215
- it 'does not disable SSL validation' do
216
- expect(driver).to_not receive(:disable_ssl_validation)
217
- driver.create(state)
218
- end
219
- end
220
-
221
- context 'SSL validation disabled' do
222
- let(:config) { { disable_ssl_validation: true } }
223
-
224
- it 'disables SSL cert validation' do
225
- expect(driver).to receive(:disable_ssl_validation)
226
- driver.create(state)
227
- end
228
199
  end
229
200
  end
230
201
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-openstack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.1
4
+ version: 1.9.0.dev
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Hartman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-22 00:00:00.000000000 Z
11
+ date: 2015-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-kitchen
@@ -230,12 +230,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
230
230
  version: 1.9.3
231
231
  required_rubygems_version: !ruby/object:Gem::Requirement
232
232
  requirements:
233
- - - ">="
233
+ - - ">"
234
234
  - !ruby/object:Gem::Version
235
- version: '0'
235
+ version: 1.3.1
236
236
  requirements: []
237
237
  rubyforge_project:
238
- rubygems_version: 2.4.8
238
+ rubygems_version: 2.2.2
239
239
  signing_key:
240
240
  specification_version: 4
241
241
  summary: A Test Kitchen OpenStack Nova driver
@@ -243,4 +243,3 @@ test_files:
243
243
  - spec/kitchen/driver/openstack/volume_spec.rb
244
244
  - spec/kitchen/driver/openstack_spec.rb
245
245
  - spec/spec_helper.rb
246
- has_rdoc: