fog-vsphere 1.7.0.1 → 1.7.1
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.
- 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
|