Skip to content

Commit

Permalink
Fix for dualstack elb
Browse files Browse the repository at this point in the history
  • Loading branch information
Genki Sugawara committed Jul 24, 2016
1 parent f6c39d1 commit 1181f65
Showing 1 changed file with 64 additions and 21 deletions.
85 changes: 64 additions & 21 deletions lib/roadworker/route53-ext.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,48 @@ module Route53

# http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
S3_WEBSITE_ENDPOINTS = {
's3-website-us-east-1.amazonaws.com' => 'Z3AQBSTGFYJSTF',
's3-website-us-west-1.amazonaws.com' => 'Z2F56UZL2M1ACD',
's3-website-us-west-2.amazonaws.com' => 'Z3BJ6K6RIION7M',
's3-website.ap-south-1.amazonaws.com' => 'Z11RGJOFQNVJUP',
's3-website-ap-northeast-1.amazonaws.com' => 'Z2M4EHUR26P7ZW',
's3-website.ap-northeast-2.amazonaws.com' => 'Z3W03O7B5YMIYP',
's3-website.ap-south-1.amazonaws.com' => 'Z11RGJOFQNVJUP',
's3-website-ap-southeast-1.amazonaws.com' => 'Z3O0J2DXBE1FTB',
's3-website-ap-southeast-2.amazonaws.com' => 'Z1WCIGYICN2BYD',
's3-website-ap-northeast-1.amazonaws.com' => 'Z2M4EHUR26P7ZW',
's3-website.eu-central-1.amazonaws.com' => 'Z21DNDUVLTQW6Q',
's3-website-eu-west-1.amazonaws.com' => 'Z1BKCTXD74EZPE',
's3-website-sa-east-1.amazonaws.com' => 'Z7KQH4QJS55SO',
's3-website-us-gov-west-1.amazonaws.com' => 'Z31GFT0UA1I2HV',
's3-website.eu-central-1.amazonaws.com' => 'Z21DNDUVLTQW6Q',
's3-website-eu-west-1.amazonaws.com' => 'Z1BKCTXD74EZPE',
's3-website-sa-east-1.amazonaws.com' => 'Z7KQH4QJS55SO',
's3-website-us-east-1.amazonaws.com' => 'Z3AQBSTGFYJSTF',
's3-website-us-gov-west-1.amazonaws.com' => 'Z31GFT0UA1I2HV',
's3-website-us-west-1.amazonaws.com' => 'Z2F56UZL2M1ACD',
's3-website-us-west-2.amazonaws.com' => 'Z3BJ6K6RIION7M',
}

CANONICAL_HOSTED_ZONE_NAME_IDS = {
'ap-northeast-1' => 'Z2YN17T5R711GT',
#'ap-northeast-2' => '',
#'ap-south-1' => '',
'ap-southeast-1' => 'Z1WI8VXHPB1R38',
'ap-southeast-2' => 'Z2999QAZ9SRTIC',
'eu-central-1' => 'Z215JYRZR1TBD5',
'eu-west-1' => 'Z3NF1Z3NOM5OY2',
'sa-east-1' => 'Z2ES78Y61JGQKS',
'us-east-1' => 'Z3DZXE0Q79N41H',
'us-west-1' => 'Z1M58G0W56PQJA',
'us-west-2' => 'Z33MTJ483KN6FU',
}

DUALSTACK_CANONICAL_HOSTED_ZONE_NAME_IDS = {
'ap-northeast-1' => 'Z14GRHDCWA56QT',
'ap-northeast-2' => 'ZWKZPGTI48KDX',
'ap-south-1' => 'ZP97RAFLXTNZK',
'ap-southeast-1' => 'Z1LMS91P8CMLE5',
'ap-southeast-2' => 'Z1GM3OXH4ZPM65',
'eu-central-1' => 'Z215JYRZR1TBD5',
'eu-west-1' => 'Z32O12XQLNTSW2',
'sa-east-1' => 'Z2P70J7HTTTPLU',
'us-east-1' => 'Z35SXDOTRQ7X7K',
'us-west-1' => 'Z368ELLRRE2KJ0',
'us-west-2' => 'Z1H1FL5HABSF5',
}

# http://docs.aws.amazon.com/Route53/latest/APIReference/API_ChangeResourceRecordSets.html
CF_HOSTED_ZONE_ID = 'Z2FDTNDATAQYW2'

Expand Down Expand Up @@ -68,25 +96,40 @@ def elb_dns_name_to_alias_target(name, region, options)
:evaluate_target_health => false, # XXX:
}
else
elb = Aws::ElasticLoadBalancing::Client.new(:region => region)
hosted_zone_id = nil

if name =~ /\Adualstack\./i
hosted_zone_id = DUALSTACK_CANONICAL_HOSTED_ZONE_NAME_IDS[region]
else
hosted_zone_id = CANONICAL_HOSTED_ZONE_NAME_IDS[region]
end

unless hosted_zone_id
elb = Aws::ElasticLoadBalancing::Client.new(:region => region)

load_balancer = nil
name_without_dualstack = name.sub(/\Adualstack\./i, '')

load_balancer = nil
elb.describe_load_balancers.each do |page|
page.load_balancer_descriptions.each do |lb|
if lb.dns_name == name
load_balancer = lb
elb.describe_load_balancers.each do |page|
page.load_balancer_descriptions.each do |lb|
if lb.dns_name == name_without_dualstack
load_balancer = lb
end
end
break if load_balancer
end

unless load_balancer
raise "Cannot find CanonicalHostedZoneNameID for `#{name}`. Please pass :hosted_zone_id"
end
break if load_balancer
end

unless load_balancer
raise "Cannot find ELB: #{name}"
hosted_zone_id = load_balancer.canonical_hosted_zone_name_id
name = load_balancer.dns_name
end

{
:hosted_zone_id => load_balancer.canonical_hosted_zone_name_id,
:dns_name => load_balancer.dns_name,
:hosted_zone_id => hosted_zone_id,
:dns_name => name,
:evaluate_target_health => false, # XXX:
}
end
Expand Down

0 comments on commit 1181f65

Please sign in to comment.