Class: EC2::Host::ClientUtil

Inherits:
Object
  • Object
show all
Defined in:
lib/ec2/host/client_util.rb

Class Method Summary collapse

Class Method Details

.ec2(reload = false) ⇒ Object



7
8
9
10
11
12
# File 'lib/ec2/host/client_util.rb', line 7

def self.ec2(reload = false)
  if @ec2.nil? || reload
    @ec2 = Aws::EC2::Client.new(region: Config.aws_region, credentials: Config.aws_credentials)
  end
  @ec2
end

.instance_idObject



32
33
34
35
36
37
38
39
40
41
# File 'lib/ec2/host/client_util.rb', line 32

def self.instance_id
  return @instance_id if @instance_id
  begin
    http_conn = Net::HTTP.new('169.254.169.254')
    http_conn.open_timeout = 5
    @instance_id = http_conn.start {|http| http.get('/latest/meta-data/instance-id').body }
  rescue Net::OpenTimeout
    raise "HTTP connection to 169.254.169.254 is timeout. Probably, not an EC2 instance?"
  end
end

.instances(condition) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/ec2/host/client_util.rb', line 14

def self.instances(condition)
  describe_instances =
    if instance_id = condition[:instance_id]
      ec2.describe_instances(instance_ids: Array(instance_id))
    elsif role = (condition[:role] || condition[:usage]) and role.size == 1
      ec2.describe_instances(filters: [{name: "tag:#{Config.roles_tag}", values: ["*#{role.first}*"]}])
    elsif role1 = (condition[:role1] || condition[:usage1]) and role1.size == 1
      ec2.describe_instances(filters: [{name: "tag:#{Config.roles_tag}", values: ["*#{role1.first}*"]}])
    elsif role2 = (condition[:role2] || condition[:usage2]) and role2.size == 1
      ec2.describe_instances(filters: [{name: "tag:#{Config.roles_tag}", values: ["*#{role2.first}*"]}])
    elsif role3 = (condition[:role3] || condition[:usage3]) and role3.size == 1
      ec2.describe_instances(filters: [{name: "tag:#{Config.roles_tag}", values: ["*#{role3.first}*"]}])
    else
      ec2.describe_instances
    end
  describe_instances.reservations.map(&:instances).flatten
end