Sha256: 6496c57a9ab17538eb65714c54cdab0589f9e50544b85a28ac3f0c842cddd5c7

Contents?: true

Size: 1.27 KB

Versions: 3

Compression:

Stored size: 1.27 KB

Contents

require_relative 'instance'

class AwsEc2List::DescribeInstances
  attr_reader :ec2, :stdout, :columns

  def initialize(ec2: Aws::EC2::Client,
                 stdout: $stdout,
                 region: 'us-east-1',
                 columns: "project, stack_name, public_dns_name, launch_time, app_version, state")

    @ec2 = ec2.new(region: region)
    @stdout = stdout
    @columns = columns
  end

  def call
    data_header = columns.split(", ")

    data = instances.map do |d|
      data_header.map do |header|
        d.send(header)
      end
    end

    data = data.insert(0, data_header)
    stdout.puts Tabularize.it(data, :align => :left).map { |row| row.join ' | ' }
  end

  private

  def instances
    reservations.map(&:instances).flatten.map do |instance|
      AwsEc2List::Instance.new(
        instance_id: instance.instance_id,
        state: instance.state.name,
        private_dns_name: instance.private_dns_name,
        public_dns_name: instance.public_dns_name,
        instance_type: instance.instance_type,
        launch_time: instance.launch_time,
        tags: instance.tags
      )
    end.sort{ |x, y| y.launch_time <=> x.launch_time }
  end

  def reservations
    describe_instances.reservations
  end

  def describe_instances
    ec2.describe_instances
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
aws-ec2-list-0.2.3 lib/aws_ec2_list/describe_instances.rb
aws-ec2-list-0.2.2 lib/aws_ec2_list/describe_instances.rb
aws-ec2-list-0.2.1 lib/aws_ec2_list/describe_instances.rb