1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/vcloud/models/compute/servers.rb
Peter Meier 3e240474ac [vcloud|compute] improve models + additional tests
vCloud has also the concept of links in the responses. So we should
make use of them to navigate through the tree of resources in the
vCloud.
Furthermore, we can make various calls a bit easier by directly
returning the specific resource object than the plain xml response.

Adjust tests to work with the new changes, and also test the added
parts.
2012-01-30 18:57:13 +01:00

52 lines
1.1 KiB
Ruby

require 'fog/vcloud/models/compute/server'
module Fog
module Vcloud
class Compute
class Servers < Fog::Vcloud::Collection
undef_method :create
model Fog::Vcloud::Compute::Server
attribute :href, :aliases => :Href
def all
check_href!("Vapp")
vapp.load_unless_loaded!
load(vapp.children||[])
end
def get(uri)
connection.get_vapp(uri)
rescue Fog::Errors::NotFound
nil
end
def create options
check_href!
options[:vdc_uri] = href
data = connection.instantiate_vapp_template(options).body
object = new(data)
object
end
private
def vapp
@vapp ||= (attributes[:vapp] || init_vapp)
end
def init_vapp
Fog::Vcloud::Compute::Vapp.new(
:connection => connection,
:href => self.href,
:collection => Fog::Vcloud::Compute::Vapps.new(:connection => connection)
)
end
end
end
end
end