fog-vsphere 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +23 -0
- data/.travis.yml +32 -0
- data/CONTRIBUTING.md +18 -0
- data/CONTRIBUTORS.md +59 -0
- data/Gemfile +5 -0
- data/LICENSE.md +20 -0
- data/README.md +31 -0
- data/Rakefile +8 -0
- data/fog-vsphere.gemspec +32 -0
- data/gemfiles/Gemfile.1.9.2+ +8 -0
- data/gemfiles/Gemfile.1.9.2- +11 -0
- data/lib/fog/vsphere.rb +41 -0
- data/lib/fog/vsphere/compute.rb +473 -0
- data/lib/fog/vsphere/models/compute/cluster.rb +28 -0
- data/lib/fog/vsphere/models/compute/clusters.rb +22 -0
- data/lib/fog/vsphere/models/compute/customfield.rb +16 -0
- data/lib/fog/vsphere/models/compute/customfields.rb +23 -0
- data/lib/fog/vsphere/models/compute/customvalue.rb +14 -0
- data/lib/fog/vsphere/models/compute/customvalues.rb +33 -0
- data/lib/fog/vsphere/models/compute/datacenter.rb +44 -0
- data/lib/fog/vsphere/models/compute/datacenters.rb +19 -0
- data/lib/fog/vsphere/models/compute/datastore.rb +21 -0
- data/lib/fog/vsphere/models/compute/datastores.rb +21 -0
- data/lib/fog/vsphere/models/compute/folder.rb +24 -0
- data/lib/fog/vsphere/models/compute/folders.rb +23 -0
- data/lib/fog/vsphere/models/compute/interface.rb +91 -0
- data/lib/fog/vsphere/models/compute/interfaces.rb +66 -0
- data/lib/fog/vsphere/models/compute/interfacetype.rb +22 -0
- data/lib/fog/vsphere/models/compute/interfacetypes.rb +34 -0
- data/lib/fog/vsphere/models/compute/network.rb +18 -0
- data/lib/fog/vsphere/models/compute/networks.rb +22 -0
- data/lib/fog/vsphere/models/compute/process.rb +17 -0
- data/lib/fog/vsphere/models/compute/resource_pool.rb +19 -0
- data/lib/fog/vsphere/models/compute/resource_pools.rb +22 -0
- data/lib/fog/vsphere/models/compute/scsicontroller.rb +16 -0
- data/lib/fog/vsphere/models/compute/server.rb +325 -0
- data/lib/fog/vsphere/models/compute/servers.rb +36 -0
- data/lib/fog/vsphere/models/compute/servertype.rb +36 -0
- data/lib/fog/vsphere/models/compute/servertypes.rb +23 -0
- data/lib/fog/vsphere/models/compute/snapshot.rb +35 -0
- data/lib/fog/vsphere/models/compute/snapshots.rb +27 -0
- data/lib/fog/vsphere/models/compute/template.rb +11 -0
- data/lib/fog/vsphere/models/compute/templates.rb +19 -0
- data/lib/fog/vsphere/models/compute/volume.rb +99 -0
- data/lib/fog/vsphere/models/compute/volumes.rb +53 -0
- data/lib/fog/vsphere/requests/compute/cloudinit_to_customspec.rb +65 -0
- data/lib/fog/vsphere/requests/compute/create_folder.rb +22 -0
- data/lib/fog/vsphere/requests/compute/create_vm.rb +169 -0
- data/lib/fog/vsphere/requests/compute/current_time.rb +18 -0
- data/lib/fog/vsphere/requests/compute/get_cluster.rb +25 -0
- data/lib/fog/vsphere/requests/compute/get_compute_resource.rb +41 -0
- data/lib/fog/vsphere/requests/compute/get_datacenter.rb +31 -0
- data/lib/fog/vsphere/requests/compute/get_datastore.rb +30 -0
- data/lib/fog/vsphere/requests/compute/get_folder.rb +74 -0
- data/lib/fog/vsphere/requests/compute/get_interface_type.rb +15 -0
- data/lib/fog/vsphere/requests/compute/get_network.rb +59 -0
- data/lib/fog/vsphere/requests/compute/get_resource_pool.rb +26 -0
- data/lib/fog/vsphere/requests/compute/get_server_type.rb +32 -0
- data/lib/fog/vsphere/requests/compute/get_template.rb +16 -0
- data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +57 -0
- data/lib/fog/vsphere/requests/compute/get_vm_first_scsi_controller.rb +26 -0
- data/lib/fog/vsphere/requests/compute/list_child_snapshots.rb +71 -0
- data/lib/fog/vsphere/requests/compute/list_clusters.rb +72 -0
- data/lib/fog/vsphere/requests/compute/list_compute_resources.rb +92 -0
- data/lib/fog/vsphere/requests/compute/list_customfields.rb +21 -0
- data/lib/fog/vsphere/requests/compute/list_datacenters.rb +53 -0
- data/lib/fog/vsphere/requests/compute/list_datastores.rb +40 -0
- data/lib/fog/vsphere/requests/compute/list_folders.rb +44 -0
- data/lib/fog/vsphere/requests/compute/list_interface_types.rb +25 -0
- data/lib/fog/vsphere/requests/compute/list_networks.rb +38 -0
- data/lib/fog/vsphere/requests/compute/list_processes.rb +40 -0
- data/lib/fog/vsphere/requests/compute/list_resource_pools.rb +38 -0
- data/lib/fog/vsphere/requests/compute/list_server_types.rb +54 -0
- data/lib/fog/vsphere/requests/compute/list_templates.rb +48 -0
- data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +80 -0
- data/lib/fog/vsphere/requests/compute/list_vm_customvalues.rb +20 -0
- data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +63 -0
- data/lib/fog/vsphere/requests/compute/list_vm_snapshots.rb +66 -0
- data/lib/fog/vsphere/requests/compute/list_vm_volumes.rb +52 -0
- data/lib/fog/vsphere/requests/compute/modify_vm_interface.rb +59 -0
- data/lib/fog/vsphere/requests/compute/modify_vm_volume.rb +25 -0
- data/lib/fog/vsphere/requests/compute/revert_to_snapshot.rb +30 -0
- data/lib/fog/vsphere/requests/compute/set_vm_customvalue.rb +17 -0
- data/lib/fog/vsphere/requests/compute/vm_clone.rb +727 -0
- data/lib/fog/vsphere/requests/compute/vm_config_vnc.rb +45 -0
- data/lib/fog/vsphere/requests/compute/vm_destroy.rb +23 -0
- data/lib/fog/vsphere/requests/compute/vm_execute.rb +47 -0
- data/lib/fog/vsphere/requests/compute/vm_migrate.rb +33 -0
- data/lib/fog/vsphere/requests/compute/vm_power_off.rb +39 -0
- data/lib/fog/vsphere/requests/compute/vm_power_on.rb +26 -0
- data/lib/fog/vsphere/requests/compute/vm_reboot.rb +31 -0
- data/lib/fog/vsphere/requests/compute/vm_reconfig_cpus.rb +23 -0
- data/lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb +24 -0
- data/lib/fog/vsphere/requests/compute/vm_reconfig_memory.rb +23 -0
- data/lib/fog/vsphere/requests/compute/vm_take_snapshot.rb +37 -0
- data/lib/fog/vsphere/version.rb +5 -0
- data/tests/compute_tests.rb +53 -0
- data/tests/helper.rb +8 -0
- data/tests/helpers/mock_helper.rb +9 -0
- data/tests/helpers/succeeds_helper.rb +9 -0
- data/tests/models/compute/server_tests.rb +70 -0
- data/tests/models/compute/servers_tests.rb +15 -0
- data/tests/requests/compute/current_time_tests.rb +12 -0
- data/tests/requests/compute/get_network_tests.rb +50 -0
- data/tests/requests/compute/list_child_snapshots_tests.rb +10 -0
- data/tests/requests/compute/list_clusters_tests.rb +11 -0
- data/tests/requests/compute/list_virtual_machines_tests.rb +38 -0
- data/tests/requests/compute/list_vm_snapshots_tests.rb +10 -0
- data/tests/requests/compute/revert_to_snapshot_tests.rb +15 -0
- data/tests/requests/compute/set_vm_customvalue_tests.rb +20 -0
- data/tests/requests/compute/vm_clone_tests.rb +50 -0
- data/tests/requests/compute/vm_config_vnc_tests.rb +19 -0
- data/tests/requests/compute/vm_destroy_tests.rb +17 -0
- data/tests/requests/compute/vm_migrate_tests.rb +16 -0
- data/tests/requests/compute/vm_power_off_tests.rb +26 -0
- data/tests/requests/compute/vm_power_on_tests.rb +17 -0
- data/tests/requests/compute/vm_reboot_tests.rb +26 -0
- data/tests/requests/compute/vm_reconfig_cpus_tests.rb +19 -0
- data/tests/requests/compute/vm_reconfig_hardware_tests.rb +19 -0
- data/tests/requests/compute/vm_reconfig_memory_tests.rb +19 -0
- data/tests/requests/compute/vm_take_snapshot_tests.rb +19 -0
- metadata +289 -0
@@ -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
|