bosh_vcloud_cpi 0.4.8

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.
@@ -0,0 +1,506 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require "yaml"
3
+
4
+ module VCloudCloud
5
+ module UnitTest
6
+ AGENT_ENV = %q[{"vm":{"name":"vm-8715dc0d-0270-4679-8429-6b90090bab58","id":
7
+ "vm-793"},"agent_id":"1a8ad1aa-4b28-4483-be81-9c45f1d2f071","networks":{
8
+ "default":{"ip":"10.147.130.80","netmask":"255.255.255.192","cloud_properties":{
9
+ "name":"VC-10.47.24.204-vcd-external"},"default":["dns","gateway"],"dns":[
10
+ "10.147.115.1","10.147.115.2"],"gateway":"10.147.130.126","mac":
11
+ "00:50:56:9a:44:d8"}},"disks":{"system":0,"persistent":{}},"ntp":[
12
+ "ntp01.las01.emcatmos.com"],"blobstore":{"plugin":"simple","properties":{
13
+ "endpoint":"http://10.147.130.68:25250","user":"agent","password":"Ag3Nt"}},
14
+ "mbus":"nats://bosh:b0$H@10.147.130.68:4222","env":{}}]
15
+ AGENT_ENV_WITH_PERSITENT_DISK = %q[{"vm":{"name":
16
+ "vm-8715dc0d-0270-4679-8429-6b90090bab58","id":"vm-793"},"agent_id":
17
+ "1a8ad1aa-4b28-4483-be81-9c45f1d2f071","networks":{"default":{
18
+ "ip":"10.147.130.80","netmask":"255.255.255.192","cloud_properties":{"name":
19
+ "VC-10.47.24.204-vcd-external"},"default":["dns","gateway"],"dns":[
20
+ "10.147.115.1","10.147.115.2"],"gateway":"10.147.130.126","mac":
21
+ "00:50:56:9a:44:d8"}},"disks":{"system":0,"ephemeral":1, "persistent":{
22
+ "test_disk":1}},"ntp":["ntp01.las01.emcatmos.com"],"blobstore":{"plugin":
23
+ "simple","properties":{"endpoint":"http://10.147.130.68:25250","user":"agent",
24
+ "password":"Ag3Nt"}},"mbus":"nats://bosh:b0$H@10.147.130.68:4222","env":{}}]
25
+
26
+ class CatalogItem
27
+ def urn
28
+ "urn:vcloud:catalogitem:0bed5661-6fef-43e8-aaae-973783efc5cb"
29
+ end
30
+ end
31
+
32
+ class VApp
33
+ def vms
34
+ @vms
35
+ end
36
+ def name
37
+ "myTestVapp"
38
+ end
39
+ def initialize
40
+ @vms = Array[ Vm.new ]
41
+ end
42
+ def urn
43
+ "urn:vcloud:vapp:a1da3521-71aa-480b-97f4-2fdc2ce48569"
44
+ end
45
+ end
46
+
47
+ class Network
48
+ def initialize(name)
49
+ @name = name
50
+ end
51
+
52
+ def [](p)
53
+ @name
54
+ end
55
+ end
56
+
57
+ class Vdc
58
+ attr_accessor :name
59
+
60
+ def initialize(name)
61
+ @name = name
62
+ end
63
+
64
+ def available_networks
65
+ [Network.new("a"), Network.new("vcd-org-network")]
66
+ end
67
+
68
+ def storage_profiles
69
+ #[Network.new("a"), Network.new("vcd-org-network")]
70
+ end
71
+ end
72
+
73
+ class Vm
74
+ class Nic
75
+ def network
76
+ VCloudCloud::Test::test_deployment_manifest[
77
+ "network"]["default"]["cloud_properties"]["name"]
78
+ end
79
+ def mac_address
80
+ "00:50:56:de:ad:ff"
81
+ end
82
+ end
83
+
84
+ class HardDisk
85
+ attr_accessor :disk_id
86
+
87
+ def initialize(disk_id)
88
+ @disk_id = disk_id
89
+ end
90
+
91
+ def urn
92
+ "urn:vcloud:disk:a1da3521-71aa-480b-97f4-2fdc2ce48569"
93
+ end
94
+
95
+ def size_mb
96
+ 1073741824.to_i/1024/1024
97
+ end
98
+ end
99
+
100
+ class HwSec
101
+ def nics
102
+ Array[ Nic.new ]
103
+ end
104
+ def hard_disks
105
+ @disks
106
+ end
107
+ def initialize
108
+ @disks = [ HardDisk.new(0) ]
109
+ end
110
+ def add_hard_disk
111
+ disk = HardDisk.new(@disks.size)
112
+ @disks << disk
113
+ end
114
+ def del_hard_disk
115
+ disk = @disks.pop
116
+ end
117
+ end
118
+
119
+ def hardware_section
120
+ @hw
121
+ end
122
+
123
+ def urn
124
+ "urn:vcloud:vm:a1da3521-71aa-480b-97f4-2fdc2ce48569"
125
+ end
126
+
127
+ def name
128
+ "myTestVm"
129
+ end
130
+
131
+ def name=(value)
132
+ "myTestVm"
133
+ end
134
+
135
+ def description=(value)
136
+ "myTestVm"
137
+ end
138
+
139
+ def initialize
140
+ @hw = HwSec.new
141
+ end
142
+
143
+ def add_hard_disk
144
+ @hw.add_hard_disk
145
+ end
146
+
147
+ def del_hard_disk
148
+ @hw.del_hard_disk
149
+ end
150
+ end
151
+
152
+ end
153
+ end
154
+
155
+ module VCloudCloud
156
+ vcd_settings = VCloudCloud::Test::vcd_settings
157
+ cloud_properties = VCloudCloud::Test::director_cloud_properties
158
+ test_manifest = VCloudCloud::Test::test_deployment_manifest
159
+
160
+ describe Cloud, :min, :all do
161
+
162
+ it "can upload a valid stemcell" do
163
+ mc = mock("client")
164
+ mc.should_receive(:upload_vapp_template).with(an_instance_of(String),
165
+ an_instance_of(String)).and_return { UnitTest::CatalogItem.new }
166
+
167
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
168
+ cloud.stub!(:client) { mc }
169
+
170
+ cloud.create_stemcell(Test::spec_asset("valid_stemcell.tgz"), {})
171
+ end
172
+
173
+ it "can delete a stemcell" do
174
+ mc = mock("client")
175
+ mc.should_receive(:delete_catalog_vapp).with(
176
+ an_instance_of(String)).and_return {}
177
+
178
+ cloud= VCloudCloud::Cloud.new(cloud_properties)
179
+ cloud.stub!(:client) { mc }
180
+
181
+ cloud.delete_stemcell("test_stemcell_name")
182
+ end
183
+
184
+ it "can create a vm" do
185
+ vapp = UnitTest::VApp.new
186
+ mc = mock("client")
187
+ mc.should_receive(:upload_vapp_template).with(an_instance_of(String),
188
+ an_instance_of(String)).and_return { UnitTest::CatalogItem.new }
189
+ mc.should_receive(:instantiate_vapp_template).with(an_instance_of(String),
190
+ an_instance_of(String), an_instance_of(String), anything).and_return {
191
+ vapp }
192
+ mc.should_receive(:power_on_vapp).with(anything).and_return {}
193
+ mc.should_receive(:get_ovdc).at_least(:once).with().and_return {
194
+ UnitTest::Vdc.new("myOvdc") }
195
+ mc.should_receive(:add_network).with(anything, anything).and_return {}
196
+ mc.should_receive(:delete_networks).with(anything, anything).and_return {}
197
+ mc.should_receive(:reconfigure_vm).with(anything).and_return {
198
+ vapp.vms[0].add_hard_disk }
199
+ mc.should_receive(:delete_catalog_media).with(
200
+ an_instance_of(String)).and_return { raise VCloudSdk::CatalogMediaNotFoundError,
201
+ "ISO by name not found" }
202
+ mc.should_receive(:upload_catalog_media).with(
203
+ an_instance_of(String), an_instance_of(String), anything).and_return {}
204
+ mc.should_receive(:insert_catalog_media).with(anything,
205
+ an_instance_of(String)).and_return {}
206
+ mc.should_receive(:eject_catalog_media).with(anything,
207
+ an_instance_of(String)).and_return {}
208
+ mc.should_receive(:get_vapp).at_least(:once).with(anything).and_return {
209
+ vapp }
210
+ mc.should_receive(:set_metadata).with(anything, an_instance_of(String),
211
+ an_instance_of(String)).and_return {}
212
+
213
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
214
+ cloud.stub!(:client) { mc }
215
+
216
+ stemcell = cloud.create_stemcell(Test::spec_asset("valid_stemcell.tgz"),
217
+ {})
218
+ cloud.create_vm(Test::generate_unique_name, stemcell,
219
+ test_manifest["resource_pools"][0]["cloud_properties"],
220
+ test_manifest["network"])
221
+ end
222
+
223
+ it "can create a vm with disk locality" do
224
+ vapp = UnitTest::VApp.new
225
+ mc = mock("client")
226
+ mc.should_receive(:upload_vapp_template).with(an_instance_of(String),
227
+ an_instance_of(String)).and_return { UnitTest::CatalogItem.new() }
228
+ mc.should_receive(:instantiate_vapp_template).with(an_instance_of(String),
229
+ an_instance_of(String), an_instance_of(String), anything).and_return {
230
+ vapp }
231
+ mc.should_receive(:reconfigure_vm).with(anything).and_return {
232
+ vapp.vms[0].add_hard_disk }
233
+ mc.should_receive(:power_on_vapp).with(anything).and_return {}
234
+ mc.should_receive(:get_ovdc).at_least(:once).with().and_return {
235
+ UnitTest::Vdc.new("myOvdc") }
236
+ mc.should_receive(:add_network).with(anything, anything).and_return {}
237
+ mc.should_receive(:delete_networks).with(anything, anything).and_return {}
238
+ mc.should_receive(:delete_catalog_media).with(
239
+ an_instance_of(String)).and_return { raise VCloudSdk::CatalogMediaNotFoundError,
240
+ "ISO by name not found" }
241
+ mc.should_receive(:upload_catalog_media).with(an_instance_of(String),
242
+ an_instance_of(String), anything).and_return {}
243
+ mc.should_receive(:insert_catalog_media).with(anything,
244
+ an_instance_of(String)).and_return {}
245
+ mc.should_receive(:eject_catalog_media).with(anything,
246
+ an_instance_of(String)).and_return {}
247
+ mc.should_receive(:get_vapp).at_least(:once).with(anything).and_return {
248
+ vapp }
249
+ mc.should_receive(:set_metadata).with(anything, an_instance_of(String),
250
+ an_instance_of(String)).and_return {}
251
+ mc.should_receive(:get_disk).twice.with(an_instance_of(
252
+ String)).and_return { vapp.vms[0].hardware_section.hard_disks.last }
253
+
254
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
255
+ cloud.stub!(:client) { mc }
256
+
257
+ disk_locality = []
258
+ disk_locality << "test_disk_id"
259
+ disk_locality << "test_disk_id_non_existent"
260
+ stemcell = cloud.create_stemcell(Test::spec_asset("valid_stemcell.tgz"),
261
+ {})
262
+ cloud.create_vm(Test::generate_unique_name, stemcell,
263
+ test_manifest["resource_pools"][0]["cloud_properties"],
264
+ test_manifest["network"], disk_locality)
265
+ end
266
+
267
+ it "can delete a vm" do
268
+ vapp = UnitTest::VApp.new
269
+ mc = mock("client")
270
+ mc.should_receive(:get_vapp).with(anything).and_return { vapp }
271
+ mc.should_receive(:power_off_vapp).with(vapp).and_return {}
272
+ mc.should_receive(:delete_vapp).with(vapp).and_return {} if
273
+ vcd_settings['debug']['delete_vapp'] == true
274
+ mc.should_receive(:delete_catalog_media).with(
275
+ an_instance_of(String)).and_return {}
276
+
277
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
278
+ cloud.stub!(:client) { mc }
279
+
280
+ cloud.delete_vm(vapp.name)
281
+ end
282
+
283
+ it "can delete a suspended vm" do
284
+ vapp_power_state = "suspended"
285
+ vapp = UnitTest::VApp.new
286
+ mc = mock("client")
287
+ mc.should_receive(:get_vapp).with(anything).and_return { vapp }
288
+ mc.should_receive(:discard_suspended_state_vapp).with(
289
+ anything).and_return { vapp }
290
+ mc.should_receive(:power_off_vapp).at_least(:once).with(vapp).and_return {
291
+ if vapp_power_state == "suspended"
292
+ vapp_power_state = "off"
293
+ raise VCloudSdk::VappSuspendedError
294
+ end
295
+ }
296
+ mc.should_receive(:delete_vapp).with(vapp).and_return {} if
297
+ vcd_settings['debug']['delete_vapp'] == true
298
+ mc.should_receive(:delete_catalog_media).with(
299
+ an_instance_of(String)).and_return {}
300
+
301
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
302
+ cloud.stub!(:client) { mc }
303
+
304
+ cloud.delete_vm(vapp.name)
305
+ end
306
+
307
+ it "can reboot a vm" do
308
+ vapp = UnitTest::VApp.new
309
+ mc = mock("client")
310
+ mc.should_receive(:get_vapp).with(anything).and_return { vapp }
311
+ mc.should_receive(:reboot_vapp).with(vapp).and_return {}
312
+
313
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
314
+ cloud.stub!(:client) { mc }
315
+
316
+ cloud.reboot_vm(vapp.name)
317
+ end
318
+
319
+ it "can reboot a powered off vm" do
320
+ vapp_power_state = "off"
321
+ vapp = UnitTest::VApp.new
322
+ mc = mock("client")
323
+ mc.should_receive(:get_vapp).with(anything).and_return { vapp }
324
+ mc.should_receive(:power_on_vapp).with(vapp).and_return {}
325
+ mc.should_receive(:reboot_vapp).at_least(:once).with(vapp).and_return {
326
+ if vapp_power_state == "off"
327
+ vapp_power_state = "on"
328
+ raise VCloudSdk::VappPoweredOffError
329
+ end
330
+ }
331
+
332
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
333
+ cloud.stub!(:client) { mc }
334
+
335
+ cloud.reboot_vm(vapp.name)
336
+ end
337
+
338
+ it "can reboot a suspended vm" do
339
+ vapp_power_state = "suspended"
340
+ vapp = UnitTest::VApp.new
341
+ mc = mock("client")
342
+ mc.should_receive(:get_vapp).with(anything).and_return { vapp }
343
+ mc.should_receive(:discard_suspended_state_vapp).with(
344
+ anything).and_return { vapp }
345
+ mc.should_receive(:power_on_vapp).with(vapp).and_return {}
346
+ mc.should_receive(:reboot_vapp).at_least(:once).with(vapp).and_return {
347
+ if vapp_power_state == "suspended"
348
+ vapp_power_state = "on"
349
+ raise VCloudSdk::VappSuspendedError
350
+ end
351
+ }
352
+
353
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
354
+ cloud.stub!(:client) { mc }
355
+
356
+ cloud.reboot_vm(vapp.name)
357
+ end
358
+
359
+ it "can re-configure vm networks" do
360
+ vapp = UnitTest::VApp.new
361
+ mc = mock("client")
362
+ mc.should_receive(:get_vapp).at_least(:once).with(
363
+ anything).and_return { vapp }
364
+ mc.should_receive(:power_off_vapp).with(vapp).and_return {}
365
+ mc.should_receive(:power_on_vapp).with(anything).and_return {}
366
+ mc.should_receive(:reconfigure_vm).with(anything).and_return {}
367
+ mc.should_receive(:get_ovdc).at_least(:once).with().and_return {
368
+ UnitTest::Vdc.new("myOvdc") }
369
+ mc.should_receive(:delete_networks).with(anything, anything).and_return {}
370
+ mc.should_receive(:add_network).with(anything, anything).and_return {}
371
+ mc.should_receive(:delete_catalog_media).with(
372
+ an_instance_of(String)).and_return {}
373
+ mc.should_receive(:upload_catalog_media).with(an_instance_of(String),
374
+ an_instance_of(String), anything).and_return {}
375
+ mc.should_receive(:insert_catalog_media).with(anything,
376
+ an_instance_of(String)).and_return {}
377
+ mc.should_receive(:eject_catalog_media).with(anything,
378
+ an_instance_of(String)).and_return {}
379
+ mc.should_receive(:set_metadata).with(anything, an_instance_of(String),
380
+ an_instance_of(String)).and_return {}
381
+ mc.should_receive(:get_metadata).with(anything,
382
+ an_instance_of(String)).and_return { UnitTest::AGENT_ENV }
383
+
384
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
385
+ cloud.stub!(:client) { mc }
386
+
387
+ cloud.configure_networks(vapp.name, test_manifest["network"])
388
+ end
389
+
390
+ it "can create a disk without locality" do
391
+ vapp = UnitTest::VApp.new
392
+ mc = mock("client")
393
+ mc.should_receive(:create_disk).with(
394
+ an_instance_of(String), an_instance_of(Fixnum)).and_return {
395
+ vapp.vms[0].hardware_section.hard_disks.last }
396
+
397
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
398
+ cloud.stub!(:client) { mc }
399
+
400
+ cloud.create_disk(4096)
401
+ end
402
+
403
+ it "can create a disk with locality" do
404
+ vapp = UnitTest::VApp.new
405
+ mc = mock("client")
406
+ mc.should_receive(:get_vapp).with(anything).and_return { vapp }
407
+ mc.should_receive(:create_disk).with(
408
+ an_instance_of(String), an_instance_of(Fixnum), anything).and_return {
409
+ vapp.vms[0].hardware_section.hard_disks.last }
410
+
411
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
412
+ cloud.stub!(:client) { mc }
413
+
414
+ cloud.create_disk(4096, vapp.name)
415
+ end
416
+
417
+ it "can delete a disk" do
418
+ vapp = UnitTest::VApp.new
419
+ mc = mock("client")
420
+ mc.should_receive(:delete_disk).any_number_of_times.with(
421
+ anything).and_return {}
422
+ mc.should_receive(:get_disk).with(an_instance_of(String)).and_return {
423
+ vapp.vms[0].hardware_section.hard_disks.last }
424
+
425
+ cloud= VCloudCloud::Cloud.new(cloud_properties)
426
+ cloud.stub!(:client) { mc }
427
+
428
+ cloud.delete_disk("test_disk_id")
429
+ end
430
+
431
+ it "can attach a disk to a vm" do
432
+ vapp = UnitTest::VApp.new
433
+ mc = mock("client")
434
+ mc.should_receive(:get_vapp).at_least(:once).with(
435
+ anything).and_return { vapp }
436
+ mc.should_receive(:delete_catalog_media).with(
437
+ an_instance_of(String)).and_return {}
438
+ mc.should_receive(:upload_catalog_media).with(an_instance_of(String),
439
+ an_instance_of(String), anything).and_return {}
440
+ mc.should_receive(:insert_catalog_media).with(anything,
441
+ an_instance_of(String)).and_return {}
442
+ mc.should_receive(:eject_catalog_media).with(anything,
443
+ an_instance_of(String)).and_return {}
444
+ mc.should_receive(:set_metadata).with(anything, an_instance_of(String),
445
+ an_instance_of(String)).and_return {}
446
+ mc.should_receive(:get_metadata).with(anything,
447
+ an_instance_of(String)).and_return { UnitTest::AGENT_ENV }
448
+ mc.should_receive(:get_ovdc).at_least(:once).with().and_return {
449
+ UnitTest::Vdc.new("myOvdc") }
450
+ mc.should_receive(:attach_disk).with(
451
+ an_instance_of(UnitTest::Vm::HardDisk), anything).and_return {
452
+ vapp.vms[0].add_hard_disk }
453
+ mc.should_receive(:get_disk).with(an_instance_of(String)).and_return {
454
+ vapp.vms[0].hardware_section.hard_disks.last }
455
+
456
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
457
+ cloud.stub!(:client) { mc }
458
+
459
+ cloud.attach_disk(vapp.name, "test_disk_id")
460
+ end
461
+
462
+ it "can detach a disk from a vm" do
463
+ vapp = UnitTest::VApp.new
464
+ mc = mock("client")
465
+ mc.should_receive(:get_vapp).at_least(:once).with(
466
+ anything).and_return { vapp }
467
+ mc.should_receive(:delete_catalog_media).with(
468
+ an_instance_of(String)).and_return {}
469
+ mc.should_receive(:upload_catalog_media).with(an_instance_of(String),
470
+ an_instance_of(String), anything).and_return {}
471
+ mc.should_receive(:insert_catalog_media).with(anything,
472
+ an_instance_of(String)).and_return {}
473
+ mc.should_receive(:eject_catalog_media).with(anything,
474
+ an_instance_of(String)).and_return {}
475
+ mc.should_receive(:set_metadata).with(anything, an_instance_of(String),
476
+ an_instance_of(String)).and_return {}
477
+ mc.should_receive(:get_metadata).with(anything,
478
+ an_instance_of(String)).and_return { UnitTest::AGENT_ENV }
479
+ mc.should_receive(:get_ovdc).at_least(:once).with().and_return {
480
+ UnitTest::Vdc.new("myOvdc") }
481
+ mc.should_receive(:detach_disk).with(
482
+ an_instance_of(UnitTest::Vm::HardDisk), anything).and_return {
483
+ vapp.vms[0].del_hard_disk }
484
+ mc.should_receive(:get_disk).with(an_instance_of(String)).and_return {
485
+ vapp.vms[0].hardware_section.hard_disks.last }
486
+
487
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
488
+ cloud.stub!(:client) { mc }
489
+
490
+ cloud.detach_disk(vapp.name, "test_disk_id")
491
+ end
492
+
493
+ it "can get the size of a disk" do
494
+ vapp = UnitTest::VApp.new
495
+ mc = mock("client")
496
+ mc.should_receive(:get_disk).with(
497
+ an_instance_of(String)).and_return {
498
+ vapp.vms[0].hardware_section.hard_disks.last }
499
+
500
+ cloud = VCloudCloud::Cloud.new(cloud_properties)
501
+ cloud.stub!(:client) { mc }
502
+
503
+ cloud.get_disk_size_mb("test_disk_id").should equal(1024.to_i)
504
+ end
505
+ end
506
+ end
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bosh_vcloud_cpi
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.4.8
6
+ platform: ruby
7
+ authors:
8
+ - VMware
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2012-11-12 00:00:00 -08:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: bosh_common
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: bosh_cpi
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 0.4.2
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: ruby_vcloud_sdk
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ type: :runtime
47
+ prerelease: false
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: uuidtools
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ type: :runtime
58
+ prerelease: false
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: yajl-ruby
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 0.8.2
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: *id005
71
+ description: BOSH vCloud CPI
72
+ email: support@vmware.com
73
+ executables: []
74
+
75
+ extensions: []
76
+
77
+ extra_rdoc_files: []
78
+
79
+ files:
80
+ - lib/cloud/vcloud.rb
81
+ - lib/cloud/vcloud/cloud.rb
82
+ - lib/cloud/vcloud/const.rb
83
+ - lib/cloud/vcloud/util.rb
84
+ - lib/cloud/vcloud/version.rb
85
+ - README
86
+ - Rakefile
87
+ - spec/assets/test-deployment-manifest.yml
88
+ - spec/assets/test-director-config.yml
89
+ - spec/assets/valid_stemcell.tgz
90
+ - spec/spec_helper.rb
91
+ - spec/unit/cloud_spec.rb
92
+ has_rdoc: true
93
+ homepage: http://www.vmware.com
94
+ licenses: []
95
+
96
+ post_install_message:
97
+ rdoc_options: []
98
+
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ hash: -157759317589376717
107
+ segments:
108
+ - 0
109
+ version: "0"
110
+ required_rubygems_version: !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ hash: -157759317589376717
116
+ segments:
117
+ - 0
118
+ version: "0"
119
+ requirements: []
120
+
121
+ rubyforge_project:
122
+ rubygems_version: 1.6.2
123
+ signing_key:
124
+ specification_version: 3
125
+ summary: BOSH vCloud CPI
126
+ test_files:
127
+ - spec/assets/test-deployment-manifest.yml
128
+ - spec/assets/test-director-config.yml
129
+ - spec/assets/valid_stemcell.tgz
130
+ - spec/spec_helper.rb
131
+ - spec/unit/cloud_spec.rb