class Roadworker::Exporter
Public Class Methods
export(route53)
click to toggle source
# File lib/roadworker/route53-exporter.rb, line 6 def export(route53) self.new(route53).export end
new(options)
click to toggle source
# File lib/roadworker/route53-exporter.rb, line 11 def initialize(options) @options = options end
Public Instance Methods
export()
click to toggle source
# File lib/roadworker/route53-exporter.rb, line 15 def export result = { :health_checks => HealthCheck.health_checks(@options.route53), } hosted_zones = result[:hosted_zones] = [] export_hosted_zones(hosted_zones) return result end
Private Instance Methods
export_hosted_zones(hosted_zones)
click to toggle source
# File lib/roadworker/route53-exporter.rb, line 28 def export_hosted_zones(hosted_zones) Collection.batch(@options.route53.list_hosted_zones, :hosted_zones) do |zone| next unless matched_zone?(zone.name) resp = @options.route53.get_hosted_zone(id: zone.id) zone_h = { id: zone.id, name: zone.name, vpcs: resp.vp_cs } hosted_zones << zone_h rrsets = [] zone_h[:rrsets] = rrsets Collection.batch(@options.route53.list_resource_record_sets(hosted_zone_id: zone.id), :resource_record_sets) do |record| if record.name == zone.name and %w(SOA NS).include?(record.type) and not @options.with_soa_ns next end attrs = [ :name, :type, :set_identifier, :weight, :ttl, :resource_records, :alias_target, :region, :geo_location, :failover, :health_check_id, ] record_h = item_to_hash(record, *attrs) record_h[:name].gsub!("\\052", '*') if record_h[:name] rrsets << record_h rrs = record_h.delete(:resource_records) record_h[:resource_records] = rrs.map {|i| i[:value] } if (alias_target = record_h.delete(:alias_target)) record_h[:dns_name] = alias_target[:dns_name] if alias_target[:evaluate_target_health] record_h[:dns_name] = [ record_h[:dns_name], {:evaluate_target_health => alias_target[:evaluate_target_health]} ] end end end end end
item_to_hash(item, *attrs)
click to toggle source
# File lib/roadworker/route53-exporter.rb, line 78 def item_to_hash(item, *attrs) h = {} attrs.each do |attribute| value = item.public_send(attribute) h[attribute] = value if value end return h end