Class: Larrow::Qingcloud::Eip

Inherits:
Base
  • Object
show all
Defined in:
lib/larrow/qingcloud/eip.rb

Overview

External address

Constant Summary

Constants inherited from Base

Base::DESTROY_STATUSES

Instance Attribute Summary collapse

Attributes inherited from Base

#delegator, #id, #status

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

conn, #conn, describe, destroy_action, #initialize, #method_missing, #model_name, model_name, #param_by, param_by, plural_name, #show, singular_name

Methods included from Logger

#debug, #err, included, #info

Constructor Details

This class inherits a constructor from Larrow::Qingcloud::Base

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Larrow::Qingcloud::Base

Instance Attribute Details

#addressObject

Returns the value of attribute address.



5
6
7
# File 'lib/larrow/qingcloud/eip.rb', line 5

def address
  @address
end

Class Method Details

.create(bandwidth: 1, count: 1) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/larrow/qingcloud/eip.rb', line 8

def self.create(bandwidth:1, count:1)
  result = conn.service 'get', 'AllocateEips',
                        bandwidth: bandwidth,
                        count: count

  info "EIP added: #{result['eips']}"
  result['eips'].map do |id| 
    promise(timeout:60){ new(id).wait_for :available }
  end
end

Instance Method Details

#associate(instance_id) ⇒ Object



25
26
27
28
29
30
# File 'lib/larrow/qingcloud/eip.rb', line 25

def associate(instance_id)
  conn.service 'get', 'AssociateEip',
               instance: instance_id,
               eip: id
  promise(timeout:60){ wait_for :associated }
end

#dissociate(instance_id) ⇒ Object

cannot support batch dissociating



33
34
35
36
37
38
# File 'lib/larrow/qingcloud/eip.rb', line 33

def dissociate(instance_id)
  conn.service 'get', 'DissociateEips',
               :instance => instance_id,
               :'eips.1'  => id
  promise(timeout:60){ wait_for :available }
end

#wait_for(status) ⇒ Object



19
20
21
22
23
# File 'lib/larrow/qingcloud/eip.rb', line 19

def wait_for(status)
  super do |data|
    self.address = data['eip_addr']
  end
end