1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

Merge pull request #865 from bvox/xs-more-tests

* [xenserver|compute] set_attribute request now accepts var args
This commit is contained in:
Wesley Beary 2012-04-25 08:37:00 -07:00
commit 342ec7f50a
8 changed files with 80 additions and 22 deletions

View file

@ -77,8 +77,8 @@ module Fog
true
end
def set_attribute(name, val)
data = connection.set_attribute( 'VM', reference, name, val )
def set_attribute(name, *val)
data = connection.set_attribute( 'VM', reference, name, *val )
# Do not reload automatically for performance reasons
# We can set multiple attributes at the same time and
# then reload manually

View file

@ -70,7 +70,15 @@ module Fog
connection.insert_vbd reference, vdi.reference
end
#
# return nil if the VBD is not attached
#
# TODO: Confirm that the VBD_metrics handle is invalid
# when the VBD is NOT attached. I get a HANDLE_INVALID
# exception in that case.
#
def metrics
return nil unless currently_attached
rec = connection.get_record( __metrics, 'VBD_metrics' )
Fog::Compute::XenServer::VbdMetrics.new(rec)
end

View file

@ -53,8 +53,8 @@ module Fog
super
end
def set_attribute(name, val)
data = connection.set_attribute( 'VDI', reference, name, val )
def set_attribute(name, *val)
data = connection.set_attribute( 'VDI', reference, name, *val )
end
def snapshot_of

View file

@ -6,8 +6,8 @@ module Fog
require 'fog/xenserver/parser'
def set_attribute( klass, ref, attr_name, value )
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => "#{klass}.set_#{attr_name.gsub('-','_')}"}, ref, value)
def set_attribute( klass, ref, attr_name, *value )
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => "#{klass}.set_#{attr_name.gsub('-','_')}"}, ref, *value)
end
end

View file

@ -10,3 +10,25 @@ def valid_ref?(ref)
(ref =~ /OpaqueRef:/) and \
(ref != "OpaqueRef:NULL" )
end
def create_ephemeral_vm
Fog::Compute[:xenserver].servers.create(:name => test_ephemeral_vm_name,
:template_name => test_template_name)
end
def create_ephemeral_server
create_ephemeral_vm
end
def destroy_ephemeral_servers
servers = Fog::Compute[:xenserver].servers
# Teardown cleanup
(servers.all :name_matches => test_ephemeral_vm_name).each do |s|
s.destroy
end
(servers.templates.find_all { |t| t.name == test_ephemeral_vm_name}).each do |s|
s.destroy
end
end
def destroy_ephemeral_vms
destroy_ephemeral_servers
end

View file

@ -1,11 +1,7 @@
Shindo.tests('Fog::Compute[:xenserver] | servers collection', ['xenserver']) do
#require 'pp'
conn = Fog::Compute[:xenserver]
# pre-flight cleanup
(conn.servers.all :name_matches => test_ephemeral_vm_name).each do |s|
s.destroy
end
destroy_ephemeral_servers
servers = conn.servers
templates = conn.servers.templates
@ -86,4 +82,7 @@ Shindo.tests('Fog::Compute[:xenserver] | servers collection', ['xenserver']) do
end
# Teardown cleaup
destroy_ephemeral_servers
end

View file

@ -2,6 +2,8 @@ Shindo.tests('Fog::Compute[:xenserver] | VBD model', ['VBD']) do
vbds = Fog::Compute[:xenserver].vbds
vbd = vbds.first
servers = Fog::Compute[:xenserver].servers
server = create_ephemeral_vm
tests('The VBD model should') do
tests('have the action') do
@ -83,15 +85,17 @@ Shindo.tests('Fog::Compute[:xenserver] | VBD model', ['VBD']) do
true
end
end
end
tests("return a nil when type is CD") do
vbds.each do |vbd|
test("return a VbdMetrics object when attached") do
if vbd.currently_attached
vbd.metrics.kind_of? Fog::Compute::XenServer::VbdMetrics
else
vbd.metrics.nil?
end
end
end
tests("return valid Server") do
test("should be a Fog::Compute::XenServer::Server") { vbd.server.kind_of? Fog::Compute::XenServer::Server }
end
test("return a VbdMetrics object") { vbd.metrics.kind_of? Fog::Compute::XenServer::VbdMetrics }
test("be able to be unplugged when type is CD") do
if vbd.type == "CD"
vbd.unpluggable == true
@ -103,7 +107,9 @@ Shindo.tests('Fog::Compute[:xenserver] | VBD model', ['VBD']) do
end
tests("VBD Metrics should") do
test("have a last_updated Time property") { vbd.metrics.last_updated.kind_of? Time }
test("have a last_updated Time property") { server.vbds.first.metrics.last_updated.kind_of? Time }
end
destroy_ephemeral_servers
end

View file

@ -1,13 +1,12 @@
Shindo.tests('Fog::Compute[:xenserver] | set_attribute request', ['xenserver']) do
# Setup cleanup
destroy_ephemeral_servers
connection = Fog::Compute[:xenserver]
servers = connection.servers
# pre-flight cleanup
(servers.all :name_matches => test_ephemeral_vm_name).each do |s|
s.destroy
end
server = Fog::Compute[:xenserver].servers.create(:name => test_ephemeral_vm_name,
:template_name => test_template_name)
server = create_ephemeral_server
tests('Setting an attribute with set_attribute should') do
test('set the PV_bootloader attr to foobar') do
response = connection.set_attribute('VM', server.reference, 'PV_bootloader', 'foobar')
@ -25,9 +24,33 @@ Shindo.tests('Fog::Compute[:xenserver] | set_attribute request', ['xenserver'])
(server.other_config['foo'] == 'bar') and \
(server.other_config['stuff'] == 'crap')
end
test('set the multiple valued attribute memory_limits }') do
server = create_ephemeral_server
server.stop 'hard'
server.wait_for { not running? }
response = connection.set_attribute('VM',
server.reference,
'memory_limits',
'1073741824',
'1073741824',
'1073741824',
'1073741824'
)
server.reload
(server.memory_dynamic_max == "1073741824") and \
(server.memory_dynamic_min == "1073741824") and \
(server.memory_static_max == "1073741824") and \
(server.memory_static_min == "1073741824")
server.start
end
end
tests('The expected options') do
raises(ArgumentError, 'raises ArgumentError when ref,attr,value missing') { connection.get_record }
end
# Teardown cleanup
destroy_ephemeral_servers
end