[vcloud|compute] update catalog models for 1.0

This commit is contained in:
Lincoln Stoll 2011-05-24 16:25:28 +10:00
parent 7e351ff91d
commit 62ede3ea37
4 changed files with 73 additions and 16 deletions

View File

@ -1,25 +1,19 @@
module Fog
module Vcloud
class Compute
class Catalog < Fog::Vcloud::Collection
class Catalog < Fog::Vcloud::Model
model Fog::Vcloud::Compute::CatalogItem
identity :href, :aliases => :Href
attribute :href, :aliases => :Href
ignore_attributes :xmlns, :xmlns_i, :xmlns_xsi, :xmlns_xsd
def all
check_href!
if data = connection.get_catalog(href).body[:CatalogItems][:CatalogItem]
load(data)
end
end
attribute :type
attribute :name
def get(uri)
if data = connection.get_catalog_item(uri)
new(data.body)
end
rescue Fog::Errors::NotFound
nil
def catalog_items
@catalog_items ||= Fog::Vcloud::Compute::CatalogItems.
new( :connection => connection,
:href => href )
end
end

View File

@ -0,0 +1,32 @@
module Fog
module Vcloud
class Compute
class CatalogItems < Fog::Vcloud::Collection
undef_method :create
model Fog::Vcloud::Compute::CatalogItem
attribute :href, :aliases => :Href
def all
data = connection.get_catalog(href).body[:CatalogItems][:CatalogItem]
load(data)
end
def get(uri)
if data = connection.get_catalog_item(uri)
new(data.body)
end
rescue Fog::Errors::NotFound
nil
end
def organization_uri
@organization_uri ||= connection.default_organization_uri
end
end
end
end
end

View File

@ -0,0 +1,28 @@
module Fog
module Vcloud
class Compute
class Catalogs < Fog::Vcloud::Collection
model Fog::Vcloud::Compute::Catalog
def all
data = connection.get_organization(organization_uri).body[:Link].select { |link| link[:type] == "application/vnd.vmware.vcloud.catalog+xml" }
load(data)
end
def get(uri)
if data = connection.get_catalog(uri)
new(data.body)
end
rescue Fog::Errors::NotFound
nil
end
def organization_uri
@organization_uri ||= connection.default_organization_uri
end
end
end
end
end

View File

@ -538,8 +538,11 @@ module Fog
recognizes :provider # remove post deprecation
model_path 'fog/compute/models/vcloud'
model :catalog_item
model :catalog
require 'fog/compute/models/vcloud/catalog' # why do I need to do this?
collection :catalogs
model :catalog_item
model :catalog_items
model :ip
collection :ips
model :network