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.
- checksums.yaml +7 -0
- data/.gitignore +30 -0
- data/CONTRIBUTING.md +18 -0
- data/CONTRIBUTORS.md +21 -0
- data/Gemfile +3 -0
- data/LICENSE.md +20 -0
- data/README.md +47 -0
- data/Rakefile +15 -0
- data/fog-ovirt.gemspec +32 -0
- data/lib/fog/bin/ovirt.rb +28 -0
- data/lib/fog/ovirt/compute.rb +155 -0
- data/lib/fog/ovirt/core.rb +16 -0
- data/lib/fog/ovirt/models/compute/affinity_group.rb +25 -0
- data/lib/fog/ovirt/models/compute/affinity_groups.rb +20 -0
- data/lib/fog/ovirt/models/compute/cluster.rb +20 -0
- data/lib/fog/ovirt/models/compute/clusters.rb +20 -0
- data/lib/fog/ovirt/models/compute/instance_type.rb +39 -0
- data/lib/fog/ovirt/models/compute/instance_types.rb +20 -0
- data/lib/fog/ovirt/models/compute/interface.rb +19 -0
- data/lib/fog/ovirt/models/compute/interfaces.rb +29 -0
- data/lib/fog/ovirt/models/compute/quota.rb +16 -0
- data/lib/fog/ovirt/models/compute/quotas.rb +20 -0
- data/lib/fog/ovirt/models/compute/server.rb +175 -0
- data/lib/fog/ovirt/models/compute/servers.rb +27 -0
- data/lib/fog/ovirt/models/compute/template.rb +58 -0
- data/lib/fog/ovirt/models/compute/templates.rb +20 -0
- data/lib/fog/ovirt/models/compute/volume.rb +36 -0
- data/lib/fog/ovirt/models/compute/volumes.rb +28 -0
- data/lib/fog/ovirt/requests/compute/activate_volume.rb +22 -0
- data/lib/fog/ovirt/requests/compute/add_interface.rb +20 -0
- data/lib/fog/ovirt/requests/compute/add_to_affinity_group.rb +21 -0
- data/lib/fog/ovirt/requests/compute/add_volume.rb +21 -0
- data/lib/fog/ovirt/requests/compute/attach_volume.rb +22 -0
- data/lib/fog/ovirt/requests/compute/create_affinity_group.rb +18 -0
- data/lib/fog/ovirt/requests/compute/create_vm.rb +18 -0
- data/lib/fog/ovirt/requests/compute/datacenters.rb +20 -0
- data/lib/fog/ovirt/requests/compute/deactivate_volume.rb +22 -0
- data/lib/fog/ovirt/requests/compute/destroy_affinity_group.rb +19 -0
- data/lib/fog/ovirt/requests/compute/destroy_interface.rb +22 -0
- data/lib/fog/ovirt/requests/compute/destroy_vm.rb +19 -0
- data/lib/fog/ovirt/requests/compute/destroy_volume.rb +22 -0
- data/lib/fog/ovirt/requests/compute/detach_volume.rb +22 -0
- data/lib/fog/ovirt/requests/compute/get_affinity_group.rb +18 -0
- data/lib/fog/ovirt/requests/compute/get_api_version.rb +16 -0
- data/lib/fog/ovirt/requests/compute/get_cluster.rb +17 -0
- data/lib/fog/ovirt/requests/compute/get_instance_type.rb +17 -0
- data/lib/fog/ovirt/requests/compute/get_quota.rb +17 -0
- data/lib/fog/ovirt/requests/compute/get_template.rb +17 -0
- data/lib/fog/ovirt/requests/compute/get_virtual_machine.rb +17 -0
- data/lib/fog/ovirt/requests/compute/list_affinity_group_vms.rb +22 -0
- data/lib/fog/ovirt/requests/compute/list_affinity_groups.rb +20 -0
- data/lib/fog/ovirt/requests/compute/list_clusters.rb +19 -0
- data/lib/fog/ovirt/requests/compute/list_instance_types.rb +19 -0
- data/lib/fog/ovirt/requests/compute/list_networks.rb +16 -0
- data/lib/fog/ovirt/requests/compute/list_quotas.rb +19 -0
- data/lib/fog/ovirt/requests/compute/list_template_interfaces.rb +19 -0
- data/lib/fog/ovirt/requests/compute/list_template_volumes.rb +19 -0
- data/lib/fog/ovirt/requests/compute/list_templates.rb +19 -0
- data/lib/fog/ovirt/requests/compute/list_virtual_machines.rb +19 -0
- data/lib/fog/ovirt/requests/compute/list_vm_interfaces.rb +19 -0
- data/lib/fog/ovirt/requests/compute/list_vm_volumes.rb +19 -0
- data/lib/fog/ovirt/requests/compute/list_volumes.rb +19 -0
- data/lib/fog/ovirt/requests/compute/mock_files/affinitygroup.xml +8 -0
- data/lib/fog/ovirt/requests/compute/mock_files/affinitygroup_vms.xml +9 -0
- data/lib/fog/ovirt/requests/compute/mock_files/affinitygroups.xml +17 -0
- data/lib/fog/ovirt/requests/compute/mock_files/cluster.xml +20 -0
- data/lib/fog/ovirt/requests/compute/mock_files/clusters.xml +39 -0
- data/lib/fog/ovirt/requests/compute/mock_files/data_centers.xml +17 -0
- data/lib/fog/ovirt/requests/compute/mock_files/disks.xml +58 -0
- data/lib/fog/ovirt/requests/compute/mock_files/instance_type.xml +42 -0
- data/lib/fog/ovirt/requests/compute/mock_files/instance_types.xml +197 -0
- data/lib/fog/ovirt/requests/compute/mock_files/nics.xml +10 -0
- data/lib/fog/ovirt/requests/compute/mock_files/quotas.xml +7 -0
- data/lib/fog/ovirt/requests/compute/mock_files/storage_domains.xml +36 -0
- data/lib/fog/ovirt/requests/compute/mock_files/template.xml +39 -0
- data/lib/fog/ovirt/requests/compute/mock_files/templates.xml +110 -0
- data/lib/fog/ovirt/requests/compute/mock_files/vm.xml +52 -0
- data/lib/fog/ovirt/requests/compute/mock_files/vms.xml +152 -0
- data/lib/fog/ovirt/requests/compute/mock_files/volumes.xml +40 -0
- data/lib/fog/ovirt/requests/compute/remove_from_affinity_group.rb +21 -0
- data/lib/fog/ovirt/requests/compute/storage_domains.rb +20 -0
- data/lib/fog/ovirt/requests/compute/update_interface.rb +35 -0
- data/lib/fog/ovirt/requests/compute/update_vm.rb +18 -0
- data/lib/fog/ovirt/requests/compute/update_volume.rb +39 -0
- data/lib/fog/ovirt/requests/compute/vm_action.rb +22 -0
- data/lib/fog/ovirt/requests/compute/vm_start_with_cloudinit.rb +19 -0
- data/lib/fog/ovirt/requests/compute/vm_ticket.rb +17 -0
- data/lib/fog/ovirt/version.rb +5 -0
- data/lib/fog/ovirt.rb +1 -0
- data/spec/fog/bin/ovirt_spec.rb +10 -0
- data/spec/fog/bin_spec.rb +32 -0
- data/tests/helper.rb +1 -0
- data/tests/helpers/mock_helper.rb +16 -0
- data/tests/helpers/succeeds_helper.rb +9 -0
- data/tests/ovirt/compute_tests.rb +25 -0
- data/tests/ovirt/models/compute/cluster_tests.rb +31 -0
- data/tests/ovirt/models/compute/clusters_tests.rb +9 -0
- data/tests/ovirt/models/compute/interface_tests.rb +27 -0
- data/tests/ovirt/models/compute/interfaces_tests.rb +9 -0
- data/tests/ovirt/models/compute/server_tests.rb +51 -0
- data/tests/ovirt/models/compute/servers_tests.rb +14 -0
- data/tests/ovirt/models/compute/template_tests.rb +28 -0
- data/tests/ovirt/models/compute/templates_tests.rb +9 -0
- data/tests/ovirt/requests/compute/create_vm_tests.rb +26 -0
- data/tests/ovirt/requests/compute/destroy_vm_tests.rb +18 -0
- data/tests/ovirt/requests/compute/list_datacenters_tests.rb +13 -0
- data/tests/ovirt/requests/compute/list_quotas_tests.rb +12 -0
- data/tests/ovirt/requests/compute/list_storage_domains_tests.rb +13 -0
- data/tests/ovirt/requests/compute/update_vm_tests.rb +18 -0
- data/tests/ovirt/requests/compute/update_volume_tests.rb +20 -0
- 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
|