2013-06-18 12:56:19 -04:00
|
|
|
require 'fog/core/model'
|
|
|
|
|
|
|
|
module Fog
|
|
|
|
module Compute
|
|
|
|
class Vcloudng
|
|
|
|
|
|
|
|
class Catalog < Fog::Model
|
2013-07-09 07:19:14 -04:00
|
|
|
|
2013-06-18 12:56:19 -04:00
|
|
|
identity :id
|
|
|
|
|
|
|
|
attribute :name
|
|
|
|
attribute :type
|
|
|
|
attribute :href
|
2013-06-19 11:06:24 -04:00
|
|
|
attribute :description, :aliases => :Description
|
2013-07-08 14:54:54 -04:00
|
|
|
attribute :is_published, :aliases => :IsPublished, :type => :boolean
|
2013-06-18 12:56:19 -04:00
|
|
|
|
|
|
|
def catalog_items
|
2013-06-18 14:51:12 -04:00
|
|
|
requires :id
|
|
|
|
service.catalog_items(:catalog => self)
|
2013-06-18 12:56:19 -04:00
|
|
|
end
|
|
|
|
|
2013-07-08 14:54:54 -04:00
|
|
|
def initialize(attrs={})
|
|
|
|
super(attrs)
|
2013-07-09 07:19:14 -04:00
|
|
|
lazy_load_attrs = self.class.attributes - attributes.keys
|
|
|
|
lazy_load_attrs.each do |attr|
|
|
|
|
attributes[attr]= NonLoaded if attributes[attr].nil?
|
|
|
|
make_lazy_load_method(attr)
|
|
|
|
end
|
2013-07-08 14:54:54 -04:00
|
|
|
end
|
|
|
|
|
2013-07-09 07:19:14 -04:00
|
|
|
def make_lazy_load_method(attr)
|
|
|
|
self.class.instance_eval do
|
|
|
|
define_method(attr) do
|
|
|
|
reload if attributes[attr] == NonLoaded and !@inspecting
|
|
|
|
attributes[attr]
|
|
|
|
end
|
|
|
|
end
|
2013-07-08 14:54:54 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def inspect
|
|
|
|
@inspecting = true
|
|
|
|
out = super
|
|
|
|
@inspecting = false
|
|
|
|
out
|
|
|
|
end
|
|
|
|
|
2013-06-18 12:56:19 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|