class AWS::EC2::ElasticIp

@attr_reader [String,nil] instance_id Returns the instance id if

assigned to an EC2 instance, nil otherwise.

@attr_reader [String,nil] allocation_id

The ID representing the allocation of the address for use with Amazon 
VPC.

@attr_reader [String] domain Indicates whether this elastic ip address

is for EC2 instances ('standard') or VPC instances ('vpc').

@attr_reader [String,nil] association_id The ID of the association

between this elastic ip address and an EC2 VPC instance (VPC only).

@attr_reader [String,nil] network_interface_id The ID of the network

interface (VPC only).

@attr_reader [String,nil] network_interface_owner_id

The ID of the AWS account that owns the network interface (VPC only).

Attributes

ip_address[R]

@return [String] The public IP address.

public_ip[R]

@return [String] The public IP address.

Public Class Methods

new(public_ip, options = {}) click to toggle source
Calls superclass method
# File lib/aws/ec2/elastic_ip.rb, line 38
def initialize public_ip, options = {}
  @public_ip = public_ip
  super
end

Protected Class Methods

describe_call_name() click to toggle source

@private

# File lib/aws/ec2/elastic_ip.rb, line 202
def self.describe_call_name
  :describe_addresses
end

Public Instance Methods

associate(options) click to toggle source

Associates this elastic IP address with an instance or a network interface. You may provide :instance or :network_interface but not both options.

# associate with an instance
eip.associate :instance => 'i-12345678'

# associate with a network interface
eip.associate :network_interface => 'ni-12345678'

@param [Hash] options

@option options [String,Instance] :instance The id of an instance

or an {Instance} object.

@option options [String,NetworkInterface] :network_interface The id

of a network interface or a {NetworkInterface} object.

@return [String] Returns the resulting association id.

# File lib/aws/ec2/elastic_ip.rb, line 132
def associate options

  client_opts = {}

  [:instance,:network_interface].each do |opt|
    if value = options[opt]
      client_opts[:"#{opt}_id"] = value.is_a?(Resource) ? value.id : value
    end
  end

  if vpc?
    client_opts[:allocation_id] = allocation_id
  else
    client_opts[:public_ip] = public_ip
  end

  resp = client.associate_address(client_opts)
  resp.data[:association_id]

end
associated?() click to toggle source

@return [Boolean] Returns true if this IP address is associated

with an EC2 instance or a network interface.
# File lib/aws/ec2/elastic_ip.rb, line 73
def associated?
  !!(instance_id || association_id)
end
Also aliased as: attached?
attached?()
Alias for: associated?
delete() click to toggle source

Releases the elastic IP address.

(For non-VPC elastic ips) Releasing an IP address automatically disassociates it from any instance it’s associated with.

@return [nil]

# File lib/aws/ec2/elastic_ip.rb, line 102
def delete
  if vpc?
    client.release_address(:allocation_id => allocation_id)
  else
    client.release_address(:public_ip => public_ip)
  end
  nil
end
Also aliased as: release
disassociate() click to toggle source

Disassociates this elastic IP address from an EC2 instance. Raises an exception if this elastic IP is not currently associated with an instance. @return [nil]

# File lib/aws/ec2/elastic_ip.rb, line 157
def disassociate
  if vpc?
    client.disassociate_address(:association_id => association_id)
  else
    client.disassociate_address(:public_ip => public_ip)
  end
  nil
end
exists?() click to toggle source

@return [Boolean] Returns true the elastic ip address exists in

your account.
# File lib/aws/ec2/elastic_ip.rb, line 168
def exists?
  begin
    get_resource
    true
  rescue Errors::InvalidAddress::NotFound
    false
  end
end
instance() click to toggle source

@return [Instance,nil] If associated, returns the {Instance} this

elastic IP address is associated to, nil otherwise.
# File lib/aws/ec2/elastic_ip.rb, line 81
def instance
  if instance_id = self.instance_id
    Instance.new(instance_id, :config => config)
  end
end
network_interface() click to toggle source

@return [NetworkInterface,nil] Returns the network interface this

elastic ip is associated with.  Returns +nil+ if this is not
associated with an elastic ip address.
# File lib/aws/ec2/elastic_ip.rb, line 90
def network_interface
  if nid = network_interface_id
    NetworkInterface.new(nid, :config => config)
  end
end
release()
Alias for: delete
to_s() click to toggle source

@return [String] Returns the public IP address

# File lib/aws/ec2/elastic_ip.rb, line 178
def to_s
  public_ip.to_s
end
vpc?() click to toggle source

@return [Boolean] Returns true if this is an EC2 VPC Elastic IP.

# File lib/aws/ec2/elastic_ip.rb, line 67
def vpc?
  domain == 'vpc'
end

Protected Instance Methods

describe_call_name() click to toggle source

@private

# File lib/aws/ec2/elastic_ip.rb, line 196
def describe_call_name
  :describe_addresses
end
resource_id_method() click to toggle source

@private

# File lib/aws/ec2/elastic_ip.rb, line 184
def resource_id_method
  :public_ip
end
response_id_method() click to toggle source

@private

# File lib/aws/ec2/elastic_ip.rb, line 190
def response_id_method
  :public_ip
end