vcloud-launcher 0.6.0 → 0.7.0
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.
- data/CHANGELOG.md +6 -0
- data/lib/vcloud/launcher.rb +1 -0
- data/lib/vcloud/launcher/independent_disk_orchestrator.rb +29 -0
- data/lib/vcloud/launcher/schema/vm.rb +11 -0
- data/lib/vcloud/launcher/version.rb +1 -1
- data/lib/vcloud/launcher/vm_orchestrator.rb +3 -0
- data/spec/integration/launcher/data/happy_path.yaml.erb +2 -0
- data/spec/integration/launcher/launch_spec.rb +48 -5
- data/spec/spec_helper.rb +1 -0
- data/spec/support/integration_helper.rb +28 -0
- data/spec/vcloud/launcher/independent_disk_orchestrator_spec.rb +95 -0
- data/spec/vcloud/launcher/schema/launcher_vapps_spec.rb +111 -0
- data/spec/vcloud/launcher/vm_orchestrator_spec.rb +11 -0
- metadata +26 -19
data/CHANGELOG.md
CHANGED
data/lib/vcloud/launcher.rb
CHANGED
@@ -7,6 +7,7 @@ require 'vcloud/launcher/schema/launcher_vapps'
|
|
7
7
|
|
8
8
|
require 'vcloud/launcher/launch'
|
9
9
|
require 'vcloud/launcher/preamble'
|
10
|
+
require 'vcloud/launcher/independent_disk_orchestrator'
|
10
11
|
require 'vcloud/launcher/vm_orchestrator'
|
11
12
|
require 'vcloud/launcher/vapp_orchestrator'
|
12
13
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Vcloud
|
2
|
+
module Launcher
|
3
|
+
class IndependentDiskOrchestrator
|
4
|
+
|
5
|
+
def initialize(vm)
|
6
|
+
@vm = vm
|
7
|
+
end
|
8
|
+
|
9
|
+
def attach(independent_disks_config)
|
10
|
+
disk_list = find_disks(independent_disks_config)
|
11
|
+
@vm.attach_independent_disks(disk_list)
|
12
|
+
end
|
13
|
+
|
14
|
+
def vdc_name
|
15
|
+
return @vdc_name if @vdc_name
|
16
|
+
parent_vapp = Vcloud::Core::Vapp.get_by_child_vm_id(@vm.id)
|
17
|
+
parent_vdc = Vcloud::Core::Vdc.new(parent_vapp.vdc_id)
|
18
|
+
@vdc_name = parent_vdc.name
|
19
|
+
end
|
20
|
+
|
21
|
+
def find_disks(independent_disks_config)
|
22
|
+
independent_disks_config.map do |disk|
|
23
|
+
Vcloud::Core::IndependentDisk.get_by_name_and_vdc_name(disk[:name], vdc_name)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -40,6 +40,17 @@ module Vcloud
|
|
40
40
|
},
|
41
41
|
},
|
42
42
|
},
|
43
|
+
independent_disks: {
|
44
|
+
type: 'array',
|
45
|
+
required: false,
|
46
|
+
allowed_empty: true,
|
47
|
+
each_element_is: {
|
48
|
+
type: 'hash',
|
49
|
+
internals: {
|
50
|
+
name: { type: 'string', required: true },
|
51
|
+
},
|
52
|
+
},
|
53
|
+
},
|
43
54
|
bootstrap: {
|
44
55
|
type: 'hash',
|
45
56
|
required: false,
|
@@ -17,6 +17,9 @@ module Vcloud
|
|
17
17
|
end
|
18
18
|
@vm.add_extra_disks(vm_config[:extra_disks])
|
19
19
|
@vm.update_metadata(vm_config[:metadata])
|
20
|
+
if vm_config.key?(:independent_disks)
|
21
|
+
Vcloud::Launcher::IndependentDiskOrchestrator.new(@vm).attach(vm_config.fetch(:independent_disks))
|
22
|
+
end
|
20
23
|
|
21
24
|
preamble = vm_config[:bootstrap] ? generate_preamble(vm_config) : ''
|
22
25
|
|
@@ -81,6 +81,11 @@ describe Vcloud::Launcher::Launch do
|
|
81
81
|
context "happy path" do
|
82
82
|
before(:all) do
|
83
83
|
@test_data = define_test_data
|
84
|
+
@test_case_independent_disks = IntegrationHelper.create_test_case_independent_disks(
|
85
|
+
1, @test_data[:vdc_name], '100MB')
|
86
|
+
@test_independent_disk = @test_case_independent_disks.first
|
87
|
+
@test_data[:independent_disk_name] = @test_independent_disk.name
|
88
|
+
|
84
89
|
@config_yaml = ErbHelper.convert_erb_template_to_yaml(@test_data, File.join(File.dirname(__FILE__), 'data/happy_path.yaml.erb'))
|
85
90
|
@api_interface = Vcloud::Core::ApiInterface.new
|
86
91
|
Vcloud::Launcher::Launch.new(@config_yaml, { "dont-power-on" => true }).run
|
@@ -125,14 +130,22 @@ describe Vcloud::Launcher::Launch do
|
|
125
130
|
expect(@vm_metadata[:is_string]).to eq('Hello World')
|
126
131
|
end
|
127
132
|
|
128
|
-
it "should attach extra hard disks to vm" do
|
129
|
-
disks =
|
133
|
+
it "should attach extra local hard disks to vm" do
|
134
|
+
disks = extract_local_disks(@vm)
|
130
135
|
expect(disks.count).to eq(3)
|
131
136
|
[{:name => 'Hard disk 2', :size => '1024'}, {:name => 'Hard disk 3', :size => '2048'}].each do |new_disk|
|
132
137
|
expect(disks).to include(new_disk)
|
133
138
|
end
|
134
139
|
end
|
135
140
|
|
141
|
+
it "should attach extra independent disks to vm" do
|
142
|
+
disks = extract_independent_disks(@vm)
|
143
|
+
expect(disks.count).to eq(1)
|
144
|
+
[{:name => 'Hard disk 4'}].each do |new_disk|
|
145
|
+
expect(disks).to include(new_disk)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
136
149
|
it "should configure the vm network interface" do
|
137
150
|
vm_network_connection = @vm[:NetworkConnectionSection][:NetworkConnection]
|
138
151
|
expect(vm_network_connection).not_to be_nil
|
@@ -167,12 +180,25 @@ describe Vcloud::Launcher::Launch do
|
|
167
180
|
after(:all) do
|
168
181
|
unless ENV['VCLOUD_TOOLS_RSPEC_NO_DELETE_VAPP']
|
169
182
|
File.delete @config_yaml
|
170
|
-
|
183
|
+
@api_interface.delete_vapp(@vapp_id)
|
184
|
+
wait_for_disks_to_detach
|
185
|
+
IntegrationHelper.delete_independent_disks(@test_case_independent_disks)
|
171
186
|
end
|
172
187
|
end
|
173
188
|
|
174
189
|
end
|
175
190
|
|
191
|
+
def wait_for_disks_to_detach
|
192
|
+
# There is an annoying delay after a vapp is deleted before any attached
|
193
|
+
# independent disks are registered as detached in vCD. The
|
194
|
+
# disk#attached_vms call lies during this period too, so cannot be used to
|
195
|
+
# ascertain that the disk is completely detached.
|
196
|
+
#
|
197
|
+
# As a result, just wait for a sufficiently long time for vCD to get its
|
198
|
+
# act together.
|
199
|
+
sleep(20)
|
200
|
+
end
|
201
|
+
|
176
202
|
def extract_memory(vm)
|
177
203
|
vm[:'ovf:VirtualHardwareSection'][:'ovf:Item'].detect { |i| i[:'rasd:ResourceType'] == '4' }[:'rasd:VirtualQuantity']
|
178
204
|
end
|
@@ -181,9 +207,26 @@ describe Vcloud::Launcher::Launch do
|
|
181
207
|
vm[:'ovf:VirtualHardwareSection'][:'ovf:Item'].detect { |i| i[:'rasd:ResourceType'] == '3' }[:'rasd:VirtualQuantity']
|
182
208
|
end
|
183
209
|
|
184
|
-
def
|
210
|
+
def extract_local_disks(vm)
|
185
211
|
vm[:'ovf:VirtualHardwareSection'][:'ovf:Item'].collect { |d|
|
186
|
-
|
212
|
+
if d[:'rasd:ResourceType'] == '17' && ! d[:'rasd:HostResource'].key?(:vcloud_disk)
|
213
|
+
{
|
214
|
+
:name => d[:"rasd:ElementName"],
|
215
|
+
:size => (
|
216
|
+
d[:"rasd:HostResource"][:ns12_capacity] || d[:"rasd:HostResource"][:vcloud_capacity]
|
217
|
+
)
|
218
|
+
}
|
219
|
+
end
|
220
|
+
}.compact
|
221
|
+
end
|
222
|
+
|
223
|
+
def extract_independent_disks(vm)
|
224
|
+
vm[:'ovf:VirtualHardwareSection'][:'ovf:Item'].collect { |d|
|
225
|
+
if d[:'rasd:ResourceType'] == '17' && d[:'rasd:HostResource'].key?(:vcloud_disk)
|
226
|
+
{
|
227
|
+
:name => d[:"rasd:ElementName"]
|
228
|
+
}
|
229
|
+
end
|
187
230
|
}.compact
|
188
231
|
end
|
189
232
|
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
module IntegrationHelper
|
2
|
+
|
3
|
+
def self.create_test_case_independent_disks(number_of_disks,
|
4
|
+
vdc_name,
|
5
|
+
size,
|
6
|
+
prefix = "vcloud-launcher-tests"
|
7
|
+
)
|
8
|
+
timestamp_in_s = Time.new.to_i
|
9
|
+
base_disk_name = "#{prefix}-#{timestamp_in_s}-"
|
10
|
+
disk_list = []
|
11
|
+
vdc = Vcloud::Core::Vdc.get_by_name(vdc_name)
|
12
|
+
number_of_disks.times do |index|
|
13
|
+
disk_list << Vcloud::Core::IndependentDisk.create(
|
14
|
+
vdc,
|
15
|
+
base_disk_name + index.to_s,
|
16
|
+
size,
|
17
|
+
)
|
18
|
+
end
|
19
|
+
disk_list
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.delete_independent_disks(disk_list)
|
23
|
+
disk_list.each do |disk|
|
24
|
+
disk.destroy
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Vcloud::Launcher::IndependentDiskOrchestrator do
|
4
|
+
|
5
|
+
let(:mock_vm) {
|
6
|
+
double(
|
7
|
+
:vm,
|
8
|
+
:id => 'vm-12341234-1234-1234-1234-123412340001',
|
9
|
+
:vapp_name => 'web-app1',
|
10
|
+
:name => 'test-vm-1'
|
11
|
+
)
|
12
|
+
}
|
13
|
+
|
14
|
+
let(:mock_parent_vapp) {
|
15
|
+
double(
|
16
|
+
:vapp,
|
17
|
+
:id => 'vapp-12341234-1234-1234-1234-123412340000',
|
18
|
+
:name => 'web-app1',
|
19
|
+
:vdc_id => '12341234-1234-1234-1234-123412349999',
|
20
|
+
)
|
21
|
+
}
|
22
|
+
|
23
|
+
let(:mock_parent_vdc) {
|
24
|
+
double(
|
25
|
+
:vdc,
|
26
|
+
:id => '12341234-1234-1234-1234-123412349999',
|
27
|
+
:name => 'test-vdc-1',
|
28
|
+
)
|
29
|
+
}
|
30
|
+
|
31
|
+
let(:independent_disk_config) {
|
32
|
+
[
|
33
|
+
{:name => 'test-independent-disk-1' },
|
34
|
+
{:name => 'test-independent-disk-2' },
|
35
|
+
]
|
36
|
+
}
|
37
|
+
|
38
|
+
let(:mock_disk_1) {
|
39
|
+
double(
|
40
|
+
:independent_disk_1,
|
41
|
+
:id => '12341234-1234-1234-123411110001',
|
42
|
+
:name => 'test-independent-disk-1'
|
43
|
+
)
|
44
|
+
}
|
45
|
+
|
46
|
+
let(:mock_disk_2) {
|
47
|
+
double(
|
48
|
+
:independent_disk_2,
|
49
|
+
:id => '12341234-1234-1234-123411110002',
|
50
|
+
:name => 'test-independent-disk-2'
|
51
|
+
)
|
52
|
+
}
|
53
|
+
|
54
|
+
subject { Vcloud::Launcher::IndependentDiskOrchestrator.new(mock_vm) }
|
55
|
+
|
56
|
+
describe "#vdc_name" do
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#find_disks" do
|
60
|
+
|
61
|
+
before(:each) do
|
62
|
+
expect(Vcloud::Core::Vapp).to receive(:get_by_child_vm_id).with(mock_vm.id).
|
63
|
+
and_return(mock_parent_vapp)
|
64
|
+
expect(Vcloud::Core::Vdc).to receive(:new).with(mock_parent_vapp.vdc_id).
|
65
|
+
and_return(mock_parent_vdc)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "finds Vcloud::Core::IndependentDisk objects from our configuration" do
|
69
|
+
expect(Vcloud::Core::IndependentDisk).
|
70
|
+
to receive(:get_by_name_and_vdc_name).
|
71
|
+
with(independent_disk_config[0][:name], mock_parent_vdc.name).
|
72
|
+
ordered.
|
73
|
+
and_return(mock_disk_1)
|
74
|
+
expect(Vcloud::Core::IndependentDisk).
|
75
|
+
to receive(:get_by_name_and_vdc_name).
|
76
|
+
with(independent_disk_config[1][:name], mock_parent_vdc.name).
|
77
|
+
ordered.
|
78
|
+
and_return(mock_disk_2)
|
79
|
+
expect(subject.find_disks(independent_disk_config)).
|
80
|
+
to eq([mock_disk_1, mock_disk_2])
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "#attach" do
|
86
|
+
it "orchestrates attachment of independent disks to a VM" do
|
87
|
+
expect(subject).to receive(:find_disks).and_return([mock_disk_1, mock_disk_2])
|
88
|
+
expect(mock_vm).to receive(:attach_independent_disks).
|
89
|
+
with([mock_disk_1, mock_disk_2]).
|
90
|
+
and_return(true)
|
91
|
+
expect(subject.attach(independent_disk_config)).to be_true
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Vcloud::Launcher::Schema::LAUNCHER_VAPPS do
|
4
|
+
|
5
|
+
let(:schema) { Vcloud::Launcher::Schema::LAUNCHER_VAPPS }
|
6
|
+
|
7
|
+
context "independent_disks section is present" do
|
8
|
+
|
9
|
+
let(:config) do
|
10
|
+
{ vapps: [
|
11
|
+
{
|
12
|
+
name: "test_vapp_name",
|
13
|
+
vdc_name: "Test VDC",
|
14
|
+
catalog_name: "default",
|
15
|
+
vapp_template_name: "ubuntu-precise",
|
16
|
+
vm: {
|
17
|
+
independent_disks: [ { name: 'indydisk-1' }, { name: 'indydisk-2' } ],
|
18
|
+
}
|
19
|
+
}
|
20
|
+
]
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
it "validates successfully" do
|
25
|
+
validation = Vcloud::Core::ConfigValidator.new(:base, config, schema)
|
26
|
+
expect(validation.valid?).to be_true
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
context "independent_disks section is present but not an array" do
|
32
|
+
|
33
|
+
let(:config) do
|
34
|
+
{ vapps: [
|
35
|
+
{
|
36
|
+
name: "test_vapp_name",
|
37
|
+
vdc_name: "Test VDC",
|
38
|
+
catalog_name: "default",
|
39
|
+
vapp_template_name: "ubuntu-precise",
|
40
|
+
vm: {
|
41
|
+
independent_disks: 'indydisk-1'
|
42
|
+
}
|
43
|
+
}
|
44
|
+
]
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
it "does not validate successfully" do
|
49
|
+
validation = Vcloud::Core::ConfigValidator.new(:base, config, schema)
|
50
|
+
expect(validation.valid?).to be_false
|
51
|
+
expect(validation.errors).to eq(['independent_disks is not an array'])
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
context "independent_disks section is present but not an array of hashes" do
|
57
|
+
|
58
|
+
let(:config) do
|
59
|
+
{ vapps: [
|
60
|
+
{
|
61
|
+
name: "test_vapp_name",
|
62
|
+
vdc_name: "Test VDC",
|
63
|
+
catalog_name: "default",
|
64
|
+
vapp_template_name: "ubuntu-precise",
|
65
|
+
vm: {
|
66
|
+
independent_disks: [ 'indydisk-1', 'indydisk-2' ]
|
67
|
+
}
|
68
|
+
}
|
69
|
+
]
|
70
|
+
}
|
71
|
+
end
|
72
|
+
|
73
|
+
it "does not validate successfully" do
|
74
|
+
validation = Vcloud::Core::ConfigValidator.new(:base, config, schema)
|
75
|
+
expect(validation.valid?).to be_false
|
76
|
+
expect(validation.errors).to eq(
|
77
|
+
['independent_disks: is not a hash', 'independent_disks: is not a hash']
|
78
|
+
)
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
context "independent_disks section is present and a hash, but not contain a :name parameter" do
|
84
|
+
|
85
|
+
let(:config) do
|
86
|
+
{ vapps: [
|
87
|
+
{
|
88
|
+
name: "test_vapp_name",
|
89
|
+
vdc_name: "Test VDC",
|
90
|
+
catalog_name: "default",
|
91
|
+
vapp_template_name: "ubuntu-precise",
|
92
|
+
vm: {
|
93
|
+
independent_disks: [ { nametypo: 'indydisk-1'} ]
|
94
|
+
}
|
95
|
+
}
|
96
|
+
]
|
97
|
+
}
|
98
|
+
end
|
99
|
+
|
100
|
+
it "does not validate successfully" do
|
101
|
+
validation = Vcloud::Core::ConfigValidator.new(:base, config, schema)
|
102
|
+
expect(validation.valid?).to be_false
|
103
|
+
expect(validation.errors).to eq([
|
104
|
+
"independent_disks: parameter 'nametypo' is invalid",
|
105
|
+
"independent_disks: missing 'name' parameter"
|
106
|
+
])
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
@@ -12,6 +12,10 @@ describe Vcloud::Launcher::VmOrchestrator do
|
|
12
12
|
let(:vapp) {
|
13
13
|
double(:vapp, :name => 'web-app1')
|
14
14
|
}
|
15
|
+
let(:mock_disk_orchestrator) {
|
16
|
+
double(:mock_disk_orchestrator)
|
17
|
+
}
|
18
|
+
|
15
19
|
subject {
|
16
20
|
Vcloud::Launcher::VmOrchestrator.new(vcloud_vm, vapp)
|
17
21
|
}
|
@@ -29,6 +33,10 @@ describe Vcloud::Launcher::VmOrchestrator do
|
|
29
33
|
{:name => 'Hard disk 2', :size => '1024'},
|
30
34
|
{:name => 'Hard disk 3', :size => '2048'},
|
31
35
|
],
|
36
|
+
:independent_disks => [
|
37
|
+
{:name => 'test-independent-disk-1' },
|
38
|
+
{:name => 'test-independent-disk-2' },
|
39
|
+
],
|
32
40
|
:network_connections => [
|
33
41
|
{:name => "network1", :ip_address => "198.12.1.21"},
|
34
42
|
],
|
@@ -47,6 +55,9 @@ describe Vcloud::Launcher::VmOrchestrator do
|
|
47
55
|
expect(vm).to receive(:update_memory_size_in_mb).with(4096)
|
48
56
|
expect(vm).to receive(:add_extra_disks).with(vm_config[:extra_disks])
|
49
57
|
expect(vm).to receive(:update_metadata).with(vm_config[:metadata])
|
58
|
+
expect(Vcloud::Launcher::IndependentDiskOrchestrator).
|
59
|
+
to receive(:new).with(vm).and_return(mock_disk_orchestrator)
|
60
|
+
expect(mock_disk_orchestrator).to receive(:attach).with(vm_config[:independent_disks])
|
50
61
|
|
51
62
|
allow(vm).to receive(:configure_guest_customization_section).with('')
|
52
63
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vcloud-launcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-12-
|
12
|
+
date: 2014-12-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: vcloud-core
|
16
|
-
requirement: &
|
16
|
+
requirement: &16107320 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.16.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *16107320
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: gem_publisher
|
27
|
-
requirement: &
|
27
|
+
requirement: &16106340 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - =
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.2.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *16106340
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: pry
|
38
|
-
requirement: &
|
38
|
+
requirement: &16105780 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *16105780
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
|
-
requirement: &
|
49
|
+
requirement: &16104580 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *16104580
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &16103800 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 2.14.1
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *16103800
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rubocop
|
71
|
-
requirement: &
|
71
|
+
requirement: &16102180 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.23.0
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *16102180
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: simplecov
|
82
|
-
requirement: &
|
82
|
+
requirement: &16192900 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 0.7.1
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *16192900
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: vcloud-tools-tester
|
93
|
-
requirement: &
|
93
|
+
requirement: &16192100 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
version: 0.2.0
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *16192100
|
102
102
|
description:
|
103
103
|
email:
|
104
104
|
- anna.shipman@digital.cabinet-office.gov.uk
|
@@ -125,6 +125,7 @@ files:
|
|
125
125
|
- jenkins_tests.sh
|
126
126
|
- lib/vcloud/launcher.rb
|
127
127
|
- lib/vcloud/launcher/cli.rb
|
128
|
+
- lib/vcloud/launcher/independent_disk_orchestrator.rb
|
128
129
|
- lib/vcloud/launcher/launch.rb
|
129
130
|
- lib/vcloud/launcher/preamble.rb
|
130
131
|
- lib/vcloud/launcher/schema/launcher_vapps.rb
|
@@ -146,9 +147,12 @@ files:
|
|
146
147
|
- spec/integration/launcher/storage_profile_integration_spec.rb
|
147
148
|
- spec/integration/vcloud_tools_testing_config.yaml.template
|
148
149
|
- spec/spec_helper.rb
|
150
|
+
- spec/support/integration_helper.rb
|
149
151
|
- spec/vcloud/launcher/cli_spec.rb
|
152
|
+
- spec/vcloud/launcher/independent_disk_orchestrator_spec.rb
|
150
153
|
- spec/vcloud/launcher/launch_spec.rb
|
151
154
|
- spec/vcloud/launcher/preamble_spec.rb
|
155
|
+
- spec/vcloud/launcher/schema/launcher_vapps_spec.rb
|
152
156
|
- spec/vcloud/launcher/vapp_orchestrator_spec.rb
|
153
157
|
- spec/vcloud/launcher/vm_orchestrator_spec.rb
|
154
158
|
- vcloud-launcher.gemspec
|
@@ -173,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
177
|
version: '0'
|
174
178
|
segments:
|
175
179
|
- 0
|
176
|
-
hash:
|
180
|
+
hash: 2886844518648342452
|
177
181
|
requirements: []
|
178
182
|
rubyforge_project:
|
179
183
|
rubygems_version: 1.8.11
|
@@ -193,8 +197,11 @@ test_files:
|
|
193
197
|
- spec/integration/launcher/storage_profile_integration_spec.rb
|
194
198
|
- spec/integration/vcloud_tools_testing_config.yaml.template
|
195
199
|
- spec/spec_helper.rb
|
200
|
+
- spec/support/integration_helper.rb
|
196
201
|
- spec/vcloud/launcher/cli_spec.rb
|
202
|
+
- spec/vcloud/launcher/independent_disk_orchestrator_spec.rb
|
197
203
|
- spec/vcloud/launcher/launch_spec.rb
|
198
204
|
- spec/vcloud/launcher/preamble_spec.rb
|
205
|
+
- spec/vcloud/launcher/schema/launcher_vapps_spec.rb
|
199
206
|
- spec/vcloud/launcher/vapp_orchestrator_spec.rb
|
200
207
|
- spec/vcloud/launcher/vm_orchestrator_spec.rb
|