Sha256: 26bbcd30fcd240f49b97c63a75db68394600cd6f02db5265de9c28c7429063ab

Contents?: true

Size: 897 Bytes

Versions: 4

Compression:

Stored size: 897 Bytes

Contents

class Inventory::Ec2 < Inventory::Base
  def header
    ["Name", "Instance Id", "Instance Type", "Platform", "Security Groups"]
  end

  def data
    instances.map do |i|
      name = name_from_tag(i)
      group_names = security_group_names(i)

      [
        name,
        i.instance_id,
        i.instance_type,
        platform(i), # windows or linux
        group_names,
      ]
    end
  end

  def name_from_tag(instance)
    tags = instance.tags
    name_tag = tags.find { |t| t.key == "Name" }
    name_tag ? name_tag.value : "(unnamed)"
  end

  def security_group_names(instance)
    instance.security_groups.map {|sg| sg.group_name}.join(', ')
  end

  def cost(instance)
    cost_type = COST_MAP[instance.instance_type]
    if cost_type
      cost = cost_type[platform(instance)]
      cost.round(2)
    end
  end

  def platform(instance)
    instance.platform || "linux"
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
aws-inventory-0.3.2 lib/inventory/ec2.rb
aws-inventory-0.3.1 lib/inventory/ec2.rb
aws-inventory-0.3.0 lib/inventory/ec2.rb
aws-inventory-0.2.1 lib/inventory/ec2.rb