Methods

Class/Module Index [+]

Quicksearch

Fog::DNS::AWS::Records

Public Instance Methods

all(options = {}) click to toggle source
# File lib/fog/aws/models/dns/records.rb, line 23
def all(options = {})
  requires :zone
  options[:max_items]  ||= max_items
  options[:name]       ||= zone.domain
  options[:type]       ||= type
  options[:identifier] ||= identifier
  options.delete_if {|key, value| value.nil?}

  data = service.list_resource_record_sets(zone.id, options).body
  # NextRecordIdentifier is completely absent instead of nil, so set to nil, or iteration breaks.
  data['NextRecordIdentifier'] = nil unless data.has_key?('NextRecordIdentifier')

  merge_attributes(data.reject {|key, value| !['IsTruncated', 'MaxItems', 'NextRecordName', 'NextRecordType', 'NextRecordIdentifier'].include?(key)})
  # leave out the default, read only records
  data = data['ResourceRecordSets'].reject {|record| ['NS', 'SOA'].include?(record['Type'])}
  load(data)
end
all!() click to toggle source

Load all zone records into the collection.

# File lib/fog/aws/models/dns/records.rb, line 44
def all!
  data = []

  merge_attributes({'NextRecordName' => nil,
                    'NextRecordType' => nil,
                    'NextRecordIdentifier' => nil,
                    'IsTruncated' => nil})

  begin
    options = {
        :name => next_record_name,
        :type => next_record_type,
        :identifier => next_record_identifier
    }
    options.delete_if {|key, value| value.nil?}

    batch = service.list_resource_record_sets(zone.id, options).body
    # NextRecordIdentifier is completely absent instead of nil, so set to nil, or iteration breaks.
    batch['NextRecordIdentifier'] = nil unless batch.has_key?('NextRecordIdentifier')

    merge_attributes(batch.reject {|key, value| !['IsTruncated', 'MaxItems', 'NextRecordName', 'NextRecordType', 'NextRecordIdentifier'].include?(key)})

    data.concat(batch['ResourceRecordSets'])
  end while is_truncated

  load(data)
end
get(record_name, record_type = nil, record_identifier = nil) click to toggle source

AWS Route 53 records are uniquely identified by a compound key of name, type, and identifier. get allows one to retrieve a record using one or more of those key components.

Parameters

  • record_name - The name of the record to retrieve.

  • record_type - The type of record to retrieve, if nil, then the first matching record is returned.

  • record_identifier - The record set identifier to retrieve, if nil, then the first matching record is returned.

# File lib/fog/aws/models/dns/records.rb, line 81
def get(record_name, record_type = nil, record_identifier = nil)
  requires :zone
  # Append a trailing period to the record_name if absent.
  record_name = record_name + "." unless record_name.end_with?(".")
  record_type = record_type.upcase unless record_type.nil?

  options = {
      :max_items => 1,
      :name => record_name,
      :type => record_type,
      :identifier => record_identifier
  }
  options.delete_if {|key, value| value.nil?}

  data = service.list_resource_record_sets(zone.id, options).body
  # Get first record
  data = data['ResourceRecordSets'].shift

  if data
    record = new(data)
    # make sure everything matches
    if record.name == record_name
      if (!record_type.nil? && record.type != record_type) ||
          (!record_identifier.nil? && record.set_identifier != record_identifier)
        nil
      else
        record
      end
    end
  else
    nil
  end
rescue Excon::Errors::NotFound
  nil
end
new(attributes = {}) click to toggle source
# File lib/fog/aws/models/dns/records.rb, line 117
def new(attributes = {})
  requires :zone
  super({ :zone => zone }.merge!(attributes))
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.