Methods
public class
public instance
Included modules
Public class methods
# 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
# File lib/rudy/aws/ec2/address.rb, line 109 109: def any? 110: !list_as_hash.nil? 111: end
Associate an elastic IP to an instance
# 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
address is an IP address or Rudy::AWS::EC2::Address object Returns true if the given address is associated to an instance
# 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
# 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
# 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
Disssociate an elastic IP from an instance
# 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
address is an IP address or Rudy::AWS::EC2::Address object Returns true if the given address is assigned to the current account
# 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
# 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
Returns a Array of Rudy::AWS::EC2::Address objects.
# 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
Returns a Hash of Rudy::AWS::EC2::Address objects. The key of the IP address.
# 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