mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
50 lines
1.4 KiB
Ruby
50 lines
1.4 KiB
Ruby
require 'fog/core/collection'
|
|
require 'fog/aws/models/rds/log_file'
|
|
|
|
module Fog
|
|
module AWS
|
|
class RDS
|
|
|
|
class LogFiles < Fog::Collection
|
|
attribute :filters
|
|
attribute :rds_id
|
|
model Fog::AWS::RDS::LogFile
|
|
|
|
def initialize(attributes)
|
|
self.filters ||= {}
|
|
super
|
|
end
|
|
|
|
# This method deliberately returns only a single page of results
|
|
def all(filters=filters)
|
|
self.filters.merge!(filters)
|
|
|
|
result = service.describe_db_log_files(rds_id, self.filters).body['DescribeDBLogFilesResult']
|
|
self.filters[:marker] = result['Marker']
|
|
load(result['DBLogFiles'])
|
|
end
|
|
|
|
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 { |log_file| yield log_file }
|
|
end while self.filters[:marker]
|
|
end
|
|
self
|
|
end
|
|
|
|
def get(file_name=nil)
|
|
if file_name
|
|
matches = self.select {|log_file| log_file.name.upcase == file_name.upcase}
|
|
return matches.first unless matches.empty?
|
|
end
|
|
rescue Fog::AWS::RDS::NotFound
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|