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/organization.rb
2011-11-29 11:37:17 +01:00

63 lines
1.9 KiB
Ruby

module Fog
module Vcloud
class Compute
class Organization < Fog::Vcloud::Model
identity :href
ignore_attributes :xmlns, :xmlns_xsi, :xmlns_xsd
attribute :name
attribute :type
attribute :full_name, :aliases => :FullName
attribute :other_links, :aliases => :Link
def networks
@networks ||= Fog::Vcloud::Compute::Networks.
new( :connection => connection,
:href => href )
end
def tasks
load_unless_loaded!
@tasks ||= Fog::Vcloud::Compute::Tasks.
new( :connection => connection,
:href => other_links.find{|l| l[:type] == 'application/vnd.vmware.vcloud.tasksList+xml'}[:href] )
end
def vdcs
@vdcs ||= Fog::Vcloud::Compute::Vdcs.
new( :connection => connection,
:href => href )
end
def catalogs
@catalogs ||= Fog::Vcloud::Compute::Catalogs.
new( :connection => connection,
:href => href )
end
private
def collection_based_on_type(type, klass = nil)
load_unless_loaded!
test_links = other_links.kind_of?(Array) ? other_links : [other_links]
if link = test_links.detect { |link| link[:type] == type }
case type
when "application/vnd.vmware.vcloud.catalog+xml"
Fog::Vcloud::Compute::Catalog
when "application/vnd.vmware.vcloud.vdc+xml"
Fog::Vcloud::Compute::Vdc
when "application/vnd.vmware.vcloud.network+xml"
Fog::Vcloud::Compute::Network
when "application/vnd.vmware.vcloud.network+xml"
Fog::Vcloud::Compute::Network
end.new( :connection => connection, :href => link[:href] )
else
[ ]
end
end
end
end
end
end