Class: AWS::EC2::ElasticIp

Inherits:
Resource
  • Object
show all
Defined in:
lib/aws/ec2/elastic_ip.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(public_ip, options = {}) ⇒ ElasticIp

Returns a new instance of ElasticIp.



38
39
40
41
# File 'lib/aws/ec2/elastic_ip.rb', line 38

def initialize public_ip, options = {}
  @public_ip = public_ip
  super
end

Instance Attribute Details

#allocation_idString? (readonly)

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

Returns:

  • (String, nil)

    the current value of allocation_id



36
37
38
# File 'lib/aws/ec2/elastic_ip.rb', line 36

def allocation_id
  @allocation_id
end

#association_idString? (readonly)

The ID of the association between this elastic ip address and an EC2 VPC instance (VPC only).

Returns:

  • (String, nil)

    the current value of association_id



36
37
38
# File 'lib/aws/ec2/elastic_ip.rb', line 36

def association_id
  @association_id
end

#domainString (readonly)

Indicates whether this elastic ip address is for EC2 instances ('standard') or VPC instances ('vpc').

Returns:

  • (String)

    the current value of domain



36
37
38
# File 'lib/aws/ec2/elastic_ip.rb', line 36

def domain
  @domain
end

#instance_idString? (readonly)

Returns the instance id if assigned to an EC2 instance, nil otherwise.

Returns:

  • (String, nil)

    the current value of instance_id



36
37
38
# File 'lib/aws/ec2/elastic_ip.rb', line 36

def instance_id
  @instance_id
end

#network_interface_idString? (readonly)

The ID of the network interface (VPC only).

Returns:

  • (String, nil)

    the current value of network_interface_id



36
37
38
# File 'lib/aws/ec2/elastic_ip.rb', line 36

def network_interface_id
  @network_interface_id
end

#network_interface_owner_idString? (readonly)

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

Returns:

  • (String, nil)

    the current value of network_interface_owner_id



36
37
38
# File 'lib/aws/ec2/elastic_ip.rb', line 36

def network_interface_owner_id
  @network_interface_owner_id
end

#public_ipString (readonly) Also known as: ip_address

Returns The public IP address.

Returns:

  • (String)

    The public IP address.



44
45
46
# File 'lib/aws/ec2/elastic_ip.rb', line 44

def public_ip
  @public_ip
end

Instance Method Details

#associate(options) ⇒ String

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'

Parameters:

  • options (Hash)

Options Hash (options):

Returns:

  • (String)

    Returns the resulting association id.



132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# 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?Boolean Also known as: attached?

Returns true if this IP address is associated with an EC2 instance or a network interface.

Returns:

  • (Boolean)

    Returns true if this IP address is associated with an EC2 instance or a network interface.



73
74
75
# File 'lib/aws/ec2/elastic_ip.rb', line 73

def associated?
  !!(instance_id || association_id)
end

#deletenil Also known as: release

Releases the elastic IP address.

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

Returns:

  • (nil)


102
103
104
105
106
107
108
109
# 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

#disassociatenil

Disassociates this elastic IP address from an EC2 instance. Raises an exception if this elastic IP is not currently associated with an instance.

Returns:

  • (nil)


157
158
159
160
161
162
163
164
# 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?Boolean

Returns true the elastic ip address exists in your account.

Returns:

  • (Boolean)

    Returns true the elastic ip address exists in your account.



168
169
170
171
172
173
174
175
# File 'lib/aws/ec2/elastic_ip.rb', line 168

def exists?
  begin
    get_resource
    true
  rescue Errors::InvalidAddress::NotFound
    false
  end
end

#instanceInstance?

Returns If associated, returns the Instance this elastic IP address is associated to, nil otherwise.

Returns:

  • (Instance, nil)

    If associated, returns the Instance this elastic IP address is associated to, nil otherwise.



81
82
83
84
85
# 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_interfaceNetworkInterface?

Returns the network interface this elastic ip is associated with. Returns nil if this is not associated with an elastic ip address.

Returns:

  • (NetworkInterface, nil)

    Returns the network interface this elastic ip is associated with. Returns nil if this is not associated with an elastic ip address.



90
91
92
93
94
# File 'lib/aws/ec2/elastic_ip.rb', line 90

def network_interface
  if nid = network_interface_id
    NetworkInterface.new(nid, :config => config)
  end
end

#to_sString

Returns the public IP address

Returns:

  • (String)

    Returns the public IP address



178
179
180
# File 'lib/aws/ec2/elastic_ip.rb', line 178

def to_s
  public_ip.to_s
end

#vpc?Boolean

Returns true if this is an EC2 VPC Elastic IP.

Returns:

  • (Boolean)

    Returns true if this is an EC2 VPC Elastic IP.



67
68
69
# File 'lib/aws/ec2/elastic_ip.rb', line 67

def vpc?
  domain == 'vpc'
end