mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
oVirt: Added tests to work on both real and mock.
Signed-off-by: Ohad Levy <ohadlevy@gmail.com>
This commit is contained in:
parent
4a9bfe58c8
commit
905c69d424
36 changed files with 842 additions and 69 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -5,6 +5,7 @@
|
|||
.rvmrc
|
||||
.bundle
|
||||
.DS_Store
|
||||
.idea
|
||||
coverage
|
||||
doc/*
|
||||
docs/_site/*
|
||||
|
|
|
@ -54,10 +54,10 @@ 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('shindo', '~>0.3.4')
|
||||
s.add_development_dependency('virtualbox', '~>0.9.1')
|
||||
# s.add_development_dependency('ruby-libvirt','~>0.4.0')
|
||||
s.add_development_dependency('rbovirt', '>=0.0.5')
|
||||
|
||||
s.files = `git ls-files`.split("\n")
|
||||
s.test_files = `git ls-files -- {spec,tests}/*`.split("\n")
|
||||
|
|
|
@ -54,6 +54,9 @@ An alternate file may be used by placing its path in the FOG_RC environment vari
|
|||
:openstack_username:
|
||||
:openstack_auth_url:
|
||||
:openstack_tenant:
|
||||
:ovirt_username:
|
||||
:ovirt_password:
|
||||
:ovirt_url:
|
||||
:rackspace_api_key:
|
||||
:rackspace_username:
|
||||
:rackspace_servicenet:
|
||||
|
|
|
@ -18,22 +18,60 @@ module Fog
|
|||
|
||||
request :vm_action
|
||||
request :destroy_vm
|
||||
request :create_vm
|
||||
request :datacenters
|
||||
request :storage_domains
|
||||
request :list_virtual_machines
|
||||
request :get_virtual_machine
|
||||
request :list_templates
|
||||
request :get_template
|
||||
request :list_clusters
|
||||
request :get_cluster
|
||||
|
||||
module Shared
|
||||
# converts an OVIRT object into an hash for fog to consume.
|
||||
def ovirt_attrs obj
|
||||
opts = {:raw => obj}
|
||||
obj.instance_variables.each do |v|
|
||||
key = v.gsub("@","").to_sym
|
||||
value = obj.instance_variable_get(v)
|
||||
#ignore nil values
|
||||
next if value.nil?
|
||||
|
||||
opts[key] = case value.class
|
||||
when OVIRT::Link
|
||||
value.id
|
||||
when Hash
|
||||
value
|
||||
else
|
||||
value.to_s.strip
|
||||
end
|
||||
end
|
||||
opts
|
||||
end
|
||||
end
|
||||
|
||||
class Mock
|
||||
include Shared
|
||||
attr_reader :client
|
||||
|
||||
def initialize(options={})
|
||||
require 'rbovirt'
|
||||
username = options[:ovirt_username]
|
||||
password = options[:ovirt_password]
|
||||
url = options[:ovirt_url]
|
||||
|
||||
#@client = OVIRT::Client.new(username, password, url)
|
||||
end
|
||||
|
||||
private
|
||||
#read mocks xml
|
||||
def read_xml(file_name)
|
||||
file_path = File.join(File.dirname(__FILE__),"requests","compute","mock_files",file_name)
|
||||
File.read(file_path)
|
||||
end
|
||||
end
|
||||
|
||||
class Real
|
||||
include Shared
|
||||
attr_reader :client
|
||||
|
||||
def initialize(options={})
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
require 'fog/core/collection'
|
||||
require 'fog/ovirt/models/compute/cluster'
|
||||
require 'fog/ovirt/models/compute/helpers/collection_helper'
|
||||
|
||||
module Fog
|
||||
module Compute
|
||||
|
@ -8,16 +7,14 @@ module Fog
|
|||
|
||||
class Clusters < Fog::Collection
|
||||
|
||||
include Fog::Compute::Ovirt::Helpers::CollectionHelper
|
||||
model Fog::Compute::Ovirt::Cluster
|
||||
|
||||
def all(filters = {})
|
||||
attrs = connection.client.clusters(filters).map { |cluster| ovirt_attrs(cluster) }
|
||||
load attrs
|
||||
load connection.list_clusters(filters)
|
||||
end
|
||||
|
||||
def get(id)
|
||||
new ovirt_attrs(connection.client.cluster(id))
|
||||
new connection.get_cluster(id)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
module Fog
|
||||
module Compute
|
||||
class Ovirt
|
||||
module Helpers
|
||||
module CollectionHelper
|
||||
|
||||
# converts an OVIRT object into an hash for fog to consume.
|
||||
def ovirt_attrs obj
|
||||
opts = {:raw => obj}
|
||||
obj.instance_variables.each do |v|
|
||||
key = v.gsub("@","").to_sym
|
||||
value = obj.instance_variable_get(v)
|
||||
#ignore nil values
|
||||
next if value.nil?
|
||||
|
||||
opts[key] = case value.class
|
||||
when OVIRT::Link
|
||||
value.id
|
||||
when Hash
|
||||
value
|
||||
else
|
||||
value.to_s.strip
|
||||
end
|
||||
end
|
||||
opts
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -39,29 +39,36 @@ module Fog
|
|||
end
|
||||
|
||||
def start(options = {})
|
||||
connection.client.vm_action(id, :start)
|
||||
connection.vm_action(:id =>id, :action => :start)
|
||||
reload
|
||||
end
|
||||
|
||||
def stop(options = {})
|
||||
connection.client.vm_action(id, :stop)
|
||||
connection.vm_action(:id =>id, :action => :stop)
|
||||
reload
|
||||
end
|
||||
|
||||
def reboot(options = {})
|
||||
connection.client.vm_action(id, :reboot)
|
||||
stop unless stopped?
|
||||
wait_for { stopped? }
|
||||
connection.vm_action(:id =>id, :action => :start)
|
||||
reload
|
||||
end
|
||||
|
||||
def suspend(options = {})
|
||||
connection.vm_action(:id =>id, :action => :suspend)
|
||||
reload
|
||||
end
|
||||
|
||||
def destroy(options = {})
|
||||
stop unless stopped?
|
||||
(stop unless stopped?) rescue nil #ignore failure, destroy the machine anyway.
|
||||
wait_for { stopped? }
|
||||
connection.client.destroy_vm(id)
|
||||
connection.destroy_vm(:id => id)
|
||||
end
|
||||
|
||||
def save
|
||||
raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if identity
|
||||
self.id = connection.client.create_vm(attributes).id
|
||||
self.id = connection.create_vm(attributes).id
|
||||
reload
|
||||
end
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
require 'fog/core/collection'
|
||||
require 'fog/ovirt/models/compute/server'
|
||||
require 'fog/ovirt/models/compute/helpers/collection_helper'
|
||||
|
||||
module Fog
|
||||
module Compute
|
||||
|
@ -8,16 +7,14 @@ module Fog
|
|||
|
||||
class Servers < Fog::Collection
|
||||
|
||||
include Fog::Compute::Ovirt::Helpers::CollectionHelper
|
||||
model Fog::Compute::Ovirt::Server
|
||||
|
||||
def all(filters = {})
|
||||
attrs = connection.client.vms(filters).map { |server| ovirt_attrs(server) }
|
||||
load attrs
|
||||
load connection.list_virtual_machines(filters)
|
||||
end
|
||||
|
||||
def get(id)
|
||||
new ovirt_attrs(connection.client.vm(id))
|
||||
new connection.get_virtual_machine(id)
|
||||
end
|
||||
|
||||
def bootstrap(new_attributes = {})
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
require 'fog/core/collection'
|
||||
require 'fog/ovirt/models/compute/template'
|
||||
require 'fog/ovirt/models/compute/helpers/collection_helper'
|
||||
|
||||
module Fog
|
||||
module Compute
|
||||
|
@ -8,16 +7,14 @@ module Fog
|
|||
|
||||
class Templates < Fog::Collection
|
||||
|
||||
include Fog::Compute::Ovirt::Helpers::CollectionHelper
|
||||
model Fog::Compute::Ovirt::Template
|
||||
|
||||
def all(filters = {})
|
||||
attrs = connection.client.templates(filters).map { |template| ovirt_attrs(template) }
|
||||
load attrs
|
||||
load connection.list_templates(filters)
|
||||
end
|
||||
|
||||
def get(id)
|
||||
new ovirt_attrs(connection.client.template(id))
|
||||
new connection.get_template(id)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
20
lib/fog/ovirt/requests/compute/create_vm.rb
Normal file
20
lib/fog/ovirt/requests/compute/create_vm.rb
Normal file
|
@ -0,0 +1,20 @@
|
|||
module Fog
|
||||
module Compute
|
||||
class Ovirt
|
||||
|
||||
class Real
|
||||
def create_vm(attrs)
|
||||
client.create_vm(attrs)
|
||||
end
|
||||
end
|
||||
|
||||
class Mock
|
||||
def create_vm(attrs)
|
||||
xml = read_xml('vm.xml')
|
||||
OVIRT::VM::new(self, Nokogiri::XML(xml).root)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -4,14 +4,17 @@ module Fog
|
|||
class Real
|
||||
|
||||
def datacenters filter={}
|
||||
client.datacenters(filter)
|
||||
client.datacenters(filter).map {|ovirt_obj| ovirt_attrs ovirt_obj}
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Mock
|
||||
def datacenters filter={}
|
||||
[ "Solutions", "Solutions2", "Solutions3" ]
|
||||
class Mock
|
||||
def datacenters(filters = {})
|
||||
xml = read_xml 'data_centers.xml'
|
||||
Nokogiri::XML(xml).xpath('/data_centers/data_center').collect do |dc|
|
||||
ovirt_attrs OVIRT::DataCenter::new(self, dc)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
18
lib/fog/ovirt/requests/compute/get_cluster.rb
Normal file
18
lib/fog/ovirt/requests/compute/get_cluster.rb
Normal file
|
@ -0,0 +1,18 @@
|
|||
module Fog
|
||||
module Compute
|
||||
class Ovirt
|
||||
class Real
|
||||
def get_cluster(id)
|
||||
ovirt_attrs client.cluster(id)
|
||||
end
|
||||
|
||||
end
|
||||
class Mock
|
||||
def get_cluster(id)
|
||||
xml = read_xml('cluster.xml')
|
||||
ovirt_attrs OVIRT::Cluster::new(self, Nokogiri::XML(xml).root)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
18
lib/fog/ovirt/requests/compute/get_template.rb
Normal file
18
lib/fog/ovirt/requests/compute/get_template.rb
Normal file
|
@ -0,0 +1,18 @@
|
|||
module Fog
|
||||
module Compute
|
||||
class Ovirt
|
||||
class Real
|
||||
def get_template(id)
|
||||
ovirt_attrs client.template(id)
|
||||
end
|
||||
|
||||
end
|
||||
class Mock
|
||||
def get_template(id)
|
||||
xml = read_xml 'template.xml'
|
||||
ovirt_attrs OVIRT::Template::new(self, Nokogiri::XML(xml).root)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
18
lib/fog/ovirt/requests/compute/get_virtual_machine.rb
Normal file
18
lib/fog/ovirt/requests/compute/get_virtual_machine.rb
Normal file
|
@ -0,0 +1,18 @@
|
|||
module Fog
|
||||
module Compute
|
||||
class Ovirt
|
||||
class Real
|
||||
def get_virtual_machine(id)
|
||||
ovirt_attrs client.vm(id)
|
||||
end
|
||||
|
||||
end
|
||||
class Mock
|
||||
def get_virtual_machine(id)
|
||||
xml = read_xml 'vm.xml'
|
||||
ovirt_attrs OVIRT::VM::new(self, Nokogiri::XML(xml).root)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
20
lib/fog/ovirt/requests/compute/list_clusters.rb
Normal file
20
lib/fog/ovirt/requests/compute/list_clusters.rb
Normal file
|
@ -0,0 +1,20 @@
|
|||
module Fog
|
||||
module Compute
|
||||
class Ovirt
|
||||
class Real
|
||||
def list_clusters(filters = {})
|
||||
client.clusters(filters).map {|ovirt_obj| ovirt_attrs ovirt_obj}
|
||||
end
|
||||
|
||||
end
|
||||
class Mock
|
||||
def list_clusters(filters = {})
|
||||
xml = read_xml 'clusters.xml'
|
||||
Nokogiri::XML(xml).xpath('/clusters/cluster').collect do |cl|
|
||||
ovirt_attrs OVIRT::Cluster::new(self, cl)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
20
lib/fog/ovirt/requests/compute/list_templates.rb
Normal file
20
lib/fog/ovirt/requests/compute/list_templates.rb
Normal file
|
@ -0,0 +1,20 @@
|
|||
module Fog
|
||||
module Compute
|
||||
class Ovirt
|
||||
class Real
|
||||
def list_templates(filters = {})
|
||||
client.templates(filters).map {|ovirt_obj| ovirt_attrs ovirt_obj}
|
||||
end
|
||||
|
||||
end
|
||||
class Mock
|
||||
def list_templates(filters = {})
|
||||
xml = read_xml 'templates.xml'
|
||||
Nokogiri::XML(xml).xpath('/templates/template').collect do |t|
|
||||
ovirt_attrs OVIRT::Template::new(self, t)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
20
lib/fog/ovirt/requests/compute/list_virtual_machines.rb
Normal file
20
lib/fog/ovirt/requests/compute/list_virtual_machines.rb
Normal file
|
@ -0,0 +1,20 @@
|
|||
module Fog
|
||||
module Compute
|
||||
class Ovirt
|
||||
class Real
|
||||
def list_virtual_machines(filters = {})
|
||||
client.vms(filters).map {|ovirt_obj| ovirt_attrs ovirt_obj}
|
||||
end
|
||||
|
||||
end
|
||||
class Mock
|
||||
def list_virtual_machines(filters = {})
|
||||
xml = read_xml 'vms.xml'
|
||||
Nokogiri::XML(xml).xpath('/vms/vm').collect do |vm|
|
||||
ovirt_attrs OVIRT::VM::new(self, vm)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
20
lib/fog/ovirt/requests/compute/mock_files/cluster.xml
Normal file
20
lib/fog/ovirt/requests/compute/mock_files/cluster.xml
Normal file
|
@ -0,0 +1,20 @@
|
|||
<clusters>
|
||||
<cluster href="/api/clusters/9ce445e8-4c03-11e1-b3c8-5254009970cc" id="9ce445e8-4c03-11e1-b3c8-5254009970cc">
|
||||
<name>cluster1</name>
|
||||
<link href="/api/clusters/9ce445e8-4c03-11e1-b3c8-5254009970cc/networks" rel="networks"/>
|
||||
<link href="/api/clusters/9ce445e8-4c03-11e1-b3c8-5254009970cc/permissions" rel="permissions"/>
|
||||
<cpu id="Intel Conroe Family"/>
|
||||
<data_center href="/api/datacenters/c0645886-4b4b-11e1-a0ae-5254009970cc" id="c0645886-4b4b-11e1-a0ae-5254009970cc"/>
|
||||
<memory_policy>
|
||||
<overcommit percent="200"/>
|
||||
<transparent_hugepages>
|
||||
<enabled>true</enabled>
|
||||
</transparent_hugepages>
|
||||
</memory_policy>
|
||||
<scheduling_policy/>
|
||||
<version major="3" minor="0"/>
|
||||
<error_handling>
|
||||
<on_error>migrate_highly_available</on_error>
|
||||
</error_handling>
|
||||
</cluster>
|
||||
</clusters>
|
39
lib/fog/ovirt/requests/compute/mock_files/clusters.xml
Normal file
39
lib/fog/ovirt/requests/compute/mock_files/clusters.xml
Normal file
|
@ -0,0 +1,39 @@
|
|||
<clusters>
|
||||
<cluster href="/api/clusters/99408929-82cf-4dc7-a532-9d998063fa95" id="99408929-82cf-4dc7-a532-9d998063fa95">
|
||||
<name>Cluster1</name>
|
||||
<description>The default server cluster</description>
|
||||
<link href="/api/clusters/99408929-82cf-4dc7-a532-9d998063fa95/networks" rel="networks"/>
|
||||
<link href="/api/clusters/99408929-82cf-4dc7-a532-9d998063fa95/permissions" rel="permissions"/>
|
||||
<cpu id="Intel Conroe Family"/>
|
||||
<data_center href="/api/datacenters/c0645886-4b4b-11e1-a0ae-5254009970cc" id="c0645886-4b4b-11e1-a0ae-5254009970cc"/>
|
||||
<memory_policy>
|
||||
<overcommit percent="100"/>
|
||||
<transparent_hugepages>
|
||||
<enabled>true</enabled>
|
||||
</transparent_hugepages>
|
||||
</memory_policy>
|
||||
<scheduling_policy/>
|
||||
<version major="3" minor="0"/>
|
||||
<error_handling>
|
||||
<on_error>migrate</on_error>
|
||||
</error_handling>
|
||||
</cluster>
|
||||
<cluster href="/api/clusters/9ce445e8-4c03-11e1-b3c8-5254009970cc" id="9ce445e8-4c03-11e1-b3c8-5254009970cc">
|
||||
<name>Cluster2</name>
|
||||
<link href="/api/clusters/9ce445e8-4c03-11e1-b3c8-5254009970cc/networks" rel="networks"/>
|
||||
<link href="/api/clusters/9ce445e8-4c03-11e1-b3c8-5254009970cc/permissions" rel="permissions"/>
|
||||
<cpu id="Intel Conroe Family"/>
|
||||
<data_center href="/api/datacenters/c0645886-4b4b-11e1-a0ae-5254009970cc" id="c0645886-4b4b-11e1-a0ae-5254009970cc"/>
|
||||
<memory_policy>
|
||||
<overcommit percent="200"/>
|
||||
<transparent_hugepages>
|
||||
<enabled>true</enabled>
|
||||
</transparent_hugepages>
|
||||
</memory_policy>
|
||||
<scheduling_policy/>
|
||||
<version major="3" minor="0"/>
|
||||
<error_handling>
|
||||
<on_error>migrate_highly_available</on_error>
|
||||
</error_handling>
|
||||
</cluster>
|
||||
</clusters>
|
17
lib/fog/ovirt/requests/compute/mock_files/data_centers.xml
Normal file
17
lib/fog/ovirt/requests/compute/mock_files/data_centers.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<data_centers>
|
||||
<data_center href="/api/datacenters/c0645886-4b4b-11e1-a0ae-5254009970cc" id="c0645886-4b4b-11e1-a0ae-5254009970cc">
|
||||
<name>Datacenter1</name>
|
||||
<description>The first Data Center</description>
|
||||
<link href="/api/datacenters/c0645886-4b4b-11e1-a0ae-5254009970cc/storagedomains" rel="storagedomains"/>
|
||||
<link href="/api/datacenters/c0645886-4b4b-11e1-a0ae-5254009970cc/permissions" rel="permissions"/>
|
||||
<storage_type>nfs</storage_type>
|
||||
<storage_format>v1</storage_format>
|
||||
<version major="3" minor="0"/>
|
||||
<supported_versions>
|
||||
<version major="3" minor="0"/>
|
||||
</supported_versions>
|
||||
<status>
|
||||
<state>up</state>
|
||||
</status>
|
||||
</data_center>
|
||||
</data_centers>
|
|
@ -0,0 +1,36 @@
|
|||
<storage_domains>
|
||||
<storage_domain href="/api/storagedomains/382ec55a-f886-4fa1-b880-0a9fa778aa5b" id="382ec55a-f886-4fa1-b880-0a9fa778aa5b">
|
||||
<name>covirt</name>
|
||||
<link href="/api/storagedomains/382ec55a-f886-4fa1-b880-0a9fa778aa5b/permissions" rel="permissions"/>
|
||||
<link href="/api/storagedomains/382ec55a-f886-4fa1-b880-0a9fa778aa5b/files" rel="files"/>
|
||||
<type>iso</type>
|
||||
<status>
|
||||
<state>unattached</state>
|
||||
</status>
|
||||
<master>false</master>
|
||||
<storage>
|
||||
<type>nfs</type>
|
||||
<address>ovirt.server.com</address>
|
||||
<path>/mnt/nfs</path>
|
||||
</storage>
|
||||
<available>0</available>
|
||||
<used>0</used>
|
||||
<committed>0</committed>
|
||||
<storage_format>v1</storage_format>
|
||||
</storage_domain>
|
||||
<storage_domain href="/api/storagedomains/312f6445-79da-4ce4-907d-9a871125e3ca" id="312f6445-79da-4ce4-907d-9a871125e3ca">
|
||||
<name>nfs</name>
|
||||
<link href="/api/storagedomains/312f6445-79da-4ce4-907d-9a871125e3ca/permissions" rel="permissions"/>
|
||||
<type>data</type>
|
||||
<master>true</master>
|
||||
<storage>
|
||||
<type>nfs</type>
|
||||
<address>storage.server.com</address>
|
||||
<path>/volumes/path/for/ovirt</path>
|
||||
</storage>
|
||||
<available>40802189312</available>
|
||||
<used>66571993088</used>
|
||||
<committed>75161927680</committed>
|
||||
<storage_format>v1</storage_format>
|
||||
</storage_domain>
|
||||
</storage_domains>
|
39
lib/fog/ovirt/requests/compute/mock_files/template.xml
Normal file
39
lib/fog/ovirt/requests/compute/mock_files/template.xml
Normal file
|
@ -0,0 +1,39 @@
|
|||
<templates>
|
||||
<template href="/api/templates/2a08ba05-f3b1-4e5a-ade9-496466a8b323" id="2a08ba05-f3b1-4e5a-ade9-496466a8b323">
|
||||
<name>hwp_small</name>
|
||||
<description>hardware profile small</description>
|
||||
<link href="/api/templates/2a08ba05-f3b1-4e5a-ade9-496466a8b323/disks" rel="disks"/>
|
||||
<link href="/api/templates/2a08ba05-f3b1-4e5a-ade9-496466a8b323/nics" rel="nics"/>
|
||||
<link href="/api/templates/2a08ba05-f3b1-4e5a-ade9-496466a8b323/cdroms" rel="cdroms"/>
|
||||
<link href="/api/templates/2a08ba05-f3b1-4e5a-ade9-496466a8b323/permissions" rel="permissions"/>
|
||||
<type>server</type>
|
||||
<status>
|
||||
<state>ok</state>
|
||||
</status>
|
||||
<memory>536870912</memory>
|
||||
<cpu>
|
||||
<topology sockets="1" cores="1"/>
|
||||
</cpu>
|
||||
<os type="unassigned">
|
||||
<boot dev="network"/>
|
||||
<kernel/>
|
||||
<initrd/>
|
||||
<cmdline/>
|
||||
</os>
|
||||
<cluster href="/api/clusters/99408929-82cf-4dc7-a532-9d998063fa95" id="99408929-82cf-4dc7-a532-9d998063fa95"/>
|
||||
<creation_time>2012-01-31T07:47:03.811Z</creation_time>
|
||||
<origin>rhev</origin>
|
||||
<high_availability>
|
||||
<enabled>false</enabled>
|
||||
<priority>1</priority>
|
||||
</high_availability>
|
||||
<display>
|
||||
<type>spice</type>
|
||||
<monitors>1</monitors>
|
||||
</display>
|
||||
<stateless>false</stateless>
|
||||
<usb>
|
||||
<enabled>true</enabled>
|
||||
</usb>
|
||||
</template>
|
||||
</templates>
|
110
lib/fog/ovirt/requests/compute/mock_files/templates.xml
Normal file
110
lib/fog/ovirt/requests/compute/mock_files/templates.xml
Normal file
|
@ -0,0 +1,110 @@
|
|||
<templates>
|
||||
<template href="/api/templates/00000000-0000-0000-0000-000000000000" id="00000000-0000-0000-0000-000000000000">
|
||||
<name>Blank</name>
|
||||
<description>Blank template</description>
|
||||
<link href="/api/templates/00000000-0000-0000-0000-000000000000/disks" rel="disks"/>
|
||||
<link href="/api/templates/00000000-0000-0000-0000-000000000000/nics" rel="nics"/>
|
||||
<link href="/api/templates/00000000-0000-0000-0000-000000000000/cdroms" rel="cdroms"/>
|
||||
<link href="/api/templates/00000000-0000-0000-0000-000000000000/permissions" rel="permissions"/>
|
||||
<type>desktop</type>
|
||||
<status>
|
||||
<state>ok</state>
|
||||
</status>
|
||||
<memory>536870912</memory>
|
||||
<cpu>
|
||||
<topology sockets="1" cores="1"/>
|
||||
</cpu>
|
||||
<os type="unassigned">
|
||||
<boot dev="hd"/>
|
||||
</os>
|
||||
<cluster href="/api/clusters/99408929-82cf-4dc7-a532-9d998063fa95" id="99408929-82cf-4dc7-a532-9d998063fa95"/>
|
||||
<creation_time>2008-04-01T00:00:00.000+01:00</creation_time>
|
||||
<origin>rhev</origin>
|
||||
<high_availability>
|
||||
<enabled>false</enabled>
|
||||
<priority>0</priority>
|
||||
</high_availability>
|
||||
<display>
|
||||
<type>spice</type>
|
||||
<monitors>1</monitors>
|
||||
</display>
|
||||
<stateless>false</stateless>
|
||||
<usb>
|
||||
<enabled>true</enabled>
|
||||
</usb>
|
||||
</template>
|
||||
<template href="/api/templates/05a5144f-8ef7-4151-b7f9-5014510b489e" id="05a5144f-8ef7-4151-b7f9-5014510b489e">
|
||||
<name>hwp_large</name>
|
||||
<description>hardware profile large</description>
|
||||
<link href="/api/templates/05a5144f-8ef7-4151-b7f9-5014510b489e/disks" rel="disks"/>
|
||||
<link href="/api/templates/05a5144f-8ef7-4151-b7f9-5014510b489e/nics" rel="nics"/>
|
||||
<link href="/api/templates/05a5144f-8ef7-4151-b7f9-5014510b489e/cdroms" rel="cdroms"/>
|
||||
<link href="/api/templates/05a5144f-8ef7-4151-b7f9-5014510b489e/permissions" rel="permissions"/>
|
||||
<type>server</type>
|
||||
<status>
|
||||
<state>ok</state>
|
||||
</status>
|
||||
<memory>1073741824</memory>
|
||||
<cpu>
|
||||
<topology sockets="4" cores="1"/>
|
||||
</cpu>
|
||||
<os type="unassigned">
|
||||
<boot dev="network"/>
|
||||
<kernel/>
|
||||
<initrd/>
|
||||
<cmdline/>
|
||||
</os>
|
||||
<cluster href="/api/clusters/99408929-82cf-4dc7-a532-9d998063fa95" id="99408929-82cf-4dc7-a532-9d998063fa95"/>
|
||||
<creation_time>2012-01-31T07:53:19.047Z</creation_time>
|
||||
<origin>rhev</origin>
|
||||
<high_availability>
|
||||
<enabled>false</enabled>
|
||||
<priority>1</priority>
|
||||
</high_availability>
|
||||
<display>
|
||||
<type>spice</type>
|
||||
<monitors>1</monitors>
|
||||
</display>
|
||||
<stateless>false</stateless>
|
||||
<usb>
|
||||
<enabled>true</enabled>
|
||||
</usb>
|
||||
</template>
|
||||
<template href="/api/templates/2a08ba05-f3b1-4e5a-ade9-496466a8b323" id="2a08ba05-f3b1-4e5a-ade9-496466a8b323">
|
||||
<name>hwp_small</name>
|
||||
<description>hardware profile small</description>
|
||||
<link href="/api/templates/2a08ba05-f3b1-4e5a-ade9-496466a8b323/disks" rel="disks"/>
|
||||
<link href="/api/templates/2a08ba05-f3b1-4e5a-ade9-496466a8b323/nics" rel="nics"/>
|
||||
<link href="/api/templates/2a08ba05-f3b1-4e5a-ade9-496466a8b323/cdroms" rel="cdroms"/>
|
||||
<link href="/api/templates/2a08ba05-f3b1-4e5a-ade9-496466a8b323/permissions" rel="permissions"/>
|
||||
<type>server</type>
|
||||
<status>
|
||||
<state>ok</state>
|
||||
</status>
|
||||
<memory>536870912</memory>
|
||||
<cpu>
|
||||
<topology sockets="1" cores="1"/>
|
||||
</cpu>
|
||||
<os type="unassigned">
|
||||
<boot dev="network"/>
|
||||
<kernel/>
|
||||
<initrd/>
|
||||
<cmdline/>
|
||||
</os>
|
||||
<cluster href="/api/clusters/99408929-82cf-4dc7-a532-9d998063fa95" id="99408929-82cf-4dc7-a532-9d998063fa95"/>
|
||||
<creation_time>2012-01-31T07:47:03.811Z</creation_time>
|
||||
<origin>rhev</origin>
|
||||
<high_availability>
|
||||
<enabled>false</enabled>
|
||||
<priority>1</priority>
|
||||
</high_availability>
|
||||
<display>
|
||||
<type>spice</type>
|
||||
<monitors>1</monitors>
|
||||
</display>
|
||||
<stateless>false</stateless>
|
||||
<usb>
|
||||
<enabled>true</enabled>
|
||||
</usb>
|
||||
</template>
|
||||
</templates>
|
54
lib/fog/ovirt/requests/compute/mock_files/vm.xml
Normal file
54
lib/fog/ovirt/requests/compute/mock_files/vm.xml
Normal file
|
@ -0,0 +1,54 @@
|
|||
<vms>
|
||||
<vm href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c" id="52b9406e-cf66-4867-8655-719a094e324c">
|
||||
<name>vm01</name>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/disks" rel="disks"/>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/nics" rel="nics"/>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/cdroms" rel="cdroms"/>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/snapshots" rel="snapshots"/>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/tags" rel="tags"/>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/permissions" rel="permissions"/>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/statistics" rel="statistics"/>
|
||||
<type>server</type>
|
||||
<status>
|
||||
<state>down</state>
|
||||
</status>
|
||||
<memory>805306368</memory>
|
||||
<cpu>
|
||||
<topology sockets="1" cores="1"/>
|
||||
</cpu>
|
||||
<os type="unassigned">
|
||||
<boot dev="network"/>
|
||||
<boot dev="hd"/>
|
||||
<kernel/>
|
||||
<initrd/>
|
||||
<cmdline/>
|
||||
</os>
|
||||
<high_availability>
|
||||
<enabled>false</enabled>
|
||||
<priority>1</priority>
|
||||
</high_availability>
|
||||
<display>
|
||||
<type>spice</type>
|
||||
<address>host</address>
|
||||
<port>5900</port>
|
||||
<secure_port>5901</secure_port>
|
||||
<monitors>1</monitors>
|
||||
</display>
|
||||
<host href="/api/hosts/3690fafa-4b4c-11e1-8b7b-5254009970cc" id="3690fafa-4b4c-11e1-8b7b-5254009970cc"/>
|
||||
<cluster href="/api/clusters/99408929-82cf-4dc7-a532-9d998063fa95" id="99408929-82cf-4dc7-a532-9d998063fa95"/>
|
||||
<template href="/api/templates/00000000-0000-0000-0000-000000000000" id="00000000-0000-0000-0000-000000000000"/>
|
||||
<start_time>2012-02-05T11:00:33.222Z</start_time>
|
||||
<creation_time>2012-01-31T07:21:10.667Z</creation_time>
|
||||
<origin>rhev</origin>
|
||||
<stateless>false</stateless>
|
||||
<placement_policy>
|
||||
<affinity>migratable</affinity>
|
||||
</placement_policy>
|
||||
<memory_policy>
|
||||
<guaranteed>536870912</guaranteed>
|
||||
</memory_policy>
|
||||
<usb>
|
||||
<enabled>true</enabled>
|
||||
</usb>
|
||||
</vm>
|
||||
</vms>
|
152
lib/fog/ovirt/requests/compute/mock_files/vms.xml
Normal file
152
lib/fog/ovirt/requests/compute/mock_files/vms.xml
Normal file
|
@ -0,0 +1,152 @@
|
|||
<vms>
|
||||
<vm href="/api/vms/5ee86332-7b19-465b-8801-2a12ed0d6c1b" id="5ee86332-7b19-465b-8801-2a12ed0d6c1b">
|
||||
<name>test-vm1</name>
|
||||
<link href="/api/vms/5ee86332-7b19-465b-8801-2a12ed0d6c1b/disks" rel="disks"/>
|
||||
<link href="/api/vms/5ee86332-7b19-465b-8801-2a12ed0d6c1b/nics" rel="nics"/>
|
||||
<link href="/api/vms/5ee86332-7b19-465b-8801-2a12ed0d6c1b/cdroms" rel="cdroms"/>
|
||||
<link href="/api/vms/5ee86332-7b19-465b-8801-2a12ed0d6c1b/snapshots" rel="snapshots"/>
|
||||
<link href="/api/vms/5ee86332-7b19-465b-8801-2a12ed0d6c1b/tags" rel="tags"/>
|
||||
<link href="/api/vms/5ee86332-7b19-465b-8801-2a12ed0d6c1b/permissions" rel="permissions"/>
|
||||
<link href="/api/vms/5ee86332-7b19-465b-8801-2a12ed0d6c1b/statistics" rel="statistics"/>
|
||||
<type>server</type>
|
||||
<status>
|
||||
<state>down</state>
|
||||
</status>
|
||||
<memory>1073741824</memory>
|
||||
<cpu>
|
||||
<topology sockets="1" cores="4"/>
|
||||
</cpu>
|
||||
<os type="unassigned">
|
||||
<boot dev="network"/>
|
||||
<kernel/>
|
||||
<initrd/>
|
||||
<cmdline/>
|
||||
</os>
|
||||
<high_availability>
|
||||
<enabled>false</enabled>
|
||||
<priority>1</priority>
|
||||
</high_availability>
|
||||
<display>
|
||||
<type>spice</type>
|
||||
<monitors>1</monitors>
|
||||
</display>
|
||||
<cluster href="/api/clusters/99408929-82cf-4dc7-a532-9d998063fa95" id="99408929-82cf-4dc7-a532-9d998063fa95"/>
|
||||
<template href="/api/templates/00000000-0000-0000-0000-000000000000" id="00000000-0000-0000-0000-000000000000"/>
|
||||
<start_time>2012-02-06T10:47:32.214Z</start_time>
|
||||
<creation_time>2012-01-31T07:45:13.068Z</creation_time>
|
||||
<origin>rhev</origin>
|
||||
<stateless>false</stateless>
|
||||
<placement_policy>
|
||||
<affinity>migratable</affinity>
|
||||
</placement_policy>
|
||||
<memory_policy>
|
||||
<guaranteed>536870912</guaranteed>
|
||||
</memory_policy>
|
||||
<usb>
|
||||
<enabled>true</enabled>
|
||||
</usb>
|
||||
</vm>
|
||||
<vm href="/api/vms/349764bb-eba3-4466-abef-f18f4c40c9f1" id="349764bb-eba3-4466-abef-f18f4c40c9f1">
|
||||
<name>fosdem</name>
|
||||
<link href="/api/vms/349764bb-eba3-4466-abef-f18f4c40c9f1/disks" rel="disks"/>
|
||||
<link href="/api/vms/349764bb-eba3-4466-abef-f18f4c40c9f1/nics" rel="nics"/>
|
||||
<link href="/api/vms/349764bb-eba3-4466-abef-f18f4c40c9f1/cdroms" rel="cdroms"/>
|
||||
<link href="/api/vms/349764bb-eba3-4466-abef-f18f4c40c9f1/snapshots" rel="snapshots"/>
|
||||
<link href="/api/vms/349764bb-eba3-4466-abef-f18f4c40c9f1/tags" rel="tags"/>
|
||||
<link href="/api/vms/349764bb-eba3-4466-abef-f18f4c40c9f1/permissions" rel="permissions"/>
|
||||
<link href="/api/vms/349764bb-eba3-4466-abef-f18f4c40c9f1/statistics" rel="statistics"/>
|
||||
<type>server</type>
|
||||
<status>
|
||||
<state>down</state>
|
||||
</status>
|
||||
<memory>536870912</memory>
|
||||
<cpu>
|
||||
<topology sockets="1" cores="1"/>
|
||||
</cpu>
|
||||
<os type="unassigned">
|
||||
<boot dev="hd"/>
|
||||
<kernel/>
|
||||
<initrd/>
|
||||
<cmdline/>
|
||||
</os>
|
||||
<high_availability>
|
||||
<enabled>false</enabled>
|
||||
<priority>1</priority>
|
||||
</high_availability>
|
||||
<display>
|
||||
<type>spice</type>
|
||||
<address>host</address>
|
||||
<port>5902</port>
|
||||
<secure_port>5903</secure_port>
|
||||
<monitors>1</monitors>
|
||||
</display>
|
||||
<host href="/api/hosts/3690fafa-4b4c-11e1-8b7b-5254009970cc" id="3690fafa-4b4c-11e1-8b7b-5254009970cc"/>
|
||||
<cluster href="/api/clusters/99408929-82cf-4dc7-a532-9d998063fa95" id="99408929-82cf-4dc7-a532-9d998063fa95"/>
|
||||
<template href="/api/templates/00000000-0000-0000-0000-000000000000" id="00000000-0000-0000-0000-000000000000"/>
|
||||
<start_time>2012-02-05T11:04:39.217Z</start_time>
|
||||
<creation_time>2012-02-05T10:53:30.484Z</creation_time>
|
||||
<origin>rhev</origin>
|
||||
<stateless>false</stateless>
|
||||
<placement_policy>
|
||||
<affinity>migratable</affinity>
|
||||
</placement_policy>
|
||||
<memory_policy>
|
||||
<guaranteed>536870912</guaranteed>
|
||||
</memory_policy>
|
||||
<usb>
|
||||
<enabled>true</enabled>
|
||||
</usb>
|
||||
</vm>
|
||||
<vm href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c" id="52b9406e-cf66-4867-8655-719a094e324c">
|
||||
<name>vm01</name>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/disks" rel="disks"/>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/nics" rel="nics"/>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/cdroms" rel="cdroms"/>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/snapshots" rel="snapshots"/>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/tags" rel="tags"/>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/permissions" rel="permissions"/>
|
||||
<link href="/api/vms/52b9406e-cf66-4867-8655-719a094e324c/statistics" rel="statistics"/>
|
||||
<type>server</type>
|
||||
<status>
|
||||
<state>down</state>
|
||||
</status>
|
||||
<memory>805306368</memory>
|
||||
<cpu>
|
||||
<topology sockets="1" cores="1"/>
|
||||
</cpu>
|
||||
<os type="unassigned">
|
||||
<boot dev="network"/>
|
||||
<boot dev="hd"/>
|
||||
<kernel/>
|
||||
<initrd/>
|
||||
<cmdline/>
|
||||
</os>
|
||||
<high_availability>
|
||||
<enabled>false</enabled>
|
||||
<priority>1</priority>
|
||||
</high_availability>
|
||||
<display>
|
||||
<type>spice</type>
|
||||
<address>host</address>
|
||||
<port>5900</port>
|
||||
<secure_port>5901</secure_port>
|
||||
<monitors>1</monitors>
|
||||
</display>
|
||||
<host href="/api/hosts/3690fafa-4b4c-11e1-8b7b-5254009970cc" id="3690fafa-4b4c-11e1-8b7b-5254009970cc"/>
|
||||
<cluster href="/api/clusters/99408929-82cf-4dc7-a532-9d998063fa95" id="99408929-82cf-4dc7-a532-9d998063fa95"/>
|
||||
<template href="/api/templates/00000000-0000-0000-0000-000000000000" id="00000000-0000-0000-0000-000000000000"/>
|
||||
<start_time>2012-02-05T11:00:33.222Z</start_time>
|
||||
<creation_time>2012-01-31T07:21:10.667Z</creation_time>
|
||||
<origin>rhev</origin>
|
||||
<stateless>false</stateless>
|
||||
<placement_policy>
|
||||
<affinity>migratable</affinity>
|
||||
</placement_policy>
|
||||
<memory_policy>
|
||||
<guaranteed>536870912</guaranteed>
|
||||
</memory_policy>
|
||||
<usb>
|
||||
<enabled>true</enabled>
|
||||
</usb>
|
||||
</vm>
|
||||
</vms>
|
|
@ -4,14 +4,17 @@ module Fog
|
|||
class Real
|
||||
|
||||
def storage_domains filter={}
|
||||
client.storage_domains(filter)
|
||||
client.storagedomains(filter).map {|ovirt_obj| ovirt_attrs ovirt_obj}
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Mock
|
||||
def storage_domains filter={}
|
||||
[ "Storage", "Storage2", "Storage3" ]
|
||||
def storage_domains(filters = {})
|
||||
xml = read_xml 'storage_domains.xml'
|
||||
Nokogiri::XML(xml).xpath('/storage_domains/storage_domain').collect do |sd|
|
||||
ovirt_attrs OVIRT::StorageDomain::new(self, sd)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
31
tests/ovirt/models/compute/cluster_tests.rb
Normal file
31
tests/ovirt/models/compute/cluster_tests.rb
Normal file
|
@ -0,0 +1,31 @@
|
|||
Shindo.tests('Fog::Compute[:ovirt] | cluster model', ['ovirt']) do
|
||||
|
||||
clusters = Fog::Compute[:ovirt].clusters
|
||||
cluster = clusters.last
|
||||
|
||||
tests('The cluster model should') do
|
||||
tests('have the action') do
|
||||
test('reload') { cluster.respond_to? 'reload' }
|
||||
%w{ networks }.each do |action|
|
||||
test(action) { cluster.respond_to? action }
|
||||
end
|
||||
end
|
||||
tests('have attributes') do
|
||||
model_attribute_hash = cluster.attributes
|
||||
attributes = [ :id,
|
||||
:name]
|
||||
tests("The cluster model should respond to") do
|
||||
attributes.each do |attribute|
|
||||
test("#{attribute}") { cluster.respond_to? attribute }
|
||||
end
|
||||
end
|
||||
tests("The attributes hash should have key") do
|
||||
attributes.each do |attribute|
|
||||
test("#{attribute}") { model_attribute_hash.has_key? attribute }
|
||||
end
|
||||
end
|
||||
end
|
||||
test('be a kind of Fog::Compute::Ovirt::Cluster') { cluster.kind_of? Fog::Compute::Ovirt::Cluster }
|
||||
end
|
||||
|
||||
end
|
9
tests/ovirt/models/compute/clusters_tests.rb
Normal file
9
tests/ovirt/models/compute/clusters_tests.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
Shindo.tests('Fog::Compute[:ovirt] | clusters collection', ['ovirt']) do
|
||||
|
||||
clusters = Fog::Compute[:ovirt].clusters
|
||||
|
||||
tests('The clusters collection') do
|
||||
test('should be a kind of Fog::Compute::Ovirt::Clusters') { clusters.kind_of? Fog::Compute::Ovirt::Clusters }
|
||||
end
|
||||
|
||||
end
|
|
@ -6,9 +6,19 @@ Shindo.tests('Fog::Compute[:ovirt] | server model', ['ovirt']) do
|
|||
tests('The server model should') do
|
||||
tests('have the action') do
|
||||
test('reload') { server.respond_to? 'reload' }
|
||||
%w{ stop start destroy reboot }.each do |action|
|
||||
%w{ start stop destroy reboot suspend }.each do |action|
|
||||
test(action) { server.respond_to? action }
|
||||
end
|
||||
%w{ start reboot suspend stop }.each do |action|
|
||||
test("#{action} returns successfully") {
|
||||
begin
|
||||
server.send(action.to_sym) ? true : false
|
||||
rescue OVIRT::OvirtException
|
||||
#ovirt exceptions are acceptable for the above actions.
|
||||
true
|
||||
end
|
||||
}
|
||||
end
|
||||
end
|
||||
tests('have attributes') do
|
||||
model_attribute_hash = server.attributes
|
||||
|
@ -17,14 +27,11 @@ Shindo.tests('Fog::Compute[:ovirt] | server model', ['ovirt']) do
|
|||
:description,
|
||||
:profile,
|
||||
:display,
|
||||
:storage,
|
||||
:creation_time,
|
||||
:os,
|
||||
:ip,
|
||||
:status,
|
||||
:cores,
|
||||
:memory,
|
||||
:host,
|
||||
:cluster,
|
||||
:template]
|
||||
tests("The server model should respond to") do
|
||||
|
@ -41,5 +48,4 @@ Shindo.tests('Fog::Compute[:ovirt] | server model', ['ovirt']) do
|
|||
test('be a kind of Fog::Compute::Ovirt::Server') { server.kind_of? Fog::Compute::Ovirt::Server }
|
||||
end
|
||||
|
||||
# currently not mock is not working..
|
||||
end if false
|
||||
end
|
||||
|
|
|
@ -3,7 +3,12 @@ Shindo.tests('Fog::Compute[:ovirt] | servers collection', ['ovirt']) do
|
|||
servers = Fog::Compute[:ovirt].servers
|
||||
|
||||
tests('The servers collection') do
|
||||
test('should not be empty') { not servers.empty? }
|
||||
test('should be a kind of Fog::Compute::Ovirt::Servers') { servers.kind_of? Fog::Compute::Ovirt::Servers }
|
||||
tests('should be able to reload itself').succeeds { servers.reload }
|
||||
tests('should be able to get a model') do
|
||||
tests('by instance uuid').succeeds { servers.get servers.first.id }
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
28
tests/ovirt/models/compute/template_tests.rb
Normal file
28
tests/ovirt/models/compute/template_tests.rb
Normal file
|
@ -0,0 +1,28 @@
|
|||
Shindo.tests('Fog::Compute[:ovirt] | template model', ['ovirt']) do
|
||||
|
||||
templates = Fog::Compute[:ovirt].templates
|
||||
template = templates.last
|
||||
|
||||
tests('The template model should') do
|
||||
tests('have the action') do
|
||||
test('reload') { template.respond_to? 'reload' }
|
||||
end
|
||||
tests('have attributes') do
|
||||
model_attribute_hash = template.attributes
|
||||
attributes = [ :id,
|
||||
:name]
|
||||
tests("The template model should respond to") do
|
||||
attributes.each do |attribute|
|
||||
test("#{attribute}") { template.respond_to? attribute }
|
||||
end
|
||||
end
|
||||
tests("The attributes hash should have key") do
|
||||
attributes.each do |attribute|
|
||||
test("#{attribute}") { model_attribute_hash.has_key? attribute }
|
||||
end
|
||||
end
|
||||
end
|
||||
test('be a kind of Fog::Compute::Ovirt::Template') { template.kind_of? Fog::Compute::Ovirt::Template }
|
||||
end
|
||||
|
||||
end
|
9
tests/ovirt/models/compute/templates_tests.rb
Normal file
9
tests/ovirt/models/compute/templates_tests.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
Shindo.tests('Fog::Compute[:ovirt] | templates collection', ['ovirt']) do
|
||||
|
||||
templates = Fog::Compute[:ovirt].templates
|
||||
|
||||
tests('The templates collection') do
|
||||
test('should be a kind of Fog::Compute::Ovirt::Templates') { templates.kind_of? Fog::Compute::Ovirt::Templates }
|
||||
end
|
||||
|
||||
end
|
26
tests/ovirt/requests/compute/create_vm_tests.rb
Normal file
26
tests/ovirt/requests/compute/create_vm_tests.rb
Normal file
|
@ -0,0 +1,26 @@
|
|||
Shindo.tests("Fog::Compute[:ovirt] | vm_create request", 'ovirt') do
|
||||
|
||||
compute = Fog::Compute[:ovirt]
|
||||
name_base = Time.now.to_i
|
||||
|
||||
tests("Create VM") do
|
||||
response = compute.create_vm(:name => 'fog-'+name_base.to_s, :cluster_name => 'Default')
|
||||
test("should be a kind of OVIRT::VM") { response.kind_of? OVIRT::VM}
|
||||
end
|
||||
|
||||
tests("Create VM from template (clone)") do
|
||||
response = compute.create_vm(:name => 'fog-'+(name_base+ 1).to_s, :template_name => 'hwp_small', :cluster_name => 'Default')
|
||||
test("should be a kind of OVIRT::VM") { response.kind_of? OVIRT::VM}
|
||||
end
|
||||
|
||||
tests("Fail Creating VM") do
|
||||
begin
|
||||
response = compute.create_vm(:name => 'fog-'+name_base.to_s, :cluster_name => 'Default')
|
||||
test("should be a kind of OVIRT::VM") { response.kind_of? OVIRT::VM} #mock never raise exceptions
|
||||
rescue => e
|
||||
#should raise vm name already exist exception.
|
||||
test("error should be a kind of OVIRT::OvirtException") { e.kind_of? OVIRT::OvirtException}
|
||||
end
|
||||
end
|
||||
|
||||
end
|
18
tests/ovirt/requests/compute/destroy_vm_tests.rb
Normal file
18
tests/ovirt/requests/compute/destroy_vm_tests.rb
Normal file
|
@ -0,0 +1,18 @@
|
|||
Shindo.tests('Fog::Compute[:ovirt] | vm_destroy 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_id = compute.servers.all(:search => 'fog-*').last.id
|
||||
|
||||
tests('The response should') do
|
||||
response = compute.destroy_vm(:id => vm_id)
|
||||
test('be a success') { response ? true: false }
|
||||
end
|
||||
|
||||
tests('The expected options') do
|
||||
raises(ArgumentError, 'raises ArgumentError when id option is missing') { compute.destroy_vm }
|
||||
end
|
||||
|
||||
end
|
13
tests/ovirt/requests/compute/list_datacenters_tests.rb
Normal file
13
tests/ovirt/requests/compute/list_datacenters_tests.rb
Normal file
|
@ -0,0 +1,13 @@
|
|||
Shindo.tests('Fog::Compute[:ovirt] | datacenters request', ['ovirt']) do
|
||||
|
||||
compute = Fog::Compute[:ovirt]
|
||||
|
||||
tests("When listing all datacenters") do
|
||||
|
||||
response = compute.datacenters
|
||||
tests("The response data format ...") do
|
||||
test("it should be a kind of Array") { response.kind_of? Array }
|
||||
test("be a kind of Hash") { response.first.kind_of? Hash }
|
||||
end
|
||||
end
|
||||
end
|
13
tests/ovirt/requests/compute/list_storage_domains_tests.rb
Normal file
13
tests/ovirt/requests/compute/list_storage_domains_tests.rb
Normal file
|
@ -0,0 +1,13 @@
|
|||
Shindo.tests('Fog::Compute[:ovirt] | storage_domains request', ['ovirt']) do
|
||||
|
||||
compute = Fog::Compute[:ovirt]
|
||||
|
||||
tests("When listing all storage_domains") do
|
||||
|
||||
response = compute.storage_domains
|
||||
tests("The response data format ...") do
|
||||
test("it should be a kind of Array") { response.kind_of? Array }
|
||||
test("be a kind of Hash") { response.first.kind_of? Hash }
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue