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