mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[oVirt] added support for update vm on ovirt
This commit is contained in:
parent
50499d004e
commit
76e3447c61
5 changed files with 45 additions and 3 deletions
|
@ -54,7 +54,7 @@ Gem::Specification.new do |s|
|
|||
s.add_development_dependency('rdoc')
|
||||
s.add_development_dependency('thor')
|
||||
s.add_development_dependency('rspec', '~>1.3.1')
|
||||
s.add_development_dependency('rbovirt', '>=0.0.5')
|
||||
s.add_development_dependency('rbovirt', '>=0.0.7')
|
||||
s.add_development_dependency('shindo', '~>0.3.4')
|
||||
s.add_development_dependency('virtualbox', '~>0.9.1')
|
||||
s.add_development_dependency('fission')
|
||||
|
|
|
@ -19,6 +19,7 @@ module Fog
|
|||
request :vm_action
|
||||
request :destroy_vm
|
||||
request :create_vm
|
||||
request :update_vm
|
||||
request :datacenters
|
||||
request :storage_domains
|
||||
request :list_virtual_machines
|
||||
|
|
|
@ -66,8 +66,11 @@ module Fog
|
|||
end
|
||||
|
||||
def save
|
||||
raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if identity
|
||||
self.id = connection.create_vm(attributes).id
|
||||
if identity
|
||||
connection.update_vm(attributes)
|
||||
else
|
||||
self.id = connection.create_vm(attributes).id
|
||||
end
|
||||
reload
|
||||
end
|
||||
|
||||
|
|
20
lib/fog/ovirt/requests/compute/update_vm.rb
Normal file
20
lib/fog/ovirt/requests/compute/update_vm.rb
Normal file
|
@ -0,0 +1,20 @@
|
|||
module Fog
|
||||
module Compute
|
||||
class Ovirt
|
||||
|
||||
class Real
|
||||
def update_vm(attrs)
|
||||
client.update_vm(attrs)
|
||||
end
|
||||
end
|
||||
|
||||
class Mock
|
||||
def update_vm(attrs)
|
||||
xml = read_xml('vm.xml')
|
||||
OVIRT::VM::new(self, Nokogiri::XML(xml).root)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
18
tests/ovirt/requests/compute/update_vm_tests.rb
Normal file
18
tests/ovirt/requests/compute/update_vm_tests.rb
Normal file
|
@ -0,0 +1,18 @@
|
|||
Shindo.tests('Fog::Compute[:ovirt] | vm_update request', ['ovirt']) do
|
||||
|
||||
compute = Fog::Compute[:ovirt]
|
||||
if compute.servers.all(:search => 'fog-*').empty?
|
||||
compute.create_vm(:name => 'fog-'+Time.now.to_i.to_s, :cluster_name => 'Default')
|
||||
end
|
||||
vm = compute.servers.all(:search => 'fog-*').last
|
||||
|
||||
tests('The response should') do
|
||||
response = compute.update_vm(:id => vm.id, :name => vm.name + 'updated')
|
||||
test("be a kind of OVIRT::VM") { response.kind_of? OVIRT::VM}
|
||||
end
|
||||
|
||||
tests('The expected options') do
|
||||
raises(ArgumentError, 'raises ArgumentError when id option is missing') { compute.update_vm }
|
||||
end
|
||||
|
||||
end
|
Loading…
Add table
Reference in a new issue