fog-vsphere 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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