Class: Fog::AWS::RDS::Snapshots
- Inherits:
-
Collection
- Object
- Collection
- Fog::AWS::RDS::Snapshots
- Defined in:
- lib/fog/aws/models/rds/snapshots.rb
Instance Method Summary collapse
-
#all(filters = filters) ⇒ Object
This method does NOT return all snapshots.
-
#each(filters = filters) ⇒ Object
This will execute a block for each snapshot, fetching new pages of snapshots as required.
- #get(identity) ⇒ Object
-
#initialize(attributes) ⇒ Snapshots
constructor
A new instance of Snapshots.
- #new(attributes = {}) ⇒ Object
Constructor Details
#initialize(attributes) ⇒ Snapshots
Returns a new instance of Snapshots.
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/fog/aws/models/rds/snapshots.rb', line 12 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 method does NOT return all snapshots. Its implementation deliberately returns a single page of results for any one call. It 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. See the implementation of each for an example of such iteration.
It is arguably incorrect for the method not to return all snapshots, particularly considering the implementation in the corresponding ‘elb’ files. But this implementation has been released, and backwards-compatibility requires leaving it as implemented.
31 32 33 34 35 36 37 |
# File 'lib/fog/aws/models/rds/snapshots.rb', line 31 def all(filters = filters) self.filters.merge!(filters) page = service.describe_db_snapshots(self.filters).body['DescribeDBSnapshotsResult'] self.filters[:marker] = page['Marker'] load(page['DBSnapshots']) end |
#each(filters = filters) ⇒ Object
This will execute a block for each snapshot, fetching new pages of snapshots as required.
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/fog/aws/models/rds/snapshots.rb', line 40 def each(filters = filters) if block_given? 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 self end |
#get(identity) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/fog/aws/models/rds/snapshots.rb', line 52 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
59 60 61 62 63 64 65 |
# File 'lib/fog/aws/models/rds/snapshots.rb', line 59 def new(attributes = {}) if server super({ :instance_id => server.id }.merge!(attributes)) else super end end |