class GeoEngineer::Resources::AwsRoute53Zone

AwsRoute53Zone is the aws_route53_zone terrform resource,

{www.terraform.io/docs/providers/aws/r/route53_zone.html Terraform Docs}

Public Class Methods

_fetch_remote_resources(provider) click to toggle source
# File lib/geoengineer/resources/aws_route53_zone.rb, line 26
def self._fetch_remote_resources(provider)
  _fetch_zones(provider).map { |zone| _generate_remote_zone(provider, zone) }
end
_fetch_zones(provider) click to toggle source
# File lib/geoengineer/resources/aws_route53_zone.rb, line 30
def self._fetch_zones(provider)
  AwsClients.route53(provider).list_hosted_zones.hosted_zones.map(&:to_h)
end
_generate_remote_zone(provider, zone) click to toggle source
# File lib/geoengineer/resources/aws_route53_zone.rb, line 34
def self._generate_remote_zone(provider, zone)
  is_private_zone = zone.dig(:config, :private_zone) || false

  zone[:id] = zone[:id].gsub(%r{^/hostedzone/}, '')
  zone[:zone_id]       = zone[:id]
  zone[:_terraform_id] = zone[:id]
  zone[:vpc_id]        = _get_zone_vpc_id(provider, zone[:id]) if is_private_zone
  zone[:_geo_id]       = "#{is_private_zone ? zone[:vpc_id] : 'public'}-#{zone[:name]}"
  zone
end
_get_zone_vpc_id(provider, zone_id) click to toggle source
# File lib/geoengineer/resources/aws_route53_zone.rb, line 45
def self._get_zone_vpc_id(provider, zone_id)
  AwsClients.route53(provider).get_hosted_zone({ id: zone_id }).to_h[:vp_cs].first[:vpc_id]
end

Public Instance Methods

_public_or_private() click to toggle source
# File lib/geoengineer/resources/aws_route53_zone.rb, line 12
def _public_or_private
  self.vpc_id.nil? ? 'public' : self.vpc_id
end
to_terraform_state() click to toggle source
# File lib/geoengineer/resources/aws_route53_zone.rb, line 16
def to_terraform_state
  tfstate = super
  tfstate[:primary][:attributes] = {
    'name' => name,
    'vpc_id' => vpc_id,
    'force_destroy' => (force_destroy || 'false')
  }
  tfstate
end