Module: Fog::XenServer::Compute::Models::InstanceMethods

Included in:
Model, Server
Defined in:
lib/fog/xenserver/compute/models/instance_methods.rb

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'lib/fog/xenserver/compute/models/instance_methods.rb', line 36

def method_missing(method_name, *args)
  if service.respond_to?("#{method_name}_#{provider_class.downcase}")
    result = service.send("#{method_name}_#{provider_class.downcase}", reference, *args)
    reload
    result
  else
    super
  end
end

Instance Method Details

#collectionObject



10
11
12
# File 'lib/fog/xenserver/compute/models/instance_methods.rb', line 10

def collection
  service.send(self.class.collection_name)
end

#destroyObject



30
31
32
33
34
# File 'lib/fog/xenserver/compute/models/instance_methods.rb', line 30

def destroy
  requires :reference
  service.send(:destroy_record, reference, provider_class)
  true
end

#provider_classObject



6
7
8
# File 'lib/fog/xenserver/compute/models/instance_methods.rb', line 6

def provider_class
  self.class.provider_class
end

#require_creation_attributesObject



14
15
16
# File 'lib/fog/xenserver/compute/models/instance_methods.rb', line 14

def require_creation_attributes
  requires *self.class.instance_variable_get("@require_before_save")
end

#respond_to?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
49
# File 'lib/fog/xenserver/compute/models/instance_methods.rb', line 46

def respond_to?(method_name, include_private = false)
  return true if service.respond_to?("#{method_name}_#{provider_class.downcase}")
  super
end

#save(extra_params = {}) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/fog/xenserver/compute/models/instance_methods.rb', line 22

def save(extra_params = {})
  require_creation_attributes
  attrs = all_associations_and_attributes.reject { |_key, value| value.nil? }
  ref = service.send("create_#{provider_class.downcase}", attrs, extra_params)
  merge_attributes collection.get(ref).attributes
  true
end

#set_attribute(name, *val) ⇒ Object



18
19
20
# File 'lib/fog/xenserver/compute/models/instance_methods.rb', line 18

def set_attribute(name, *val)
  service.set_attribute(provider_class, reference, name, *val)
end