Class: Fog::DNS::AWS::Records
- Inherits:
-
Collection
- Object
- Collection
- Fog::DNS::AWS::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
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/fog/aws/models/dns/records.rb', line 21 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.
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 66 |
# File 'lib/fog/aws/models/dns/records.rb', line 40 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.
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 105 106 107 108 109 110 111 |
# File 'lib/fog/aws/models/dns/records.rb', line 77 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 # 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 = {}) ⇒ Object
113 114 115 116 |
# File 'lib/fog/aws/models/dns/records.rb', line 113 def new(attributes = {}) requires :zone super({ :zone => zone }.merge!(attributes)) end |