Sha256: 658de53bc531a36f4982bff8fde2fdd27f381b3b7206c6757140bc41d39a1694

Contents?: true

Size: 1.57 KB

Versions: 7

Compression:

Stored size: 1.57 KB

Contents

module Fog
  module Compute
    class XenServer
      module Models
        module InstanceMethods
          def provider_class
            self.class.provider_class
          end

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

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

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

          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

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

          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

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

Version data entries

7 entries across 5 versions & 2 rubygems

Version Path
vagrant-packet-0.1.1 vendor/bundle/ruby/2.3.0/gems/fog-xenserver-0.3.0/lib/fog/compute/xen_server/models/instance_methods.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.5.0/gems/fog-xenserver-0.3.0/lib/fog/compute/xen_server/models/instance_methods.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/gems/fog-xenserver-0.3.0/lib/fog/compute/xen_server/models/instance_methods.rb
fog-xenserver-0.3.0 lib/fog/compute/xen_server/models/instance_methods.rb
fog-xenserver-0.2.3 lib/fog/compute/xen_server/models/instance_methods.rb
fog-xenserver-0.2.2 lib/fog/compute/xen_server/models/instance_methods.rb
fog-xenserver-0.2.1 lib/fog/compute/xen_server/models/instance_methods.rb