kitchen-rackspace 0.21.0 → 0.21.2

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.
@@ -1,27 +1,19 @@
1
- # Encoding: UTF-8
2
-
3
- require_relative '../../spec_helper'
4
- require_relative '../../../lib/kitchen/driver/rackspace'
5
-
6
- require 'logger'
7
- require 'stringio'
8
- require 'rspec'
9
- require 'kitchen'
1
+ require_relative "../../spec_helper"
10
2
 
11
3
  describe Kitchen::Driver::Rackspace do
12
4
  let(:logged_output) { StringIO.new }
13
5
  let(:logger) { Logger.new(logged_output) }
14
- let(:config) { Hash.new }
15
- let(:state) { Hash.new }
16
- let(:platform_name) { 'ubuntu' }
6
+ let(:config) { {} }
7
+ let(:state) { {} }
8
+ let(:platform_name) { "ubuntu" }
17
9
  let(:default_networks) { nil }
18
- let(:instance_name) { 'potatoes' }
10
+ let(:instance_name) { "potatoes" }
19
11
 
20
12
  let(:instance) do
21
13
  double(
22
14
  name: instance_name,
23
- logger: logger,
24
- to_str: 'instance',
15
+ logger:,
16
+ to_str: "instance",
25
17
  platform: double(name: platform_name)
26
18
  )
27
19
  end
@@ -31,115 +23,117 @@ describe Kitchen::Driver::Rackspace do
31
23
  before(:each) do
32
24
  allow_any_instance_of(described_class).to receive(:instance)
33
25
  .and_return(instance)
34
- ENV['RACKSPACE_USERNAME'] = 'user'
35
- ENV['RACKSPACE_API_KEY'] = 'key'
26
+ ENV["RACKSPACE_USERNAME"] = "user"
27
+ ENV["RACKSPACE_API_KEY"] = "key"
36
28
  end
37
29
 
38
- describe '#initialize' do
30
+ describe "#initialize" do
39
31
  before(:each) do
40
32
  allow(Fog).to receive(:timeout=)
41
33
  end
42
34
 
43
- context 'default options' do
44
- it 'defaults to v2 cloud' do
45
- expect(driver[:version]).to eq('v2')
35
+ context "default options" do
36
+ it "defaults to v2 cloud" do
37
+ expect(driver[:version]).to eq("v2")
46
38
  end
47
39
 
48
- it 'defaults to the smallest flavor size' do
49
- expect(driver[:flavor_id]).to eq('performance1-1')
40
+ it "defaults to the smallest flavor size" do
41
+ expect(driver[:flavor_id]).to eq("performance1-1")
50
42
  end
51
43
 
52
44
  it "defaults to local user's SSH public key" do
53
- path = File.expand_path('~/.ssh/id_rsa.pub')
45
+ path = File.expand_path("~/.ssh/id_rsa.pub")
54
46
  expect(File).to receive(:exist?).with(path).and_return(true)
55
47
  expect(driver[:public_key_path]).to eq(path)
56
48
  end
57
49
 
58
- it 'defaults to SSH with root user on port 22' do
59
- expect(driver[:username]).to eq('root')
60
- expect(driver[:port]).to eq('22')
50
+ it "defaults to SSH with root user on port 22" do
51
+ expect(driver[:username]).to eq("root")
52
+ expect(driver[:port]).to eq("22")
61
53
  end
62
54
 
63
- it 'defaults to a random server name' do
55
+ it "defaults to a random server name" do
64
56
  expect(driver[:server_name]).to be_a(String)
65
57
  end
66
58
 
67
- it 'defaults to the DFW region' do
68
- expect(driver[:rackspace_region]).to eq('dfw')
59
+ it "defaults to the DFW region" do
60
+ expect(driver[:rackspace_region]).to eq("dfw")
69
61
  end
70
62
 
71
- it 'defaults to username from $RACKSPACE_USERNAME' do
72
- expect(driver[:rackspace_username]).to eq('user')
63
+ it "defaults to username from $RACKSPACE_USERNAME" do
64
+ expect(driver[:rackspace_username]).to eq("user")
73
65
  end
74
66
 
75
- it 'defaults to API key from $RACKSPACE_API_KEY' do
76
- expect(driver[:rackspace_api_key]).to eq('key')
67
+ it "defaults to API key from $RACKSPACE_API_KEY" do
68
+ expect(driver[:rackspace_api_key]).to eq("key")
77
69
  end
78
70
 
79
- it 'defaults to wait_for timeout of 600 seconds' do
71
+ it "defaults to wait_for timeout of 600 seconds" do
80
72
  expect(driver[:wait_for]).to eq(600)
81
73
  expect(Fog).to have_received(:timeout=).with(600)
82
74
  end
83
75
 
84
- it 'defaults the SSH TCP bypassing to false' do
76
+ it "defaults the SSH TCP bypassing to false" do
85
77
  expect(driver[:no_ssh_tcp_check]).to eq(false)
86
78
  end
87
79
 
88
- it 'defaults the TCP bypass sleep time to 120 seconds' do
80
+ it "defaults the TCP bypass sleep time to 120 seconds" do
89
81
  expect(driver[:no_ssh_tcp_check_sleep]).to eq(120)
90
82
  end
91
83
 
92
- it 'defaults to the standard Rackspace networks' do
84
+ it "defaults to the standard Rackspace networks" do
93
85
  expect(driver[:networks]).to eq(default_networks)
94
86
  end
95
87
 
96
- it 'defaults to not waiting for rackconnect' do
88
+ it "defaults to not waiting for rackconnect" do
97
89
  expect(driver[:rackconnect_wait]).to eq(false)
98
90
  end
99
91
 
100
- it 'defaults to not waiting for managed service level' do
92
+ it "defaults to not waiting for managed service level" do
101
93
  expect(driver[:servicelevel_wait]).to eq(false)
102
94
  end
103
95
 
104
- it 'defaults to the public ip address' do
96
+ it "defaults to the public ip address" do
105
97
  expect(driver[:servicenet]).to eq(false)
106
98
  end
107
99
 
108
- it 'defaults to no_passwd_lock as false' do
100
+ it "defaults to no_passwd_lock as false" do
109
101
  expect(driver[:no_passwd_lock]).to eq(false)
110
102
  end
111
103
  end
112
104
 
113
105
  platforms = {
114
- 'ubuntu-12.04' => 'cd276808-5fac-4903-9940-68857095c844',
115
- 'ubuntu-12' => 'cd276808-5fac-4903-9940-68857095c844',
116
- 'ubuntu' => '7a412a16-c9da-4c30-be5e-225633bde788',
117
- 'centos-5' => 'f338b541-bf6a-4ceb-a795-730e05a601f6',
118
- 'centos' => 'c22f593a-4064-4a12-8229-e70a4b0ccc09'
106
+ "ubuntu-12.04" => "f2d30a56-bc2b-4906-8027-92f8a45bbb10",
107
+ "ubuntu-12" => "f2d30a56-bc2b-4906-8027-92f8a45bbb10",
108
+ "ubuntu-14.04" => "e6baca58-c5f4-48d3-901a-abdeb0cfe907",
109
+ "ubuntu-14" => "e6baca58-c5f4-48d3-901a-abdeb0cfe907",
110
+ "ubuntu" => "9b3ae961-0ba0-4d5a-973f-2e79043f0ddd",
111
+ "centos-6" => "7d791876-4c8f-44a2-8d4b-e84bfb0b1c8c",
112
+ "centos" => "1a79f262-33d2-428c-924b-9852a6c15ea8",
119
113
  }
120
114
  platforms.each do |platform, id|
121
115
  context "name is #{platform}" do
122
116
  let(:platform_name) { platform }
123
117
 
124
- it 'defaults to the correct image ID' do
118
+ it "defaults to the correct image ID" do
125
119
  expect(driver[:image_id]).to eq(id)
126
120
  end
127
121
  end
128
122
  end
129
123
 
130
- context 'overridden options' do
124
+ context "overridden options" do
131
125
  config = {
132
- image_id: '22',
133
- flavor_id: '33',
134
- public_key_path: '/tmp',
135
- username: 'admin',
136
- port: '2222',
137
- server_name: 'puppy',
138
- rackspace_region: 'ord',
126
+ image_id: "22",
127
+ flavor_id: "33",
128
+ public_key_path: "/tmp",
129
+ username: "admin",
130
+ port: "2222",
131
+ server_name: "puppy",
132
+ rackspace_region: "ord",
139
133
  wait_for: 1200,
140
134
  rackconnect_wait: true,
141
135
  servicelevel_wait: true,
142
- use_private_ip_address: true
136
+ use_private_ip_address: true,
143
137
  }
144
138
 
145
139
  let(:config) { config }
@@ -150,283 +144,289 @@ describe Kitchen::Driver::Rackspace do
150
144
  end
151
145
  end
152
146
 
153
- it 'sets the new wait_for variable' do
147
+ it "sets the new wait_for variable" do
154
148
  expect(driver[:wait_for]).to eq(1200)
155
149
  expect(Fog).to have_received(:timeout=).with(1200)
156
150
  end
157
151
  end
158
152
 
159
- context 'OpenStack environment variables' do
153
+ context "OpenStack environment variables" do
160
154
  before(:each) do
161
- ENV.delete('RACKSPACE_USERNAME')
162
- ENV.delete('RACKSPACE_API_KEY')
163
- ENV['OS_USERNAME'] = 'os_user'
164
- ENV['OS_PASSWORD'] = 'os_pass'
155
+ ENV.delete("RACKSPACE_USERNAME")
156
+ ENV.delete("RACKSPACE_API_KEY")
157
+ ENV.delete("RACKSPACE_REGION")
158
+ ENV["OS_USERNAME"] = "os_user"
159
+ ENV["OS_PASSWORD"] = "os_pass"
160
+ ENV["OS_REGION_NAME"] = "os_region"
161
+ end
162
+
163
+ it "gets to username from $OS_USERNAME" do
164
+ expect(driver[:rackspace_username]).to eq("os_user")
165
165
  end
166
166
 
167
- it 'gets to username from $OS_USERNAME' do
168
- expect(driver[:rackspace_username]).to eq('os_user')
167
+ it "gets to API key from $OS_PASSWORD" do
168
+ expect(driver[:rackspace_api_key]).to eq("os_pass")
169
169
  end
170
170
 
171
- it 'gets to API key from $OS_PASSWORD' do
172
- expect(driver[:rackspace_api_key]).to eq('os_pass')
171
+ it "gets to region from $OS_REGION_NAME" do
172
+ expect(driver[:rackspace_region]).to eq("os_region")
173
173
  end
174
174
  end
175
175
  end
176
176
 
177
- describe '#create' do
178
- let(:config) { super().merge(wait_for: '1200') }
177
+ describe "#create" do
178
+ let(:config) { super().merge(wait_for: "1200") }
179
179
  let(:server) do
180
- double(id: 'test123',
180
+ double(id: "test123",
181
181
  wait_for: true,
182
- public_ip_address: '1.2.3.4')
182
+ public_ip_address: "1.2.3.4")
183
183
  end
184
184
 
185
185
  before(:each) do
186
186
  {
187
- default_name: 'a_monkey!',
187
+ default_name: "a_monkey!",
188
188
  create_server: server,
189
- tcp_check: true
189
+ tcp_check: true,
190
190
  }.each do |k, v|
191
191
  allow_any_instance_of(described_class).to receive(k).and_return(v)
192
192
  end
193
193
  end
194
194
 
195
- context 'username and API key only provided' do
195
+ context "username and API key only provided" do
196
196
  let(:config) do
197
197
  {
198
- rackspace_username: 'hello',
199
- rackspace_api_key: 'world',
200
- wait_for: 1200
198
+ rackspace_username: "hello",
199
+ rackspace_api_key: "world",
200
+ wait_for: 1200,
201
201
  }
202
202
  end
203
203
 
204
- it 'generates a server name in the absence of one' do
204
+ it "generates a server name in the absence of one" do
205
205
  driver.create(state)
206
- expect(driver[:server_name]).to eq('a_monkey!')
206
+ expect(driver[:server_name]).to eq("a_monkey!")
207
207
  end
208
208
 
209
- it 'gets a proper server ID' do
209
+ it "gets a proper server ID" do
210
210
  driver.create(state)
211
- expect(state[:server_id]).to eq('test123')
211
+ expect(state[:server_id]).to eq("test123")
212
212
  end
213
213
 
214
- it 'gets a proper hostname (IP)' do
214
+ it "gets a proper hostname (IP)" do
215
215
  driver.create(state)
216
- expect(state[:hostname]).to eq('1.2.3.4')
216
+ expect(state[:hostname]).to eq("1.2.3.4")
217
217
  end
218
218
 
219
- it 'calls tcp_check' do
219
+ it "calls tcp_check" do
220
220
  expect(driver).to receive(:tcp_check)
221
221
  driver.create(state)
222
222
  end
223
223
  end
224
224
 
225
- context 'a Fog error' do
225
+ context "a Fog error" do
226
226
  before(:each) do
227
227
  allow_any_instance_of(described_class).to receive(:create_server)
228
- .and_raise(Fog::Errors::Error, 'Uhoh')
228
+ .and_raise(Fog::Errors::Error, "Uhoh")
229
229
  end
230
230
 
231
- it 're-raises the error' do
231
+ it "re-raises the error" do
232
232
  expect { driver.create(state) }.to raise_error(Kitchen::ActionFailed,
233
- 'Uhoh')
233
+ "Uhoh")
234
234
  end
235
235
  end
236
236
  end
237
237
 
238
- describe '#create and rackconnect_wait' do
238
+ describe "#create and rackconnect_wait" do
239
239
  let(:server) do
240
- double(id: 'test123',
240
+ double(id: "test123",
241
241
  wait_for: true,
242
- public_ip_address: '1.2.3.4',
243
- private_ip_address: '10.9.8.7',
242
+ public_ip_address: "1.2.3.4",
243
+ private_ip_address: "10.9.8.7",
244
244
  update: nil)
245
245
  end
246
246
 
247
247
  before(:each) do
248
248
  {
249
- default_name: 'a_monkey!',
249
+ default_name: "a_monkey!",
250
250
  create_server: server,
251
- tcp_check: true
251
+ tcp_check: true,
252
252
  }.each do |k, v|
253
253
  allow_any_instance_of(described_class).to receive(k).and_return(v)
254
254
  end
255
255
  end
256
256
 
257
- context 'username and API key only provided' do
257
+ context "username and API key only provided" do
258
258
  let(:config) do
259
259
  {
260
- rackspace_username: 'hello',
261
- rackspace_api_key: 'world',
260
+ rackspace_username: "hello",
261
+ rackspace_api_key: "world",
262
262
  wait_for: 1200,
263
- rackconnect_wait: true
263
+ rackconnect_wait: true,
264
264
  }
265
265
  end
266
266
 
267
- it 'generates a server name in the absence of one' do
267
+ it "generates a server name in the absence of one" do
268
268
  driver.create(state)
269
- expect(driver[:server_name]).to eq('a_monkey!')
269
+ expect(driver[:server_name]).to eq("a_monkey!")
270
270
  end
271
271
 
272
- it 'gets a proper server ID' do
272
+ it "gets a proper server ID" do
273
273
  driver.create(state)
274
- expect(state[:server_id]).to eq('test123')
274
+ expect(state[:server_id]).to eq("test123")
275
275
  end
276
276
 
277
- it 'gets a proper hostname (IP)' do
277
+ it "gets a proper hostname (IP)" do
278
278
  driver.create(state)
279
- expect(state[:hostname]).to eq('1.2.3.4')
279
+ expect(state[:hostname]).to eq("1.2.3.4")
280
280
  end
281
281
 
282
- it 'calls tcp_check' do
282
+ it "calls tcp_check" do
283
283
  expect(driver).to receive(:tcp_check)
284
284
  driver.create(state)
285
285
  end
286
286
 
287
- it 'calls rackconnect_check ' do
287
+ it "calls rackconnect_check " do
288
288
  expect(driver).to receive(:rackconnect_check)
289
289
  driver.create(state)
290
290
  end
291
291
 
292
- it 'rackconnect_check waits for rackconnect_automation' do
292
+ it "rackconnect_check waits for rackconnect_automation" do
293
293
  expect(server).to receive(:wait_for)
294
294
  driver.send(:rackconnect_check, server)
295
295
  end
296
296
  end
297
297
  end
298
298
 
299
- describe '#create and servicelevel_wait' do
299
+ describe "#create and servicelevel_wait" do
300
300
  let(:server) do
301
- double(id: 'test123',
301
+ double(id: "test123",
302
302
  wait_for: true,
303
- public_ip_address: '1.2.3.4',
304
- private_ip_address: '10.9.8.7',
303
+ public_ip_address: "1.2.3.4",
304
+ private_ip_address: "10.9.8.7",
305
305
  update: nil)
306
306
  end
307
307
 
308
308
  before(:each) do
309
309
  {
310
- default_name: 'a_monkey!',
310
+ default_name: "a_monkey!",
311
311
  create_server: server,
312
- tcp_check: true
312
+ tcp_check: true,
313
313
  }.each do |k, v|
314
314
  allow_any_instance_of(described_class).to receive(k).and_return(v)
315
315
  end
316
316
  end
317
317
 
318
- context 'username and API key only provided' do
318
+ context "username and API key only provided" do
319
319
  let(:config) do
320
320
  {
321
- rackspace_username: 'hello',
322
- rackspace_api_key: 'world',
321
+ rackspace_username: "hello",
322
+ rackspace_api_key: "world",
323
323
  wait_for: 1200,
324
- servicelevel_wait: true
324
+ servicelevel_wait: true,
325
325
  }
326
326
  end
327
327
 
328
- it 'generates a server name in the absence of one' do
328
+ it "generates a server name in the absence of one" do
329
329
  driver.create(state)
330
- expect(driver[:server_name]).to eq('a_monkey!')
330
+ expect(driver[:server_name]).to eq("a_monkey!")
331
331
  end
332
332
 
333
- it 'gets a proper server ID' do
333
+ it "gets a proper server ID" do
334
334
  driver.create(state)
335
- expect(state[:server_id]).to eq('test123')
335
+ expect(state[:server_id]).to eq("test123")
336
336
  end
337
337
 
338
- it 'gets a proper hostname (IP)' do
338
+ it "gets a proper hostname (IP)" do
339
339
  driver.create(state)
340
- expect(state[:hostname]).to eq('1.2.3.4')
340
+ expect(state[:hostname]).to eq("1.2.3.4")
341
341
  end
342
342
 
343
- it 'calls tcp_check' do
343
+ it "calls tcp_check" do
344
344
  expect(driver).to receive(:tcp_check)
345
345
  driver.create(state)
346
346
  end
347
347
 
348
- it 'calls servicelevel_check ' do
348
+ it "calls servicelevel_check " do
349
349
  expect(driver).to receive(:servicelevel_check)
350
350
  driver.create(state)
351
351
  end
352
352
 
353
- it 'servicelevel_check waits for managed service level automation' do
353
+ it "servicelevel_check waits for managed service level automation" do
354
354
  expect(server).to receive(:wait_for)
355
355
  driver.send(:servicelevel_check, server)
356
356
  end
357
357
  end
358
358
  end
359
359
 
360
- describe '#create and use_private_ip_address' do
360
+ describe "#create and use_private_ip_address" do
361
361
  let(:server) do
362
- double(id: 'test123',
362
+ double(id: "test123",
363
363
  wait_for: true,
364
- public_ip_address: '1.2.3.4',
365
- private_ip_address: '10.9.8.7')
364
+ public_ip_address: "1.2.3.4",
365
+ private_ip_address: "10.9.8.7")
366
366
  end
367
367
 
368
368
  before(:each) do
369
369
  {
370
- default_name: 'a_monkey!',
370
+ default_name: "a_monkey!",
371
371
  create_server: server,
372
- tcp_check: true
372
+ tcp_check: true,
373
373
  }.each do |k, v|
374
374
  allow_any_instance_of(described_class).to receive(k).and_return(v)
375
375
  end
376
376
  end
377
377
 
378
- context 'username and API key only provided' do
378
+ context "username and API key only provided" do
379
379
  let(:config) do
380
380
  {
381
- rackspace_username: 'hello',
382
- rackspace_api_key: 'world',
381
+ rackspace_username: "hello",
382
+ rackspace_api_key: "world",
383
383
  wait_for: 1200,
384
- servicenet: true
384
+ servicenet: true,
385
385
  }
386
386
  end
387
387
 
388
- it 'generates a server name in the absence of one' do
388
+ it "generates a server name in the absence of one" do
389
389
  driver.create(state)
390
- expect(driver[:server_name]).to eq('a_monkey!')
390
+ expect(driver[:server_name]).to eq("a_monkey!")
391
391
  end
392
392
 
393
- it 'gets a proper server ID' do
393
+ it "gets a proper server ID" do
394
394
  driver.create(state)
395
- expect(state[:server_id]).to eq('test123')
395
+ expect(state[:server_id]).to eq("test123")
396
396
  end
397
397
 
398
- it 'gets a private ip as the hostname' do
398
+ it "gets a private ip as the hostname" do
399
399
  driver.create(state)
400
- expect(state[:hostname]).to eq('10.9.8.7')
400
+ expect(state[:hostname]).to eq("10.9.8.7")
401
401
  end
402
402
  end
403
403
  end
404
404
 
405
- describe '#destroy' do
406
- let(:server_id) { '12345' }
407
- let(:hostname) { 'example.com' }
408
- let(:state) { { server_id: server_id, hostname: hostname } }
405
+ describe "#destroy" do
406
+ let(:server_id) { "12345" }
407
+ let(:hostname) { "example.com" }
408
+ let(:state) { { server_id:, hostname: } }
409
409
  let(:server) { double(nil?: false, destroy: true) }
410
410
  let(:servers) { double(get: server) }
411
- let(:compute) { double(servers: servers) }
411
+ let(:compute) { double(servers:) }
412
412
 
413
413
  before(:each) do
414
414
  allow_any_instance_of(described_class).to receive(:compute)
415
415
  .and_return(compute)
416
416
  end
417
417
 
418
- context 'a live server that needs to be destroyed' do
419
- it 'destroys the server' do
418
+ context "a live server that needs to be destroyed" do
419
+ it "destroys the server" do
420
420
  expect(state).to receive(:delete).with(:server_id)
421
421
  expect(state).to receive(:delete).with(:hostname)
422
422
  driver.destroy(state)
423
423
  end
424
424
  end
425
425
 
426
- context 'no server ID present' do
427
- let(:state) { Hash.new }
426
+ context "no server ID present" do
427
+ let(:state) { {} }
428
428
 
429
- it 'does nothing' do
429
+ it "does nothing" do
430
430
  allow(driver).to receive(:compute)
431
431
  expect(driver).to_not receive(:compute)
432
432
  expect(state).to_not receive(:delete)
@@ -434,73 +434,75 @@ describe Kitchen::Driver::Rackspace do
434
434
  end
435
435
  end
436
436
 
437
- context 'a server that was already destroyed' do
437
+ context "a server that was already destroyed" do
438
438
  let(:servers) do
439
- s = double('servers')
440
- allow(s).to receive(:get).with('12345').and_return(nil)
439
+ s = double("servers")
440
+ allow(s).to receive(:get).with("12345").and_return(nil)
441
441
  s
442
442
  end
443
- let(:compute) { double(servers: servers) }
443
+ let(:compute) { double(servers:) }
444
444
 
445
445
  before(:each) do
446
446
  allow_any_instance_of(described_class).to receive(:compute)
447
447
  .and_return(compute)
448
448
  end
449
449
 
450
- it 'does not try to destroy the server again' do
450
+ it "does not try to destroy the server again" do
451
451
  allow_message_expectations_on_nil
452
452
  driver.destroy(state)
453
453
  end
454
454
  end
455
455
  end
456
456
 
457
- describe '#compute' do
457
+ describe "#compute" do
458
458
  let(:config) do
459
459
  {
460
- rackspace_username: 'monkey',
461
- rackspace_api_key: 'potato',
462
- rackspace_region: 'ord'
460
+ rackspace_username: "monkey",
461
+ rackspace_api_key: "potato",
462
+ rackspace_region: "ord",
463
463
  }
464
464
  end
465
465
 
466
- context 'all requirements provided' do
467
- it 'creates a new compute connection' do
466
+ context "all requirements provided" do
467
+ it "creates a new compute connection" do
468
468
  allow(Fog::Compute).to receive(:new) { |arg| arg }
469
- res = config.merge(provider: 'Rackspace', version: 'v2')
469
+ res = config.merge(provider: "Rackspace", version: "v2")
470
470
  expect(driver.send(:compute)).to eq(res)
471
471
  end
472
472
  end
473
473
 
474
- context 'no username provided' do
474
+ context "no username provided" do
475
475
  let(:config) do
476
- { rackspace_username: nil, rackspace_api_key: '1234' }
476
+ { rackspace_username: nil, rackspace_api_key: "1234" }
477
477
  end
478
478
 
479
- it 'raises an error' do
479
+ it "raises an error" do
480
480
  expect { driver.send(:compute) }.to raise_error(ArgumentError)
481
481
  end
482
482
  end
483
483
 
484
- context 'no API key provided' do
484
+ context "no API key provided" do
485
485
  let(:config) do
486
- { rackspace_username: 'monkey', rackspace_api_key: nil }
486
+ { rackspace_username: "monkey", rackspace_api_key: nil }
487
487
  end
488
488
 
489
- it 'raises an error' do
489
+ it "raises an error" do
490
490
  expect { driver.send(:compute) }.to raise_error(ArgumentError)
491
491
  end
492
492
  end
493
493
  end
494
494
 
495
- describe '#create_server' do
495
+ describe "#create_server" do
496
496
  let(:config) do
497
497
  {
498
- server_name: 'hello',
499
- image_id: 'there',
500
- flavor_id: 'captain',
501
- public_key_path: 'tarpals',
498
+ server_name: "hello",
499
+ image_id: "there",
500
+ flavor_id: "captain",
501
+ public_key_path: "tarpals",
502
502
  no_passwd_lock: false,
503
- networks: default_networks
503
+ networks: default_networks,
504
+ user_data: nil,
505
+ config_drive: false,
504
506
  }
505
507
  end
506
508
  before(:each) do
@@ -510,48 +512,48 @@ describe Kitchen::Driver::Rackspace do
510
512
  end
511
513
  end
512
514
  let(:servers) do
513
- s = double('servers')
515
+ s = double("servers")
514
516
  allow(s).to receive(:bootstrap) { |arg| arg }
515
517
  s
516
518
  end
517
- let(:compute) { double(servers: servers) }
519
+ let(:compute) { double(servers:) }
518
520
 
519
521
  before(:each) do
520
522
  allow_any_instance_of(described_class).to receive(:compute)
521
523
  .and_return(compute)
522
524
  end
523
525
 
524
- it 'creates the server using a compute connection' do
526
+ it "creates the server using a compute connection" do
525
527
  expect(driver.send(:create_server)).to eq(@expected)
526
528
  end
527
529
 
528
- context 'additional networks specified' do
529
- let(:server_id) { '12345' }
530
+ context "additional networks specified" do
531
+ let(:server_id) { "12345" }
530
532
  let(:server) do
531
- double(id: 'test123', wait_for: true,
532
- public_ip_address: '1.2.3.4')
533
- end
534
- let(:hostname) { 'example.com' }
535
- let(:servers) { double('servers', bootstrap: server) }
536
- let(:compute) { double(Fog::Compute, servers: servers) }
537
- let(:state) { { server_id: server_id, hostname: hostname } }
538
- let(:user_specified_network) { 'bob_dole' }
533
+ double(id: "test123", wait_for: true,
534
+ public_ip_address: "1.2.3.4")
535
+ end
536
+ let(:hostname) { "example.com" }
537
+ let(:servers) { double("servers", bootstrap: server) }
538
+ let(:compute) { double(Fog::Compute, servers:) }
539
+ let(:state) { { server_id:, hostname: } }
540
+ let(:user_specified_network) { "bob_dole" }
539
541
  let(:config) do
540
542
  {
541
- rackspace_username: 'monkey',
542
- rackspace_api_key: 'potato',
543
- rackspace_region: 'ord',
544
- networks: [user_specified_network]
543
+ rackspace_username: "monkey",
544
+ rackspace_api_key: "potato",
545
+ rackspace_region: "ord",
546
+ networks: [user_specified_network],
545
547
  }
546
548
  end
547
549
 
548
550
  before(:each) do
549
- { wait_for_sshd: true, compute: compute }.each do |k, v|
551
+ { wait_for_sshd: true, compute: }.each do |k, v|
550
552
  allow_any_instance_of(described_class).to receive(k).and_return(v)
551
553
  end
552
554
  end
553
555
 
554
- it 'has the user specified network, plus default Rackspace networks' do
556
+ it "has the user specified network, plus default Rackspace networks" do
555
557
  driver.send(:create_server)
556
558
  expect(servers).to have_received(:bootstrap) do |arg|
557
559
  expect(arg[:networks][2]).to eq user_specified_network
@@ -560,67 +562,67 @@ describe Kitchen::Driver::Rackspace do
560
562
  end
561
563
  end
562
564
 
563
- describe '#default_name' do
564
- let(:login) { 'user' }
565
- let(:hostname) { 'host' }
565
+ describe "#default_name" do
566
+ let(:login) { "user" }
567
+ let(:hostname) { "host" }
566
568
 
567
569
  before(:each) do
568
570
  allow(Etc).to receive(:getlogin).and_return(login)
569
571
  allow(Socket).to receive(:gethostname).and_return(hostname)
570
572
  end
571
573
 
572
- it 'generates a name' do
574
+ it "generates a name" do
573
575
  expect(driver.send(:default_name)).to match(/^potatoes-user-host-(\S*)/)
574
576
  end
575
577
 
576
- context 'local node with a long hostname' do
577
- let(:hostname) { 'ab.c' * 20 }
578
+ context "local node with a long hostname" do
579
+ let(:hostname) { "ab.c" * 20 }
578
580
 
579
- it 'limits the generated name to 63 characters' do
581
+ it "limits the generated name to 63 characters" do
580
582
  expect(driver.send(:default_name).length).to be <= 63
581
583
  end
582
584
  end
583
585
 
584
- context 'node with a long hostname, username, and base name' do
585
- let(:login) { 'abcd' * 20 }
586
- let(:hostname) { 'efgh' * 20 }
587
- let(:instance_name) { 'ijkl' * 20 }
586
+ context "node with a long hostname, username, and base name" do
587
+ let(:login) { "abcd" * 20 }
588
+ let(:hostname) { "efgh" * 20 }
589
+ let(:instance_name) { "ijkl" * 20 }
588
590
 
589
- it 'limits the generated name to 63 characters' do
591
+ it "limits the generated name to 63 characters" do
590
592
  expect(driver.send(:default_name).length).to eq(63)
591
593
  end
592
594
  end
593
595
 
594
- context 'a login and hostname with punctuation in them' do
595
- let(:login) { 'some.u-se-r' }
596
- let(:hostname) { 'a.host-name' }
597
- let(:instance_name) { 'a.instance-name' }
596
+ context "a login and hostname with punctuation in them" do
597
+ let(:login) { "some.u-se-r" }
598
+ let(:hostname) { "a.host-name" }
599
+ let(:instance_name) { "a.instance-name" }
598
600
 
599
- it 'strips out the dots to prevent bad server names' do
600
- expect(driver.send(:default_name)).to_not include('.')
601
+ it "strips out the dots to prevent bad server names" do
602
+ expect(driver.send(:default_name)).to_not include(".")
601
603
  end
602
604
 
603
- it 'strips out all but the three hyphen separators' do
604
- expect(driver.send(:default_name).count('-')).to eq(3)
605
+ it "strips out all but the three hyphen separators" do
606
+ expect(driver.send(:default_name).count("-")).to eq(3)
605
607
  end
606
608
  end
607
609
 
608
- context 'a non-login shell' do
610
+ context "a non-login shell" do
609
611
  let(:login) { nil }
610
612
 
611
- it 'subs in a placeholder login string' do
613
+ it "subs in a placeholder login string" do
612
614
  expect(driver.send(:default_name)).to match(/^potatoes-nologin-/)
613
615
  end
614
616
  end
615
617
  end
616
618
 
617
- describe '#tcp_check' do
619
+ describe "#tcp_check" do
618
620
  before(:each) do
619
621
  allow_any_instance_of(described_class).to receive(:wait_for_sshd)
620
622
  allow_any_instance_of(described_class).to receive(:sleep)
621
623
  end
622
624
 
623
- context 'the default non-skipping behavior' do
625
+ context "the default non-skipping behavior" do
624
626
  it "uses Kitchen's own SSH check" do
625
627
  expect(driver).to receive(:wait_for_sshd)
626
628
  expect(driver).to_not receive(:sleep)
@@ -628,10 +630,10 @@ describe Kitchen::Driver::Rackspace do
628
630
  end
629
631
  end
630
632
 
631
- context 'a config set to wait instead of TCP check' do
633
+ context "a config set to wait instead of TCP check" do
632
634
  let(:config) { { no_ssh_tcp_check: true } }
633
635
 
634
- it 'uses a sleep instead of a port check' do
636
+ it "uses a sleep instead of a port check" do
635
637
  expect(driver).to_not receive(:wait_for_sshd)
636
638
  expect(driver).to receive(:sleep)
637
639
  driver.send(:tcp_check, state)
@@ -639,22 +641,22 @@ describe Kitchen::Driver::Rackspace do
639
641
  end
640
642
  end
641
643
 
642
- describe '#networks' do
643
- context 'the default Rackspace networks' do
644
- it 'returns nil so Fog will use the defaults' do
644
+ describe "#networks" do
645
+ context "the default Rackspace networks" do
646
+ it "returns nil so Fog will use the defaults" do
645
647
  expect(driver.send(:networks)).to eq(nil)
646
648
  end
647
649
  end
648
650
 
649
- context 'a custom Rackspace network' do
650
- let(:config) { { networks: %w(abcdefg) } }
651
+ context "a custom Rackspace network" do
652
+ let(:config) { { networks: %w{abcdefg} } }
651
653
 
652
- it 'returns the base networks plus the custom one' do
653
- expected = %w(
654
+ it "returns the base networks plus the custom one" do
655
+ expected = %w{
654
656
  00000000-0000-0000-0000-000000000000
655
657
  11111111-1111-1111-1111-111111111111
656
658
  abcdefg
657
- )
659
+ }
658
660
  expect(driver.send(:networks)).to eq(expected)
659
661
  end
660
662
  end