Class: Fog::DNS::AWS::Records

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

Instance Method Summary (collapse)

Instance Method Details

- (Object) all(options = {})



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 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)})
  load(data['ResourceRecordSets'])
end

- (Object) all!

Load all zone records into the collection.



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/fog/aws/models/dns/records.rb', line 42

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

- (Object) get(record_name, record_type = nil, record_identifier = nil)

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.



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/fog/aws/models/dns/records.rb', line 79

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

- (Object) new(attributes = {})



115
116
117
118
# File 'lib/fog/aws/models/dns/records.rb', line 115

def new(attributes = {})
  requires :zone
  super({ :zone => zone }.merge!(attributes))
end