require 'aws/with-stacco-patches' require 'stacco/base' class Stacco::Domain def initialize(stack, domain_parts) @stack = stack @domain_parts = domain_parts end attr_accessor :service_registry attr_accessor :logical_name def to_s @domain_parts.reverse.join('.') end def to_json self.to_s.to_json end def +(domain_part) subdomain = self.class.new(@stack, @domain_parts + [domain_part]) subdomain.service_registry = @service_registry subdomain end def find_resource_with_matching(in_collection) possible_zone_keys = (1..@domain_parts.length).map{ |l| @domain_parts[0, l].reverse.join('.') }.reverse possible_zone_keys.each do |zone_key| if matching_resource = in_collection.find{ |r| yield(r) == zone_key } return matching_resource end end nil end def hosted_zone self.find_resource_with_matching(@service_registry[:route53].hosted_zones){ |zone| zone.name.gsub(/\.$/, '') } end def server_certificate self.find_resource_with_matching(@service_registry[:iam].server_certificates){ |cert| cert.name } end end