fog-vsphere 1.7.0.1 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +1 -2
- data/.travis.yml +7 -6
- data/CHANGELOG.md +13 -2
- data/CONTRIBUTORS.md +0 -8
- data/Rakefile +1 -10
- data/gemfiles/Gemfile.1.9.2+ +9 -0
- data/lib/fog/vsphere/compute.rb +2 -0
- data/lib/fog/vsphere/models/compute/scsicontroller.rb +6 -1
- data/lib/fog/vsphere/models/compute/server.rb +37 -8
- data/lib/fog/vsphere/models/compute/volume.rb +62 -28
- data/lib/fog/vsphere/models/compute/volumes.rb +1 -1
- data/lib/fog/vsphere/requests/compute/create_vm.rb +32 -44
- data/lib/fog/vsphere/requests/compute/list_vm_scsi_controllers.rb +4 -11
- data/lib/fog/vsphere/requests/compute/list_vm_volumes.rb +2 -1
- data/lib/fog/vsphere/requests/compute/modify_vm_controller.rb +2 -14
- data/lib/fog/vsphere/requests/compute/modify_vm_volume.rb +3 -3
- data/lib/fog/vsphere/requests/compute/vm_clone.rb +2 -2
- data/lib/fog/vsphere/requests/compute/vm_migrate.rb +1 -0
- data/lib/fog/vsphere/requests/compute/vm_reconfig_volumes.rb +26 -15
- data/lib/fog/vsphere/version.rb +1 -1
- data/tests/class_from_string_tests.rb +3 -3
- data/tests/compute_tests.rb +17 -16
- data/tests/helpers/mock_helper.rb +3 -3
- data/tests/models/compute/cluster_tests.rb +5 -4
- data/tests/models/compute/hosts_tests.rb +4 -2
- data/tests/models/compute/rules_tests.rb +16 -10
- data/tests/models/compute/server_tests.rb +29 -33
- data/tests/models/compute/servers_tests.rb +4 -2
- data/tests/requests/compute/current_time_tests.rb +4 -2
- data/tests/requests/compute/folder_destroy_tests.rb +7 -5
- data/tests/requests/compute/get_network_tests.rb +22 -18
- data/tests/requests/compute/list_child_snapshots_tests.rb +2 -1
- data/tests/requests/compute/list_clusters_tests.rb +6 -5
- data/tests/requests/compute/list_datastores_tests.rb +7 -6
- data/tests/requests/compute/list_hosts_tests.rb +4 -3
- data/tests/requests/compute/list_networks_tests.rb +7 -6
- data/tests/requests/compute/list_storage_pods_test.rb +4 -3
- data/tests/requests/compute/list_virtual_machines_tests.rb +20 -16
- data/tests/requests/compute/list_vm_cdroms_tests.rb +2 -1
- data/tests/requests/compute/list_vm_snapshots_tests.rb +2 -1
- data/tests/requests/compute/modify_vm_cdrom_tests.rb +4 -3
- data/tests/requests/compute/revert_to_snapshot_tests.rb +4 -2
- data/tests/requests/compute/set_vm_customvalue_tests.rb +2 -0
- data/tests/requests/compute/vm_clone_tests.rb +20 -20
- data/tests/requests/compute/vm_config_vnc_tests.rb +4 -3
- data/tests/requests/compute/vm_destroy_tests.rb +4 -1
- data/tests/requests/compute/vm_migrate_tests.rb +2 -1
- data/tests/requests/compute/vm_power_off_tests.rb +4 -2
- data/tests/requests/compute/vm_power_on_tests.rb +3 -1
- data/tests/requests/compute/vm_reboot_tests.rb +4 -2
- data/tests/requests/compute/vm_reconfig_cdrom_tests.rb +3 -2
- data/tests/requests/compute/vm_reconfig_cpus_tests.rb +3 -1
- data/tests/requests/compute/vm_reconfig_hardware_tests.rb +4 -2
- data/tests/requests/compute/vm_reconfig_memory_tests.rb +3 -1
- data/tests/requests/compute/vm_take_snapshot_tests.rb +3 -1
- metadata +4 -22
- data/.rubocop.yml +0 -8
- data/.rubocop_todo.yml +0 -217
- data/lib/fog/vsphere/models/compute/ticket.rb +0 -16
- data/lib/fog/vsphere/models/compute/tickets.rb +0 -25
- data/lib/fog/vsphere/requests/compute/host_finish_maintenance.rb +0 -14
- data/lib/fog/vsphere/requests/compute/host_shutdown.rb +0 -14
- data/lib/fog/vsphere/requests/compute/host_start_maintenance.rb +0 -14
- data/lib/fog/vsphere/requests/compute/vm_acquire_ticket.rb +0 -34
- data/lib/fog/vsphere/requests/compute/vm_relocate.rb +0 -54
- data/lib/fog/vsphere/requests/compute/vm_remove_snapshot.rb +0 -29
- data/lib/fog/vsphere/requests/compute/vm_rename.rb +0 -24
- data/lib/fog/vsphere/requests/compute/vm_revert_snapshot.rb +0 -29
- data/lib/fog/vsphere/requests/compute/vm_suspend.rb +0 -54
- data/tests/models/compute/ticket_tests.rb +0 -12
- data/tests/models/compute/tickets_tests.rb +0 -8
- data/tests/requests/compute/vm_suspend_tests.rb +0 -23
@@ -20,7 +20,7 @@ module Fog
|
|
20
20
|
vm_cfg[:cpuHotAddEnabled] = attributes[:cpuHotAddEnabled] if attributes.key?(:cpuHotAddEnabled)
|
21
21
|
vm_cfg[:memoryHotAddEnabled] = attributes[:memoryHotAddEnabled] if attributes.key?(:memoryHotAddEnabled)
|
22
22
|
vm_cfg[:firmware] = attributes[:firmware] if attributes.key?(:firmware)
|
23
|
-
vm_cfg[:bootOptions] = boot_options(attributes) if attributes.key?(:boot_order) || attributes.key?(:boot_retry)
|
23
|
+
vm_cfg[:bootOptions] = boot_options(attributes, vm_cfg) if attributes.key?(:boot_order) || attributes.key?(:boot_retry)
|
24
24
|
resource_pool = if attributes[:resource_pool] && attributes[:resource_pool] != 'Resources'
|
25
25
|
get_raw_resource_pool(attributes[:resource_pool], attributes[:cluster], attributes[:datacenter])
|
26
26
|
else
|
@@ -97,9 +97,12 @@ module Fog
|
|
97
97
|
devices << nics.map { |nic| create_interface(nic, nics.index(nic), :add, attributes) }
|
98
98
|
end
|
99
99
|
|
100
|
+
if (scsi_controllers = (attributes[:scsi_controllers] || attributes["scsi_controller"]))
|
101
|
+
devices << scsi_controllers.each_with_index.map { |controller, index| create_controller(controller, index) }
|
102
|
+
end
|
103
|
+
|
100
104
|
if (disks = attributes[:volumes])
|
101
|
-
devices <<
|
102
|
-
devices << disks.map { |disk| create_disk(disk, disks.index(disk), :add, 1000, get_storage_pod(attributes)) }
|
105
|
+
devices << disks.map { |disk| create_disk(disk, :add, get_storage_pod(attributes)) }
|
103
106
|
end
|
104
107
|
|
105
108
|
if (cdroms = attributes[:cdroms])
|
@@ -108,12 +111,12 @@ module Fog
|
|
108
111
|
devices.flatten
|
109
112
|
end
|
110
113
|
|
111
|
-
def boot_options
|
114
|
+
def boot_options(attributes, vm_cfg)
|
112
115
|
# NOTE: you must be using vsphere_rev 5.0 or greater to set boot_order
|
113
116
|
# e.g. Fog::Compute.new(provider: "vsphere", vsphere_rev: "5.5", etc)
|
114
117
|
options = {}
|
115
118
|
if @vsphere_rev.to_f >= 5 and attributes[:boot_order]
|
116
|
-
options[:bootOrder] = boot_order(attributes)
|
119
|
+
options[:bootOrder] = boot_order(attributes, vm_cfg)
|
117
120
|
end
|
118
121
|
|
119
122
|
# Set attributes[:boot_retry] to a delay in miliseconds to enable boot retries
|
@@ -121,11 +124,11 @@ module Fog
|
|
121
124
|
options[:bootRetryEnabled] = true
|
122
125
|
options[:bootRetryDelay] = attributes[:boot_retry]
|
123
126
|
end
|
124
|
-
|
127
|
+
|
125
128
|
options.empty? ? nil : RbVmomi::VIM::VirtualMachineBootOptions.new(options)
|
126
129
|
end
|
127
130
|
|
128
|
-
def boot_order
|
131
|
+
def boot_order(attributes, vm_cfg)
|
129
132
|
# attributes[:boot_order] may be an array like this ['network', 'disk']
|
130
133
|
# stating, that we want to prefer network boots over disk boots
|
131
134
|
boot_order = []
|
@@ -142,18 +145,17 @@ module Fog
|
|
142
145
|
end
|
143
146
|
end
|
144
147
|
when 'disk'
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
end
|
148
|
+
disks = vm_cfg[:deviceChange].map {|dev| dev[:device]}.select { |dev| dev.is_a? RbVmomi::VIM::VirtualDisk }
|
149
|
+
disks.each do |disk|
|
150
|
+
# we allow booting from all harddisks, the first disk has the highest priority
|
151
|
+
boot_order << RbVmomi::VIM::VirtualMachineBootOptionsBootableDiskDevice.new(
|
152
|
+
:deviceKey => disk.key
|
153
|
+
)
|
152
154
|
end
|
153
155
|
when 'cdrom'
|
154
|
-
boot_order << RbVmomi::VIM::VirtualMachineBootOptionsBootableCdromDevice.new
|
156
|
+
boot_order << RbVmomi::VIM::VirtualMachineBootOptionsBootableCdromDevice.new
|
155
157
|
when 'floppy'
|
156
|
-
boot_order << RbVmomi::VIM::VirtualMachineBootOptionsBootableFloppyDevice.new
|
158
|
+
boot_order << RbVmomi::VIM::VirtualMachineBootOptionsBootableFloppyDevice.new
|
157
159
|
else
|
158
160
|
raise "failed to create boot device because \"#{boot_device}\" is unknown"
|
159
161
|
end
|
@@ -161,19 +163,6 @@ module Fog
|
|
161
163
|
boot_order
|
162
164
|
end
|
163
165
|
|
164
|
-
def get_disk_device_key(index)
|
165
|
-
# disk key is based on 2000 + the SCSI ID + the controller bus * 16
|
166
|
-
# the scsi host adapter appears as SCSI ID 7, so we have to skip that
|
167
|
-
# host adapter key is based on 1000 + bus id
|
168
|
-
# fog assumes that there is only a single scsi controller, see device_change()
|
169
|
-
if (index > 6) then
|
170
|
-
_index = index + 1
|
171
|
-
else
|
172
|
-
_index = index
|
173
|
-
end
|
174
|
-
2000 + _index
|
175
|
-
end
|
176
|
-
|
177
166
|
def create_nic_backing nic, attributes
|
178
167
|
raw_network = get_raw_network(nic.network, attributes[:datacenter], if nic.virtualswitch then nic.virtualswitch end)
|
179
168
|
|
@@ -204,9 +193,9 @@ module Fog
|
|
204
193
|
}
|
205
194
|
end
|
206
195
|
|
207
|
-
def create_controller
|
208
|
-
options=if
|
209
|
-
controller_default_options.merge(
|
196
|
+
def create_controller(controller=nil, index = 0)
|
197
|
+
options=if controller
|
198
|
+
controller_default_options.merge(controller.attributes)
|
210
199
|
else
|
211
200
|
controller_default_options
|
212
201
|
end
|
@@ -218,15 +207,15 @@ module Fog
|
|
218
207
|
{
|
219
208
|
:operation => options[:operation],
|
220
209
|
:device => controller_class.new({
|
221
|
-
:key => options[:key],
|
222
|
-
:busNumber => options[:bus_id],
|
210
|
+
:key => options[:key] || (1000 + index),
|
211
|
+
:busNumber => options[:bus_id] || index,
|
223
212
|
:sharedBus => controller_get_shared_from_options(options),
|
224
213
|
})
|
225
214
|
}
|
226
215
|
end
|
227
216
|
|
228
217
|
def controller_default_options
|
229
|
-
{:operation =>
|
218
|
+
{:operation => :add, :type => RbVmomi::VIM.VirtualLsiLogicController.class, :shared => false }
|
230
219
|
end
|
231
220
|
|
232
221
|
def controller_get_shared_from_options options
|
@@ -241,30 +230,29 @@ module Fog
|
|
241
230
|
end
|
242
231
|
end
|
243
232
|
|
244
|
-
def create_disk
|
245
|
-
if (index > 6) then
|
246
|
-
_index = index + 1
|
247
|
-
else
|
248
|
-
_index = index
|
249
|
-
end
|
233
|
+
def create_disk(disk, operation = :add, storage_pod = nil)
|
250
234
|
# If we deploy the vm on a storage pod, datastore has to be an empty string
|
251
235
|
if storage_pod
|
252
236
|
datastore = ''
|
253
237
|
else
|
254
238
|
datastore = "[#{disk.datastore}]"
|
255
239
|
end
|
240
|
+
|
241
|
+
disk.set_unit_number
|
242
|
+
disk.set_key
|
243
|
+
|
256
244
|
payload = {
|
257
245
|
:operation => operation,
|
258
246
|
:fileOperation => operation == :add ? :create : :destroy,
|
259
247
|
:device => RbVmomi::VIM.VirtualDisk(
|
260
|
-
:key => disk.key
|
248
|
+
:key => disk.key,
|
261
249
|
:backing => RbVmomi::VIM.VirtualDiskFlatVer2BackingInfo(
|
262
250
|
:fileName => datastore,
|
263
251
|
:diskMode => disk.mode.to_sym,
|
264
252
|
:thinProvisioned => disk.thin
|
265
253
|
),
|
266
|
-
:controllerKey => controller_key,
|
267
|
-
:unitNumber =>
|
254
|
+
:controllerKey => disk.controller_key,
|
255
|
+
:unitNumber => disk.unit_number,
|
268
256
|
:capacityInKB => disk.size
|
269
257
|
)
|
270
258
|
}
|
@@ -11,21 +11,14 @@ module Fog
|
|
11
11
|
def list_vm_scsi_controllers_raw(vm_id)
|
12
12
|
get_vm_ref(vm_id).config.hardware.device.grep(RbVmomi::VIM::VirtualSCSIController).map do |ctrl|
|
13
13
|
{
|
14
|
-
type
|
15
|
-
shared_bus
|
16
|
-
unit_number
|
17
|
-
key
|
14
|
+
:type => ctrl.class.to_s,
|
15
|
+
:shared_bus => ctrl.sharedBus.to_s,
|
16
|
+
:unit_number => ctrl.scsiCtlrUnitNumber,
|
17
|
+
:key => ctrl.key,
|
18
18
|
}
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
22
|
-
class Mock
|
23
|
-
def list_vm_scsi_controllers(vm_id)
|
24
|
-
raise Fog::Compute::Vsphere::NotFound, 'VM not Found' unless data[:servers].key?(vm_id)
|
25
|
-
return [] unless data[:servers][vm_id].key?('scsi_controllers')
|
26
|
-
data[:servers][vm_id]['scsi_controllers'].map { |h| h.merge(server_id: vm_id) }
|
27
|
-
end
|
28
|
-
end
|
29
22
|
end
|
30
23
|
end
|
31
24
|
end
|
@@ -3,25 +3,13 @@ module Fog
|
|
3
3
|
class Vsphere
|
4
4
|
class Real
|
5
5
|
def add_vm_controller(controller)
|
6
|
-
|
7
|
-
options[:operation] = 'add'
|
8
|
-
options[:type] = controller.type
|
9
|
-
options[:key] = controller.key
|
10
|
-
options[:shared] = controller.shared_bus
|
11
|
-
|
12
|
-
vm_reconfig_hardware('instance_uuid' => controller.server_id, 'hardware_spec' => {'deviceChange'=>[create_controller(options)]})
|
6
|
+
vm_reconfig_hardware('instance_uuid' => controller.server_id, 'hardware_spec' => {'deviceChange'=>[create_controller(controller)]})
|
13
7
|
end
|
14
8
|
end
|
15
9
|
|
16
10
|
class Mock
|
17
11
|
def add_vm_controller(controller)
|
18
|
-
|
19
|
-
options[:operation] = 'add'
|
20
|
-
options[:type] = RbVmomi::VIM.VirtualLsiLogicController.class
|
21
|
-
options[:key] = 1000
|
22
|
-
options[:shared] = false
|
23
|
-
|
24
|
-
vm_reconfig_hardware('instance_uuid' => controller.server_id, 'hardware_spec' => {'deviceChange'=>[create_controller(options)]})
|
12
|
+
vm_reconfig_hardware('instance_uuid' => controller.server_id, 'hardware_spec' => {'deviceChange'=>[create_controller(controller)]})
|
25
13
|
end
|
26
14
|
end
|
27
15
|
end
|
@@ -3,17 +3,17 @@ module Fog
|
|
3
3
|
class Vsphere
|
4
4
|
class Real
|
5
5
|
def add_vm_volume(volume)
|
6
|
-
vm_reconfig_hardware('instance_uuid' => volume.server_id, 'hardware_spec' => {'deviceChange'=>[create_disk(volume,
|
6
|
+
vm_reconfig_hardware('instance_uuid' => volume.server_id, 'hardware_spec' => {'deviceChange'=>[create_disk(volume, :add)]})
|
7
7
|
end
|
8
8
|
|
9
9
|
def destroy_vm_volume(volume)
|
10
|
-
vm_reconfig_hardware('instance_uuid' => volume.server_id, 'hardware_spec' => {'deviceChange'=>[create_disk(volume,
|
10
|
+
vm_reconfig_hardware('instance_uuid' => volume.server_id, 'hardware_spec' => {'deviceChange'=>[create_disk(volume, :remove)]})
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
class Mock
|
15
15
|
def add_vm_volume(volume)
|
16
|
-
vm_reconfig_hardware('instance_uuid' => volume.server_id, 'hardware_spec' => {'deviceChange'=>[create_cdrom(volume,
|
16
|
+
vm_reconfig_hardware('instance_uuid' => volume.server_id, 'hardware_spec' => {'deviceChange'=>[create_cdrom(volume, :add)]})
|
17
17
|
end
|
18
18
|
|
19
19
|
def destroy_vm_volume(volume)
|
@@ -133,7 +133,7 @@ module Fog
|
|
133
133
|
# Options['host']<~String>
|
134
134
|
# The target host for the virtual machine. Optional.
|
135
135
|
if options.key?('host') && !options['host'].empty? && !cluster_name.nil?
|
136
|
-
host = get_raw_host(options['host'],
|
136
|
+
host = get_raw_host(options['host'], cluster_name, options['datacenter'])
|
137
137
|
else
|
138
138
|
host = nil
|
139
139
|
end
|
@@ -747,7 +747,7 @@ module Fog
|
|
747
747
|
:device => template_volume }
|
748
748
|
end
|
749
749
|
end
|
750
|
-
specs.concat(new_volumes.map { |volume| create_disk(volume
|
750
|
+
specs.concat(new_volumes.map { |volume| create_disk(volume) })
|
751
751
|
return specs
|
752
752
|
end
|
753
753
|
end
|
@@ -15,6 +15,7 @@ module Fog
|
|
15
15
|
raise Fog::Vsphere::Errors::NotFound,
|
16
16
|
"Could not find VirtualMachine with instance uuid #{options['instance_uuid']}"
|
17
17
|
end
|
18
|
+
options['host'] = get_raw_host(options['host'], options['cluster'], options['datacenter']) if options['host']
|
18
19
|
task = vm_mob_ref.MigrateVM_Task(:pool => options['pool'], :host => options['host'], :priority => "#{priority}", :state => options['state'] )
|
19
20
|
task.wait_for_completion
|
20
21
|
{ 'task_state' => task.info.state }
|
@@ -3,36 +3,47 @@ module Fog
|
|
3
3
|
class Vsphere
|
4
4
|
class Real
|
5
5
|
def vm_reconfig_volumes(options = {})
|
6
|
-
raise ArgumentError,
|
7
|
-
raise ArgumentError,
|
6
|
+
raise ArgumentError, "instance_uuid is a required parameter" unless options.key? 'instance_uuid'
|
7
|
+
raise ArgumentError, "volumes is a required parameter" unless options.key? 'volumes'
|
8
8
|
hardware_spec = {
|
9
9
|
deviceChange: []
|
10
10
|
}
|
11
11
|
options['volumes'].each do |volume|
|
12
|
-
hardware_spec[:deviceChange].push(
|
12
|
+
hardware_spec[:deviceChange].push({
|
13
|
+
:operation=>:edit,
|
14
|
+
device: RbVmomi::VIM::VirtualDisk(
|
15
|
+
backing: RbVmomi::VIM::VirtualDiskFlatVer2BackingInfo( diskMode: volume.mode, fileName: volume.filename ),
|
16
|
+
unitNumber: volume.unit_number,
|
17
|
+
key: volume.key,
|
18
|
+
controllerKey: volume.controller_key,
|
19
|
+
capacityInKB: volume.size,
|
20
|
+
)
|
21
|
+
})
|
13
22
|
end
|
14
|
-
vm_reconfig_hardware('instance_uuid' => options['instance_uuid'], 'hardware_spec' => hardware_spec)
|
23
|
+
vm_reconfig_hardware('instance_uuid' => options['instance_uuid'], 'hardware_spec' => hardware_spec )
|
15
24
|
end
|
16
25
|
end
|
17
26
|
|
18
27
|
class Mock
|
19
28
|
def vm_reconfig_volumes(options = {})
|
20
|
-
raise ArgumentError,
|
21
|
-
raise ArgumentError,
|
29
|
+
raise ArgumentError, "instance_uuid is a required parameter" unless options.key? 'instance_uuid'
|
30
|
+
raise ArgumentError, "volumes is a required parameter" unless options.key? 'volumes'
|
22
31
|
hardware_spec = {
|
23
32
|
deviceChange: []
|
24
33
|
}
|
25
34
|
options['volumes'].each do |volume|
|
26
|
-
hardware_spec[:deviceChange].push(
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
35
|
+
hardware_spec[:deviceChange].push({
|
36
|
+
:operation=>:edit,
|
37
|
+
device: {
|
38
|
+
backing: { diskMode: volume.mode, fileName: volume.filename },
|
39
|
+
unitNumber: volume.unit_number,
|
40
|
+
key: volume.key,
|
41
|
+
controllerKey: volume.controller_key,
|
42
|
+
capacityInKB: volume.size,
|
43
|
+
}
|
44
|
+
})
|
34
45
|
end
|
35
|
-
vm_reconfig_hardware('instance_uuid' => options['instance_uuid'], 'hardware_spec' => hardware_spec)
|
46
|
+
vm_reconfig_hardware('instance_uuid' => options['instance_uuid'], 'hardware_spec' => hardware_spec )
|
36
47
|
end
|
37
48
|
end
|
38
49
|
end
|
data/lib/fog/vsphere/version.rb
CHANGED
@@ -4,11 +4,11 @@ class A; class B; class C; end; end; end
|
|
4
4
|
|
5
5
|
class TestClassFromString < Minitest::Test
|
6
6
|
def test_empty_string
|
7
|
-
|
7
|
+
assert_equal(nil, Fog::Vsphere.class_from_string(''))
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_nil
|
11
|
-
|
11
|
+
assert_equal(nil, Fog::Vsphere.class_from_string(nil))
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_name_as_class
|
@@ -20,7 +20,7 @@ class TestClassFromString < Minitest::Test
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_unexpected_input
|
23
|
-
|
23
|
+
assert_equal(nil, Fog::Vsphere.class_from_string(8))
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_nested_class_without_default_path
|
data/tests/compute_tests.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
Shindo.tests('Fog::Compute[:vsphere]', ['vsphere']) do
|
2
|
+
|
2
3
|
compute = Fog::Compute[:vsphere]
|
3
4
|
|
4
|
-
tests(
|
5
|
+
tests("| convert_vm_mob_ref_to_attr_hash") do
|
5
6
|
# Mock the RbVmomi::VIM::ManagedObject class
|
6
7
|
class MockManagedObject
|
7
8
|
attr_reader :parent, :_ref
|
@@ -10,42 +11,42 @@ Shindo.tests('Fog::Compute[:vsphere]', ['vsphere']) do
|
|
10
11
|
@parent = @_ref = 'vm-123'
|
11
12
|
end
|
12
13
|
|
13
|
-
def collect!
|
14
|
+
def collect! *pathSet
|
14
15
|
{ '_ref' => 'vm-123', 'name' => 'fakevm' }
|
15
16
|
end
|
16
17
|
end
|
17
18
|
|
18
19
|
fake_vm_mob_ref = MockManagedObject.new
|
19
20
|
|
20
|
-
tests(
|
21
|
-
test(
|
22
|
-
compute.send(:convert_vm_mob_ref_to_attr_hash, fake_vm_mob_ref).
|
21
|
+
tests("When converting an incomplete vm object") do
|
22
|
+
test("it should return a Hash") do
|
23
|
+
compute.send(:convert_vm_mob_ref_to_attr_hash, fake_vm_mob_ref).kind_of? Hash
|
23
24
|
end
|
24
|
-
tests(
|
25
|
+
tests("The converted Hash should") do
|
25
26
|
attr_hash = compute.send(:convert_vm_mob_ref_to_attr_hash, fake_vm_mob_ref)
|
26
|
-
test(
|
27
|
-
test(
|
28
|
-
test(
|
29
|
-
test(
|
27
|
+
test("have a name") { attr_hash['name'] == 'fakevm' }
|
28
|
+
test("have a mo_ref") {attr_hash['mo_ref'] == 'vm-123' }
|
29
|
+
test("have an id") { attr_hash['id'] == 'vm-123' }
|
30
|
+
test("not have a instance_uuid") { attr_hash['instance_uuid'].nil? }
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
33
|
-
tests(
|
34
|
+
tests("When passed a nil object") do
|
34
35
|
attr_hash = compute.send :convert_vm_mob_ref_to_attr_hash, nil
|
35
|
-
test(
|
36
|
+
test("it should return a nil object") do
|
36
37
|
attr_hash.nil?
|
37
38
|
end
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
41
|
-
tests(
|
42
|
-
%w
|
42
|
+
tests("Compute attributes") do
|
43
|
+
%w{ vsphere_is_vcenter vsphere_rev vsphere_username vsphere_server }.each do |attr|
|
43
44
|
test("it should respond to #{attr}") { compute.respond_to? attr }
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
47
|
-
tests(
|
48
|
-
%w
|
48
|
+
tests("Compute collections") do
|
49
|
+
%w{ servers }.each do |collection|
|
49
50
|
test("it should respond to #{collection}") { compute.respond_to? collection }
|
50
51
|
end
|
51
52
|
end
|
@@ -2,8 +2,8 @@ Fog.mock! if ENV['FOG_MOCK'] == 'true'
|
|
2
2
|
|
3
3
|
if Fog.mock?
|
4
4
|
Fog.credentials = {
|
5
|
-
vsphere_server
|
6
|
-
vsphere_username
|
7
|
-
vsphere_password
|
5
|
+
:vsphere_server => 'fake_vsphere_server',
|
6
|
+
:vsphere_username => 'fake_vsphere_username',
|
7
|
+
:vsphere_password => 'fake_vsphere_password'
|
8
8
|
}.merge(Fog.credentials)
|
9
9
|
end
|