class ElasticLoadBalancing

Collect ELB resources

Public Instance Methods

collect() click to toggle source

Returns an array of resources.

# File lib/aws_recon/collectors/elasticloadbalancing.rb, line 10
def collect
  resources = []

  #
  # describe_load_balancers
  #
  @client.describe_load_balancers.each_with_index do |response, page|
    log(response.context.operation_name, page)

    response.load_balancer_descriptions.each do |elb|
      struct = OpenStruct.new(elb.to_h)
      struct.type = 'load_balancer'
      struct.arn = elb.dns_name
      struct.load_balancer_version = 'v1'

      # describe_load_balancer_policies
      struct.policies = @client
                        .describe_load_balancer_policies({ load_balancer_name: elb.load_balancer_name })
                        .policy_descriptions.map(&:to_h)

      # describe_load_balancer_attributes
      struct.attributes = @client
                          .describe_load_balancer_attributes({ load_balancer_name: elb.load_balancer_name })
                          .load_balancer_attributes.to_h

      # describe_tags
      struct.tags = @client
                    .describe_tags({ load_balancer_names: [elb.load_balancer_name] })
                    .tag_descriptions.map(&:tags)
                    .flatten.map(&:to_h)

      resources.push(struct.to_h)
    end
  end

  resources
end