class Roadworker::DSL::Converter
Public Class Methods
convert(exported)
click to toggle source
# File lib/roadworker/dsl-converter.rb, line 5 def convert(exported) self.new(exported).convert end
new(exported)
click to toggle source
# File lib/roadworker/dsl-converter.rb, line 10 def initialize(exported) @health_checks = exported[:health_checks] @hosted_zones = exported[:hosted_zones] end
Public Instance Methods
convert()
click to toggle source
# File lib/roadworker/dsl-converter.rb, line 15 def convert @hosted_zones.map {|i| output_zone(i) }.join("\n") end
Private Instance Methods
output_rrset(recrod)
click to toggle source
# File lib/roadworker/dsl-converter.rb, line 21 def output_rrset(recrod) name = recrod.delete(:name).inspect type = recrod.delete(:type).inspect attrs = recrod.map {|key, value| case key when :resource_records if value.empty? nil else value = value.map {|i| i.inspect }.join(",\n ") "#{key}(\n #{value}\n )" end when :health_check_id config = HealthCheck.config_to_hash(@health_checks[value]) if config[:calculated] hc_args = ":calculated => #{config[:calculated].inspect}" elsif config[:cloudwatch_metric] hc_args = ":cloudwatch_metric => #{config[:cloudwatch_metric].inspect}" else hc_args = config[:url].sub(/\A(https?)_str_match:/) { $1 + ':' }.inspect end [ :host, :search_string, :request_interval, :health_threshold, :failure_threshold, :measure_latency, :inverted, :disabled, :enable_sni, :insufficient_data_health_status, ].each do |key| unless config[key].nil? hc_args << ", :#{key} => #{config[key].inspect}" end end "health_check #{hc_args}" when :dns_name if value.kind_of?(Array) and value.length > 1 dns_name_opts = value.pop value = value.inspect.sub(/\A\[/, '').sub(/\]\z/, '') dns_name_opts = dns_name_opts.inspect.sub(/\A\{/, '').sub(/\}\z/, '') "#{key} #{value}, #{dns_name_opts}" else value = [value].flatten.inspect.sub(/\A\[/, '').sub(/\]\z/, '') "#{key} #{value}" end else if value.kind_of?(Aws::Route53::Types::GeoLocation) replaced_value = value.to_h.to_s.sub!(/\A{/, '').sub!(/}\z/, '') "#{key} #{replaced_value}" else "#{key} #{value.inspect}" end end }.select {|i| i }.join("\n ") return(<<-EOS) rrset #{name}, #{type} do #{attrs} end EOS end
output_vpcs(vpcs)
click to toggle source
# File lib/roadworker/dsl-converter.rb, line 105 def output_vpcs(vpcs) return nil if (vpcs || []).empty? vpcs.map {|vpc| region = vpc[:vpc_region] vpc_id = vpc[:vpc_id] "vpc #{region.inspect}, #{vpc_id.inspect}" }.join("\n ") end
output_zone(zone)
click to toggle source
# File lib/roadworker/dsl-converter.rb, line 90 def output_zone(zone) name = zone[:name].inspect id = zone[:id].sub(%r!^/hostedzone/!, '').inspect rrsets = zone[:rrsets] vpcs = output_vpcs(zone[:vpcs]) vpcs = " #{vpcs}\n\n" if vpcs return(<<-EOS) hosted_zone #{name}#{zone[:vpcs].empty? ? '' : ", #{id}"} do #{vpcs }#{rrsets.map {|i| output_rrset(i) }.join("\n").chomp} end EOS end