Class: Awful::Vpc

Inherits:
Cli show all
Defined in:
lib/awful/vpc.rb

Constant Summary collapse

COLORS =
{
  active: :green,
  available: :green,
  deleted: :red,
  expired: :red,
  failed: :red,
  rejected: :red,
}

Instance Method Summary collapse

Methods inherited from Cli

#initialize, #ll, #version

Constructor Details

This class inherits a constructor from Awful::Cli

Instance Method Details

#delete(vpc_id) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/awful/vpc.rb', line 37

def delete(vpc_id)
  if yes?("Really delete vpc #{vpc_id}?", :yellow)
    p ec2.delete_vpc(vpc_id: vpc_id)
  end
rescue Aws::EC2::Errors::DependencyViolation => e
  error(e.message)
rescue Aws::EC2::Errors::InvalidVpcIDNotFound => e
  error(e.message)
end

#dump(name) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/awful/vpc.rb', line 28

def dump(name)
  ec2.describe_vpcs.map(&:vpcs).flatten.find do |vpc|
    vpc.vpc_id == name or vpc.tags.any? { |tag| tag.value == name }
  end.tap do |vpc|
    puts YAML.dump(stringify_keys(vpc.to_hash))
  end
end

#ls(name = /./) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/awful/vpc.rb', line 14

def ls(name = /./)
  fields = options[:long] ?
    ->(v) { [tag_name(v), v.vpc_id, color(v.state), v.cidr_block] } :
    ->(v) { [v.vpc_id] }
  ec2.describe_vpcs.map(&:vpcs).flatten.select do |vpc|
    vpc.tags.any? { |tag| tag.value.match(name) }
  end.map do |vpc|
    fields.call(vpc)
  end.tap do |list|
    print_table list
  end
end

#peersObject



48
49
50
51
52
53
54
55
56
57
58
# File 'lib/awful/vpc.rb', line 48

def peers
  ec2.describe_vpc_peering_connections.map(&:vpc_peering_connections).flatten.map do |p|
    [
      tag_name(p, '-'), p.vpc_peering_connection_id, color(p.status.code),
      p.requester_vpc_info.vpc_id, p.accepter_vpc_info.vpc_id,
      p.requester_vpc_info.cidr_block, p.accepter_vpc_info.cidr_block,
    ]
  end.tap do |list|
    print_table list.sort
  end
end