Class: Ec2list::Instances

Inherits:
Object
  • Object
show all
Defined in:
lib/ec2list.rb

Instance Method Summary collapse

Constructor Details

#initialize(opts) ⇒ Instances

Returns a new instance of Instances.



8
9
10
11
12
13
14
# File 'lib/ec2list.rb', line 8

def initialize(opts)
  @profile = opts[:profile]
  @status = opts[:status]
  @tag = opts[:tag]
  Aws.config[:region] = opts[:region]
  Aws.config[:credentials] = Aws::SharedCredentials.new(profile_name: @profile)
end

Instance Method Details

#all_instancesObject



50
51
52
# File 'lib/ec2list.rb', line 50

def all_instances
  reservations.map { |x| x.instances }.flatten.map { |ec2| Instance.new ec2 }
end

#display_columnsObject



26
27
28
# File 'lib/ec2list.rb', line 26

def display_columns
  %i(id type tag status fqdn ip_addr private_addr since)
end

#ec2Object



16
17
18
# File 'lib/ec2list.rb', line 16

def ec2
  @ec2 ||= Aws::EC2::Client.new
end

#filterObject



54
55
56
57
58
59
60
61
62
63
# File 'lib/ec2list.rb', line 54

def filter
  if @status
    {
      name: 'instance-state-name',
      values: [@status]
    }
  else
    {}
  end
end

#instance_listObject



30
31
32
# File 'lib/ec2list.rb', line 30

def instance_list
  instances.sort_by(&:tag)
end

#instancesObject



42
43
44
45
46
47
48
# File 'lib/ec2list.rb', line 42

def instances
  if @tag
    all_instances.select { |instance| instance.cont?(@tag) }
  else
   all_instances
  end
end

#reservationsObject



38
39
40
# File 'lib/ec2list.rb', line 38

def reservations
  ec2.describe_instances(filters: [filter]).reservations
end

#resultObject



20
21
22
23
24
# File 'lib/ec2list.rb', line 20

def result
  instances.map { |instance|
    display_columns.zip(display_columns.map { |col| instance.send(col) }).to_h
  }
end

#values(keys) ⇒ Object



34
35
36
# File 'lib/ec2list.rb', line 34

def values(keys)
  result.map { |x| keys.map { |k| x[k] }.join (' ') }.compact.sort
end