Sha256: 312d0ffe79e192fb4524823824ac16ba3552ddec206dd17d4f42cfb4cd0c1a7e

Contents?: true

Size: 1.7 KB

Versions: 66

Compression:

Stored size: 1.7 KB

Contents

require 'fog/core/collection'

module Fog
  module OpenStack
    class Collection < Fog::Collection
      # It's important to store the whole response, it contains e.g. important info about whether there is another
      # page of data.
      attr_accessor :response

      def load_response(response, index = nil)
        # Delete it index if it's there, so we don't store response with data twice, but we store only metadata
        objects = index ? response.body.delete(index) : response.body

        clear && objects.each { |object| self << new(object) }
        self.response = response
        self
      end

      ##################################################################################################################
      # Abstract base class methods, please keep the consistent naming in all subclasses of the Collection class

      # Returns detailed list of records
      def all(options = {})
        raise Fog::OpenStack::Errors::InterfaceNotImplemented.new('Method :all is not implemented')
      end

      # Returns non detailed list of records, usually just subset of attributes, which makes this call more effective.
      # Not all openstack services support non detailed list, so it delegates to :all by default.
      def summary(options = {})
        all(options)
      end

      # Gets record given record's UUID
      def get(uuid)
        raise Fog::OpenStack::Errors::InterfaceNotImplemented.new('Method :get is not implemented')
      end

      def find_by_id(uuid)
        get(uuid)
      end

      # Destroys record given record's UUID
      def destroy(uuid)
        raise Fog::OpenStack::Errors::InterfaceNotImplemented.new('Method :destroy is not implemented')
      end
    end
  end
end

Version data entries

66 entries across 64 versions & 5 rubygems

Version Path
fog-openstack-1.1.5 lib/fog/openstack/models/collection.rb
fog-openstack-1.1.4 lib/fog/openstack/models/collection.rb
fog-openstack-1.1.3 lib/fog/openstack/models/collection.rb
fog-openstack-1.1.2 lib/fog/openstack/models/collection.rb
fog-openstack-fork-99 lib/fog/openstack/models/collection.rb
fog-openstack-1.1.0 lib/fog/openstack/models/collection.rb
fog-openstack-1.1.0.pre lib/fog/openstack/models/collection.rb
fog-openstack-apibank-1.0.102 lib/fog/openstack/models/collection.rb
fog-openstack-1.0.11 lib/fog/openstack/models/collection.rb
fog-openstack-apibank-1.0.101 lib/fog/openstack/models/collection.rb
fog-openstack-1.0.10 lib/fog/openstack/models/collection.rb
fog-openstack-1.0.9 lib/fog/openstack/models/collection.rb
fog-openstack-0.1.31 lib/fog/openstack/models/collection.rb
fog-openstack-0.3.10 lib/fog/openstack/models/collection.rb
fog-openstack-1.0.8 lib/fog/openstack/models/collection.rb
fog-openstack-0.1.30 lib/fog/openstack/models/collection.rb
fog-openstack-1.0.7 lib/fog/openstack/models/collection.rb
fog-openstack-0.1.29 lib/fog/openstack/models/collection.rb
fog-openstack-0.3.9 lib/fog/openstack/models/collection.rb
fog-openstack-1.0.6 lib/fog/openstack/models/collection.rb