bosh_vsphere_cpi 1.2801.0 → 1.2807.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/lib/cloud/vsphere/client.rb +4 -0
- data/lib/cloud/vsphere/cloud.rb +12 -107
- data/lib/cloud/vsphere/resources/disk/disk_config.rb +35 -0
- data/lib/cloud/vsphere/resources/disk/ephemeral_disk.rb +21 -0
- data/lib/cloud/vsphere/resources/disk/persistent_disk.rb +110 -0
- data/lib/cloud/vsphere/version.rb +1 -1
- data/lib/cloud/vsphere/vm_creator.rb +6 -6
- metadata +11 -8
data/lib/cloud/vsphere/client.rb
CHANGED
|
@@ -129,6 +129,10 @@ module VSphereCloud
|
|
|
129
129
|
tasks.each { |task| wait_for_task(task) }
|
|
130
130
|
end
|
|
131
131
|
|
|
132
|
+
def create_datastore_folder(folder_path, datacenter)
|
|
133
|
+
@service_content.file_manager.make_directory(folder_path, datacenter, true)
|
|
134
|
+
end
|
|
135
|
+
|
|
132
136
|
def create_folder(name)
|
|
133
137
|
@service_content.root_folder.create_folder(name)
|
|
134
138
|
end
|
data/lib/cloud/vsphere/cloud.rb
CHANGED
|
@@ -14,6 +14,7 @@ require 'cloud/vsphere/resources/cluster'
|
|
|
14
14
|
require 'cloud/vsphere/resources/datacenter'
|
|
15
15
|
require 'cloud/vsphere/resources/datastore'
|
|
16
16
|
require 'cloud/vsphere/resources/folder'
|
|
17
|
+
require 'cloud/vsphere/resources/disk/persistent_disk'
|
|
17
18
|
require 'cloud/vsphere/resources/resource_pool'
|
|
18
19
|
require 'cloud/vsphere/resources/scorer'
|
|
19
20
|
require 'cloud/vsphere/resources/util'
|
|
@@ -380,8 +381,8 @@ module VSphereCloud
|
|
|
380
381
|
end
|
|
381
382
|
|
|
382
383
|
def get_vm_host_info(vm_ref)
|
|
383
|
-
|
|
384
|
-
vm_runtime =
|
|
384
|
+
vm_properties = @cloud_searcher.get_properties(vm_ref, Vim::VirtualMachine, 'runtime')
|
|
385
|
+
vm_runtime = vm_properties['runtime']
|
|
385
386
|
|
|
386
387
|
properties = @cloud_searcher.get_properties(vm_runtime.host, Vim::HostSystem, ['datastore', 'parent'], ensure_all: true)
|
|
387
388
|
|
|
@@ -398,112 +399,37 @@ module VSphereCloud
|
|
|
398
399
|
{ 'cluster' => cluster['name'], 'datastores' => datastores_accessible }
|
|
399
400
|
end
|
|
400
401
|
|
|
401
|
-
def find_persistent_datastore(datacenter_name, host_info, disk_size)
|
|
402
|
-
# Find datastore
|
|
403
|
-
datastore = @resources.place_persistent_datastore(datacenter_name, host_info['cluster'], disk_size)
|
|
404
|
-
|
|
405
|
-
if datastore.nil?
|
|
406
|
-
raise Bosh::Clouds::NoDiskSpace.new(true), "Not enough persistent space on cluster #{host_info['cluster']}, #{disk_size}"
|
|
407
|
-
end
|
|
408
|
-
|
|
409
|
-
# Sanity check, verify that the vm's host can access this datastore
|
|
410
|
-
unless host_info['datastores'].include?(datastore.name)
|
|
411
|
-
raise "Datastore not accessible to host, #{datastore.name}, #{host_info['datastores']}"
|
|
412
|
-
end
|
|
413
|
-
datastore
|
|
414
|
-
end
|
|
415
|
-
|
|
416
402
|
def attach_disk(vm_cid, disk_cid)
|
|
417
403
|
with_thread_name("attach_disk(#{vm_cid}, #{disk_cid})") do
|
|
418
404
|
@logger.info("Attaching disk: #{disk_cid} on vm: #{vm_cid}")
|
|
419
|
-
disk = Models::Disk.first(uuid: disk_cid)
|
|
420
|
-
raise "Disk not found: #{disk_cid}" if disk.nil?
|
|
421
405
|
|
|
422
406
|
vm = get_vm_by_cid(vm_cid)
|
|
423
407
|
|
|
424
|
-
datacenter = client.find_parent(vm, Vim::Datacenter)
|
|
425
408
|
datacenter_name = config.datacenter_name
|
|
426
409
|
|
|
427
410
|
vm_properties = @cloud_searcher.get_properties(vm, Vim::VirtualMachine, 'config.hardware.device', ensure_all: true)
|
|
428
411
|
host_info = get_vm_host_info(vm)
|
|
429
412
|
|
|
430
|
-
create_disk = false
|
|
431
|
-
if disk.path
|
|
432
|
-
|
|
433
|
-
disk_in_correct_datacenter =
|
|
434
|
-
(disk.datacenter == datacenter_name &&
|
|
435
|
-
@resources.validate_persistent_datastore(datacenter_name, disk.datastore) &&
|
|
436
|
-
host_info['datastores'].include?(disk.datastore))
|
|
437
|
-
|
|
438
|
-
if disk_in_correct_datacenter
|
|
439
|
-
@logger.info("Disk already in the right datastore #{datacenter_name} #{disk.datastore}")
|
|
440
|
-
persistent_datastore =
|
|
441
|
-
@resources.persistent_datastore(datacenter_name, host_info['cluster'], disk.datastore)
|
|
442
|
-
@logger.debug("Datastore: #{persistent_datastore}")
|
|
443
|
-
else
|
|
444
|
-
@logger.info("Disk needs to move from #{datacenter_name} #{disk.datastore}")
|
|
445
|
-
# Find the destination datastore
|
|
446
|
-
persistent_datastore = find_persistent_datastore(datacenter_name, host_info, disk.size)
|
|
447
|
-
|
|
448
|
-
# Need to move disk to right datastore
|
|
449
|
-
source_datacenter = client.find_by_inventory_path(disk.datacenter)
|
|
450
|
-
source_path = disk.path
|
|
451
|
-
datacenter_disk_path = @resources.datacenters[disk.datacenter].disk_path
|
|
452
|
-
|
|
453
|
-
destination_path = "[#{persistent_datastore.name}] #{datacenter_disk_path}/#{disk.uuid}"
|
|
454
|
-
@logger.info("Moving #{disk.datacenter}/#{source_path} to #{datacenter_name}/#{destination_path}")
|
|
455
|
-
|
|
456
|
-
if config.copy_disks
|
|
457
|
-
client.copy_disk(source_datacenter, source_path, datacenter, destination_path)
|
|
458
|
-
@logger.info('Copied disk successfully')
|
|
459
|
-
else
|
|
460
|
-
client.move_disk(source_datacenter, source_path, datacenter, destination_path)
|
|
461
|
-
@logger.info('Moved disk successfully')
|
|
462
|
-
end
|
|
463
|
-
|
|
464
|
-
disk.datacenter = datacenter_name
|
|
465
|
-
disk.datastore = persistent_datastore.name
|
|
466
|
-
disk.path = destination_path
|
|
467
|
-
disk.save
|
|
468
|
-
end
|
|
469
|
-
else
|
|
470
|
-
@logger.info('Need to create disk')
|
|
471
|
-
|
|
472
|
-
# Find the destination datastore
|
|
473
|
-
persistent_datastore = find_persistent_datastore(datacenter_name, host_info, disk.size)
|
|
474
|
-
|
|
475
|
-
# Need to create disk
|
|
476
|
-
disk.datacenter = datacenter_name
|
|
477
|
-
disk.datastore = persistent_datastore.name
|
|
478
|
-
datacenter_disk_path = @resources.datacenters[disk.datacenter].disk_path
|
|
479
|
-
disk.path = "[#{disk.datastore}] #{datacenter_disk_path}/#{disk.uuid}"
|
|
480
|
-
disk.save
|
|
481
|
-
create_disk = true
|
|
482
|
-
end
|
|
483
|
-
|
|
484
413
|
devices = vm_properties['config.hardware.device']
|
|
485
414
|
system_disk = devices.find { |device| device.kind_of?(Vim::Vm::Device::VirtualDisk) }
|
|
486
415
|
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
config.device_change = []
|
|
495
|
-
config.device_change << attached_disk_config
|
|
496
|
-
fix_device_unit_numbers(devices, config.device_change)
|
|
416
|
+
disk = PersistentDisk.new(disk_cid, @cloud_searcher, @resources, @client, @logger)
|
|
417
|
+
disk_config_spec = disk.create_spec(datacenter_name, host_info, system_disk.controller_key, @config.copy_disks)
|
|
418
|
+
|
|
419
|
+
vm_config = Vim::Vm::ConfigSpec.new
|
|
420
|
+
vm_config.device_change = []
|
|
421
|
+
vm_config.device_change << disk_config_spec
|
|
422
|
+
fix_device_unit_numbers(devices, vm_config.device_change)
|
|
497
423
|
|
|
498
424
|
env = @agent_env.get_current_env(vm, datacenter_name)
|
|
499
425
|
@logger.info("Reading current agent env: #{env.pretty_inspect}")
|
|
500
|
-
env['disks']['persistent'][
|
|
426
|
+
env['disks']['persistent'][disk_cid] = disk_config_spec.device.unit_number.to_s
|
|
501
427
|
@logger.info("Updating agent env to: #{env.pretty_inspect}")
|
|
502
428
|
|
|
503
429
|
location = get_vm_location(vm, datacenter: datacenter_name)
|
|
504
430
|
@agent_env.set_env(vm, location, env)
|
|
505
431
|
@logger.info('Attaching disk')
|
|
506
|
-
client.reconfig_vm(vm,
|
|
432
|
+
client.reconfig_vm(vm, vm_config)
|
|
507
433
|
@logger.info('Finished attaching disk')
|
|
508
434
|
end
|
|
509
435
|
end
|
|
@@ -774,28 +700,7 @@ module VSphereCloud
|
|
|
774
700
|
end
|
|
775
701
|
|
|
776
702
|
def create_disk_config_spec(datastore, file_name, controller_key, space, options = {})
|
|
777
|
-
backing_info = Vim::Vm::Device::VirtualDisk::FlatVer2BackingInfo.new
|
|
778
|
-
backing_info.datastore = datastore
|
|
779
|
-
if options[:independent]
|
|
780
|
-
backing_info.disk_mode = Vim::Vm::Device::VirtualDiskOption::DiskMode::INDEPENDENT_PERSISTENT
|
|
781
|
-
else
|
|
782
|
-
backing_info.disk_mode = Vim::Vm::Device::VirtualDiskOption::DiskMode::PERSISTENT
|
|
783
|
-
end
|
|
784
|
-
backing_info.file_name = file_name
|
|
785
703
|
|
|
786
|
-
virtual_disk = Vim::Vm::Device::VirtualDisk.new
|
|
787
|
-
virtual_disk.key = -1
|
|
788
|
-
virtual_disk.controller_key = controller_key
|
|
789
|
-
virtual_disk.backing = backing_info
|
|
790
|
-
virtual_disk.capacity_in_kb = space * 1024
|
|
791
|
-
|
|
792
|
-
device_config_spec = Vim::Vm::Device::VirtualDeviceSpec.new
|
|
793
|
-
device_config_spec.device = virtual_disk
|
|
794
|
-
device_config_spec.operation = Vim::Vm::Device::VirtualDeviceSpec::Operation::ADD
|
|
795
|
-
if options[:create]
|
|
796
|
-
device_config_spec.file_operation = Vim::Vm::Device::VirtualDeviceSpec::FileOperation::CREATE
|
|
797
|
-
end
|
|
798
|
-
device_config_spec
|
|
799
704
|
end
|
|
800
705
|
|
|
801
706
|
def create_nic_config_spec(v_network_name, network, controller_key, dvs_index)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module VSphereCloud
|
|
2
|
+
class DiskConfig
|
|
3
|
+
def initialize(datastore, filename, controller_key, size)
|
|
4
|
+
@datastore = datastore
|
|
5
|
+
@filename = filename
|
|
6
|
+
@controller_key = controller_key
|
|
7
|
+
@size = size
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def spec(options)
|
|
11
|
+
backing_info = VimSdk::Vim::Vm::Device::VirtualDisk::FlatVer2BackingInfo.new
|
|
12
|
+
backing_info.datastore = @datastore
|
|
13
|
+
if options[:independent]
|
|
14
|
+
backing_info.disk_mode = VimSdk::Vim::Vm::Device::VirtualDiskOption::DiskMode::INDEPENDENT_PERSISTENT
|
|
15
|
+
else
|
|
16
|
+
backing_info.disk_mode = VimSdk::Vim::Vm::Device::VirtualDiskOption::DiskMode::PERSISTENT
|
|
17
|
+
end
|
|
18
|
+
backing_info.file_name = @filename
|
|
19
|
+
|
|
20
|
+
virtual_disk = VimSdk::Vim::Vm::Device::VirtualDisk.new
|
|
21
|
+
virtual_disk.key = -1
|
|
22
|
+
virtual_disk.controller_key = @controller_key
|
|
23
|
+
virtual_disk.backing = backing_info
|
|
24
|
+
virtual_disk.capacity_in_kb = @size * 1024
|
|
25
|
+
|
|
26
|
+
device_config_spec = VimSdk::Vim::Vm::Device::VirtualDeviceSpec.new
|
|
27
|
+
device_config_spec.device = virtual_disk
|
|
28
|
+
device_config_spec.operation = VimSdk::Vim::Vm::Device::VirtualDeviceSpec::Operation::ADD
|
|
29
|
+
if options[:create]
|
|
30
|
+
device_config_spec.file_operation = VimSdk::Vim::Vm::Device::VirtualDeviceSpec::FileOperation::CREATE
|
|
31
|
+
end
|
|
32
|
+
device_config_spec
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'cloud/vsphere/resources/disk/disk_config'
|
|
2
|
+
|
|
3
|
+
module VSphereCloud
|
|
4
|
+
class EphemeralDisk
|
|
5
|
+
def initialize(size, folder_name, datastore)
|
|
6
|
+
@folder_name = folder_name
|
|
7
|
+
@datastore = datastore
|
|
8
|
+
@size = size
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def create_spec(controller_key)
|
|
12
|
+
DiskConfig.new(@datastore.mob, filename, controller_key, @size).spec(create: true)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def filename
|
|
18
|
+
"[#{@datastore.name}] #{@folder_name}/ephemeral_disk.vmdk"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
require 'cloud/vsphere/resources/disk/disk_config'
|
|
2
|
+
|
|
3
|
+
module VSphereCloud
|
|
4
|
+
class PersistentDisk
|
|
5
|
+
def initialize(disk_cid, cloud_searcher, resources, client, logger)
|
|
6
|
+
@model = Models::Disk.first(uuid: disk_cid)
|
|
7
|
+
raise "Disk not found: #{disk_cid}" if @model.nil?
|
|
8
|
+
|
|
9
|
+
@disk_size = @model.size.to_i
|
|
10
|
+
|
|
11
|
+
@cloud_searcher = cloud_searcher
|
|
12
|
+
@resources = resources
|
|
13
|
+
@client = client
|
|
14
|
+
@logger = logger
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def create_spec(datacenter_name, host_info, controller_key, copy_disks)
|
|
18
|
+
need_to_create_disk = !disk_exists?
|
|
19
|
+
|
|
20
|
+
destination_datacenter = @resources.datacenters[datacenter_name]
|
|
21
|
+
|
|
22
|
+
if disk_exists?
|
|
23
|
+
if disk_in_correct_datacenter?(destination_datacenter.name, host_info)
|
|
24
|
+
@logger.info("Disk already in the right datastore #{destination_datacenter.name} #{@model.datastore}")
|
|
25
|
+
|
|
26
|
+
persistent_datastore = @resources.persistent_datastore(@model.datacenter, host_info['cluster'], @model.datastore)
|
|
27
|
+
else
|
|
28
|
+
@logger.info("Disk needs to move from #{@model.datacenter} to #{destination_datacenter.name}")
|
|
29
|
+
|
|
30
|
+
persistent_datastore = find_datastore(destination_datacenter, host_info)
|
|
31
|
+
move_disk(persistent_datastore, destination_datacenter, copy_disks)
|
|
32
|
+
update(persistent_datastore, destination_datacenter)
|
|
33
|
+
end
|
|
34
|
+
else
|
|
35
|
+
@logger.info('Need to create disk')
|
|
36
|
+
|
|
37
|
+
persistent_datastore = find_datastore(destination_datacenter, host_info)
|
|
38
|
+
create_parent_folder(persistent_datastore.name, destination_datacenter)
|
|
39
|
+
update(persistent_datastore, destination_datacenter)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
DiskConfig.new(persistent_datastore, filename, controller_key, @disk_size).
|
|
43
|
+
spec(independent: true, create: need_to_create_disk)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
def filename
|
|
49
|
+
"#{@model.path}.vmdk"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def datastore_disk_path(datastore_name, datacenter)
|
|
53
|
+
"[#{datastore_name}] #{datacenter.disk_path}/#{@model.uuid}"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def disk_exists?
|
|
57
|
+
!!@model.path
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def disk_in_correct_datacenter?(destination_datacenter_name, host_info)
|
|
61
|
+
(@model.datacenter == destination_datacenter_name &&
|
|
62
|
+
@resources.validate_persistent_datastore(destination_datacenter_name, @model.datastore) &&
|
|
63
|
+
host_info['datastores'].include?(@model.datastore))
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def find_datastore(datacenter, host_info)
|
|
67
|
+
datastore = @resources.place_persistent_datastore(datacenter.name, host_info['cluster'], @disk_size)
|
|
68
|
+
|
|
69
|
+
if datastore.nil?
|
|
70
|
+
raise Bosh::Clouds::NoDiskSpace.new(true), "Not enough persistent space on cluster #{host_info['cluster']}, #{@disk_size}"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Sanity check, verify that the vm's host can access this datastore
|
|
74
|
+
unless host_info['datastores'].include?(datastore.name)
|
|
75
|
+
raise "Datastore not accessible to host, #{datastore.name}, #{host_info['datastores']}"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
datastore
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def update(new_datastore, new_datacenter)
|
|
82
|
+
# Need to create disk
|
|
83
|
+
@model.datacenter = new_datacenter.name
|
|
84
|
+
@model.datastore = new_datastore.name
|
|
85
|
+
@model.path = datastore_disk_path(new_datastore.name, new_datacenter)
|
|
86
|
+
@model.save
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def move_disk(destination_datastore, destination_datacenter, copy_disks)
|
|
90
|
+
source_datacenter = @client.find_by_inventory_path(@model.datacenter)
|
|
91
|
+
destination_path = datastore_disk_path(destination_datastore.name, destination_datacenter)
|
|
92
|
+
@logger.info("Moving #{@model.path} to #{destination_path}")
|
|
93
|
+
|
|
94
|
+
create_parent_folder(destination_datastore.name, destination_datacenter)
|
|
95
|
+
|
|
96
|
+
if copy_disks
|
|
97
|
+
@client.copy_disk(source_datacenter, @model.path, destination_datacenter, destination_path)
|
|
98
|
+
@logger.info('Copied disk successfully')
|
|
99
|
+
else
|
|
100
|
+
@client.move_disk(source_datacenter, @model.path, destination_datacenter, destination_path)
|
|
101
|
+
@logger.info('Moved disk successfully')
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def create_parent_folder(datastore_name, datacenter)
|
|
106
|
+
destination_folder = File.dirname(datastore_disk_path(datastore_name, datacenter))
|
|
107
|
+
@client.create_datastore_folder(destination_folder, datacenter.mob)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
require 'ruby_vim_sdk'
|
|
2
2
|
require 'cloud/vsphere/drs_rules/drs_rule'
|
|
3
|
+
require 'cloud/vsphere/resources/disk/ephemeral_disk'
|
|
3
4
|
|
|
4
5
|
module VSphereCloud
|
|
5
6
|
class VmCreator
|
|
6
|
-
def initialize(memory,
|
|
7
|
+
def initialize(memory, disk_size, cpu, placer, client, cloud_searcher, logger, cpi, agent_env, file_provider)
|
|
7
8
|
@placer = placer
|
|
8
9
|
@client = client
|
|
9
10
|
@cloud_searcher = cloud_searcher
|
|
10
11
|
@logger = logger
|
|
11
12
|
@cpi = cpi
|
|
12
13
|
@memory = memory
|
|
13
|
-
@
|
|
14
|
+
@disk_size = disk_size
|
|
14
15
|
@cpu = cpu
|
|
15
16
|
@agent_env = agent_env
|
|
16
17
|
@file_provider = file_provider
|
|
@@ -28,7 +29,7 @@ module VSphereCloud
|
|
|
28
29
|
|
|
29
30
|
disks = @cpi.disk_spec(disk_cids)
|
|
30
31
|
# need to include swap and linked clone log
|
|
31
|
-
ephemeral = @
|
|
32
|
+
ephemeral = @disk_size + @memory + stemcell_size
|
|
32
33
|
cluster, datastore = @placer.place(@memory, ephemeral, disks)
|
|
33
34
|
|
|
34
35
|
name = "vm-#{@cpi.generate_unique_name}"
|
|
@@ -48,9 +49,8 @@ module VSphereCloud
|
|
|
48
49
|
system_disk = devices.find { |device| device.kind_of?(VimSdk::Vim::Vm::Device::VirtualDisk) }
|
|
49
50
|
pci_controller = devices.find { |device| device.kind_of?(VimSdk::Vim::Vm::Device::VirtualPCIController) }
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
ephemeral_disk_config =
|
|
53
|
-
@cpi.create_disk_config_spec(datastore.mob, file_name, system_disk.controller_key, @disk, create: true)
|
|
52
|
+
ephemeral_disk = VSphereCloud::EphemeralDisk.new(@disk_size, name, datastore)
|
|
53
|
+
ephemeral_disk_config = ephemeral_disk.create_spec(system_disk.controller_key)
|
|
54
54
|
config.device_change << ephemeral_disk_config
|
|
55
55
|
|
|
56
56
|
dvs_index = {}
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bosh_vsphere_cpi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2807.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2014-12-
|
|
12
|
+
date: 2014-12-25 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bosh_common
|
|
@@ -18,7 +18,7 @@ dependencies:
|
|
|
18
18
|
requirements:
|
|
19
19
|
- - ~>
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: 1.
|
|
21
|
+
version: 1.2807.0
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -26,7 +26,7 @@ dependencies:
|
|
|
26
26
|
requirements:
|
|
27
27
|
- - ~>
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: 1.
|
|
29
|
+
version: 1.2807.0
|
|
30
30
|
- !ruby/object:Gem::Dependency
|
|
31
31
|
name: bosh_cpi
|
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -34,7 +34,7 @@ dependencies:
|
|
|
34
34
|
requirements:
|
|
35
35
|
- - ~>
|
|
36
36
|
- !ruby/object:Gem::Version
|
|
37
|
-
version: 1.
|
|
37
|
+
version: 1.2807.0
|
|
38
38
|
type: :runtime
|
|
39
39
|
prerelease: false
|
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -42,7 +42,7 @@ dependencies:
|
|
|
42
42
|
requirements:
|
|
43
43
|
- - ~>
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: 1.
|
|
45
|
+
version: 1.2807.0
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
47
|
name: membrane
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -173,7 +173,7 @@ dependencies:
|
|
|
173
173
|
version: 0.7.1
|
|
174
174
|
description: ! 'BOSH VSphere CPI
|
|
175
175
|
|
|
176
|
-
|
|
176
|
+
0b041c'
|
|
177
177
|
email: support@cloudfoundry.com
|
|
178
178
|
executables:
|
|
179
179
|
- vsphere_cpi
|
|
@@ -203,6 +203,9 @@ files:
|
|
|
203
203
|
- lib/cloud/vsphere/resources/cluster.rb
|
|
204
204
|
- lib/cloud/vsphere/resources/datacenter.rb
|
|
205
205
|
- lib/cloud/vsphere/resources/datastore.rb
|
|
206
|
+
- lib/cloud/vsphere/resources/disk/disk_config.rb
|
|
207
|
+
- lib/cloud/vsphere/resources/disk/ephemeral_disk.rb
|
|
208
|
+
- lib/cloud/vsphere/resources/disk/persistent_disk.rb
|
|
206
209
|
- lib/cloud/vsphere/resources/folder.rb
|
|
207
210
|
- lib/cloud/vsphere/resources/resource_pool.rb
|
|
208
211
|
- lib/cloud/vsphere/resources/scorer.rb
|
|
@@ -260,7 +263,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
260
263
|
version: '0'
|
|
261
264
|
segments:
|
|
262
265
|
- 0
|
|
263
|
-
hash: -
|
|
266
|
+
hash: -1305819405151799674
|
|
264
267
|
requirements: []
|
|
265
268
|
rubyforge_project:
|
|
266
269
|
rubygems_version: 1.8.23
|