cloudstrap 0.35.5.pre → 0.37.0.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b42cd992a87bb778c14d5f0ede2e693ddfb3cac
4
- data.tar.gz: 504392acbb20d04031c4127cddd84d4597b5fd07
3
+ metadata.gz: ef518a74f8597223713702e148199c9f1aac42ed
4
+ data.tar.gz: a4beb58a28a11b5106dc5496b698ff6f5b87d4ec
5
5
  SHA512:
6
- metadata.gz: 7b52399bfb637ef975193a78af2886571eed2ee9e1db7160d28bd198342e95c7b9f56b4686d366127dfc52d563c99c5e49b251d1ba3fb89f54a6d2b88a481626
7
- data.tar.gz: 86d95a3a59501086f903ba8281df88132ffefb0ad73064bb2d1dd1e40ecba2947375a824578385931407ee4e7bf7257a042ab64b3f5b75cad7241ece3da6040a
6
+ metadata.gz: 9213c65fa3067faab737ae355959fa12790135845aca95e59201849057066cfd88f73416c87155ed27fcf2d5fc4ed0cbe7521b70da4ed2d22cca68bf1e2c6802
7
+ data.tar.gz: b03645e48e6960b61d004b63782f2a8d1cd73cc4cdae6a9be0edce779c7e6c6d0120754e104f1b6b49438ca63e524c3db298c328b58b022bb013b17586c43cae
data/bin/cloudstrap-dns CHANGED
@@ -33,10 +33,9 @@ VPC = ENV.fetch('CLOUDSTRAP_VPC_ID') { cache.fetch :vpc_id }
33
33
 
34
34
  abort "VPC ID missing from cache. Have you run cloudstrap yet?" if VPC.nil?
35
35
 
36
- ZONE = route53.zone(DOMAIN)
36
+ ZONE = route53.zone(route53.longest_matching_suffix(DOMAIN) || '')
37
37
 
38
- ZONE_ID = route53.zone_id(DOMAIN)
39
- abort "Invalid Zone: #{DOMAIN}" unless ZONE_ID
38
+ abort "Invalid Zone: #{DOMAIN}" unless ZONE
40
39
 
41
40
  load_balancers = BurdenedAcrobat::LoadBalancers.new
42
41
 
@@ -82,18 +81,18 @@ hsm = services.fetch('hcp/hsm-server').first
82
81
  puts <<-EOS
83
82
  # Configuring the following DNS records...
84
83
 
85
- hcp.aws.#{DOMAIN} IN A #{hcp.canonical_hosted_zone_name} # #{hcp.canonical_hosted_zone_name_id}
86
- hsm.aws.#{DOMAIN} IN A #{hsm.canonical_hosted_zone_name}
87
- identity.aws.#{DOMAIN} IN A #{identity.canonical_hosted_zone_name}
88
- *.identity.aws.#{DOMAIN} IN CNAME identity.aws.#{DOMAIN}
84
+ hcp.#{DOMAIN} IN A #{hcp.canonical_hosted_zone_name}
85
+ hsm.#{DOMAIN} IN A #{hsm.canonical_hosted_zone_name}
86
+ identity.#{DOMAIN} IN A #{identity.canonical_hosted_zone_name}
87
+ *.identity.#{DOMAIN} IN CNAME identity.#{DOMAIN}
89
88
 
90
89
  EOS
91
90
 
92
91
  change = Path53.change(ZONE).batch do
93
- add a 'hcp.aws.@', hcp
94
- add a 'hsm.aws.@', hsm
95
- add a 'identity.aws.@', identity
96
- add cname '*.identity.aws.@', 'identity.aws.@'
92
+ add a "hcp.#{DOMAIN}", hcp
93
+ add a "hsm.#{DOMAIN}", hsm
94
+ add a "identity.#{DOMAIN}", identity
95
+ add cname "*.identity.#{DOMAIN}", "identity.#{DOMAIN}"
97
96
  end.apply!
98
97
 
99
98
  loop do
@@ -25,6 +25,25 @@ module Cloudstrap
25
25
  zones.find { |zone| zone.name == name }
26
26
  end
27
27
 
28
+ Contract String => Maybe[String]
29
+ def longest_matching_suffix(name)
30
+ candidates = {}
31
+ name.split('.').reverse.reduce('') do |domain, fragment|
32
+ [fragment, domain].join('.').tap do |suffix|
33
+ candidates[suffix] = zones.select do |zone|
34
+ zone.name.end_with? suffix
35
+ end
36
+ end
37
+ end
38
+
39
+ longest = candidates
40
+ .reject { |_, zones| zones.empty? }
41
+ .sort_by { |name, _| name.length }
42
+ .last
43
+
44
+ longest ? longest.first : nil
45
+ end
46
+
28
47
  Contract String => Maybe[String]
29
48
  def zone_id(name)
30
49
  return unless zone = zone(name)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.35.5.pre
4
+ version: 0.37.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Olstrom