vcloud-core 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +2 -0
- data/CHANGELOG.md +10 -1
- data/CONTRIBUTING.md +66 -0
- data/README.md +5 -5
- data/Rakefile +1 -1
- data/lib/vcloud/core/config_validator.rb +20 -20
- data/lib/vcloud/core/query_cli.rb +1 -1
- data/lib/vcloud/core/version.rb +1 -1
- data/lib/vcloud/core/vm.rb +2 -39
- data/lib/vcloud/fog/service_interface.rb +10 -5
- data/spec/integration/README.md +1 -1
- data/spec/integration/core/edge_gateway_spec.rb +133 -0
- data/spec/integration/core/query_runner_spec.rb +10 -4
- data/spec/integration/core/vapp_spec.rb +249 -0
- data/spec/integration/core/vdc_spec.rb +6 -4
- data/spec/integration/core/vm_spec.rb +24 -12
- data/spec/spec_helper.rb +21 -10
- data/spec/support/integration_helper.rb +27 -0
- data/spec/vcloud/core/config_loader_spec.rb +10 -10
- data/spec/vcloud/core/config_validator_spec.rb +7 -0
- data/spec/vcloud/core/edge_gateway_spec.rb +10 -10
- data/spec/vcloud/core/metadata_helper_spec.rb +2 -2
- data/spec/vcloud/core/org_vdc_network_spec.rb +15 -15
- data/spec/vcloud/core/query_runner_spec.rb +13 -13
- data/spec/vcloud/core/query_spec.rb +9 -9
- data/spec/vcloud/core/vapp_spec.rb +19 -19
- data/spec/vcloud/core/vapp_template_spec.rb +9 -9
- data/spec/vcloud/core/vdc_spec.rb +6 -6
- data/spec/vcloud/core/vm_spec.rb +50 -118
- data/spec/vcloud/fog/fog_model_interface_spec.rb +3 -3
- data/spec/vcloud/fog/service_interface_spec.rb +9 -9
- data/vcloud-core.gemspec +6 -6
- metadata +36 -35
- data/spec/integration/edge_gateway/configure_edge_gateway_services_spec.rb +0 -55
- data/spec/integration/edge_gateway/edge_gateway_spec.rb +0 -45
@@ -7,11 +7,11 @@ module Vcloud
|
|
7
7
|
before(:each) do
|
8
8
|
@id = 'vappTemplate-12345678-1234-1234-1234-000000234121'
|
9
9
|
@mock_fog_interface = StubFogInterface.new
|
10
|
-
Vcloud::Fog::ServiceInterface.
|
10
|
+
allow(Vcloud::Fog::ServiceInterface).to receive(:new).and_return(@mock_fog_interface)
|
11
11
|
end
|
12
12
|
|
13
13
|
context "Class public interface" do
|
14
|
-
it { VappTemplate.
|
14
|
+
it { expect(VappTemplate).to respond_to(:get) }
|
15
15
|
end
|
16
16
|
|
17
17
|
context "Instance public interface" do
|
@@ -47,8 +47,8 @@ module Vcloud
|
|
47
47
|
it 'should raise a RuntimeError if there is no template' do
|
48
48
|
q_results = [ ]
|
49
49
|
mock_query = double(:query_runner)
|
50
|
-
Vcloud::Core::QueryRunner.
|
51
|
-
mock_query.
|
50
|
+
expect(Vcloud::Core::QueryRunner).to receive(:new).and_return(mock_query)
|
51
|
+
expect(mock_query).to receive(:run).
|
52
52
|
with('vAppTemplate', :filter => "name==test_template;catalogName==test_catalog").
|
53
53
|
and_return(q_results)
|
54
54
|
expect { VappTemplate.get('test_template', 'test_catalog') }.
|
@@ -63,8 +63,8 @@ module Vcloud
|
|
63
63
|
:href => "/vappTemplate-12345678-90ab-cdef-0123-4567890ab002" },
|
64
64
|
]
|
65
65
|
mock_query = double(:query_runner)
|
66
|
-
Vcloud::Core::QueryRunner.
|
67
|
-
mock_query.
|
66
|
+
expect(Vcloud::Core::QueryRunner).to receive(:new).and_return(mock_query)
|
67
|
+
expect(mock_query).to receive(:run).
|
68
68
|
with('vAppTemplate', :filter => "name==test_template;catalogName==test_catalog").
|
69
69
|
and_return(q_results)
|
70
70
|
expect { VappTemplate.get('test_template', 'test_catalog') }.
|
@@ -77,12 +77,12 @@ module Vcloud
|
|
77
77
|
:href => "/vappTemplate-12345678-90ab-cdef-0123-4567890abcde" }
|
78
78
|
]
|
79
79
|
mock_query = double(:query)
|
80
|
-
Vcloud::Core::QueryRunner.
|
81
|
-
mock_query.
|
80
|
+
expect(Vcloud::Core::QueryRunner).to receive(:new).and_return(mock_query)
|
81
|
+
expect(mock_query).to receive(:run).
|
82
82
|
with('vAppTemplate', :filter => "name==test_template;catalogName==test_catalog").
|
83
83
|
and_return(q_results)
|
84
84
|
test_template = VappTemplate.get('test_template', 'test_catalog')
|
85
|
-
test_template.id.
|
85
|
+
expect(test_template.id).to eq('vappTemplate-12345678-90ab-cdef-0123-4567890abcde')
|
86
86
|
end
|
87
87
|
|
88
88
|
end
|
@@ -7,11 +7,11 @@ module Vcloud
|
|
7
7
|
before(:each) do
|
8
8
|
@vdc_id = '12345678-1234-1234-1234-000000111232'
|
9
9
|
@mock_fog_interface = StubFogInterface.new
|
10
|
-
Vcloud::Fog::ServiceInterface.
|
10
|
+
allow(Vcloud::Fog::ServiceInterface).to receive(:new).and_return(@mock_fog_interface)
|
11
11
|
end
|
12
12
|
|
13
13
|
context "Class public interface" do
|
14
|
-
it { Vdc.
|
14
|
+
it { expect(Vdc).to respond_to(:get_by_name) }
|
15
15
|
end
|
16
16
|
|
17
17
|
context "Instance public interface" do
|
@@ -47,8 +47,8 @@ module Vcloud
|
|
47
47
|
{ :name => 'vdc-test-1', :href => @vdc_id }
|
48
48
|
]
|
49
49
|
mock_query = double(:query_runner)
|
50
|
-
Vcloud::Core::QueryRunner.
|
51
|
-
mock_query.
|
50
|
+
expect(Vcloud::Core::QueryRunner).to receive(:new).and_return(mock_query)
|
51
|
+
expect(mock_query).to receive(:run).with('orgVdc', :filter => "name==vdc-test-1").and_return(q_results)
|
52
52
|
obj = Vdc.get_by_name('vdc-test-1')
|
53
53
|
expect(obj.class).to be(Vcloud::Core::Vdc)
|
54
54
|
end
|
@@ -56,8 +56,8 @@ module Vcloud
|
|
56
56
|
it "should raise an error if no vDC with that name exists" do
|
57
57
|
q_results = [ ]
|
58
58
|
mock_query = double(:query_runner)
|
59
|
-
Vcloud::Core::QueryRunner.
|
60
|
-
mock_query.
|
59
|
+
expect(Vcloud::Core::QueryRunner).to receive(:new).and_return(mock_query)
|
60
|
+
expect(mock_query).to receive(:run).with('orgVdc', :filter => "name==vdc-test-1").and_return(q_results)
|
61
61
|
expect{ Vdc.get_by_name('vdc-test-1') }.to raise_exception(RuntimeError, "vDc vdc-test-1 not found")
|
62
62
|
end
|
63
63
|
|
data/spec/vcloud/core/vm_spec.rb
CHANGED
@@ -21,8 +21,8 @@ module Vcloud
|
|
21
21
|
@mock_vm_cpu_count = 1
|
22
22
|
@fog_interface = StubFogInterface.new
|
23
23
|
@mock_vapp = double(:vappm, :name => @vapp_name, :id => @vapp_id)
|
24
|
-
Vcloud::Fog::ServiceInterface.
|
25
|
-
@fog_interface.
|
24
|
+
allow(Vcloud::Fog::ServiceInterface).to receive(:new).and_return(@fog_interface)
|
25
|
+
allow(@fog_interface).to receive(:get_vapp).with(@vm_id).and_return({
|
26
26
|
:name => "#{@vm_name}",
|
27
27
|
:href => "vm-href/#{@vm_id}",
|
28
28
|
:'ovf:VirtualHardwareSection' => {
|
@@ -58,7 +58,6 @@ module Vcloud
|
|
58
58
|
it { should respond_to(:add_extra_disks) }
|
59
59
|
it { should respond_to(:configure_network_interfaces) }
|
60
60
|
it { should respond_to(:configure_guest_customization_section) }
|
61
|
-
it { should respond_to(:generate_preamble) }
|
62
61
|
end
|
63
62
|
|
64
63
|
context "#initialize" do
|
@@ -82,144 +81,77 @@ module Vcloud
|
|
82
81
|
|
83
82
|
context "update memory in VM" do
|
84
83
|
it "should not allow memory size < 64MB" do
|
85
|
-
@fog_interface.
|
84
|
+
expect(@fog_interface).not_to receive(:put_memory)
|
86
85
|
@vm.update_memory_size_in_mb(63)
|
87
86
|
end
|
88
87
|
it "should not update memory if is size has not changed" do
|
89
|
-
@fog_interface.
|
88
|
+
expect(@fog_interface).not_to receive(:put_memory)
|
90
89
|
@vm.update_memory_size_in_mb(@mock_vm_memory_size)
|
91
90
|
end
|
92
91
|
it "should gracefully handle a nil memory size" do
|
93
|
-
@fog_interface.
|
92
|
+
expect(@fog_interface).not_to receive(:put_memory)
|
94
93
|
@vm.update_memory_size_in_mb(nil)
|
95
94
|
end
|
96
95
|
it "should set memory size 64MB" do
|
97
|
-
@fog_interface.
|
96
|
+
expect(@fog_interface).to receive(:put_memory).with(@vm_id, 64)
|
98
97
|
@vm.update_memory_size_in_mb(64)
|
99
98
|
end
|
100
99
|
it "should set memory size 4096MB" do
|
101
|
-
@fog_interface.
|
100
|
+
expect(@fog_interface).to receive(:put_memory).with(@vm_id, 4096)
|
102
101
|
@vm.update_memory_size_in_mb(4096)
|
103
102
|
end
|
104
103
|
end
|
105
104
|
|
106
105
|
context "update the number of cpus in vm" do
|
107
106
|
it "should gracefully handle nil cpu count" do
|
108
|
-
@fog_interface.
|
107
|
+
expect(@fog_interface).not_to receive(:put_cpu)
|
109
108
|
@vm.update_cpu_count(nil)
|
110
109
|
end
|
111
110
|
it "should not update cpu if is count has not changed" do
|
112
|
-
@fog_interface.
|
111
|
+
expect(@fog_interface).not_to receive(:put_cpu)
|
113
112
|
@vm.update_cpu_count(@mock_vm_cpu_count)
|
114
113
|
end
|
115
114
|
it "should not allow a zero cpu count" do
|
116
|
-
@fog_interface.
|
115
|
+
expect(@fog_interface).not_to receive(:put_cpu)
|
117
116
|
@vm.update_cpu_count(0)
|
118
117
|
end
|
119
118
|
it "should update cpu count in input is ok" do
|
120
|
-
@fog_interface.
|
119
|
+
expect(@fog_interface).to receive(:put_cpu).with(@vm_id, 2)
|
121
120
|
@vm.update_cpu_count(2)
|
122
121
|
end
|
123
122
|
end
|
124
123
|
|
125
124
|
context '#configure_guest_customization_section' do
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
script_post_processor: 'remove_hello.rb',
|
132
|
-
vars: { bob: 'hello', mary: 'hello' },
|
133
|
-
}
|
134
|
-
extra_disks = []
|
135
|
-
@vm.should_receive(:generate_preamble).
|
136
|
-
with('hello_world.erb', 'remove_hello.rb', {
|
137
|
-
bob: "hello",
|
138
|
-
mary: "hello",
|
139
|
-
extra_disks: [] }).
|
140
|
-
and_return('RETURNED_PREAMBLE')
|
141
|
-
@fog_interface.should_receive(:put_guest_customization_section).
|
142
|
-
with(@vm_id, 'test-vm', 'RETURNED_PREAMBLE')
|
143
|
-
@vm.configure_guest_customization_section(name, bootstrap_config, extra_disks)
|
144
|
-
end
|
145
|
-
|
146
|
-
it "should handle nil configuration" do
|
147
|
-
name = 'test-vm'
|
148
|
-
bootstrap_config = nil
|
149
|
-
extra_disks = nil
|
150
|
-
@vm.should_not_receive(:generate_preamble)
|
151
|
-
@fog_interface.should_receive(:put_guest_customization_section).
|
152
|
-
with(@vm_id, 'test-vm', '')
|
153
|
-
@vm.configure_guest_customization_section(name, bootstrap_config, extra_disks)
|
154
|
-
end
|
155
|
-
|
156
|
-
it "should handle empty configuration" do
|
157
|
-
name = 'test-vm'
|
158
|
-
bootstrap_config = {}
|
159
|
-
extra_disks = nil
|
160
|
-
@vm.should_not_receive(:generate_preamble)
|
161
|
-
@fog_interface.should_receive(:put_guest_customization_section).
|
162
|
-
with(@vm_id, 'test-vm', '')
|
163
|
-
@vm.configure_guest_customization_section(name, bootstrap_config, extra_disks)
|
125
|
+
let(:preamble) do
|
126
|
+
<<-'EOF'
|
127
|
+
#!/usr/bin/env bash
|
128
|
+
echo "Hello World"
|
129
|
+
EOF
|
164
130
|
end
|
165
131
|
|
166
|
-
it
|
167
|
-
|
168
|
-
bootstrap_config = {
|
169
|
-
script_path: 'hello_world.erb',
|
170
|
-
script_post_processor: 'remove_hello.rb',
|
171
|
-
}
|
172
|
-
extra_disks = []
|
173
|
-
@vm.should_receive(:generate_preamble).
|
174
|
-
with('hello_world.erb', 'remove_hello.rb', { extra_disks: [] }).
|
175
|
-
and_return('RETURNED_PREAMBLE')
|
176
|
-
@fog_interface.should_receive(:put_guest_customization_section).
|
177
|
-
with(@vm_id, 'test-vm', 'RETURNED_PREAMBLE')
|
178
|
-
@vm.configure_guest_customization_section(name, bootstrap_config, extra_disks)
|
179
|
-
end
|
180
|
-
|
181
|
-
end
|
182
|
-
|
183
|
-
context '#generate_preamble' do
|
184
|
-
it "should interpolate vars hash, ENV, and vapp_name into template" do
|
185
|
-
vars = {
|
186
|
-
:message => 'hello world',
|
187
|
-
:array_test => [ 'foo', 'bar' ],
|
188
|
-
}
|
189
|
-
stub_const('ENV', {'TEST_INTERPOLATED_ENVVAR' => 'test_interpolated_env'})
|
190
|
-
erbfile = "#{@data_dir}/basic_preamble_test.erb"
|
191
|
-
expected_output = File.read("#{erbfile}.OUT")
|
192
|
-
@vm.generate_preamble(erbfile, nil, vars).should == expected_output
|
193
|
-
end
|
132
|
+
it 'passes a pre-generated preamble to fog' do
|
133
|
+
expect(@fog_interface).to receive(:put_guest_customization_section).with(@vm_id, @vapp_name, preamble)
|
194
134
|
|
195
|
-
|
196
|
-
# we use 'wc' as post processor since it will give us the character
|
197
|
-
# count in the file, which we can easily match on, and is common
|
198
|
-
# across most OSes.
|
199
|
-
vars = {}
|
200
|
-
erbfile = "#{@data_dir}/preamble_post_processor_test_input.erb"
|
201
|
-
characters_in_file = File.read(erbfile).size
|
202
|
-
expect(@vm.generate_preamble(erbfile, '/usr/bin/wc', vars)).
|
203
|
-
to match(/^\s+\d+\s+\d+\s+#{characters_in_file}\s/)
|
135
|
+
@vm.configure_guest_customization_section(preamble)
|
204
136
|
end
|
205
137
|
end
|
206
138
|
|
207
139
|
context "update metadata" do
|
208
140
|
it "should handle empty metadata hash" do
|
209
|
-
@fog_interface.
|
141
|
+
expect(@fog_interface).not_to receive(:put_vapp_metadata_value)
|
210
142
|
@vm.update_metadata(nil)
|
211
143
|
end
|
212
144
|
it "should handle metadata of multiple types" do
|
213
|
-
@fog_interface.
|
214
|
-
@fog_interface.
|
215
|
-
@fog_interface.
|
216
|
-
@fog_interface.
|
217
|
-
@fog_interface.
|
218
|
-
@fog_interface.
|
219
|
-
@fog_interface.
|
220
|
-
@fog_interface.
|
221
|
-
@fog_interface.
|
222
|
-
@fog_interface.
|
145
|
+
expect(@fog_interface).to receive(:put_vapp_metadata_value).with(@vm_id, :foo, 'bar')
|
146
|
+
expect(@fog_interface).to receive(:put_vapp_metadata_value).with(@vm_id, :false_thing, false)
|
147
|
+
expect(@fog_interface).to receive(:put_vapp_metadata_value).with(@vm_id, :true_thing, true)
|
148
|
+
expect(@fog_interface).to receive(:put_vapp_metadata_value).with(@vm_id, :number, 53)
|
149
|
+
expect(@fog_interface).to receive(:put_vapp_metadata_value).with(@vm_id, :zero, 0)
|
150
|
+
expect(@fog_interface).to receive(:put_vapp_metadata_value).with(@vapp_id, :foo, 'bar')
|
151
|
+
expect(@fog_interface).to receive(:put_vapp_metadata_value).with(@vapp_id, :false_thing, false)
|
152
|
+
expect(@fog_interface).to receive(:put_vapp_metadata_value).with(@vapp_id, :true_thing, true)
|
153
|
+
expect(@fog_interface).to receive(:put_vapp_metadata_value).with(@vapp_id, :number, 53)
|
154
|
+
expect(@fog_interface).to receive(:put_vapp_metadata_value).with(@vapp_id, :zero, 0)
|
223
155
|
@vm.update_metadata(@mock_metadata)
|
224
156
|
end
|
225
157
|
end
|
@@ -227,7 +159,7 @@ module Vcloud
|
|
227
159
|
context "configure vm network interfaces" do
|
228
160
|
it "should configure single nic without an IP" do
|
229
161
|
network_config = [{:name => 'Default'}]
|
230
|
-
@fog_interface.
|
162
|
+
expect(@fog_interface).to receive(:put_network_connection_system_section_vapp).with(@vm_id, {
|
231
163
|
:PrimaryNetworkConnectionIndex => 0,
|
232
164
|
:NetworkConnection => [
|
233
165
|
{
|
@@ -243,7 +175,7 @@ module Vcloud
|
|
243
175
|
|
244
176
|
it "should configure nic from pool" do
|
245
177
|
network_config = [{:name => 'Default', :allocation_mode => 'pool'}]
|
246
|
-
@fog_interface.
|
178
|
+
expect(@fog_interface).to receive(:put_network_connection_system_section_vapp).with(@vm_id, {
|
247
179
|
:PrimaryNetworkConnectionIndex => 0,
|
248
180
|
:NetworkConnection => [
|
249
181
|
{
|
@@ -259,7 +191,7 @@ module Vcloud
|
|
259
191
|
|
260
192
|
it "should prefer configuring nic with static address" do
|
261
193
|
network_config = [{:name => 'Default', :allocation_mode => 'dhcp', :ip_address => '192.168.1.1'}]
|
262
|
-
@fog_interface.
|
194
|
+
expect(@fog_interface).to receive(:put_network_connection_system_section_vapp).with(@vm_id, {
|
263
195
|
:PrimaryNetworkConnectionIndex => 0,
|
264
196
|
:NetworkConnection => [
|
265
197
|
{
|
@@ -276,7 +208,7 @@ module Vcloud
|
|
276
208
|
|
277
209
|
it "should configure single nic" do
|
278
210
|
network_config = [{:name => 'Default', :ip_address => '192.168.1.1'}]
|
279
|
-
@fog_interface.
|
211
|
+
expect(@fog_interface).to receive(:put_network_connection_system_section_vapp).with(@vm_id, {
|
280
212
|
:PrimaryNetworkConnectionIndex => 0,
|
281
213
|
:NetworkConnection => [
|
282
214
|
{
|
@@ -297,7 +229,7 @@ module Vcloud
|
|
297
229
|
{:name => 'Monitoring', :ip_address => '192.168.2.1'}
|
298
230
|
]
|
299
231
|
|
300
|
-
@fog_interface.
|
232
|
+
expect(@fog_interface).to receive(:put_network_connection_system_section_vapp).with(@vm_id, {
|
301
233
|
:PrimaryNetworkConnectionIndex => 0,
|
302
234
|
:NetworkConnection => [
|
303
235
|
{
|
@@ -322,7 +254,7 @@ module Vcloud
|
|
322
254
|
|
323
255
|
it "should configure no nics" do
|
324
256
|
network_config = nil
|
325
|
-
@fog_interface.
|
257
|
+
expect(@fog_interface).not_to receive(:put_network_connection_system_section_vapp)
|
326
258
|
@vm.configure_network_interfaces(network_config)
|
327
259
|
end
|
328
260
|
|
@@ -341,16 +273,16 @@ module Vcloud
|
|
341
273
|
]
|
342
274
|
mock_sp_query = double(:query_runner)
|
343
275
|
|
344
|
-
Vcloud::Core::QueryRunner.
|
345
|
-
mock_vdc_query.
|
346
|
-
Vcloud::Core::QueryRunner.
|
347
|
-
mock_sp_query.
|
276
|
+
expect(Vcloud::Core::QueryRunner).to receive(:new).and_return(mock_vdc_query)
|
277
|
+
expect(mock_vdc_query).to receive(:run).with('vApp', :filter => "name==#{@vapp_name}").and_return(vdc_results)
|
278
|
+
expect(Vcloud::Core::QueryRunner).to receive(:new).and_return(mock_sp_query)
|
279
|
+
expect(mock_sp_query).to receive(:run).
|
348
280
|
with('orgVdcStorageProfile', :filter => "name==storage_profile_name;vdcName==vdc-test-1").
|
349
281
|
and_return(storage_profile_results)
|
350
282
|
|
351
283
|
generated_storage_profile = { name: 'storage_profile_name', href: 'test-href' }
|
352
|
-
@fog_interface.
|
353
|
-
@vm.update_storage_profile(storage_profile).
|
284
|
+
expect(@fog_interface).to receive(:put_vm).with(@vm_id, @vm_name, { :StorageProfile => generated_storage_profile} ).and_return(true)
|
285
|
+
expect(@vm.update_storage_profile(storage_profile)).to eq(true)
|
354
286
|
end
|
355
287
|
|
356
288
|
it "should raise an error if storage profile is not found" do
|
@@ -363,10 +295,10 @@ module Vcloud
|
|
363
295
|
storage_profile_results = []
|
364
296
|
mock_sp_query = double(:query_runner)
|
365
297
|
|
366
|
-
Vcloud::Core::QueryRunner.
|
367
|
-
mock_vdc_query.
|
368
|
-
Vcloud::Core::QueryRunner.
|
369
|
-
mock_sp_query.
|
298
|
+
expect(Vcloud::Core::QueryRunner).to receive(:new).and_return(mock_vdc_query)
|
299
|
+
expect(mock_vdc_query).to receive(:run).with('vApp', :filter => "name==#{@vapp_name}").and_return(vdc_results)
|
300
|
+
expect(Vcloud::Core::QueryRunner).to receive(:new).and_return(mock_sp_query)
|
301
|
+
expect(mock_sp_query).to receive(:run).
|
370
302
|
with('orgVdcStorageProfile', :filter => "name==storage_profile_name;vdcName==vdc-test-1").
|
371
303
|
and_return(storage_profile_results)
|
372
304
|
|
@@ -383,10 +315,10 @@ module Vcloud
|
|
383
315
|
storage_profile_results = [ { :id => 'test-href' }]
|
384
316
|
mock_sp_query = double(:query_runner)
|
385
317
|
|
386
|
-
Vcloud::Core::QueryRunner.
|
387
|
-
mock_vdc_query.
|
388
|
-
Vcloud::Core::QueryRunner.
|
389
|
-
mock_sp_query.
|
318
|
+
expect(Vcloud::Core::QueryRunner).to receive(:new).and_return(mock_vdc_query)
|
319
|
+
expect(mock_vdc_query).to receive(:run).with('vApp', :filter => "name==#{@vapp_name}").and_return(vdc_results)
|
320
|
+
expect(Vcloud::Core::QueryRunner).to receive(:new).and_return(mock_sp_query)
|
321
|
+
expect(mock_sp_query).to receive(:run).
|
390
322
|
with('orgVdcStorageProfile', :filter => "name==storage_profile_name;vdcName==vdc-test-1").
|
391
323
|
and_return(storage_profile_results)
|
392
324
|
|
@@ -12,14 +12,14 @@ describe Vcloud::Fog::ModelInterface do
|
|
12
12
|
org = double(:hr, :name => 'HR ORG', :vdcs => [vdc])
|
13
13
|
|
14
14
|
vcloud = double(:mock_vcloud, :org_name => 'HR', :organizations => double(:orgs, :get_by_name => org))
|
15
|
-
vcloud.
|
15
|
+
expect(vcloud).to receive(:get_vms_in_lease_from_query).with({:filter => "href==#{vm_href}"}).and_return(
|
16
16
|
double(
|
17
17
|
:vm_query_record,
|
18
18
|
:body => {:VMRecord => [{:href => vm_href, :containerName => 'vapp-1', :vdc => vdc_href}]}
|
19
19
|
)
|
20
20
|
)
|
21
|
-
Fog::Compute::VcloudDirector.
|
21
|
+
expect(Fog::Compute::VcloudDirector).to receive(:new).and_return(vcloud)
|
22
22
|
|
23
|
-
Vcloud::Fog::ModelInterface.new.get_vm_by_href(vm_href).
|
23
|
+
expect(Vcloud::Fog::ModelInterface.new.get_vm_by_href(vm_href)).to eq(vm)
|
24
24
|
end
|
25
25
|
end
|
@@ -10,8 +10,8 @@ module Vcloud
|
|
10
10
|
it 'should raise a exception if named vdc not found in the data returned' do
|
11
11
|
|
12
12
|
fog_facade = double(:FogFacade)
|
13
|
-
expect(fog_facade).to receive(:session)
|
14
|
-
expect(fog_facade).to receive(:get_organization)
|
13
|
+
expect(fog_facade).to receive(:session) { FOG_SESSION_RESPONSE }
|
14
|
+
expect(fog_facade).to receive(:get_organization) { FOG_ORGANIZATION_RESPONSE }
|
15
15
|
|
16
16
|
service_interface = ServiceInterface.new(fog_facade)
|
17
17
|
|
@@ -22,25 +22,25 @@ module Vcloud
|
|
22
22
|
before(:each) do
|
23
23
|
@config = { :Blah => 'TestData' }
|
24
24
|
@vcloud = double(:vcloud)
|
25
|
-
::Fog::Compute::VcloudDirector.
|
25
|
+
expect(::Fog::Compute::VcloudDirector).to receive(:new).and_return(@vcloud)
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should configure firewall for given edge gateway id" do
|
29
29
|
task = double(:task)
|
30
|
-
Vcloud::Core::logger.
|
31
|
-
@vcloud.
|
30
|
+
expect(Vcloud::Core::logger).to receive(:info).with("Updating EdgeGateway 1234")
|
31
|
+
expect(@vcloud).to receive(:post_configure_edge_gateway_services).with("1234", @config).
|
32
32
|
and_return(double(:response, :body => task ))
|
33
|
-
@vcloud.
|
33
|
+
expect(@vcloud).to receive(:process_task).with(task)
|
34
34
|
|
35
35
|
ServiceInterface.new.post_configure_edge_gateway_services "1234", @config
|
36
36
|
end
|
37
37
|
|
38
38
|
|
39
39
|
it "should log and return exceptions without swallowing" do
|
40
|
-
Vcloud::Core::logger.
|
40
|
+
expect(Vcloud::Core::logger).to receive(:info).with("Updating EdgeGateway 1234")
|
41
41
|
runtime_error = RuntimeError.new('Test Error')
|
42
|
-
Vcloud::Core::logger.
|
43
|
-
@vcloud.
|
42
|
+
expect(Vcloud::Core::logger).to receive(:error).with("Could not update EdgeGateway 1234 : #{runtime_error}")
|
43
|
+
expect(@vcloud).to receive(:post_configure_edge_gateway_services).with("1234", @config).
|
44
44
|
and_raise(runtime_error)
|
45
45
|
expect{ ServiceInterface.new.post_configure_edge_gateway_services("1234", @config) }.to raise_error("Test Error")
|
46
46
|
end
|
data/vcloud-core.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.email = ['anna.shipman@digital.cabinet-office.gov.uk']
|
13
13
|
s.summary = 'Core tools for interacting with VMware vCloud Director'
|
14
14
|
s.description = 'Core tools for interacting with VMware vCloud Director. Includes VCloud Query, a light wrapper round the vCloud Query API.'
|
15
|
-
s.homepage = 'http://github.com/
|
15
|
+
s.homepage = 'http://github.com/gds-operations/vcloud-core'
|
16
16
|
s.license = 'MIT'
|
17
17
|
|
18
18
|
s.files = `git ls-files`.split($/)
|
@@ -20,15 +20,15 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
21
21
|
s.require_paths = ['lib']
|
22
22
|
|
23
|
-
s.required_ruby_version = '>= 1.9.
|
23
|
+
s.required_ruby_version = '>= 1.9.3'
|
24
24
|
|
25
25
|
s.add_runtime_dependency 'fog', '>= 1.22.0'
|
26
26
|
s.add_runtime_dependency 'mustache'
|
27
|
+
s.add_development_dependency 'gem_publisher', '1.2.0'
|
27
28
|
s.add_development_dependency 'pry'
|
28
29
|
s.add_development_dependency 'rake'
|
29
30
|
s.add_development_dependency 'rspec', '~> 2.14.1'
|
30
|
-
s.add_development_dependency 'rubocop'
|
31
|
-
s.add_development_dependency 'simplecov', '~> 0.
|
32
|
-
s.add_development_dependency '
|
33
|
-
s.add_development_dependency 'vcloud-tools-tester', '0.0.3'
|
31
|
+
s.add_development_dependency 'rubocop', '~> 0.23.0'
|
32
|
+
s.add_development_dependency 'simplecov', '~> 0.7.1'
|
33
|
+
s.add_development_dependency 'vcloud-tools-tester', '~> 0.1.0'
|
34
34
|
end
|