Class: Awsm::Dns

Inherits:
Object
  • Object
show all
Defined in:
lib/awsm/dns.rb

Instance Method Summary collapse

Constructor Details

#initializeDns

Returns a new instance of Dns.



5
6
7
8
9
10
# File 'lib/awsm/dns.rb', line 5

def initialize
  @client = Aws::Route53::Client.new
  @dns_map_by_target = {}
  @records = []
  load_dns_records
end

Instance Method Details

#find_for(target) ⇒ Object



12
13
14
# File 'lib/awsm/dns.rb', line 12

def find_for( target )
  @dns_map_by_target[ target ]
end

#get_by_record(record) ⇒ Object



16
17
18
19
20
# File 'lib/awsm/dns.rb', line 16

def get_by_record( record )
  @records.select do |r|
    r.name =~ /^#{record}/
  end
end

#load_dns_recordsObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/awsm/dns.rb', line 22

def load_dns_records
  paged_response = @client.list_resource_record_sets(
    hosted_zone_id: Awsm::dns_config.hosted_zone
  )

  paged_response.each_page do |p|
    records = p.resource_record_sets.select do |r|
      r.type == 'A' || r.type == 'CNAME'
    end

    records.each do |r|
      if r.resource_records == []
        target = r.alias_target.dns_name
      else
        target = r.resource_records[0].value
      end

      @dns_map_by_target[target] = r.name
      @records << r
    end
  end
end