class Kelbim::Exporter

Public Class Methods

export(elb, options = {}) click to toggle source
# File lib/kelbim/exporter.rb, line 6
def export(elb, options = {})
  self.new(elb, options).export
end
new(elb, options = {}) click to toggle source
# File lib/kelbim/exporter.rb, line 11
def initialize(elb, options = {})
  @elb = elb
  @options = options
end

Public Instance Methods

export() click to toggle source
# File lib/kelbim/exporter.rb, line 16
def export
  result = {}
  lbs = @elb.load_balancers

  ec2s = @options[:ec2s]

  if ec2s or @options[:elb_name] or @options[:exclude_elb_name]
    lbs = lbs.select do |lb|
      (ec2s.nil? or ec2s.include?(lb.vpc_id || 'classic')) &&
      matched_elb?(lb.name)
    end
  end

  lbs.each do |lb|
    result[lb.vpc_id] ||= {}
    result[lb.vpc_id][lb.name] = export_load_balancer(lb)
  end

  return result
end

Private Instance Methods

export_listener(listener) click to toggle source
# File lib/kelbim/exporter.rb, line 63
def export_listener(listener)
  {
    :protocol           => listener.protocol,
    :port               => listener.port,
    :instance_protocol  => listener.instance_protocol,
    :instance_port      => listener.instance_port,
    :server_certificate => listener.server_certificate,
    :policies           => listener.policies.map {|i| export_policy(i) },
    :ssl_certificate_id => listener.ssl_certificate_id,
  }
end
export_load_balancer(load_balancer) click to toggle source
# File lib/kelbim/exporter.rb, line 38
def export_load_balancer(load_balancer)
  attrs = {
    :instances    => load_balancer.instances.map {|i| i.id },
    :listeners    => load_balancer.listeners.map {|i| export_listener(i) },
    :health_check => load_balancer.health_check,
    :scheme       => load_balancer.scheme,
    :dns_name     => load_balancer.dns_name,
    :attributes   => load_balancer.attributes,
  }

  if @options[:fetch_policies] and load_balancer.policies.first
    attrs[:policies] = h = {}
    load_balancer.policies.each {|i| h[i.name] = i.type }
  end

  if load_balancer.vpc_id
    attrs[:subnets] = load_balancer.subnets.map {|i| i.id }
    attrs[:security_groups] = load_balancer.security_groups.map {|i| i.name }
  else
    attrs[:availability_zones] = load_balancer.availability_zones.map {|i| i.name }
  end

  return attrs
end
export_policy(policy) click to toggle source
# File lib/kelbim/exporter.rb, line 75
def export_policy(policy)
  {
    :name       => policy.name,
    :type       => policy.type,
    :attributes => policy.attributes
  }
end