Class: Fog::AWS::RDS::Snapshots

Inherits:
Collection
  • Object
show all
Defined in:
lib/fog/aws/models/rds/snapshots.rb

Instance Attribute Summary

Attributes inherited from Collection

#service

Instance Method Summary collapse

Methods inherited from Collection

#clear, #create, #destroy, #inspect, #load, model, #model, #reload, #table, #to_json

Methods included from Fog::Attributes::ClassMethods

#_load, #aliases, #attribute, #attributes, #identity, #ignore_attributes, #ignored_attributes

Methods included from Core::DeprecatedConnectionAccessors

#connection, #connection=, #prepare_service_value

Methods included from Fog::Attributes::InstanceMethods

#_dump, #attributes, #dup, #identity, #identity=, #merge_attributes, #new_record?, #persisted?, #requires, #requires_one

Constructor Details

#initialize(attributes) ⇒ Snapshots

Returns a new instance of Snapshots.



13
14
15
16
17
18
19
20
21
22
# File 'lib/fog/aws/models/rds/snapshots.rb', line 13

def initialize(attributes)
  self.filters ||= {}
  if attributes[:server]
    filters[:identifier] = attributes[:server].id
  end
  if attributes[:type]
    filters[:type] = attributes[:type]
  end
  super
end

Instance Method Details

#all(filters = filters) ⇒ Object

This will return a single page based on the current or provided filters, updating the filters with the marker for the next page. Calling this repeatedly will iterate through pages.



27
28
29
30
31
32
33
34
# File 'lib/fog/aws/models/rds/snapshots.rb', line 27

def all(filters = filters)
  self.filters.merge!(filters)

  snapshots = service.describe_db_snapshots(filters)
  self.filters[:marker] = snapshots.body['DescribeDBSnapshotsResult']['Marker']
  data = snapshots.body['DescribeDBSnapshotsResult']['DBSnapshots']
  load(data)
end

#each(filters = filters) ⇒ Object

This will execute a block for each snapshot, fetching new pages of snapshots as required.



37
38
39
40
41
42
43
44
# File 'lib/fog/aws/models/rds/snapshots.rb', line 37

def each(filters = filters)
  begin
    page = self.all(filters)
    # We need to explicitly use the base 'each' method here on the page, otherwise we get infinite recursion
    base_each = Fog::Collection.instance_method(:each)
    base_each.bind(page).call {|snapshot| yield snapshot}
  end while self.filters[:marker]
end

#get(identity) ⇒ Object



46
47
48
49
50
51
# File 'lib/fog/aws/models/rds/snapshots.rb', line 46

def get(identity)
  data = service.describe_db_snapshots(:snapshot_id => identity).body['DescribeDBSnapshotsResult']['DBSnapshots'].first
  new(data) # data is an attribute hash
rescue Fog::AWS::RDS::NotFound
  nil
end

#new(attributes = {}) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/fog/aws/models/rds/snapshots.rb', line 53

def new(attributes = {})
  if server
    super({ :instance_id => server.id }.merge!(attributes))
  else
    super
  end
end