Class: Fog::AWS::DNS::Records
- Inherits:
-
Collection
- Object
- Collection
- Fog::AWS::DNS::Records
- Defined in:
- lib/fog/aws/models/dns/records.rb
Instance Method Summary collapse
- #all(options = {}) ⇒ Object
-
#all! ⇒ Object
Load all zone records into the collection.
-
#get(record_name, record_type = nil, record_identifier = nil) ⇒ Object
AWS Route 53 records are uniquely identified by a compound key of name, type, and identifier.
- #new(attributes = {}) ⇒ Object
Instance Method Details
#all(options = {}) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/fog/aws/models/dns/records.rb', line 20 def all( = {}) requires :zone [:max_items] ||= max_items [:name] ||= zone.domain [:type] ||= type [:identifier] ||= identifier .delete_if {|key, value| value.nil?} data = service.list_resource_record_sets(zone.id, ).body # NextRecordIdentifier is completely absent instead of nil, so set to nil, or iteration breaks. data['NextRecordIdentifier'] = nil unless data.key?('NextRecordIdentifier') merge_attributes(data.reject {|key, value| !['IsTruncated', 'MaxItems', 'NextRecordName', 'NextRecordType', 'NextRecordIdentifier'].include?(key)}) load(data['ResourceRecordSets']) end |
#all! ⇒ Object
Load all zone records into the collection.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/fog/aws/models/dns/records.rb', line 39 def all! data = [] merge_attributes({'NextRecordName' => nil, 'NextRecordType' => nil, 'NextRecordIdentifier' => nil, 'IsTruncated' => nil}) begin = { :name => next_record_name, :type => next_record_type, :identifier => next_record_identifier } .delete_if {|key, value| value.nil?} batch = service.list_resource_record_sets(zone.id, ).body # NextRecordIdentifier is completely absent instead of nil, so set to nil, or iteration breaks. batch['NextRecordIdentifier'] = nil unless batch.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) ⇒ Object
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.
76 77 78 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 |
# File 'lib/fog/aws/models/dns/records.rb', line 76 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? = { :max_items => 1, :name => record_name, :type => record_type, :identifier => record_identifier } .delete_if {|key, value| value.nil?} data = service.list_resource_record_sets(zone.id, ).body # look for an exact match in the records (data['ResourceRecordSets'] || []).map do |record_data| record = new(record_data) if (record.name.casecmp(record_name) == 0) && (record_type.nil? || (record.type == record_type)) && (record_identifier.nil? || (record.set_identifier == record_identifier)) record end end.compact.first rescue Fog::AWS::DNS::NotFound nil end |
#new(attributes = {}) ⇒ Object
106 107 108 109 |
# File 'lib/fog/aws/models/dns/records.rb', line 106 def new(attributes = {}) requires :zone super({ :zone => zone }.merge!(attributes)) end |