Class: Otc::ECS

Inherits:
Hashie::Dash
  • Object
show all
Defined in:
lib/otc/ecs.rb

Constant Summary collapse

ATTRIBUTES =
[
  "name", "id", "status", "created", "updated", "flavor", "image", "tenant_id", "key_name", 
  "user_id", "metadata", "hostId", "addresses", "security_groups", "tags", "links", "progress"
]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.query_all(name: nil) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/otc/ecs.rb', line 6

def query_all(name: nil)
  response = Request.get service: "ecs", path: "/v2/#{Configuration.project!}/servers/detail?name=#{name}"
  JSON.parse(response.body)["servers"].map do |server|
    keys_to_delete = server.keys - ECS::ATTRIBUTES
    keys_to_delete.each { |key| server.delete(key) }

    ECS.new(server)
  end
end

.query_one(name: nil) ⇒ Object



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

def query_one(name: nil)
  query_all(name: name).first
end

Instance Method Details

#public_ipObject



28
29
30
31
32
33
34
35
36
37
# File 'lib/otc/ecs.rb', line 28

def public_ip
  @_public_ip ||= begin
    private_addresses = self.addresses.values.flatten.map { |val| val["addr"] }

    eip = EIP.query_all.select { |ip| private_addresses.include?(ip.private_ip_address) }.first
    if eip
      eip.public_ip_address
    end
  end
end