fog-ovirt 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,175 @@
1
+ require 'fog/compute/models/server'
2
+
3
+ module Fog
4
+ module Compute
5
+ class Ovirt
6
+ class Server < Fog::Compute::Server
7
+ # This will be the instance uuid which is globally unique across
8
+ # a oVirt deployment.
9
+ identity :id
10
+
11
+ attribute :name
12
+ attribute :comment
13
+ attribute :description
14
+ attribute :profile
15
+ attribute :display
16
+ attribute :storage, :aliases => 'disk_size'
17
+ attribute :creation_time
18
+ attribute :os
19
+ attribute :ip
20
+ attribute :status
21
+ attribute :cores, :aliases => 'cpus'
22
+ attribute :memory
23
+ attribute :host
24
+ attribute :cluster
25
+ attribute :template
26
+ attribute :instance_type
27
+ attribute :interfaces
28
+ attribute :volumes
29
+ attribute :raw
30
+ attribute :quota
31
+ attribute :ips
32
+ attribute :ha
33
+ attribute :ha_priority
34
+ attribute :clone
35
+ attribute :disks
36
+
37
+ def ready?
38
+ !(status =~ /down/i)
39
+ end
40
+
41
+ def locked?
42
+ @volumes = nil # force reload volumes
43
+ !!(status =~ /locked/i) || (attributes[:volumes]=nil) || volumes.any?{|v| !!(v.status =~ /locked/i)}
44
+ end
45
+
46
+ def stopped?
47
+ status.downcase == 'down'
48
+ end
49
+
50
+ def mac
51
+ interfaces.first.mac unless interfaces.empty?
52
+ end
53
+
54
+ def interfaces
55
+ @interfaces ||= id.nil? ? [] : Fog::Compute::Ovirt::Interfaces.new(
56
+ :service => service,
57
+ :vm => self
58
+ )
59
+ end
60
+
61
+ def add_interface attrs
62
+ wait_for { stopped? } if attrs[:blocking]
63
+ service.add_interface(id, attrs)
64
+ end
65
+
66
+ def update_interface attrs
67
+ wait_for { stopped? } if attrs[:blocking]
68
+ service.update_interface(id, attrs)
69
+ end
70
+
71
+ def destroy_interface attrs
72
+ wait_for { stopped? } if attrs[:blocking]
73
+ service.destroy_interface(id, attrs)
74
+ end
75
+
76
+ def volumes
77
+ @volumes ||= id.nil? ? [] : Fog::Compute::Ovirt::Volumes.new(
78
+ :service => service,
79
+ :vm => self
80
+ )
81
+ end
82
+
83
+ def add_volume attrs
84
+ wait_for { stopped? } if attrs[:blocking]
85
+ service.add_volume(id, attrs)
86
+ end
87
+
88
+ def destroy_volume attrs
89
+ wait_for { stopped? } if attrs[:blocking]
90
+ service.destroy_volume(id, attrs)
91
+ end
92
+
93
+ def update_volume attrs
94
+ wait_for { stopped? } if attrs[:blocking]
95
+ service.update_volume(id, attrs)
96
+ end
97
+
98
+ def attach_volume(attrs)
99
+ wait_for { stopped? } if attrs[:blocking]
100
+ service.attach_volume(id, attrs)
101
+ end
102
+
103
+ def detach_volume(attrs)
104
+ wait_for { stopped? } if attrs[:blocking]
105
+ service.detach_volume(id, attrs)
106
+ end
107
+
108
+ def add_to_affinity_group(attrs)
109
+ wait_for { stopped? } if attrs[:blocking]
110
+ service.add_to_affinity_group(id, attrs)
111
+ end
112
+
113
+ def remove_from_affinity_group(attrs)
114
+ wait_for { stopped? } if attrs[:blocking]
115
+ service.remove_from_affinity_group(id, attrs)
116
+ end
117
+
118
+ def start(options = {})
119
+ wait_for { !locked? } if options[:blocking]
120
+ service.vm_action(:id =>id, :action => :start)
121
+ reload
122
+ end
123
+
124
+ def start_with_cloudinit(options = {})
125
+ wait_for { !locked? } if options[:blocking]
126
+ user_data = Hash[YAML.load(options[:user_data]).map{|a| [a.first.to_sym, a.last]}]
127
+ service.vm_start_with_cloudinit(:id =>id, :user_data =>user_data)
128
+ reload
129
+ end
130
+
131
+ def stop(options = {})
132
+ service.vm_action(:id =>id, :action => :stop)
133
+ reload
134
+ end
135
+
136
+ def reboot(options = {})
137
+ unless stopped?
138
+ stop
139
+ wait_for { stopped? }
140
+ end
141
+ start options.merge(:blocking => true)
142
+ end
143
+
144
+ def suspend(options = {})
145
+ service.vm_action(:id =>id, :action => :suspend)
146
+ reload
147
+ end
148
+
149
+ def destroy(options = {})
150
+ (stop unless stopped?) rescue nil #ignore failure, destroy the machine anyway.
151
+ wait_for { stopped? }
152
+ service.destroy_vm(:id => id)
153
+ end
154
+
155
+ def ticket(options = {})
156
+ raise "Can not set console ticket, Server is not ready. Server status: #{status}" unless ready?
157
+ service.vm_ticket(id, options)
158
+ end
159
+
160
+ def save
161
+ if persisted?
162
+ service.update_vm(attributes)
163
+ else
164
+ self.id = service.create_vm(attributes).id
165
+ end
166
+ reload
167
+ end
168
+
169
+ def to_s
170
+ name
171
+ end
172
+ end
173
+ end
174
+ end
175
+ end
@@ -0,0 +1,27 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/ovirt/models/compute/server'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Ovirt
7
+ class Servers < Fog::Collection
8
+ model Fog::Compute::Ovirt::Server
9
+
10
+ def all(filters = {})
11
+ load service.list_virtual_machines(filters)
12
+ end
13
+
14
+ def get(id)
15
+ new service.get_virtual_machine(id)
16
+ end
17
+
18
+ def bootstrap(new_attributes = {})
19
+ server = create(new_attributes)
20
+ server.wait_for { stopped? }
21
+ server.start
22
+ server
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,58 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Template < Fog::Model
5
+ identity :id
6
+
7
+ attr_accessor :raw
8
+
9
+ attribute :name
10
+ attribute :comment
11
+ attribute :description
12
+ attribute :profile
13
+ attribute :display
14
+ attribute :storage, :aliases => 'disk_size'
15
+ attribute :creation_time
16
+ attribute :os
17
+ attribute :status
18
+ attribute :cores, :aliases => 'cpus'
19
+ attribute :memory
20
+ attribute :cluster
21
+ attribute :interfaces
22
+ attribute :volumes
23
+ attribute :version
24
+
25
+ def interfaces
26
+ attributes[:interfaces] ||= id.nil? ? [] : Fog::Compute::Ovirt::Interfaces.new(
27
+ :service => service,
28
+ :vm => self
29
+ )
30
+ end
31
+
32
+ def volumes
33
+ attributes[:volumes] ||= id.nil? ? [] : Fog::Compute::Ovirt::Volumes.new(
34
+ :service => service,
35
+ :vm => self
36
+ )
37
+ end
38
+
39
+ def ready?
40
+ !(status =~ /down/i)
41
+ end
42
+
43
+ def destroy(options = {})
44
+ service.client.destroy_template(id)
45
+ end
46
+
47
+ def save
48
+ raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
49
+ service.client.create_template(attributes)
50
+ end
51
+
52
+ def to_s
53
+ name
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,20 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/ovirt/models/compute/template'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Ovirt
7
+ class Templates < Fog::Collection
8
+ model Fog::Compute::Ovirt::Template
9
+
10
+ def all(filters = {})
11
+ load service.list_templates(filters)
12
+ end
13
+
14
+ def get(id)
15
+ new service.get_template(id)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,36 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Volume < Fog::Model
5
+ attr_accessor :raw
6
+ DISK_SIZE_TO_GB = 1073741824
7
+ identity :id
8
+
9
+ attribute :storage_domain
10
+ attribute :size
11
+ attribute :disk_type
12
+ attribute :bootable
13
+ attribute :interface
14
+ attribute :format
15
+ attribute :sparse
16
+ attribute :size_gb
17
+ attribute :status
18
+ attribute :quota
19
+ attribute :alias
20
+ attribute :wipe_after_delete
21
+
22
+ def size_gb
23
+ attributes[:size_gb] ||= attributes[:size].to_i / DISK_SIZE_TO_GB if attributes[:size]
24
+ end
25
+
26
+ def size_gb= s
27
+ attributes[:size] = s.to_i * DISK_SIZE_TO_GB if s
28
+ end
29
+
30
+ def to_s
31
+ id
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,28 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/ovirt/models/compute/volume'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Ovirt
7
+ class Volumes < Fog::Collection
8
+ model Fog::Compute::Ovirt::Volume
9
+
10
+ attr_accessor :vm
11
+
12
+ def all(filters = {})
13
+ if vm.is_a? Fog::Compute::Ovirt::Server
14
+ load service.list_vm_volumes(vm.id)
15
+ elsif vm.is_a? Fog::Compute::Ovirt::Template
16
+ load service.list_template_volumes(vm.id)
17
+ else
18
+ load service.list_volumes
19
+ end
20
+ end
21
+
22
+ def get(id)
23
+ new service.get_volume(id)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,22 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def activate_volume(id, options)
6
+ raise ArgumentError, "instance id is a required parameter" unless id
7
+ raise ArgumentError, "volume id is a required parameter for activate-volume" unless options.key? :id
8
+
9
+ client.activate_volume(id, options[:id])
10
+ end
11
+ end
12
+
13
+ class Mock
14
+ def activate_volume(id, options)
15
+ raise ArgumentError, "instance id is a required parameter" unless id
16
+ raise ArgumentError, "volume id is a required parameter for activate-volume" unless options.key? :id
17
+ true
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def add_interface(id, options = {})
6
+ raise ArgumentError, "instance id is a required parameter" unless id
7
+
8
+ client.add_interface(id, options)
9
+ end
10
+ end
11
+
12
+ class Mock
13
+ def add_interface(id, options = {})
14
+ raise ArgumentError, "instance id is a required parameter" unless id
15
+ true
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def add_to_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 add-to-affinity-group" unless options.key? :id
8
+ client.add_vm_to_affinity_group(options[:id], id)
9
+ end
10
+ end
11
+
12
+ class Mock
13
+ def add_to_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 add-to-affinity-group" unless options.key? :id
16
+ true
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ DISK_SIZE_TO_GB = 1073741824
6
+ def add_volume(id, options = {})
7
+ raise ArgumentError, "instance id is a required parameter" unless id
8
+ options[:size]=options[:size_gb].to_i*DISK_SIZE_TO_GB if options[:size_gb]
9
+ client.add_volume(id, options)
10
+ end
11
+ end
12
+
13
+ class Mock
14
+ def add_volume(id, options = {})
15
+ raise ArgumentError, "instance id is a required parameter" unless id
16
+ true
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def attach_volume(id, options)
6
+ raise ArgumentError, "instance id is a required parameter" unless id
7
+ raise ArgumentError, "volume id is a required parameter for attach-volume" unless options.key? :id
8
+
9
+ client.attach_volume(id, options[:id])
10
+ end
11
+ end
12
+
13
+ class Mock
14
+ def attach_volume(id, options)
15
+ raise ArgumentError, "instance id is a required parameter" unless id
16
+ raise ArgumentError, "volume id is a required parameter for attach-volume" unless options.key? :id
17
+ true
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def create_affinity_group(attrs)
6
+ client.create_affinity_group(attrs)
7
+ end
8
+ end
9
+
10
+ class Mock
11
+ def create_affinity_group(attrs)
12
+ xml = read_xml('affinitygroup.xml')
13
+ OVIRT::AffinityGroup::new(self, Nokogiri::XML(xml).root)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def create_vm(attrs)
6
+ client.create_vm(attrs)
7
+ end
8
+ end
9
+
10
+ class Mock
11
+ def create_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,20 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def datacenters filter={}
6
+ client.datacenters(filter).map {|ovirt_obj| ovirt_attrs ovirt_obj}
7
+ end
8
+ end
9
+
10
+ class Mock
11
+ def datacenters(filters = {})
12
+ xml = read_xml 'data_centers.xml'
13
+ Nokogiri::XML(xml).xpath('/data_centers/data_center').map do |dc|
14
+ ovirt_attrs OVIRT::DataCenter::new(self, dc)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,22 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def deactivate_volume(id, options)
6
+ raise ArgumentError, "instance id is a required parameter" unless id
7
+ raise ArgumentError, "volume id is a required parameter for deactivate-volume" unless options.key? :id
8
+
9
+ client.deactivate_volume(id, options[:id])
10
+ end
11
+ end
12
+
13
+ class Mock
14
+ def deactivate_volume(id, options)
15
+ raise ArgumentError, "instance id is a required parameter" unless id
16
+ raise ArgumentError, "volume id is a required parameter for deactivate-volume" unless options.key? :id
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 destroy_affinity_group(id)
6
+ raise ArgumentError, "instance id is a required parameter" unless id
7
+ client.destroy_affinity_group(id)
8
+ end
9
+ end
10
+
11
+ class Mock
12
+ def destroy_affinity_group(id)
13
+ raise ArgumentError, "instance id is a required parameter" unless id
14
+ true
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def destroy_interface(id, options)
6
+ raise ArgumentError, "instance id is a required parameter" unless id
7
+ raise ArgumentError, "interface id is a required parameter for destroy-interface" unless options.key? :id
8
+
9
+ client.destroy_interface(id, options[:id])
10
+ end
11
+ end
12
+
13
+ class Mock
14
+ def destroy_interface(id, options)
15
+ raise ArgumentError, "instance id is a required parameter" unless id
16
+ raise ArgumentError, "interface id is a required parameter for destroy-interface" unless options.key? :id
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 destroy_vm(options = {})
6
+ raise ArgumentError, "instance id is a required parameter" unless options.key? :id
7
+ client.destroy_vm(options[:id])
8
+ end
9
+ end
10
+
11
+ class Mock
12
+ def destroy_vm(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,22 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def destroy_volume(id, options)
6
+ raise ArgumentError, "instance id is a required parameter" unless id
7
+ raise ArgumentError, "volume id is a required parameter for destroy-volume" unless options.key? :id
8
+
9
+ client.destroy_volume(id, options[:id])
10
+ end
11
+ end
12
+
13
+ class Mock
14
+ def destroy_volume(id, options)
15
+ raise ArgumentError, "instance id is a required parameter" unless id
16
+ raise ArgumentError, "volume id is a required parameter for destroy-volume" unless options.key? :id
17
+ true
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def detach_volume(id, options)
6
+ raise ArgumentError, "instance id is a required parameter" unless id
7
+ raise ArgumentError, "volume id is a required parameter for detach-volume" unless options.key? :id
8
+
9
+ client.detach_volume(id, options[:id])
10
+ end
11
+ end
12
+
13
+ class Mock
14
+ def detach_volume(id, options)
15
+ raise ArgumentError, "instance id is a required parameter" unless id
16
+ raise ArgumentError, "volume id is a required parameter for detach-volume" unless options.key? :id
17
+ true
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def get_affinity_group(id)
6
+ ovirt_attrs client.affinity_group(id)
7
+ end
8
+ end
9
+
10
+ class Mock
11
+ def get_affinity_group(id)
12
+ xml = read_xml('affinitygroup.xml')
13
+ ovirt_attrs OVIRT::AffinityGroup::new(self, Nokogiri::XML(xml).root)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Real
5
+ def api_version
6
+ client.api_version
7
+ end
8
+ end
9
+ class Mock
10
+ def api_version
11
+ "3.1"
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end