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, Disk, Media, Network, Organization, Tag, Vapp, Vdc, Vm, VmCustomization, VmNetwork
Instance Method Summary
collapse
Constructor Details
#initialize(attrs = {}) ⇒ Model
257
258
259
260
261
262
263
264
|
# File 'lib/fog/vcloud_director/compute.rb', line 257
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
289
290
291
292
293
294
|
# File 'lib/fog/vcloud_director/compute.rb', line 289
def inspect
@inspecting = true
out = super
@inspecting = false
out
end
|
#lazy_load_attrs ⇒ Object
266
267
268
|
# File 'lib/fog/vcloud_director/compute.rb', line 266
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?
281
282
283
284
285
286
287
|
# File 'lib/fog/vcloud_director/compute.rb', line 281
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
270
271
272
273
274
275
276
277
|
# File 'lib/fog/vcloud_director/compute.rb', line 270
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
|