fog-vsphere 0.1.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.
Files changed (123) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/.travis.yml +32 -0
  4. data/CONTRIBUTING.md +18 -0
  5. data/CONTRIBUTORS.md +59 -0
  6. data/Gemfile +5 -0
  7. data/LICENSE.md +20 -0
  8. data/README.md +31 -0
  9. data/Rakefile +8 -0
  10. data/fog-vsphere.gemspec +32 -0
  11. data/gemfiles/Gemfile.1.9.2+ +8 -0
  12. data/gemfiles/Gemfile.1.9.2- +11 -0
  13. data/lib/fog/vsphere.rb +41 -0
  14. data/lib/fog/vsphere/compute.rb +473 -0
  15. data/lib/fog/vsphere/models/compute/cluster.rb +28 -0
  16. data/lib/fog/vsphere/models/compute/clusters.rb +22 -0
  17. data/lib/fog/vsphere/models/compute/customfield.rb +16 -0
  18. data/lib/fog/vsphere/models/compute/customfields.rb +23 -0
  19. data/lib/fog/vsphere/models/compute/customvalue.rb +14 -0
  20. data/lib/fog/vsphere/models/compute/customvalues.rb +33 -0
  21. data/lib/fog/vsphere/models/compute/datacenter.rb +44 -0
  22. data/lib/fog/vsphere/models/compute/datacenters.rb +19 -0
  23. data/lib/fog/vsphere/models/compute/datastore.rb +21 -0
  24. data/lib/fog/vsphere/models/compute/datastores.rb +21 -0
  25. data/lib/fog/vsphere/models/compute/folder.rb +24 -0
  26. data/lib/fog/vsphere/models/compute/folders.rb +23 -0
  27. data/lib/fog/vsphere/models/compute/interface.rb +91 -0
  28. data/lib/fog/vsphere/models/compute/interfaces.rb +66 -0
  29. data/lib/fog/vsphere/models/compute/interfacetype.rb +22 -0
  30. data/lib/fog/vsphere/models/compute/interfacetypes.rb +34 -0
  31. data/lib/fog/vsphere/models/compute/network.rb +18 -0
  32. data/lib/fog/vsphere/models/compute/networks.rb +22 -0
  33. data/lib/fog/vsphere/models/compute/process.rb +17 -0
  34. data/lib/fog/vsphere/models/compute/resource_pool.rb +19 -0
  35. data/lib/fog/vsphere/models/compute/resource_pools.rb +22 -0
  36. data/lib/fog/vsphere/models/compute/scsicontroller.rb +16 -0
  37. data/lib/fog/vsphere/models/compute/server.rb +325 -0
  38. data/lib/fog/vsphere/models/compute/servers.rb +36 -0
  39. data/lib/fog/vsphere/models/compute/servertype.rb +36 -0
  40. data/lib/fog/vsphere/models/compute/servertypes.rb +23 -0
  41. data/lib/fog/vsphere/models/compute/snapshot.rb +35 -0
  42. data/lib/fog/vsphere/models/compute/snapshots.rb +27 -0
  43. data/lib/fog/vsphere/models/compute/template.rb +11 -0
  44. data/lib/fog/vsphere/models/compute/templates.rb +19 -0
  45. data/lib/fog/vsphere/models/compute/volume.rb +99 -0
  46. data/lib/fog/vsphere/models/compute/volumes.rb +53 -0
  47. data/lib/fog/vsphere/requests/compute/cloudinit_to_customspec.rb +65 -0
  48. data/lib/fog/vsphere/requests/compute/create_folder.rb +22 -0
  49. data/lib/fog/vsphere/requests/compute/create_vm.rb +169 -0
  50. data/lib/fog/vsphere/requests/compute/current_time.rb +18 -0
  51. data/lib/fog/vsphere/requests/compute/get_cluster.rb +25 -0
  52. data/lib/fog/vsphere/requests/compute/get_compute_resource.rb +41 -0
  53. data/lib/fog/vsphere/requests/compute/get_datacenter.rb +31 -0
  54. data/lib/fog/vsphere/requests/compute/get_datastore.rb +30 -0
  55. data/lib/fog/vsphere/requests/compute/get_folder.rb +74 -0
  56. data/lib/fog/vsphere/requests/compute/get_interface_type.rb +15 -0
  57. data/lib/fog/vsphere/requests/compute/get_network.rb +59 -0
  58. data/lib/fog/vsphere/requests/compute/get_resource_pool.rb +26 -0
  59. data/lib/fog/vsphere/requests/compute/get_server_type.rb +32 -0
  60. data/lib/fog/vsphere/requests/compute/get_template.rb +16 -0
  61. data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +57 -0
  62. data/lib/fog/vsphere/requests/compute/get_vm_first_scsi_controller.rb +26 -0
  63. data/lib/fog/vsphere/requests/compute/list_child_snapshots.rb +71 -0
  64. data/lib/fog/vsphere/requests/compute/list_clusters.rb +72 -0
  65. data/lib/fog/vsphere/requests/compute/list_compute_resources.rb +92 -0
  66. data/lib/fog/vsphere/requests/compute/list_customfields.rb +21 -0
  67. data/lib/fog/vsphere/requests/compute/list_datacenters.rb +53 -0
  68. data/lib/fog/vsphere/requests/compute/list_datastores.rb +40 -0
  69. data/lib/fog/vsphere/requests/compute/list_folders.rb +44 -0
  70. data/lib/fog/vsphere/requests/compute/list_interface_types.rb +25 -0
  71. data/lib/fog/vsphere/requests/compute/list_networks.rb +38 -0
  72. data/lib/fog/vsphere/requests/compute/list_processes.rb +40 -0
  73. data/lib/fog/vsphere/requests/compute/list_resource_pools.rb +38 -0
  74. data/lib/fog/vsphere/requests/compute/list_server_types.rb +54 -0
  75. data/lib/fog/vsphere/requests/compute/list_templates.rb +48 -0
  76. data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +80 -0
  77. data/lib/fog/vsphere/requests/compute/list_vm_customvalues.rb +20 -0
  78. data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +63 -0
  79. data/lib/fog/vsphere/requests/compute/list_vm_snapshots.rb +66 -0
  80. data/lib/fog/vsphere/requests/compute/list_vm_volumes.rb +52 -0
  81. data/lib/fog/vsphere/requests/compute/modify_vm_interface.rb +59 -0
  82. data/lib/fog/vsphere/requests/compute/modify_vm_volume.rb +25 -0
  83. data/lib/fog/vsphere/requests/compute/revert_to_snapshot.rb +30 -0
  84. data/lib/fog/vsphere/requests/compute/set_vm_customvalue.rb +17 -0
  85. data/lib/fog/vsphere/requests/compute/vm_clone.rb +727 -0
  86. data/lib/fog/vsphere/requests/compute/vm_config_vnc.rb +45 -0
  87. data/lib/fog/vsphere/requests/compute/vm_destroy.rb +23 -0
  88. data/lib/fog/vsphere/requests/compute/vm_execute.rb +47 -0
  89. data/lib/fog/vsphere/requests/compute/vm_migrate.rb +33 -0
  90. data/lib/fog/vsphere/requests/compute/vm_power_off.rb +39 -0
  91. data/lib/fog/vsphere/requests/compute/vm_power_on.rb +26 -0
  92. data/lib/fog/vsphere/requests/compute/vm_reboot.rb +31 -0
  93. data/lib/fog/vsphere/requests/compute/vm_reconfig_cpus.rb +23 -0
  94. data/lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb +24 -0
  95. data/lib/fog/vsphere/requests/compute/vm_reconfig_memory.rb +23 -0
  96. data/lib/fog/vsphere/requests/compute/vm_take_snapshot.rb +37 -0
  97. data/lib/fog/vsphere/version.rb +5 -0
  98. data/tests/compute_tests.rb +53 -0
  99. data/tests/helper.rb +8 -0
  100. data/tests/helpers/mock_helper.rb +9 -0
  101. data/tests/helpers/succeeds_helper.rb +9 -0
  102. data/tests/models/compute/server_tests.rb +70 -0
  103. data/tests/models/compute/servers_tests.rb +15 -0
  104. data/tests/requests/compute/current_time_tests.rb +12 -0
  105. data/tests/requests/compute/get_network_tests.rb +50 -0
  106. data/tests/requests/compute/list_child_snapshots_tests.rb +10 -0
  107. data/tests/requests/compute/list_clusters_tests.rb +11 -0
  108. data/tests/requests/compute/list_virtual_machines_tests.rb +38 -0
  109. data/tests/requests/compute/list_vm_snapshots_tests.rb +10 -0
  110. data/tests/requests/compute/revert_to_snapshot_tests.rb +15 -0
  111. data/tests/requests/compute/set_vm_customvalue_tests.rb +20 -0
  112. data/tests/requests/compute/vm_clone_tests.rb +50 -0
  113. data/tests/requests/compute/vm_config_vnc_tests.rb +19 -0
  114. data/tests/requests/compute/vm_destroy_tests.rb +17 -0
  115. data/tests/requests/compute/vm_migrate_tests.rb +16 -0
  116. data/tests/requests/compute/vm_power_off_tests.rb +26 -0
  117. data/tests/requests/compute/vm_power_on_tests.rb +17 -0
  118. data/tests/requests/compute/vm_reboot_tests.rb +26 -0
  119. data/tests/requests/compute/vm_reconfig_cpus_tests.rb +19 -0
  120. data/tests/requests/compute/vm_reconfig_hardware_tests.rb +19 -0
  121. data/tests/requests/compute/vm_reconfig_memory_tests.rb +19 -0
  122. data/tests/requests/compute/vm_take_snapshot_tests.rb +19 -0
  123. metadata +289 -0
@@ -0,0 +1,9 @@
1
+ module Shindo
2
+ class Tests
3
+ def succeeds
4
+ test('succeeds') do
5
+ !!instance_eval(&Proc.new)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,70 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | server model', ['vsphere']) do
2
+ servers = Fog::Compute[:vsphere].servers
3
+ server = servers.last
4
+
5
+ tests('The server model should') do
6
+ tests('have the action') do
7
+ test('reload') { server.respond_to? 'reload' }
8
+ %w{ stop start destroy reboot }.each do |action|
9
+ test(action) { server.respond_to? action }
10
+ test("#{action} returns successfully") { server.send(action.to_sym) ? true : false }
11
+ end
12
+ test('guest_processes') { server.respond_to? 'guest_processes' }
13
+ test('take_snapshot') do
14
+ test('responds') { server.respond_to? 'take_snapshot'}
15
+ test('returns successfully') { server.take_snapshot('name' => 'foobar').kind_of? Hash }
16
+ end
17
+ test('snapshots') do
18
+ test('responds') { server.respond_to? 'snapshots'}
19
+ test('returns successfully') { server.snapshots.kind_of? Fog::Compute::Vsphere::Snapshots }
20
+ end
21
+ test('find_snapshot') do
22
+ test('responds') { server.respond_to? 'find_snapshot'}
23
+ test('returns successfully') do
24
+ server.find_snapshot('snapshot-0101').kind_of? Fog::Compute::Vsphere::Snapshot
25
+ end
26
+ test('returns correct snapshot') do
27
+ server.find_snapshot('snapshot-0101').ref == 'snapshot-0101'
28
+ end
29
+ end
30
+ tests('revert_snapshot') do
31
+ test('responds') { server.respond_to? 'revert_snapshot'}
32
+ tests('returns correctly') do
33
+ test('when correct input given') { server.revert_snapshot('snapshot-0101').kind_of? Hash }
34
+ test('when incorrect input given') do
35
+ raises(ArgumentError) { server.revert_snapshot(1) }
36
+ end
37
+ end
38
+ end
39
+ end
40
+ tests('have attributes') do
41
+ model_attribute_hash = server.attributes
42
+ attributes = [ :id,
43
+ :instance_uuid,
44
+ :uuid,
45
+ :power_state,
46
+ :tools_state,
47
+ :mo_ref,
48
+ :tools_version,
49
+ :hostname,
50
+ :mac_addresses,
51
+ :operatingsystem,
52
+ :connection_state,
53
+ :hypervisor,
54
+ :name,
55
+ :public_ip_address]
56
+ tests("The server model should respond to") do
57
+ attributes.each do |attribute|
58
+ test("#{attribute}") { server.respond_to? attribute }
59
+ end
60
+ end
61
+ tests("The attributes hash should have key") do
62
+ attributes.each do |attribute|
63
+ test("#{attribute}") { model_attribute_hash.key? attribute }
64
+ end
65
+ end
66
+ end
67
+ test('be a kind of Fog::Compute::Vsphere::Server') { server.kind_of? Fog::Compute::Vsphere::Server }
68
+ end
69
+
70
+ end
@@ -0,0 +1,15 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | servers collection', ['vsphere']) do
2
+
3
+ servers = Fog::Compute[:vsphere].servers
4
+
5
+ tests('The servers collection') do
6
+ test('should not be empty') { not servers.empty? }
7
+ test('should be a kind of Fog::Compute::Vsphere::Servers') { servers.kind_of? Fog::Compute::Vsphere::Servers }
8
+ tests('should be able to reload itself').succeeds { servers.reload }
9
+ tests('should be able to get a model') do
10
+ tests('by managed object reference').succeeds { servers.get 'vm-715' }
11
+ tests('by instance uuid').succeeds { servers.get '5032c8a5-9c5e-ba7a-3804-832a03e16381' }
12
+ end
13
+ end
14
+
15
+ end
@@ -0,0 +1,12 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | current_time request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ tests('The response should') do
6
+ response = compute.current_time
7
+ test('be a kind of Hash') { response.kind_of? Hash }
8
+ test('have a current_time key') { response.key? 'current_time' }
9
+ test('have a current_time key with a Time value') { response['current_time'].kind_of? Time }
10
+ end
11
+
12
+ end
@@ -0,0 +1,50 @@
1
+ require 'ostruct'
2
+
3
+ Shindo.tests('Fog::Compute[:vsphere] | get_network request', ['vsphere']) do
4
+
5
+ compute = Fog::Compute[:vsphere]
6
+
7
+
8
+ class DistributedVirtualPortgroup
9
+ attr_accessor :name, :dvs_name
10
+
11
+ def initialize attrs
12
+ @name = attrs.fetch(:name)
13
+ @dvs_name = attrs.fetch(:dvs_name)
14
+ end
15
+
16
+ def config
17
+ OpenStruct.new( :distributedVirtualSwitch => OpenStruct.new(:name => dvs_name))
18
+ end
19
+ end
20
+
21
+ fake_networks = [OpenStruct.new(:name => 'non-dvs'),
22
+ DistributedVirtualPortgroup.new( :name => 'web1', :dvs_name => 'dvs5'),
23
+ DistributedVirtualPortgroup.new( :name => 'web1', :dvs_name => 'dvs11'),
24
+ DistributedVirtualPortgroup.new( :name => 'other', :dvs_name => 'other'),
25
+ ]
26
+
27
+
28
+ tests('#choose_finder should') do
29
+ test('choose the network based on network name and dvs name'){
30
+ finder = compute.send(:choose_finder, 'web1', 'dvs11')
31
+ found_network = fake_networks.find{ |n| finder.call(n) }
32
+ found_network.name == 'web1' && found_network.dvs_name == 'dvs11'
33
+ }
34
+ test('choose the network based on network name and any dvs'){
35
+ finder = compute.send(:choose_finder, 'web1', :dvs)
36
+ found_network = fake_networks.find{ |n| finder.call(n) }
37
+ found_network.name == 'web1' && found_network.dvs_name == 'dvs5'
38
+ }
39
+ test('choose the network based on network name only'){
40
+ finder = compute.send(:choose_finder, 'other', nil)
41
+ found_network = fake_networks.find{ |n| finder.call(n) }
42
+ found_network.name == 'other' && found_network.dvs_name == 'other'
43
+ }
44
+ test('choose the network based on network name only for non-dvs'){
45
+ finder = compute.send(:choose_finder, 'non-dvs', nil)
46
+ found_network = fake_networks.find{ |n| finder.call(n) }
47
+ found_network.name == 'non-dvs' && found_network.class.name.to_s == 'OpenStruct'
48
+ }
49
+ end
50
+ end
@@ -0,0 +1,10 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | list_child_snapshots request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ tests('The response should') do
6
+ response = compute.list_child_snapshots('snapshot-0101')
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,11 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | list_clusters request', ['vsphere']) do
2
+ tests("When listing all clusters") do
3
+
4
+ response = Fog::Compute[:vsphere].list_clusters
5
+ test("Clusters extracted from folders... ") {response.length == 4}
6
+
7
+ tests("The response data format ...") do
8
+ test("be a kind of Hash") { response.kind_of? Array }
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,38 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | list_virtual_machines request', ['vsphere']) do
2
+
3
+ tests("When listing all machines") do
4
+
5
+ response = Fog::Compute[:vsphere].list_virtual_machines
6
+
7
+ tests("The response data format ...") do
8
+ test("be a kind of Hash") { response.kind_of? Array }
9
+ end
10
+ end
11
+
12
+ tests("When providing an instance_uuid") do
13
+
14
+ # pending unless Fog.mock?
15
+
16
+ tests("that does exist") do
17
+ uuid = "5029c440-85ee-c2a1-e9dd-b63e39364603"
18
+ response = Fog::Compute[:vsphere].list_virtual_machines({'instance_uuid' => uuid})
19
+
20
+ tests("The response should") do
21
+ test("contain one vm") { response.length == 1 }
22
+ test("contain that is an attribute hash") { response[0].kind_of? Hash }
23
+ test("find jefftest") { response.first['name'] == 'jefftest' }
24
+ end
25
+ end
26
+
27
+ tests("that does not exist or is a template") do
28
+ %w{ does-not-exist-and-is-not-a-uuid 50323f93-6835-1178-8b8f-9e2109890e1a }.each do |uuid|
29
+ response = Fog::Compute[:vsphere].list_virtual_machines({'instance_uuid' => uuid})
30
+
31
+ tests("The response should") do
32
+ test("be empty") { response.empty? }
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,10 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | list_vm_snapshots request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ tests('The response should') do
6
+ response = compute.list_vm_snapshots('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,15 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | revert_to_snapshot request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ tests('The response should') do
6
+ response = compute.revert_to_snapshot(Fog::Compute::Vsphere::Snapshot.new(:service => 1))
7
+ test('be a kind of Hash') { response.kind_of? Hash }
8
+ test('should have a task_state key') { response.key? 'state' }
9
+ end
10
+
11
+ tests('The expected options') do
12
+ raises(ArgumentError, 'raises ArgumentError when input param is missing') { compute.revert_to_snapshot(nil) }
13
+ end
14
+
15
+ end
@@ -0,0 +1,20 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | set_vm_customvalue request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ instance_uuid = '50137835-88a1-436e-768e-9b2677076e67'
6
+ custom_key = nil
7
+ custom_value = nil
8
+
9
+ tests('The response should') do
10
+ response = compute.set_vm_customvalue(instance_uuid, custom_key, custom_value)
11
+ test('be nil') { response.nil? }
12
+ end
13
+
14
+ tests('The expected options') do
15
+ raises(ArgumentError, 'raises ArgumentError when instance_uuid option is missing') { compute.set_vm_customvalue }
16
+ raises(ArgumentError, 'raises ArgumentError when custom_key option is missing') { compute.set_vm_customvalue(instance_uuid) }
17
+ raises(ArgumentError, 'raises ArgumentError when custom_value option is missing') { compute.set_vm_customvalue(instance_uuid, custom_key) }
18
+ end
19
+
20
+ end
@@ -0,0 +1,50 @@
1
+ Shindo.tests("Fog::Compute[:vsphere] | vm_clone request", 'vsphere') do
2
+ # require 'guid'
3
+ compute = Fog::Compute[:vsphere]
4
+ response = nil
5
+ response_linked = nil
6
+
7
+ template = "rhel64"
8
+ datacenter = "Solutions"
9
+
10
+ tests("Standard Clone | The return value should") do
11
+ servers_size = compute.servers.size
12
+ response = compute.vm_clone('datacenter' => datacenter, 'template_path' => template, 'name' => 'cloning_vm', 'wait' => true)
13
+ test("be a kind of Hash") { response.kind_of? Hash }
14
+ %w{ vm_ref new_vm task_ref }.each do |key|
15
+ test("have a #{key} key") { response.key? key }
16
+ end
17
+ test("creates a new server") { compute.servers.size == servers_size+1 }
18
+ test("new server name is set") { compute.get_virtual_machine(response['new_vm']['id'])['name'] == 'cloning_vm' }
19
+ end
20
+
21
+ tests("Standard Clone setting ram and cpu | The return value should") do
22
+ servers_size = compute.servers.size
23
+ response = compute.vm_clone('datacenter' => datacenter, 'template_path' => template, 'name' => 'cloning_vm', 'memoryMB' => '8192', 'numCPUs' => '8', 'wait' => true)
24
+ test("be a kind of Hash") { response.kind_of? Hash }
25
+ %w{ vm_ref new_vm task_ref }.each do |key|
26
+ test("have a #{key} key") { response.key? key }
27
+ end
28
+ test("creates a new server") { compute.servers.size == servers_size+1 }
29
+ test("new server name is set") { compute.get_virtual_machine(response['new_vm']['id'])['name'] == 'cloning_vm' }
30
+ end
31
+
32
+ tests("Linked Clone | The return value should") do
33
+ servers_size = compute.servers.size
34
+ response = compute.vm_clone('datacenter' => datacenter, 'template_path' => template, 'name' => 'cloning_vm_linked', 'wait' => 1, 'linked_clone' => true)
35
+ test("be a kind of Hash") { response.kind_of? Hash }
36
+ %w{ vm_ref new_vm task_ref }.each do |key|
37
+ test("have a #{key} key") { response.key? key }
38
+ end
39
+ test("creates a new server") { compute.servers.size == servers_size+1 }
40
+ test("new server name is set") { compute.get_virtual_machine(response['new_vm']['id'])['name'] == 'cloning_vm_linked' }
41
+ end
42
+
43
+ tests("When invalid input is presented") do
44
+ raises(ArgumentError, 'it should raise ArgumentError') { compute.vm_clone(:foo => 1) }
45
+ raises(Fog::Compute::Vsphere::NotFound, 'it should raise Fog::Compute::Vsphere::NotFound when the UUID is not a string') do
46
+ pending # require 'guid'
47
+ compute.vm_clone('instance_uuid' => Guid.from_s(template), 'name' => 'jefftestfoo')
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,19 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | vm_config_vnc request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ reconfig_target = '50137835-88a1-436e-768e-9b2677076e67'
6
+ vnc_spec = {:port => '5900', :password => 'ssaaa', :enabled => 'true'}
7
+
8
+ tests('The response should') do
9
+ response = compute.vm_config_vnc('instance_uuid' => reconfig_target).merge(vnc_spec)
10
+ test('be a kind of Hash') { response.kind_of? Hash }
11
+ test('should have a task_state key') { response.key? 'task_state' }
12
+ end
13
+
14
+ tests('VNC attrs response should') do
15
+ response = compute.vm_get_vnc(reconfig_target)
16
+ test('be a kind of Hash') { response.kind_of? Hash }
17
+ test('should have a port key') { response.key? :port }
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | vm_destroy request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ booted_vm = '5032c8a5-9c5e-ba7a-3804-832a03e16381'
6
+
7
+ tests('The response should') do
8
+ response = compute.vm_destroy('instance_uuid' => booted_vm)
9
+ test('be a kind of Hash') { response.kind_of? Hash }
10
+ test('should have a task_state key') { response.key? 'task_state' }
11
+
12
+ end
13
+ tests('The expected options') do
14
+ raises(ArgumentError, 'raises ArgumentError when instance_uuid option is missing') { compute.vm_destroy }
15
+ end
16
+
17
+ end
@@ -0,0 +1,16 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | vm_migrate request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ powered_on_vm = '50137835-88a1-436e-768e-9b2677076e67'
6
+
7
+ tests('The response should') do
8
+ response = compute.vm_migrate('instance_uuid' => powered_on_vm)
9
+ test('be a kind of Hash') { response.kind_of? Hash }
10
+ test('should have a task_state key') { response.key? 'task_state' }
11
+ end
12
+
13
+ tests('The expected options') do
14
+ raises(ArgumentError, 'raises ArgumentError when instance_uuid option is missing') { compute.vm_migrate }
15
+ end
16
+ end
@@ -0,0 +1,26 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | vm_power_off request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ powered_on_vm = '5032c8a5-9c5e-ba7a-3804-832a03e16381'
6
+
7
+ tests('The response should') do
8
+ response = compute.vm_power_off('instance_uuid' => powered_on_vm)
9
+ test('be a kind of Hash') { response.kind_of? Hash }
10
+ test('should have a task_state key') { response.key? 'task_state' }
11
+ test('should have a power_off_type key') { response.key? 'power_off_type' }
12
+ end
13
+
14
+ # When forcing the shutdown, we expect the result to be
15
+ { true => 'cut_power', false => 'shutdown_guest'}.each do |force, expected|
16
+ tests("When 'force' => #{force}") do
17
+ response = compute.vm_power_off('instance_uuid' => powered_on_vm, 'force' => force)
18
+ test('should retur power_off_type of #{expected}') { response['power_off_type'] == expected }
19
+ end
20
+ end
21
+
22
+ tests('The expected options') do
23
+ raises(ArgumentError, 'raises ArgumentError when instance_uuid option is missing') { compute.vm_power_off }
24
+ end
25
+
26
+ end
@@ -0,0 +1,17 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | vm_power_on request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ powered_off_vm = nil
6
+
7
+ tests('The response should') do
8
+ response = compute.vm_power_on('instance_uuid' => powered_off_vm)
9
+ test('be a kind of Hash') { response.kind_of? Hash }
10
+ test('should have a task_state key') { response.key? 'task_state' }
11
+ end
12
+
13
+ tests('The expected options') do
14
+ raises(ArgumentError, 'raises ArgumentError when instance_uuid option is missing') { compute.vm_power_on }
15
+ end
16
+
17
+ end
@@ -0,0 +1,26 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | vm_reboot request', ['vsphere']) do
2
+
3
+ compute = Fog::Compute[:vsphere]
4
+
5
+ powered_on_vm = '5032c8a5-9c5e-ba7a-3804-832a03e16381'
6
+
7
+ tests('The response should') do
8
+ response = compute.vm_reboot('instance_uuid' => powered_on_vm)
9
+ test('be a kind of Hash') { response.kind_of? Hash }
10
+ test('should have a task_state key') { response.key? 'task_state' }
11
+ test('should have a reboot_type key') { response.key? 'reboot_type' }
12
+ end
13
+
14
+ # When forcing the shutdown, we expect the result to be
15
+ { true => 'reset_power', false => 'reboot_guest'}.each do |force, expected|
16
+ tests("When force => #{force}") do
17
+ response = compute.vm_reboot('instance_uuid' => powered_on_vm, 'force' => force)
18
+ test("should return reboot_type of #{expected}") { response['reboot_type'] == expected }
19
+ end
20
+ end
21
+
22
+ tests('The expected options') do
23
+ raises(ArgumentError, 'raises ArgumentError when instance_uuid option is missing') { compute.vm_reboot }
24
+ end
25
+
26
+ end