Class: AWS::EC2::RouteTable::Association

Inherits:
Object
  • Object
show all
Defined in:
lib/aws/ec2/route_table/association.rb

Overview

Represents the association between a AWS::EC2::RouteTable and a Subnet.

You can get a route table association 2 ways:

  • enumerating associations from a route table

  • Asking a subnet for its route table association

Enumerating Associations

Given a route table:

route_table.associations.each do |assoc|
  if assoc.main? # main association does not have a subnet
    puts "#{assoc.id} : main association"
  else
    puts "#{assoc.id} : #{assoc.subnet.id}"
  end
end

Getting a Subnet Route Table Association

All subnets are associated with a route table. If the association was never explicitly created, then they are associated by default with the main route table.

subnet.route_table_association #=> AWS::EC2::RouteTable::Association

subnet.route_table_association.main? #=> true/false

Creating and Replacing a Route Table Association

To replace a route table association start at the subnet end:

subnet.route_table = some_other_route_table

If this route table is associated (by default) to the main route table via the main (default) association a new association is created. If it was previously associated directly to a different route table then that association will be repalced.

Deleting an Association

You can delete all but the main route table association. When you delete an association, the subnet becomes associated with the main route table.

# delete all explicit route table associations -- as a result 
# all subnets will default to the main route table
vpc.subnets.each do |subnet|
  assoc = subnet.route_table_association
  assoc.delete unless assoc.main?
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(route_table, association_id, subnet_id) ⇒ Association

Returns a new instance of Association.


74
75
76
77
78
79
80
81
82
83
84
# File 'lib/aws/ec2/route_table/association.rb', line 74

def initialize route_table, association_id, subnet_id
  @route_table = route_table
  @association_id = association_id
  if subnet_id
    @main = false
    @subnet = Subnet.new(subnet_id,
      :config => route_table.config)
  else
    @main = true
  end
end

Instance Attribute Details

#association_idString (readonly) Also known as: id

Returns An identifier representing the association between the network ACL and subnet.

Returns:

  • (String)

    An identifier representing the association between the network ACL and subnet.


88
89
90
# File 'lib/aws/ec2/route_table/association.rb', line 88

def association_id
  @association_id
end

#mainBoolean (readonly) Also known as: main?

Returns true if this association is the main (default) association for all subnets within this route table's VPC.

Returns:

  • (Boolean)

    Returns true if this association is the main (default) association for all subnets within this route table's VPC.


103
104
105
# File 'lib/aws/ec2/route_table/association.rb', line 103

def main
  @main
end

#route_tableRouteTable (readonly)

Returns:


93
94
95
# File 'lib/aws/ec2/route_table/association.rb', line 93

def route_table
  @route_table
end

#subnetSubnet? (readonly)

Returns the subnet this association belongs. If this is the main (default) association, then this method returns nil.

Returns:

  • (Subnet, nil)

    Returns the subnet this association belongs. If this is the main (default) association, then this method returns nil.


98
99
100
# File 'lib/aws/ec2/route_table/association.rb', line 98

def subnet
  @subnet
end

Instance Method Details

#deletenil Also known as: disassociate

Deletes the association between the route table and the subnet

Returns:

  • (nil)

109
110
111
112
113
# File 'lib/aws/ec2/route_table/association.rb', line 109

def delete
  route_table.client.disassociate_route_table(
    :association_id => association_id)
  nil
end