Module Rudy::AWS::EC2::Addresses

  1. lib/rudy/aws/ec2/address.rb

Included modules

  1. Rudy::AWS::EC2

Public class methods

from_hash (h)
[show source]
     # File lib/rudy/aws/ec2/address.rb, line 119
119:       def self.from_hash(h)
120:         # requestId: 5ebcad80-eed9-4221-86f6-8d19d7acffe4
121:         # addressesSet: 
122:         #   item: 
123:         #   - publicIp: 75.101.137.7
124:         #     instanceId:
125:         address = Rudy::AWS::EC2::Address.new
126:         address.ipaddress = h['publicIp']
127:         address.instid = h['instanceId'] if h['instanceId'] && !h['instanceId'].empty?
128:         address
129:       end

Public instance methods

any? ()
[show source]
     # File lib/rudy/aws/ec2/address.rb, line 109
109:       def any?
110:         !list_as_hash.nil?
111:       end
associate (address, instance)

Associate an elastic IP to an instance

[show source]
    # File lib/rudy/aws/ec2/address.rb, line 50
50:       def associate(address, instance)
51:         raise NoInstanceID unless instance
52:         raise NoAddress unless address
53:         
54:         address = address.ipaddress if address.is_a?(Rudy::AWS::EC2::Address)
55:         instance = instance.awsid if instance.is_a?(Rudy::AWS::EC2::Instance)
56:         raise UnknownAddress, address unless exists?(address)
57:         raise AddressAssociated, address if associated?(address)
58:         
59:         opts ={
60:           :instance_id => instance,
61:           :public_ip => address
62:         }
63:         ret = @@ec2.associate_address(opts)
64:         (ret && ret['return'] == 'true')
65:       end
associated? (address)

address is an IP address or Rudy::AWS::EC2::Address object Returns true if the given address is associated to an instance

[show source]
     # File lib/rudy/aws/ec2/address.rb, line 144
144:       def associated?(address)
145:         address = address.ipaddress if address.is_a?(Rudy::AWS::EC2::Address)
146:         (list || []).each do |a|
147:           return true if a.ipaddress == address && a.instid
148:         end
149:         false
150:       end
create ()
[show source]
    # File lib/rudy/aws/ec2/address.rb, line 29
29:       def create
30:         ret = @@ec2.allocate_address
31:         return false unless ret && ret['publicIp']
32:         address = Rudy::AWS::EC2::Address.new
33:         address.ipaddress = ret['publicIp']
34:         address
35:       end
destroy (address)
[show source]
    # File lib/rudy/aws/ec2/address.rb, line 37
37:       def destroy(address)
38:         address = address.ipaddress if address.is_a?(Rudy::AWS::EC2::Address)
39:         raise UnknownAddress unless exists?(address)
40:         
41:         opts ={
42:           :public_ip => address || raise("No public IP address supplied")
43:         }
44:         ret = @@ec2.release_address(opts)
45:         (ret && ret['return'] == 'true')
46:       end
disassociate (address)

Disssociate an elastic IP from an instance

[show source]
    # File lib/rudy/aws/ec2/address.rb, line 68
68:       def disassociate(address)
69:         raise NoAddress unless address
70:         address = address.ipaddress if address.is_a?(Rudy::AWS::EC2::Address)
71:         instance = instance.awsid if instance.is_a?(Rudy::AWS::EC2::Instance)
72:         raise UnknownAddress unless exists?(address)
73:         raise AddressNotAssociated unless associated?(address)
74:         
75:         opts ={
76:           :public_ip => address
77:         }
78:         ret = @@ec2.disassociate_address(opts)
79:         (ret && ret['return'] == 'true')
80:       end
exists? (address)

address is an IP address or Rudy::AWS::EC2::Address object Returns true if the given address is assigned to the current account

[show source]
     # File lib/rudy/aws/ec2/address.rb, line 134
134:       def exists?(address)
135:         address = address.ipaddress if address.is_a?(Rudy::AWS::EC2::Address)
136:         (list || []).each do |a|
137:           return true if a.ipaddress == address
138:         end
139:         false
140:       end
get (address)
[show source]
     # File lib/rudy/aws/ec2/address.rb, line 113
113:       def get(address)
114:         raise "Address cannot be nil" if address.nil?
115:         address = address.ipaddress if address.is_a?(Rudy::AWS::EC2::Address)
116:         (list(address) || []).first
117:       end
list (addresses=[])

Returns a Array of Rudy::AWS::EC2::Address objects.

[show source]
    # File lib/rudy/aws/ec2/address.rb, line 85
85:       def list(addresses=[])
86:         addresses = list_as_hash(addresses)
87:         addresses &&= addresses.values
88:         addresses
89:       end
list_as_hash (addresses=[])

Returns a Hash of Rudy::AWS::EC2::Address objects. The key of the IP address.

[show source]
     # File lib/rudy/aws/ec2/address.rb, line 92
 92:       def list_as_hash(addresses=[])
 93:         addresses ||= []
 94:         addresses = [addresses].flatten.compact
 95:         alist = @@ec2.describe_addresses(:addresses=> addresses)
 96:         
 97:         return nil unless alist['addressesSet'].is_a?(Hash)
 98:       
 99:         addresses = {}
100:         alist['addressesSet']['item'].each do |address|
101:           address = Addresses.from_hash(address)
102:           addresses[address.ipaddress] = address
103:         end
104:         addresses = nil if addresses.empty?
105:         addresses
106:       end