kitchen-openstack 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -1
- data/README.md +29 -5
- data/lib/kitchen/driver/openstack.rb +13 -3
- data/lib/kitchen/driver/openstack_version.rb +1 -1
- data/spec/kitchen/driver/openstack/volume_spec.rb +0 -1
- data/spec/kitchen/driver/openstack_spec.rb +115 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d66ce0ff71e2179911c7fa1b6537621df9807ac0
|
4
|
+
data.tar.gz: d1c8922782d6c668225bb025bbbadb49db017c89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4938e5b6b9ee42907c96afdb8440699c85dc61d8572d92371d40a1497a8bbe333502277bb9836e3b5b11a59ea0ea130b4ebc8230d0442d475abbb2bd3293e5af
|
7
|
+
data.tar.gz: 6dcd850d52c56601b4b77426cd45fdb7afc23992f0cd0a049cfd4886f2a648df5ae35aa420c0ddcdedc291bf380f81fd5cd0778ce8139022257c11ed3b7d3708
|
data/CHANGELOG.md
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
-
## [v3.
|
3
|
+
## [v3.3.0](https://github.com/test-kitchen/kitchen-openstack/tree/v3.3.0)
|
4
4
|
|
5
|
+
[Full Changelog](https://github.com/test-kitchen/kitchen-openstack/compare/v3.2.0...v3.3.0)
|
6
|
+
|
7
|
+
**Merged pull requests:**
|
8
|
+
|
9
|
+
- Uuids [\#159](https://github.com/test-kitchen/kitchen-openstack/pull/159) ([boc-tothefuture](https://github.com/boc-tothefuture))
|
10
|
+
|
11
|
+
## [v3.2.0](https://github.com/test-kitchen/kitchen-openstack/tree/v3.2.0) (2017-03-02)
|
5
12
|
[Full Changelog](https://github.com/test-kitchen/kitchen-openstack/compare/v3.1.0...v3.2.0)
|
6
13
|
|
7
14
|
**Closed issues:**
|
8
15
|
|
16
|
+
- Expose excon timeouts to kitchen [\#157](https://github.com/test-kitchen/kitchen-openstack/issues/157)
|
9
17
|
- Enhancement: generate openstack keypair on create [\#150](https://github.com/test-kitchen/kitchen-openstack/issues/150)
|
10
18
|
- kitchen-openstack should use SSH Agent [\#149](https://github.com/test-kitchen/kitchen-openstack/issues/149)
|
11
19
|
- Permission Denied on kitchen runs after first [\#146](https://github.com/test-kitchen/kitchen-openstack/issues/146)
|
@@ -14,6 +22,7 @@
|
|
14
22
|
|
15
23
|
**Merged pull requests:**
|
16
24
|
|
25
|
+
- Prep for v3.2.0 [\#158](https://github.com/test-kitchen/kitchen-openstack/pull/158) ([jjasghar](https://github.com/jjasghar))
|
17
26
|
- Expose excon timeout configuration [\#156](https://github.com/test-kitchen/kitchen-openstack/pull/156) ([MariusCC](https://github.com/MariusCC))
|
18
27
|
- Dynamically allocate Floating IP for the test server. [\#155](https://github.com/test-kitchen/kitchen-openstack/pull/155) ([dannytrigo](https://github.com/dannytrigo))
|
19
28
|
- Defer ssh key handling to transport. [\#154](https://github.com/test-kitchen/kitchen-openstack/pull/154) ([cliles](https://github.com/cliles))
|
data/README.md
CHANGED
@@ -87,11 +87,23 @@ All of Fog's `openstack` options (`openstack_domain_name`, `openstack_project_na
|
|
87
87
|
|
88
88
|
### image\_ref
|
89
89
|
|
90
|
-
**
|
90
|
+
**image_ref or image_id required** Server Image Name or ID.
|
91
|
+
|
92
|
+
### image\_id
|
93
|
+
|
94
|
+
**image_ref or image_id required** Server Image ID. Specifying the ID instead of reference results in a faster create time.
|
95
|
+
|
96
|
+
**Note** If the image UUID changes this value will need to be updated.
|
91
97
|
|
92
98
|
### flavor\_ref
|
93
99
|
|
94
|
-
**
|
100
|
+
**flavor_ref or flavor_id required** Server Flavor Name or ID.
|
101
|
+
|
102
|
+
### flavor\_ref
|
103
|
+
|
104
|
+
**flavor_ref or flavor_id required** Server Flavor ID. Specifying the ID instead of reference results in a faster create time.
|
105
|
+
|
106
|
+
**Note** If the flavor UUID changes this value will need to be updated.
|
95
107
|
|
96
108
|
### server\_name
|
97
109
|
|
@@ -190,12 +202,24 @@ If your vms require config drive.
|
|
190
202
|
|
191
203
|
### network\_ref
|
192
204
|
|
193
|
-
**Deprecated** A list of network names
|
205
|
+
**Deprecated** A list of network names to create instances with.
|
206
|
+
|
207
|
+
```yaml
|
208
|
+
network_ref:
|
209
|
+
- [OPENSTACK NETWORK NAMES]
|
210
|
+
- [CREATE INSTANCE WITH]
|
211
|
+
```
|
212
|
+
|
213
|
+
### network\_id
|
214
|
+
|
215
|
+
A list of network ids to create instances with. Specifying the id instead of reference results in a faster create time.
|
216
|
+
|
217
|
+
**Note** If the network UUID changes this value will need to be updated.
|
194
218
|
|
195
219
|
```yaml
|
196
220
|
network_ref:
|
197
|
-
- [OPENSTACK NETWORK
|
198
|
-
- [
|
221
|
+
- [OPENSTACK NETWORK UUIDs]
|
222
|
+
- [TO CREATE INSTANCE WITH]
|
199
223
|
```
|
200
224
|
|
201
225
|
### no\_ssh\_tcp\_check
|
@@ -51,6 +51,7 @@ module Kitchen
|
|
51
51
|
default_config :availability_zone, nil
|
52
52
|
default_config :security_groups, nil
|
53
53
|
default_config :network_ref, nil
|
54
|
+
default_config :network_id, nil
|
54
55
|
default_config :no_ssh_tcp_check, false
|
55
56
|
default_config :no_ssh_tcp_check_sleep, 120
|
56
57
|
default_config :glance_cache_wait_timeout, 600
|
@@ -166,7 +167,13 @@ module Kitchen
|
|
166
167
|
|
167
168
|
def create_server
|
168
169
|
server_def = init_configuration
|
169
|
-
if config[:network_ref]
|
170
|
+
fail(ActionFailed, 'Cannot specify both network_ref and network_id') if config[:network_id] && config[:network_ref] # rubocop:disable Metrics/LineLength, SignalException
|
171
|
+
if config[:network_id]
|
172
|
+
networks = [].concat([config[:network_id]])
|
173
|
+
server_def[:nics] = networks.flatten.map do |net_id|
|
174
|
+
{ 'net_id' => net_id }
|
175
|
+
end
|
176
|
+
elsif config[:network_ref]
|
170
177
|
networks = [].concat([config[:network_ref]])
|
171
178
|
server_def[:nics] = networks.flatten.map do |net|
|
172
179
|
{ 'net_id' => find_network(net).id }
|
@@ -193,10 +200,12 @@ module Kitchen
|
|
193
200
|
end
|
194
201
|
|
195
202
|
def init_configuration
|
203
|
+
fail(ActionFailed, 'Cannot specify both image_ref and image_id') if config[:image_id] && config[:image_ref] # rubocop:disable Metrics/LineLength, SignalException
|
204
|
+
fail(ActionFailed, 'Cannot specify both flavor_ref and flavor_id') if config[:flavor_id] && config[:flavor_ref] # rubocop:disable Metrics/LineLength, SignalException
|
196
205
|
{
|
197
206
|
name: config[:server_name],
|
198
|
-
image_ref: find_image(config[:image_ref]).id,
|
199
|
-
flavor_ref: find_flavor(config[:flavor_ref]).id,
|
207
|
+
image_ref: config[:image_id] || find_image(config[:image_ref]).id,
|
208
|
+
flavor_ref: config[:flavor_id] || find_flavor(config[:flavor_ref]).id,
|
200
209
|
availability_zone: config[:availability_zone]
|
201
210
|
}
|
202
211
|
end
|
@@ -315,6 +324,7 @@ module Kitchen
|
|
315
324
|
[pub, priv]
|
316
325
|
end
|
317
326
|
|
327
|
+
# rubocop:disable AbcSize
|
318
328
|
def get_ip(server)
|
319
329
|
if config[:floating_ip]
|
320
330
|
debug "Using floating ip: #{config[:floating_ip]}"
|
@@ -15,7 +15,6 @@ require 'ohai'
|
|
15
15
|
require 'excon'
|
16
16
|
require 'fog'
|
17
17
|
|
18
|
-
# rubocop: disable Metrics/BlockLength
|
19
18
|
describe Kitchen::Driver::Openstack do
|
20
19
|
let(:logged_output) { StringIO.new }
|
21
20
|
let(:logger) { Logger.new(logged_output) }
|
@@ -92,7 +91,9 @@ describe Kitchen::Driver::Openstack do
|
|
92
91
|
let(:config) do
|
93
92
|
{
|
94
93
|
image_ref: '22',
|
94
|
+
image_id: '4391b03e-f7fb-46fd-a356-fa5e42f6d728',
|
95
95
|
flavor_ref: '33',
|
96
|
+
flavor_id: '19a2281e-591e-4b47-be06-631c3c7704e8',
|
96
97
|
public_key_path: '/tmp',
|
97
98
|
username: 'admin',
|
98
99
|
port: '2222',
|
@@ -104,6 +105,7 @@ describe Kitchen::Driver::Openstack do
|
|
104
105
|
floating_ip_pool: 'swimmers',
|
105
106
|
floating_ip: '11111',
|
106
107
|
network_ref: '0xCAFFE',
|
108
|
+
network_id: '57d6e41a-f369-4c92-9ebe-1fbf198bc783',
|
107
109
|
use_ssh_agent: true,
|
108
110
|
connect_timeout: 123,
|
109
111
|
read_timeout: 234,
|
@@ -520,6 +522,78 @@ describe Kitchen::Driver::Openstack do
|
|
520
522
|
end
|
521
523
|
end
|
522
524
|
|
525
|
+
context 'image_id specified' do
|
526
|
+
let(:config) do
|
527
|
+
{
|
528
|
+
server_name: 'hello',
|
529
|
+
image_id: '1e1f4346-e3ea-48ba-9d1b-0002bfcb8981',
|
530
|
+
flavor_ref: '1'
|
531
|
+
}
|
532
|
+
end
|
533
|
+
|
534
|
+
it 'exact id match' do
|
535
|
+
expect(servers).to receive(:create).with(
|
536
|
+
name: 'hello',
|
537
|
+
image_ref: '1e1f4346-e3ea-48ba-9d1b-0002bfcb8981',
|
538
|
+
flavor_ref: '1',
|
539
|
+
availability_zone: nil
|
540
|
+
)
|
541
|
+
driver.send(:create_server)
|
542
|
+
end
|
543
|
+
end
|
544
|
+
|
545
|
+
context 'image_id and image_ref specified' do
|
546
|
+
let(:config) do
|
547
|
+
{
|
548
|
+
server_name: 'hello',
|
549
|
+
image_id: '1e1f4346-e3ea-48ba-9d1b-0002bfcb8981',
|
550
|
+
image_ref: '111',
|
551
|
+
flavor_ref: '1'
|
552
|
+
}
|
553
|
+
end
|
554
|
+
|
555
|
+
it 'raises an exception' do
|
556
|
+
expect { driver.send(:create_server) }.to \
|
557
|
+
raise_error(Kitchen::ActionFailed)
|
558
|
+
end
|
559
|
+
end
|
560
|
+
|
561
|
+
context 'flavor_id specified' do
|
562
|
+
let(:config) do
|
563
|
+
{
|
564
|
+
server_name: 'hello',
|
565
|
+
flavor_id: '1e1f4346-e3ea-48ba-9d1b-0002bfcb8981',
|
566
|
+
image_ref: '111'
|
567
|
+
}
|
568
|
+
end
|
569
|
+
|
570
|
+
it 'exact id match' do
|
571
|
+
expect(servers).to receive(:create).with(
|
572
|
+
name: 'hello',
|
573
|
+
flavor_ref: '1e1f4346-e3ea-48ba-9d1b-0002bfcb8981',
|
574
|
+
image_ref: '111',
|
575
|
+
availability_zone: nil
|
576
|
+
)
|
577
|
+
driver.send(:create_server)
|
578
|
+
end
|
579
|
+
end
|
580
|
+
|
581
|
+
context 'flavor_id and flavor_ref specified' do
|
582
|
+
let(:config) do
|
583
|
+
{
|
584
|
+
server_name: 'hello',
|
585
|
+
image_id: '1e1f4346-e3ea-48ba-9d1b-0002bfcb8981',
|
586
|
+
flavor_id: '1e1f4346-e3ea-48ba-9d1b-0002bfcb8981',
|
587
|
+
flavor_ref: '1'
|
588
|
+
}
|
589
|
+
end
|
590
|
+
|
591
|
+
it 'raises an exception' do
|
592
|
+
expect { driver.send(:create_server) }.to \
|
593
|
+
raise_error(Kitchen::ActionFailed)
|
594
|
+
end
|
595
|
+
end
|
596
|
+
|
523
597
|
context 'image/flavor specifies id' do
|
524
598
|
let(:config) do
|
525
599
|
{
|
@@ -575,6 +649,46 @@ describe Kitchen::Driver::Openstack do
|
|
575
649
|
end
|
576
650
|
end
|
577
651
|
|
652
|
+
context 'network specifies network_id' do
|
653
|
+
let(:config) do
|
654
|
+
{
|
655
|
+
server_name: 'hello',
|
656
|
+
image_ref: '111',
|
657
|
+
flavor_ref: '1',
|
658
|
+
network_id: '0922b7aa-0a2f-4e68-8ff7-2886c4fc472d'
|
659
|
+
}
|
660
|
+
end
|
661
|
+
|
662
|
+
it 'exact id match' do
|
663
|
+
networks = [
|
664
|
+
{ 'net_id' => '0922b7aa-0a2f-4e68-8ff7-2886c4fc472d' }
|
665
|
+
]
|
666
|
+
expect(servers).to receive(:create).with(name: 'hello',
|
667
|
+
image_ref: '111',
|
668
|
+
flavor_ref: '1',
|
669
|
+
availability_zone: nil,
|
670
|
+
nics: networks)
|
671
|
+
driver.send(:create_server)
|
672
|
+
end
|
673
|
+
end
|
674
|
+
|
675
|
+
context 'network_id and network_ref specified' do
|
676
|
+
let(:config) do
|
677
|
+
{
|
678
|
+
server_name: 'hello',
|
679
|
+
image_id: '1e1f4346-e3ea-48ba-9d1b-0002bfcb8981',
|
680
|
+
flavor_id: '1e1f4346-e3ea-48ba-9d1b-0002bfcb8981',
|
681
|
+
network_id: '0922b7aa-0a2f-4e68-8ff7-2886c4fc472d',
|
682
|
+
network_ref: '1'
|
683
|
+
}
|
684
|
+
end
|
685
|
+
|
686
|
+
it 'raises an exception' do
|
687
|
+
expect { driver.send(:create_server) }.to \
|
688
|
+
raise_error(Kitchen::ActionFailed)
|
689
|
+
end
|
690
|
+
end
|
691
|
+
|
578
692
|
context 'network specifies id' do
|
579
693
|
let(:config) do
|
580
694
|
{
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-openstack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Hartman
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-03-
|
12
|
+
date: 2017-03-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: test-kitchen
|