Class: Fog::Vcloud::Collection

Inherits:
Collection show all
Defined in:
lib/fog/vcloud/collection.rb

Direct Known Subclasses

Vdcs

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Collection

#_dump, _load, aliases, attribute, attributes, #attributes, #connection, #connection=, #create, #initialize, #inspect, #load, #merge_attributes, #model, model, #new, #table, #to_json

Constructor Details

This class inherits a constructor from Fog::Collection

Class Method Details

.all_request(all_request = nil) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/fog/vcloud/collection.rb', line 14

def all_request(all_request=nil)
  unless all_request
    @all_request
  else
    @all_request = all_request
    class_eval <<-EOS, __FILE__, __LINE__
      def all
        data = self.class.all_request.call(self).body.links.select do |link|
          link.type == self.class.vcloud_type
        end.map { |link| {:href => link.href, :name => link.name } }
        load(data)
      end
    EOS
  end
end

.get_request(get_request = nil) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/fog/vcloud/collection.rb', line 38

def get_request(get_request=nil)
  unless get_request
    @get_request
  else
    @get_request = get_request
    class_eval <<-EOS, __FILE__, __LINE__
      def get(uri)
        item = new(:href => uri)
        item.reload
      end
      def get_raw(uri)
        connection.#{@get_request}(uri)
      end
    EOS
  end
end

.inherited(klass) ⇒ Object



7
8
9
10
11
12
# File 'lib/fog/vcloud/collection.rb', line 7

def inherited(klass)
  klass.instance_variable_set(:@model, @model)
  klass.all_request @all_request
  klass.vcloud_type @vcloud_type
  klass.get_request @get_request
end

.vcloud_type(vcloud_type = nil) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/fog/vcloud/collection.rb', line 30

def vcloud_type(vcloud_type=nil)
  unless vcloud_type
    @vcloud_type
  else
    @vcloud_type = vcloud_type
  end
end

Instance Method Details

#[](index) ⇒ Object



56
57
58
# File 'lib/fog/vcloud/collection.rb', line 56

def [](index)
  self.slice(index).reload
end

#reloadObject



60
61
62
# File 'lib/fog/vcloud/collection.rb', line 60

def reload
  self.all
end