fog-ovirt 0.0.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.
Files changed (111) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +30 -0
  3. data/CONTRIBUTING.md +18 -0
  4. data/CONTRIBUTORS.md +21 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE.md +20 -0
  7. data/README.md +47 -0
  8. data/Rakefile +15 -0
  9. data/fog-ovirt.gemspec +32 -0
  10. data/lib/fog/bin/ovirt.rb +28 -0
  11. data/lib/fog/ovirt/compute.rb +155 -0
  12. data/lib/fog/ovirt/core.rb +16 -0
  13. data/lib/fog/ovirt/models/compute/affinity_group.rb +25 -0
  14. data/lib/fog/ovirt/models/compute/affinity_groups.rb +20 -0
  15. data/lib/fog/ovirt/models/compute/cluster.rb +20 -0
  16. data/lib/fog/ovirt/models/compute/clusters.rb +20 -0
  17. data/lib/fog/ovirt/models/compute/instance_type.rb +39 -0
  18. data/lib/fog/ovirt/models/compute/instance_types.rb +20 -0
  19. data/lib/fog/ovirt/models/compute/interface.rb +19 -0
  20. data/lib/fog/ovirt/models/compute/interfaces.rb +29 -0
  21. data/lib/fog/ovirt/models/compute/quota.rb +16 -0
  22. data/lib/fog/ovirt/models/compute/quotas.rb +20 -0
  23. data/lib/fog/ovirt/models/compute/server.rb +175 -0
  24. data/lib/fog/ovirt/models/compute/servers.rb +27 -0
  25. data/lib/fog/ovirt/models/compute/template.rb +58 -0
  26. data/lib/fog/ovirt/models/compute/templates.rb +20 -0
  27. data/lib/fog/ovirt/models/compute/volume.rb +36 -0
  28. data/lib/fog/ovirt/models/compute/volumes.rb +28 -0
  29. data/lib/fog/ovirt/requests/compute/activate_volume.rb +22 -0
  30. data/lib/fog/ovirt/requests/compute/add_interface.rb +20 -0
  31. data/lib/fog/ovirt/requests/compute/add_to_affinity_group.rb +21 -0
  32. data/lib/fog/ovirt/requests/compute/add_volume.rb +21 -0
  33. data/lib/fog/ovirt/requests/compute/attach_volume.rb +22 -0
  34. data/lib/fog/ovirt/requests/compute/create_affinity_group.rb +18 -0
  35. data/lib/fog/ovirt/requests/compute/create_vm.rb +18 -0
  36. data/lib/fog/ovirt/requests/compute/datacenters.rb +20 -0
  37. data/lib/fog/ovirt/requests/compute/deactivate_volume.rb +22 -0
  38. data/lib/fog/ovirt/requests/compute/destroy_affinity_group.rb +19 -0
  39. data/lib/fog/ovirt/requests/compute/destroy_interface.rb +22 -0
  40. data/lib/fog/ovirt/requests/compute/destroy_vm.rb +19 -0
  41. data/lib/fog/ovirt/requests/compute/destroy_volume.rb +22 -0
  42. data/lib/fog/ovirt/requests/compute/detach_volume.rb +22 -0
  43. data/lib/fog/ovirt/requests/compute/get_affinity_group.rb +18 -0
  44. data/lib/fog/ovirt/requests/compute/get_api_version.rb +16 -0
  45. data/lib/fog/ovirt/requests/compute/get_cluster.rb +17 -0
  46. data/lib/fog/ovirt/requests/compute/get_instance_type.rb +17 -0
  47. data/lib/fog/ovirt/requests/compute/get_quota.rb +17 -0
  48. data/lib/fog/ovirt/requests/compute/get_template.rb +17 -0
  49. data/lib/fog/ovirt/requests/compute/get_virtual_machine.rb +17 -0
  50. data/lib/fog/ovirt/requests/compute/list_affinity_group_vms.rb +22 -0
  51. data/lib/fog/ovirt/requests/compute/list_affinity_groups.rb +20 -0
  52. data/lib/fog/ovirt/requests/compute/list_clusters.rb +19 -0
  53. data/lib/fog/ovirt/requests/compute/list_instance_types.rb +19 -0
  54. data/lib/fog/ovirt/requests/compute/list_networks.rb +16 -0
  55. data/lib/fog/ovirt/requests/compute/list_quotas.rb +19 -0
  56. data/lib/fog/ovirt/requests/compute/list_template_interfaces.rb +19 -0
  57. data/lib/fog/ovirt/requests/compute/list_template_volumes.rb +19 -0
  58. data/lib/fog/ovirt/requests/compute/list_templates.rb +19 -0
  59. data/lib/fog/ovirt/requests/compute/list_virtual_machines.rb +19 -0
  60. data/lib/fog/ovirt/requests/compute/list_vm_interfaces.rb +19 -0
  61. data/lib/fog/ovirt/requests/compute/list_vm_volumes.rb +19 -0
  62. data/lib/fog/ovirt/requests/compute/list_volumes.rb +19 -0
  63. data/lib/fog/ovirt/requests/compute/mock_files/affinitygroup.xml +8 -0
  64. data/lib/fog/ovirt/requests/compute/mock_files/affinitygroup_vms.xml +9 -0
  65. data/lib/fog/ovirt/requests/compute/mock_files/affinitygroups.xml +17 -0
  66. data/lib/fog/ovirt/requests/compute/mock_files/cluster.xml +20 -0
  67. data/lib/fog/ovirt/requests/compute/mock_files/clusters.xml +39 -0
  68. data/lib/fog/ovirt/requests/compute/mock_files/data_centers.xml +17 -0
  69. data/lib/fog/ovirt/requests/compute/mock_files/disks.xml +58 -0
  70. data/lib/fog/ovirt/requests/compute/mock_files/instance_type.xml +42 -0
  71. data/lib/fog/ovirt/requests/compute/mock_files/instance_types.xml +197 -0
  72. data/lib/fog/ovirt/requests/compute/mock_files/nics.xml +10 -0
  73. data/lib/fog/ovirt/requests/compute/mock_files/quotas.xml +7 -0
  74. data/lib/fog/ovirt/requests/compute/mock_files/storage_domains.xml +36 -0
  75. data/lib/fog/ovirt/requests/compute/mock_files/template.xml +39 -0
  76. data/lib/fog/ovirt/requests/compute/mock_files/templates.xml +110 -0
  77. data/lib/fog/ovirt/requests/compute/mock_files/vm.xml +52 -0
  78. data/lib/fog/ovirt/requests/compute/mock_files/vms.xml +152 -0
  79. data/lib/fog/ovirt/requests/compute/mock_files/volumes.xml +40 -0
  80. data/lib/fog/ovirt/requests/compute/remove_from_affinity_group.rb +21 -0
  81. data/lib/fog/ovirt/requests/compute/storage_domains.rb +20 -0
  82. data/lib/fog/ovirt/requests/compute/update_interface.rb +35 -0
  83. data/lib/fog/ovirt/requests/compute/update_vm.rb +18 -0
  84. data/lib/fog/ovirt/requests/compute/update_volume.rb +39 -0
  85. data/lib/fog/ovirt/requests/compute/vm_action.rb +22 -0
  86. data/lib/fog/ovirt/requests/compute/vm_start_with_cloudinit.rb +19 -0
  87. data/lib/fog/ovirt/requests/compute/vm_ticket.rb +17 -0
  88. data/lib/fog/ovirt/version.rb +5 -0
  89. data/lib/fog/ovirt.rb +1 -0
  90. data/spec/fog/bin/ovirt_spec.rb +10 -0
  91. data/spec/fog/bin_spec.rb +32 -0
  92. data/tests/helper.rb +1 -0
  93. data/tests/helpers/mock_helper.rb +16 -0
  94. data/tests/helpers/succeeds_helper.rb +9 -0
  95. data/tests/ovirt/compute_tests.rb +25 -0
  96. data/tests/ovirt/models/compute/cluster_tests.rb +31 -0
  97. data/tests/ovirt/models/compute/clusters_tests.rb +9 -0
  98. data/tests/ovirt/models/compute/interface_tests.rb +27 -0
  99. data/tests/ovirt/models/compute/interfaces_tests.rb +9 -0
  100. data/tests/ovirt/models/compute/server_tests.rb +51 -0
  101. data/tests/ovirt/models/compute/servers_tests.rb +14 -0
  102. data/tests/ovirt/models/compute/template_tests.rb +28 -0
  103. data/tests/ovirt/models/compute/templates_tests.rb +9 -0
  104. data/tests/ovirt/requests/compute/create_vm_tests.rb +26 -0
  105. data/tests/ovirt/requests/compute/destroy_vm_tests.rb +18 -0
  106. data/tests/ovirt/requests/compute/list_datacenters_tests.rb +13 -0
  107. data/tests/ovirt/requests/compute/list_quotas_tests.rb +12 -0
  108. data/tests/ovirt/requests/compute/list_storage_domains_tests.rb +13 -0
  109. data/tests/ovirt/requests/compute/update_vm_tests.rb +18 -0
  110. data/tests/ovirt/requests/compute/update_volume_tests.rb +20 -0
  111. metadata +298 -0
@@ -0,0 +1,21 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def remove_from_affinity_group(id, options = {})
6
+ raise ArgumentError, "instance id is a required parameter" unless id
7
+ raise ArgumentError, "affinity group id is a required parameter for remove-from-affinity-group" unless options.key? :id
8
+ client.delete_vm_from_affinity_group(options[:id], id)
9
+ end
10
+ end
11
+
12
+ class Mock
13
+ def remove_from_affinity_group(id, options = {})
14
+ raise ArgumentError, "instance id is a required parameter" unless id
15
+ raise ArgumentError, "affinity group id is a required parameter for remove-from-affinity-group" unless options.key? :id
16
+ true
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def storage_domains filter={}
6
+ client.storagedomains(filter)
7
+ end
8
+ end
9
+
10
+ class Mock
11
+ def storage_domains(filters = {})
12
+ xml = read_xml 'storage_domains.xml'
13
+ Nokogiri::XML(xml).xpath('/storage_domains/storage_domain').map do |sd|
14
+ OVIRT::StorageDomain::new(self, sd)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,35 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+
5
+ module Shared
6
+ def check_arguments(id, options)
7
+ raise ArgumentError, "instance id is a required parameter" unless id
8
+ raise ArgumentError, "interface id is a required parameter for update-interface" unless options.key? :id
9
+ end
10
+ end
11
+
12
+ class Real
13
+ extend ::Fog::Compute::Ovirt::Shared
14
+
15
+ def update_interface(id, options)
16
+ check_arguments(id, options)
17
+
18
+ interface_id = options[:id]
19
+ options.delete(:id)
20
+
21
+ client.update_interface(id, interface_id, options)
22
+ end
23
+ end
24
+
25
+ class Mock
26
+ extend ::Fog::Compute::Ovirt::Shared
27
+
28
+ def update_interface(id, options)
29
+ check_arguments(id, options)
30
+ true
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,18 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def update_vm(attrs)
6
+ client.update_vm(attrs)
7
+ end
8
+ end
9
+
10
+ class Mock
11
+ def update_vm(attrs)
12
+ xml = read_xml('vm.xml')
13
+ OVIRT::VM::new(self, Nokogiri::XML(xml).root)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,39 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+
5
+ module Shared
6
+ def check_arguments(id, options)
7
+ raise ArgumentError, "instance id is a required parameter" unless id
8
+ raise ArgumentError, "disk id is a required parameter for update-volume" unless options.has_key? :id
9
+ end
10
+ end
11
+
12
+
13
+ class Real
14
+ extend ::Fog::Compute::Ovirt::Shared
15
+
16
+ def update_volume(id, options)
17
+ check_arguments(id, options)
18
+
19
+ disk_id = options[:id]
20
+ options.delete(:id)
21
+
22
+ client.update_volume(id, disk_id, options)
23
+ true # If we come here, expect success and return true
24
+ end
25
+
26
+ end
27
+
28
+ class Mock
29
+ extend ::Fog::Compute::Ovirt::Shared
30
+
31
+ def update_volume(id, options)
32
+ check_arguments(id, options)
33
+ true
34
+ end
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,22 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def vm_action(options = {})
6
+ raise ArgumentError, "instance id is a required parameter" unless options.key? :id
7
+ raise ArgumentError, "action is a required parameter" unless options.key? :action
8
+
9
+ client.vm_action options[:id], options[:action]
10
+ end
11
+ end
12
+
13
+ class Mock
14
+ def vm_action(options = {})
15
+ raise ArgumentError, "id is a required parameter" unless options.key? :id
16
+ raise ArgumentError, "action is a required parameter" unless options.key? :action
17
+ true
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,19 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def vm_start_with_cloudinit(options = {})
6
+ raise ArgumentError, "instance id is a required parameter" unless options.key? :id
7
+ client.vm_start_with_cloudinit(options[:id], options[:user_data])
8
+ end
9
+ end
10
+
11
+ class Mock
12
+ def vm_start_with_cloudinit(options = {})
13
+ raise ArgumentError, "instance id is a required parameter" unless options.key? :id
14
+ true
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def vm_ticket(id, options = {})
6
+ client.set_ticket(id, options)
7
+ end
8
+ end
9
+
10
+ class Mock
11
+ def vm_ticket(id, options = {})
12
+ "Secret"
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ module Fog
2
+ module Ovirt
3
+ VERSION = '0.0.1'
4
+ end
5
+ end
data/lib/fog/ovirt.rb ADDED
@@ -0,0 +1 @@
1
+ require 'fog/ovirt/compute'
@@ -0,0 +1,10 @@
1
+ require "minitest/autorun"
2
+ require "fog"
3
+ require "fog/bin"
4
+ require "helpers/bin"
5
+
6
+ describe Ovirt do
7
+ include Fog::BinSpec
8
+
9
+ let(:subject) { Ovirt }
10
+ end
@@ -0,0 +1,32 @@
1
+ require "spec_helper"
2
+ require "fog/bin"
3
+
4
+ describe Fog do
5
+ describe "#providers" do
6
+ it "includes existing providers" do
7
+ assert_equal "Ovirt", Fog.providers[:ovirt]
8
+ end
9
+ end
10
+
11
+ describe "#registered_providers" do
12
+ it "includes existing providers" do
13
+ assert_includes Fog.registered_providers, "Ovirt"
14
+ end
15
+ end
16
+
17
+ describe "#available_providers" do
18
+ it "includes existing providers" do
19
+ assert_includes Fog.available_providers, "Ovirt" if Ovirt.available?
20
+ end
21
+ end
22
+
23
+ describe "#services" do
24
+ it "returns Hash of services" do
25
+ assert_kind_of Hash, Fog.services
26
+ assert_includes Fog.services, :cdn
27
+ assert_includes Fog.services, :compute
28
+ assert_includes Fog.services, :dns
29
+ assert_includes Fog.services, :storage
30
+ end
31
+ end
32
+ end
data/tests/helper.rb ADDED
@@ -0,0 +1 @@
1
+ require File.expand_path('../../lib/fog/ovirt', __FILE__)
@@ -0,0 +1,16 @@
1
+ # Use so you can run in mock mode from the command line
2
+ #
3
+ # FOG_MOCK=true fog
4
+
5
+ if ENV["FOG_MOCK"] == "true"
6
+ Fog.mock!
7
+ end
8
+
9
+ # if in mocked mode, fill in some fake credentials for us
10
+ if Fog.mock?
11
+ Fog.credentials = {
12
+ :ovirt_url => 'http://ovirt:8080/api',
13
+ :ovirt_username => 'admin@internal',
14
+ :ovirt_password => '123123'
15
+ }.merge(Fog.credentials)
16
+ end
@@ -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,25 @@
1
+ Shindo.tests('Fog::Compute[:ovirt]', ['ovirt']) do
2
+
3
+ compute = Fog::Compute[:ovirt]
4
+
5
+ tests("Compute attributes") do
6
+ %w{ ovirt_attrs }.each do |attr|
7
+ test("it should respond to #{attr}") { compute.respond_to? attr }
8
+ end
9
+ end
10
+
11
+ tests("Compute collections") do
12
+ %w{ servers templates clusters interfaces }.each do |collection|
13
+ test("it should respond to #{collection}") { compute.respond_to? collection }
14
+ end
15
+ end
16
+
17
+ tests("Compute requests") do
18
+ %w{ add_interface create_vm datacenters destroy_interface destroy_vm get_cluster get_template
19
+ get_virtual_machine list_clusters list_networks list_template_interfaces list_templates
20
+ list_virtual_machines list_vm_interfaces storage_domains update_interface update_vm vm_action
21
+ api_version update_volume}.each do |collection|
22
+ test("it should respond to #{collection}") { compute.respond_to? collection }
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,31 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | cluster model', ['ovirt']) do
2
+
3
+ clusters = Fog::Compute[:ovirt].clusters
4
+ cluster = clusters.last
5
+
6
+ tests('The cluster model should') do
7
+ tests('have the action') do
8
+ test('reload') { cluster.respond_to? 'reload' }
9
+ %w{ networks }.each do |action|
10
+ test(action) { cluster.respond_to? action }
11
+ end
12
+ end
13
+ tests('have attributes') do
14
+ model_attribute_hash = cluster.attributes
15
+ attributes = [ :id,
16
+ :name]
17
+ tests("The cluster model should respond to") do
18
+ attributes.each do |attribute|
19
+ test("#{attribute}") { cluster.respond_to? attribute }
20
+ end
21
+ end
22
+ tests("The attributes hash should have key") do
23
+ attributes.each do |attribute|
24
+ test("#{attribute}") { model_attribute_hash.key? attribute }
25
+ end
26
+ end
27
+ end
28
+ test('be a kind of Fog::Compute::Ovirt::Cluster') { cluster.kind_of? Fog::Compute::Ovirt::Cluster }
29
+ end
30
+
31
+ end
@@ -0,0 +1,9 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | clusters collection', ['ovirt']) do
2
+
3
+ clusters = Fog::Compute[:ovirt].clusters
4
+
5
+ tests('The clusters collection') do
6
+ test('should be a kind of Fog::Compute::Ovirt::Clusters') { clusters.kind_of? Fog::Compute::Ovirt::Clusters }
7
+ end
8
+
9
+ end
@@ -0,0 +1,27 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | interface model', ['ovirt']) do
2
+
3
+ interfaces = Fog::Compute[:ovirt].servers.last.interfaces
4
+ interface = interfaces.last
5
+
6
+ tests('The interface model should') do
7
+ tests('have the action') do
8
+ test('reload') { interface.respond_to? 'reload' }
9
+ end
10
+ tests('have attributes') do
11
+ model_attribute_hash = interface.attributes
12
+ attributes = [ :id, :name, :network]
13
+ tests("The interface model should respond to") do
14
+ attributes.each do |attribute|
15
+ test("#{attribute}") { interface.respond_to? attribute }
16
+ end
17
+ end
18
+ tests("The attributes hash should have key") do
19
+ attributes.each do |attribute|
20
+ test("#{attribute}") { model_attribute_hash.key? attribute }
21
+ end
22
+ end
23
+ end
24
+ test('be a kind of Fog::Compute::Ovirt::Interface') { interface.kind_of? Fog::Compute::Ovirt::Interface }
25
+ end
26
+
27
+ end
@@ -0,0 +1,9 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | interfaces collection', ['ovirt']) do
2
+
3
+ interfaces = Fog::Compute[:ovirt].interfaces
4
+
5
+ tests('The interfaces collection') do
6
+ test('should be a kind of Fog::Compute::Ovirt::Interfaces') { interfaces.kind_of? Fog::Compute::Ovirt::Interfaces }
7
+ end
8
+
9
+ end
@@ -0,0 +1,51 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | server model', ['ovirt']) do
2
+
3
+ servers = Fog::Compute[:ovirt].servers
4
+ server = servers.last
5
+
6
+ tests('The server model should') do
7
+ tests('have the action') do
8
+ test('reload') { server.respond_to? 'reload' }
9
+ %w{ start stop destroy reboot suspend }.each do |action|
10
+ test(action) { server.respond_to? action }
11
+ end
12
+ %w{ start reboot suspend stop }.each do |action|
13
+ test("#{action} returns successfully") {
14
+ begin
15
+ server.send(action.to_sym) ? true : false
16
+ rescue OVIRT::OvirtException
17
+ #ovirt exceptions are acceptable for the above actions.
18
+ true
19
+ end
20
+ }
21
+ end
22
+ end
23
+ tests('have attributes') do
24
+ model_attribute_hash = server.attributes
25
+ attributes = [ :id,
26
+ :name,
27
+ :description,
28
+ :profile,
29
+ :display,
30
+ :creation_time,
31
+ :os,
32
+ :status,
33
+ :cores,
34
+ :memory,
35
+ :cluster,
36
+ :template]
37
+ tests("The server model should respond to") do
38
+ attributes.each do |attribute|
39
+ test("#{attribute}") { server.respond_to? attribute }
40
+ end
41
+ end
42
+ tests("The attributes hash should have key") do
43
+ attributes.each do |attribute|
44
+ test("#{attribute}") { model_attribute_hash.key? attribute }
45
+ end
46
+ end
47
+ end
48
+ test('be a kind of Fog::Compute::Ovirt::Server') { server.kind_of? Fog::Compute::Ovirt::Server }
49
+ end
50
+
51
+ end
@@ -0,0 +1,14 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | servers collection', ['ovirt']) do
2
+
3
+ servers = Fog::Compute[:ovirt].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::Ovirt::Servers') { servers.kind_of? Fog::Compute::Ovirt::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 instance uuid').succeeds { servers.get servers.first.id }
11
+ end
12
+ end
13
+
14
+ end
@@ -0,0 +1,28 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | template model', ['ovirt']) do
2
+
3
+ templates = Fog::Compute[:ovirt].templates
4
+ template = templates.last
5
+
6
+ tests('The template model should') do
7
+ tests('have the action') do
8
+ test('reload') { template.respond_to? 'reload' }
9
+ end
10
+ tests('have attributes') do
11
+ model_attribute_hash = template.attributes
12
+ attributes = [ :id,
13
+ :name]
14
+ tests("The template model should respond to") do
15
+ attributes.each do |attribute|
16
+ test("#{attribute}") { template.respond_to? attribute }
17
+ end
18
+ end
19
+ tests("The attributes hash should have key") do
20
+ attributes.each do |attribute|
21
+ test("#{attribute}") { model_attribute_hash.key? attribute }
22
+ end
23
+ end
24
+ end
25
+ test('be a kind of Fog::Compute::Ovirt::Template') { template.kind_of? Fog::Compute::Ovirt::Template }
26
+ end
27
+
28
+ end
@@ -0,0 +1,9 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | templates collection', ['ovirt']) do
2
+
3
+ templates = Fog::Compute[:ovirt].templates
4
+
5
+ tests('The templates collection') do
6
+ test('should be a kind of Fog::Compute::Ovirt::Templates') { templates.kind_of? Fog::Compute::Ovirt::Templates }
7
+ end
8
+
9
+ end
@@ -0,0 +1,26 @@
1
+ Shindo.tests("Fog::Compute[:ovirt] | vm_create request", 'ovirt') do
2
+
3
+ compute = Fog::Compute[:ovirt]
4
+ name_base = Time.now.to_i
5
+
6
+ tests("Create VM") do
7
+ response = compute.create_vm(:name => 'fog-'+name_base.to_s, :cluster_name => 'Default')
8
+ test("should be a kind of OVIRT::VM") { response.kind_of? OVIRT::VM}
9
+ end
10
+
11
+ tests("Create VM from template (clone)") do
12
+ response = compute.create_vm(:name => 'fog-'+(name_base+ 1).to_s, :template_name => 'hwp_small', :cluster_name => 'Default')
13
+ test("should be a kind of OVIRT::VM") { response.kind_of? OVIRT::VM}
14
+ end
15
+
16
+ tests("Fail Creating VM") do
17
+ begin
18
+ response = compute.create_vm(:name => 'fog-'+name_base.to_s, :cluster_name => 'Default')
19
+ test("should be a kind of OVIRT::VM") { response.kind_of? OVIRT::VM} #mock never raise exceptions
20
+ rescue => e
21
+ #should raise vm name already exist exception.
22
+ test("error should be a kind of OVIRT::OvirtException") { e.kind_of? OVIRT::OvirtException}
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,18 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | vm_destroy request', ['ovirt']) do
2
+
3
+ compute = Fog::Compute[:ovirt]
4
+ if compute.servers.all(:search => 'fog-*').empty?
5
+ compute.create_vm(:name => 'fog-'+Time.now.to_i.to_s, :cluster_name => 'Default')
6
+ end
7
+ vm_id = compute.servers.all(:search => 'fog-*').last.id
8
+
9
+ tests('The response should') do
10
+ response = compute.destroy_vm(:id => vm_id)
11
+ test('be a success') { response ? true: false }
12
+ end
13
+
14
+ tests('The expected options') do
15
+ raises(ArgumentError, 'raises ArgumentError when id option is missing') { compute.destroy_vm }
16
+ end
17
+
18
+ end
@@ -0,0 +1,13 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | datacenters request', ['ovirt']) do
2
+
3
+ compute = Fog::Compute[:ovirt]
4
+
5
+ tests("When listing all datacenters") do
6
+
7
+ response = compute.datacenters
8
+ tests("The response data format ...") do
9
+ test("it should be a kind of Array") { response.kind_of? Array }
10
+ test("be a kind of Hash") { response.first.kind_of? Hash }
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | quotas request', ['ovirt']) do
2
+
3
+ compute = Fog::Compute[:ovirt]
4
+
5
+ tests("When listing all quotas") do
6
+
7
+ response = compute.quotas
8
+ tests("The response data format ...") do
9
+ test("it should be a kind of Array") { response.kind_of? Array }
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | storage_domains request', ['ovirt']) do
2
+
3
+ compute = Fog::Compute[:ovirt]
4
+
5
+ tests("When listing all storage_domains") do
6
+
7
+ response = compute.storage_domains
8
+ tests("The response data format ...") do
9
+ test("it should be a kind of Array") { response.kind_of? Array }
10
+ test("be a kind of OVIRT::StorageDomain") { response.first.kind_of? OVIRT::StorageDomain }
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | vm_update request', ['ovirt']) do
2
+
3
+ compute = Fog::Compute[:ovirt]
4
+ if compute.servers.all(:search => 'fog-*').empty?
5
+ compute.create_vm(:name => 'fog-'+Time.now.to_i.to_s, :cluster_name => 'Default')
6
+ end
7
+ vm = compute.servers.all(:search => 'fog-*').last
8
+
9
+ tests('The response should') do
10
+ response = compute.update_vm(:id => vm.id, :name => vm.name + 'updated')
11
+ test("be a kind of OVIRT::VM") { response.kind_of? OVIRT::VM}
12
+ end
13
+
14
+ tests('The expected options') do
15
+ raises(ArgumentError, 'raises ArgumentError when id option is missing') { compute.update_vm }
16
+ end
17
+
18
+ end
@@ -0,0 +1,20 @@
1
+ Shindo.tests('Fog::Compute[:ovirt] | update_volume request', ['ovirt']) do
2
+
3
+ compute = Fog::Compute[:ovirt]
4
+ if compute.servers.all(:search => 'fog-*').empty?
5
+ compute.create_vm(:name => 'fog-'+Time.now.to_i.to_s, :cluster_name => 'Default')
6
+ end
7
+ vm_id = compute.servers.all(:search => 'fog-*').last
8
+
9
+ tests('The expected options') do
10
+ raises(ArgumentError, 'raises ArgumentError when vm id is missing') { compute.update_volume(nil, {:id => 1}) }
11
+ raises(ArgumentError, 'raises ArgumentError when disk_id option is missing') { compute.update_volume(1, {:any => 1}) }
12
+ end
13
+
14
+ tests('The response should') do
15
+ response = compute.update_volume(vm_id, :id => 1)
16
+ test('be a success') { response ? true: false }
17
+ end
18
+
19
+
20
+ end