Class: EC2Ctl::Client

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

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ Client

Returns a new instance of Client.



5
6
7
# File 'lib/ec2ctl/client.rb', line 5

def initialize(config = {})
  @ec2_resource = Aws::EC2::Resource.new(config)
end

Instance Method Details

#instance_infos(attributes = [], search = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ec2ctl/client.rb', line 9

def instance_infos(attributes = [], search = {})
  @ec2_resource.instances.inject Array.new do |acc, instance|
    instance_info = attributes.inject Hash.new do |acc, attribute|
      acc[attribute] = case attribute
      when /\Atag:/i
        instance.tags.find {|tag| tag.key == attribute.split(":").last}.value
      else
        attribute.split(".").map(&:intern).inject instance.data do |acc, method|
          acc.send method
        end
      end

      acc
    end

    if search.empty?
      acc.push instance_info
    else
      acc.push instance_info if search.all? {|sk, sv| instance_info[sk].match Regexp.new(sv)}
    end

    acc
  end
end