class GeoEngineer::Resources::AwsRoute53Record
Note: Currently, 'name' must be the fully qualified domain name.
Public Class Methods
_fetch_name(record, zone)
click to toggle source
# File lib/geoengineer/resources/aws_route53_record.rb, line 67 def self._fetch_name(record, zone) # Need to trim the trailing dot, as well as convert ASCII 42 (Octal 52) to # the wildcard star. Route53 uses that for wildcard records. name = record[:name].downcase.gsub(/\.$/, '').gsub(/^\\052/, '*') zone_name = zone[:name].gsub(/\.$/, '') if name !~ /#{zone_name}$/ name = name.empty? ? zone_name : "#{name}.#{zone_name}" end name end
_fetch_records_for_zone(provider, zone)
click to toggle source
# File lib/geoengineer/resources/aws_route53_record.rb, line 51 def self._fetch_records_for_zone(provider, zone) zone_id = zone[:id].gsub(%r{^/hostedzone/}, '') response = AwsClients.route53(provider).list_resource_record_sets({ hosted_zone_id: zone_id }) records = [] response.each do |page| records += page.resource_record_sets.map(&:to_h).map do |record| name = _fetch_name(record, zone) id = "#{zone_id}_#{name}_#{record[:type]}" record.merge({ fqdn: name, _terraform_id: id, _geo_id: id }) end end records end
_fetch_remote_resources(provider)
click to toggle source
# File lib/geoengineer/resources/aws_route53_record.rb, line 43 def self._fetch_remote_resources(provider) _fetch_zones(provider).map { |zone| _fetch_records_for_zone(provider, zone) }.flatten.compact end
_fetch_zones(provider)
click to toggle source
# File lib/geoengineer/resources/aws_route53_record.rb, line 47 def self._fetch_zones(provider) AwsClients.route53(provider).list_hosted_zones.hosted_zones.map(&:to_h) end
Public Instance Methods
fqdn()
click to toggle source
# File lib/geoengineer/resources/aws_route53_record.rb, line 35 def fqdn self["name"].downcase end
record_type(val = nil)
click to toggle source
# File lib/geoengineer/resources/aws_route53_record.rb, line 31 def record_type(val = nil) val ? self["type"] = val : self["type"] end
to_terraform_state()
click to toggle source
Calls superclass method
GeoEngineer::Resource#to_terraform_state
# File lib/geoengineer/resources/aws_route53_record.rb, line 21 def to_terraform_state tfstate = super tfstate[:primary][:attributes] = { 'id' => _terraform_id, 'name' => name, 'type' => record_type } tfstate end