Class: Fog::Compute::VcloudDirector::Model
- Inherits:
-
Model
- Object
- Model
- Fog::Compute::VcloudDirector::Model
show all
- Defined in:
- lib/fog/vcloud_director/compute.rb
Direct Known Subclasses
Catalog, CatalogItem, CustomField, Disk, Media, Network, Organization, Tag, TemplateVm, Vapp, VappTemplate, Vdc, Vm, VmCustomization, VmNetwork
Instance Method Summary
collapse
Constructor Details
#initialize(attrs = {}) ⇒ Model
271
272
273
274
275
276
277
278
|
# File 'lib/fog/vcloud_director/compute.rb', line 271
def initialize(attrs={})
super(attrs)
lazy_load_attrs.each do |attr|
attributes[attr]= NonLoaded if attributes[attr].nil?
make_lazy_load_method(attr)
end
self.class.attributes.each {|attr| make_attr_loaded_method(attr)}
end
|
Instance Method Details
#inspect ⇒ Object
303
304
305
306
307
308
|
# File 'lib/fog/vcloud_director/compute.rb', line 303
def inspect
@inspecting = true
out = super
@inspecting = false
out
end
|
#lazy_load_attrs ⇒ Object
280
281
282
|
# File 'lib/fog/vcloud_director/compute.rb', line 280
def lazy_load_attrs
@lazy_load_attrs ||= self.class.attributes - attributes.keys
end
|
#make_attr_loaded_method(attr) ⇒ Object
it adds an attr_loaded? method to know if the value has been loaded yet or not: ie description_loaded?
295
296
297
298
299
300
301
|
# File 'lib/fog/vcloud_director/compute.rb', line 295
def make_attr_loaded_method(attr)
self.class.instance_eval do
define_method("#{attr}_loaded?") do
attributes[attr] != NonLoaded
end
end
end
|
#make_lazy_load_method(attr) ⇒ Object
284
285
286
287
288
289
290
291
|
# File 'lib/fog/vcloud_director/compute.rb', line 284
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
end
|