fog-vsphere 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +0 -4
  3. data/CHANGELOG.md +8 -0
  4. data/CONTRIBUTORS.md +6 -0
  5. data/fog-vsphere.gemspec +1 -1
  6. data/lib/fog/vsphere/compute.rb +47 -3
  7. data/lib/fog/vsphere/models/compute/cdrom.rb +65 -0
  8. data/lib/fog/vsphere/models/compute/cdroms.rb +18 -0
  9. data/lib/fog/vsphere/models/compute/datacenter.rb +4 -0
  10. data/lib/fog/vsphere/models/compute/folder.rb +4 -0
  11. data/lib/fog/vsphere/models/compute/server.rb +8 -0
  12. data/lib/fog/vsphere/models/compute/storage_pod.rb +19 -0
  13. data/lib/fog/vsphere/models/compute/storage_pods.rb +22 -0
  14. data/lib/fog/vsphere/models/compute/volume.rb +1 -0
  15. data/lib/fog/vsphere/requests/compute/create_folder.rb +10 -0
  16. data/lib/fog/vsphere/requests/compute/create_vm.rb +163 -4
  17. data/lib/fog/vsphere/requests/compute/folder_destroy.rb +26 -0
  18. data/lib/fog/vsphere/requests/compute/get_folder.rb +4 -2
  19. data/lib/fog/vsphere/requests/compute/get_storage_pod.rb +31 -0
  20. data/lib/fog/vsphere/requests/compute/list_datacenters.rb +1 -1
  21. data/lib/fog/vsphere/requests/compute/list_datastores.rb +2 -1
  22. data/lib/fog/vsphere/requests/compute/list_networks.rb +2 -1
  23. data/lib/fog/vsphere/requests/compute/list_storage_pods.rb +45 -0
  24. data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +8 -4
  25. data/lib/fog/vsphere/requests/compute/list_vm_cdroms.rb +30 -0
  26. data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +34 -13
  27. data/lib/fog/vsphere/requests/compute/list_vm_snapshots.rb +5 -1
  28. data/lib/fog/vsphere/requests/compute/modify_vm_cdrom.rb +25 -0
  29. data/lib/fog/vsphere/requests/compute/modify_vm_interface.rb +19 -2
  30. data/lib/fog/vsphere/requests/compute/modify_vm_volume.rb +1 -1
  31. data/lib/fog/vsphere/requests/compute/upload_iso.rb +34 -0
  32. data/lib/fog/vsphere/requests/compute/vm_clone.rb +68 -25
  33. data/lib/fog/vsphere/requests/compute/vm_reconfig_cdrom.rb +68 -0
  34. data/lib/fog/vsphere/version.rb +1 -1
  35. data/tests/models/compute/servers_tests.rb +1 -1
  36. data/tests/requests/compute/folder_destroy_tests.rb +21 -0
  37. data/tests/requests/compute/list_storage_pods_test.rb +10 -0
  38. data/tests/requests/compute/list_vm_cdroms_tests.rb +10 -0
  39. data/tests/requests/compute/modify_vm_cdrom_tests.rb +21 -0
  40. data/tests/requests/compute/vm_reconfig_cdrom_tests.rb +15 -0
  41. metadata +28 -6
@@ -0,0 +1,68 @@
1
+ module Fog
2
+ module Compute
3
+ class Vsphere
4
+ class Real
5
+ def vm_reconfig_cdrom(options = {})
6
+ raise ArgumentError, "instance_uuid is a required parameter" unless options.key? 'instance_uuid'
7
+ # Attach iso / disattach
8
+ if options.has_key?('iso')
9
+ raise ArgumentError, "datastore is a required parameter" unless options.key? 'datastore'
10
+ backing = RbVmomi::VIM::VirtualCdromIsoBackingInfo(
11
+ fileName: "[#{options['datastore']}] #{options['iso']}"
12
+ )
13
+ else
14
+ backing = RbVmomi::VIM::VirtualCdromRemoteAtapiBackingInfo(deviceName: '')
15
+ end
16
+ cdrom_obj = get_vm_ref(options['instance_uuid']).config.hardware.device.grep(RbVmomi::VIM::VirtualCdrom).first
17
+ hardware_spec = {
18
+ deviceChange: [{
19
+ operation: :edit,
20
+ device: RbVmomi::VIM::VirtualCdrom(
21
+ backing: backing,
22
+ key: cdrom_obj.key,
23
+ controllerKey: cdrom_obj.controllerKey,
24
+ connectable: RbVmomi::VIM::VirtualDeviceConnectInfo(
25
+ startConnected: options['start_connected'] || false,
26
+ connected: options['connected'] || false,
27
+ allowGuestControl: options['allow_guest_control'] || true,
28
+ )
29
+ )
30
+ }]
31
+ }
32
+ vm_reconfig_hardware('instance_uuid' => options['instance_uuid'], 'hardware_spec' => hardware_spec )
33
+ end
34
+ end
35
+
36
+ class Mock
37
+ def vm_reconfig_cdrom(options = {})
38
+ raise ArgumentError, "instance_uuid is a required parameter" unless options.key? 'instance_uuid'
39
+ if options.has_key?('iso')
40
+ raise ArgumentError, "datastore is a required parameter" unless options.key? 'datastore'
41
+ backing = {
42
+ fileName: "[#{options['datastore']}] #{options['iso']}"
43
+ }
44
+ else
45
+ backing = {deviceName: ''}
46
+ end
47
+ cdrom_obj = list_vm_cdroms(options['instance_uuid']).first
48
+ hardware_spec = {
49
+ deviceChange: [{
50
+ operation: :edit,
51
+ device: {
52
+ backing: backing,
53
+ key: cdrom_obj['key'],
54
+ controllerKey: cdrom_obj['controllerKey'],
55
+ connectable: {
56
+ startConnected: options['start_connected'] || false,
57
+ connected: options['connected'] || false,
58
+ allowGuestControl: options['allow_guest_control'] || true,
59
+ }
60
+ }
61
+ }]
62
+ }
63
+ vm_reconfig_hardware('instance_uuid' => options['instance_uuid'], 'hardware_spec' => hardware_spec )
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Vsphere
3
- VERSION = '0.2.0'
3
+ VERSION = '0.3.0'
4
4
  end
5
5
  end
@@ -7,7 +7,7 @@ Shindo.tests('Fog::Compute[:vsphere] | servers collection', ['vsphere']) do
7
7
  test('should be a kind of Fog::Compute::Vsphere::Servers') { servers.kind_of? Fog::Compute::Vsphere::Servers }
8
8
  tests('should be able to reload itself').succeeds { servers.reload }
9
9
  tests('should be able to get a model') do
10
- tests('by managed object reference').succeeds { servers.get 'vm-715' }
10
+ tests('by managed object reference').succeeds { servers.get 'jefftest' }
11
11
  tests('by instance uuid').succeeds { servers.get '5032c8a5-9c5e-ba7a-3804-832a03e16381' }
12
12
  end
13
13
  end
@@ -0,0 +1,21 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | folder_destroy request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ empty_folder = "/Solutions/empty"
6
+ full_folder = "/Solutions/wibble"
7
+ datacenter = "Solutions"
8
+
9
+ tests('The response should') do
10
+ response = compute.folder_destroy(empty_folder, datacenter)
11
+ test('be a kind of Hash') { response.kind_of? Hash }
12
+ test('should have a task_state key') { response.key? 'task_state' }
13
+ end
14
+
15
+ tests('When folder is not empty') do
16
+ raises(Fog::Vsphere::Errors::ServiceError, 'raises ServiceError') do
17
+ compute.folder_destroy(full_folder, datacenter)
18
+ end
19
+ end
20
+
21
+ end
@@ -0,0 +1,10 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | list_storage_pods request', ['vsphere']) do
2
+ tests("When listing all storage pods") do
3
+
4
+ response = Fog::Compute[:vsphere].list_storage_pods
5
+
6
+ tests("The response data format ...") do
7
+ test("be a kind of Hash") { response.kind_of? Array }
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | list_vm_cdroms request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ tests('The response should') do
6
+ response = compute.list_vm_cdroms('5032c8a5-9c5e-ba7a-3804-832a03e16381')
7
+ test('be a kind of Array') { response.kind_of? Array }
8
+ test('it should contains Hashes') { response.all? { |i| Hash === i } }
9
+ end
10
+ end
@@ -0,0 +1,21 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | modify_vm_cdrom request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ modify_target = '5032c8a5-9c5e-ba7a-3804-832a03e16381'
6
+ modify_cdrom = compute.cdroms.new(
7
+ instance_uuid: modify_target,
8
+ )
9
+
10
+ tests('When adding a cdrom the response should') do
11
+ response = compute.add_vm_cdrom(modify_cdrom)
12
+ test('be a kind of Hash') { response.kind_of? Hash }
13
+ test('should have a task_state key') { response.key? 'task_state' }
14
+ end
15
+
16
+ tests('When destroying a cdrom the response should') do
17
+ response = compute.destroy_vm_cdrom(modify_cdrom)
18
+ test('be a kind of Hash') { response.kind_of? Hash }
19
+ test('should have a task_state key') { response.key? 'task_state' }
20
+ end
21
+ end
@@ -0,0 +1,15 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | vm_reconfig_cdrom request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ reconfig_target = '5032c8a5-9c5e-ba7a-3804-832a03e16381'
6
+ reconfig_spec = {
7
+ 'start_connected' => false,
8
+ }
9
+
10
+ tests('the response should') do
11
+ response = compute.vm_reconfig_cdrom('instance_uuid' => reconfig_target, 'hardware_spec' => reconfig_spec)
12
+ test('be a kind of Hash') { response.kind_of? Hash }
13
+ test('should have a task_state key') { response.key? 'task_state' }
14
+ end
15
+ end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-vsphere
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - J.R. Garcia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-14 00:00:00.000000000 Z
11
+ date: 2015-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog-core
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.32'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.32'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rbvmomi
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -118,6 +118,7 @@ extra_rdoc_files: []
118
118
  files:
119
119
  - ".gitignore"
120
120
  - ".travis.yml"
121
+ - CHANGELOG.md
121
122
  - CONTRIBUTING.md
122
123
  - CONTRIBUTORS.md
123
124
  - Gemfile
@@ -130,6 +131,8 @@ files:
130
131
  - lib/fog/bin/vsphere.rb
131
132
  - lib/fog/vsphere.rb
132
133
  - lib/fog/vsphere/compute.rb
134
+ - lib/fog/vsphere/models/compute/cdrom.rb
135
+ - lib/fog/vsphere/models/compute/cdroms.rb
133
136
  - lib/fog/vsphere/models/compute/cluster.rb
134
137
  - lib/fog/vsphere/models/compute/clusters.rb
135
138
  - lib/fog/vsphere/models/compute/customfield.rb
@@ -158,6 +161,8 @@ files:
158
161
  - lib/fog/vsphere/models/compute/servertypes.rb
159
162
  - lib/fog/vsphere/models/compute/snapshot.rb
160
163
  - lib/fog/vsphere/models/compute/snapshots.rb
164
+ - lib/fog/vsphere/models/compute/storage_pod.rb
165
+ - lib/fog/vsphere/models/compute/storage_pods.rb
161
166
  - lib/fog/vsphere/models/compute/template.rb
162
167
  - lib/fog/vsphere/models/compute/templates.rb
163
168
  - lib/fog/vsphere/models/compute/volume.rb
@@ -166,6 +171,7 @@ files:
166
171
  - lib/fog/vsphere/requests/compute/create_folder.rb
167
172
  - lib/fog/vsphere/requests/compute/create_vm.rb
168
173
  - lib/fog/vsphere/requests/compute/current_time.rb
174
+ - lib/fog/vsphere/requests/compute/folder_destroy.rb
169
175
  - lib/fog/vsphere/requests/compute/get_cluster.rb
170
176
  - lib/fog/vsphere/requests/compute/get_compute_resource.rb
171
177
  - lib/fog/vsphere/requests/compute/get_datacenter.rb
@@ -175,6 +181,7 @@ files:
175
181
  - lib/fog/vsphere/requests/compute/get_network.rb
176
182
  - lib/fog/vsphere/requests/compute/get_resource_pool.rb
177
183
  - lib/fog/vsphere/requests/compute/get_server_type.rb
184
+ - lib/fog/vsphere/requests/compute/get_storage_pod.rb
178
185
  - lib/fog/vsphere/requests/compute/get_template.rb
179
186
  - lib/fog/vsphere/requests/compute/get_virtual_machine.rb
180
187
  - lib/fog/vsphere/requests/compute/get_vm_first_scsi_controller.rb
@@ -190,16 +197,20 @@ files:
190
197
  - lib/fog/vsphere/requests/compute/list_processes.rb
191
198
  - lib/fog/vsphere/requests/compute/list_resource_pools.rb
192
199
  - lib/fog/vsphere/requests/compute/list_server_types.rb
200
+ - lib/fog/vsphere/requests/compute/list_storage_pods.rb
193
201
  - lib/fog/vsphere/requests/compute/list_templates.rb
194
202
  - lib/fog/vsphere/requests/compute/list_virtual_machines.rb
203
+ - lib/fog/vsphere/requests/compute/list_vm_cdroms.rb
195
204
  - lib/fog/vsphere/requests/compute/list_vm_customvalues.rb
196
205
  - lib/fog/vsphere/requests/compute/list_vm_interfaces.rb
197
206
  - lib/fog/vsphere/requests/compute/list_vm_snapshots.rb
198
207
  - lib/fog/vsphere/requests/compute/list_vm_volumes.rb
208
+ - lib/fog/vsphere/requests/compute/modify_vm_cdrom.rb
199
209
  - lib/fog/vsphere/requests/compute/modify_vm_interface.rb
200
210
  - lib/fog/vsphere/requests/compute/modify_vm_volume.rb
201
211
  - lib/fog/vsphere/requests/compute/revert_to_snapshot.rb
202
212
  - lib/fog/vsphere/requests/compute/set_vm_customvalue.rb
213
+ - lib/fog/vsphere/requests/compute/upload_iso.rb
203
214
  - lib/fog/vsphere/requests/compute/vm_clone.rb
204
215
  - lib/fog/vsphere/requests/compute/vm_config_vnc.rb
205
216
  - lib/fog/vsphere/requests/compute/vm_destroy.rb
@@ -208,6 +219,7 @@ files:
208
219
  - lib/fog/vsphere/requests/compute/vm_power_off.rb
209
220
  - lib/fog/vsphere/requests/compute/vm_power_on.rb
210
221
  - lib/fog/vsphere/requests/compute/vm_reboot.rb
222
+ - lib/fog/vsphere/requests/compute/vm_reconfig_cdrom.rb
211
223
  - lib/fog/vsphere/requests/compute/vm_reconfig_cpus.rb
212
224
  - lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb
213
225
  - lib/fog/vsphere/requests/compute/vm_reconfig_memory.rb
@@ -220,11 +232,15 @@ files:
220
232
  - tests/models/compute/server_tests.rb
221
233
  - tests/models/compute/servers_tests.rb
222
234
  - tests/requests/compute/current_time_tests.rb
235
+ - tests/requests/compute/folder_destroy_tests.rb
223
236
  - tests/requests/compute/get_network_tests.rb
224
237
  - tests/requests/compute/list_child_snapshots_tests.rb
225
238
  - tests/requests/compute/list_clusters_tests.rb
239
+ - tests/requests/compute/list_storage_pods_test.rb
226
240
  - tests/requests/compute/list_virtual_machines_tests.rb
241
+ - tests/requests/compute/list_vm_cdroms_tests.rb
227
242
  - tests/requests/compute/list_vm_snapshots_tests.rb
243
+ - tests/requests/compute/modify_vm_cdrom_tests.rb
228
244
  - tests/requests/compute/revert_to_snapshot_tests.rb
229
245
  - tests/requests/compute/set_vm_customvalue_tests.rb
230
246
  - tests/requests/compute/vm_clone_tests.rb
@@ -234,6 +250,7 @@ files:
234
250
  - tests/requests/compute/vm_power_off_tests.rb
235
251
  - tests/requests/compute/vm_power_on_tests.rb
236
252
  - tests/requests/compute/vm_reboot_tests.rb
253
+ - tests/requests/compute/vm_reconfig_cdrom_tests.rb
237
254
  - tests/requests/compute/vm_reconfig_cpus_tests.rb
238
255
  - tests/requests/compute/vm_reconfig_hardware_tests.rb
239
256
  - tests/requests/compute/vm_reconfig_memory_tests.rb
@@ -270,11 +287,15 @@ test_files:
270
287
  - tests/models/compute/server_tests.rb
271
288
  - tests/models/compute/servers_tests.rb
272
289
  - tests/requests/compute/current_time_tests.rb
290
+ - tests/requests/compute/folder_destroy_tests.rb
273
291
  - tests/requests/compute/get_network_tests.rb
274
292
  - tests/requests/compute/list_child_snapshots_tests.rb
275
293
  - tests/requests/compute/list_clusters_tests.rb
294
+ - tests/requests/compute/list_storage_pods_test.rb
276
295
  - tests/requests/compute/list_virtual_machines_tests.rb
296
+ - tests/requests/compute/list_vm_cdroms_tests.rb
277
297
  - tests/requests/compute/list_vm_snapshots_tests.rb
298
+ - tests/requests/compute/modify_vm_cdrom_tests.rb
278
299
  - tests/requests/compute/revert_to_snapshot_tests.rb
279
300
  - tests/requests/compute/set_vm_customvalue_tests.rb
280
301
  - tests/requests/compute/vm_clone_tests.rb
@@ -284,6 +305,7 @@ test_files:
284
305
  - tests/requests/compute/vm_power_off_tests.rb
285
306
  - tests/requests/compute/vm_power_on_tests.rb
286
307
  - tests/requests/compute/vm_reboot_tests.rb
308
+ - tests/requests/compute/vm_reconfig_cdrom_tests.rb
287
309
  - tests/requests/compute/vm_reconfig_cpus_tests.rb
288
310
  - tests/requests/compute/vm_reconfig_hardware_tests.rb
289
311
  - tests/requests/compute/vm_reconfig_memory_tests.rb