Class: AWS::EC2::RouteTable

Inherits:
Resource
  • Object
show all
Includes:
TaggedItem
Defined in:
lib/aws/ec2/route_table/route.rb,
lib/aws/ec2/route_table.rb,
lib/aws/ec2/route_table/association.rb

Overview

Represents a single route in a RouteTable.

# enumerating routes within a route table
ec2 = AWS::EC2.new
route_table = ec2.route_tables.first
route_table.routes.each do |route|
  # ...  
end

Defined Under Namespace

Classes: Association, Route

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from TaggedItem

#add_tag, #clear_tags, #tags

Constructor Details

#initialize(route_table_id, options = {}) ⇒ RouteTable

Returns a new instance of RouteTable.



24
25
26
27
# File 'lib/aws/ec2/route_table.rb', line 24

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

Instance Attribute Details

#route_table_idString (readonly) Also known as: id

Returns:

  • (String)


30
31
32
# File 'lib/aws/ec2/route_table.rb', line 30

def route_table_id
  @route_table_id
end

Instance Method Details

#associationsArray<RouteTable::Association>

Returns an array of Association objects (association to subnets).

Returns:



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

def associations
  association_set.collect do |details| 
    subnet_id = details.respond_to?(:subnet_id) ? details.subnet_id : nil
    Association.new(self, details.route_table_association_id, subnet_id)
  end
end

#create_route(destination_cidr_block, options = {}) ⇒ nil

Creates a new route in this route route. The route must be attached to a gateway, instance or network interface.

Parameters:

  • destination_cidr_block (String)

    The CIDR address block used for the destination match. For example: 0.0.0.0/0. Routing decisions are based on the most specific match.

  • options (Hash) (defaults to: {})

Options Hash (options):

Returns:

  • (nil)


145
146
147
148
# File 'lib/aws/ec2/route_table.rb', line 145

def create_route destination_cidr_block, options = {}
  client.create_route(route_options(destination_cidr_block, options))
  nil
end

#deletenil

Deletes this route table. The route table must not be associated with a subnet. You can’t delete the main route table.

Returns:

  • (nil)


170
171
172
173
# File 'lib/aws/ec2/route_table.rb', line 170

def delete
  client.delete_route_table(:route_table_id => route_table_id)
  nil
end

#delete_route(destination_cidr_block) ⇒ nil

Parameters:

  • destination_cidr_block (String)

    The CIDR block address of the route to delete.

Returns:

  • (nil)


162
163
164
165
# File 'lib/aws/ec2/route_table.rb', line 162

def delete_route destination_cidr_block
  client.delete_route(route_options(destination_cidr_block))
  nil
end

#main?Boolean

Returns true if this is the main (default) route table.

Returns:

  • (Boolean)

    Returns true if this is the main (default) route table.



54
55
56
57
# File 'lib/aws/ec2/route_table.rb', line 54

def main?
  @main = !!associations.find{|a| a.main? } if @main.nil?
  @main
end

#replace_route(destination_cidr_block, options = {}) ⇒ nil

Replaces an existing route within a route table in a VPC.

Parameters:

  • destination_cidr_block (String)

    The CIDR address block used for the destination match. For example: 0.0.0.0/0. Routing decisions are based on the most specific match.

  • options (Hash) (defaults to: {})

Options Hash (options):

Returns:

  • (nil)


154
155
156
157
# File 'lib/aws/ec2/route_table.rb', line 154

def replace_route destination_cidr_block, options = {}
  client.replace_route(route_options(destination_cidr_block, options))
  nil
end

#routesArray<Route>

Returns an array of routes (Route objects) belonging to this route table.

Returns:

  • (Array<Route>)

    Returns an array of routes (Route objects) belonging to this route table.



117
118
119
120
121
# File 'lib/aws/ec2/route_table.rb', line 117

def routes
  route_set.map do |route_details|
    Route.new(self, route_details)
  end
end

#subnetsArray<Subnet>

Returns an array of subnets (Subnet) that currently associated to this route table.

Returns:

  • (Array<Subnet>)

    Returns an array of subnets (Subnet) that currently associated to this route table.



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/aws/ec2/route_table.rb', line 66

def subnets

  subnets = associations.map(&:subnet)

  # The default route table has a single association where #subnet
  # returns nil (the main association).  If this is not the main
  # route table we can safely return the subnets.  
  return subnets unless subnets.include?(nil)

  subnets.compact!

  # This is the default route table and to get the complete list of
  # subnets we have to find all subnets without an association
  AWS.memoize do

    # every subnet
    all_subnets = vpc.subnets.to_a

    # subnets assigned directly to a route table
    associated_subnets = vpc.route_tables.  
      map(&:associations).flatten.
      map(&:subnet).flatten.
      compact

    # subnets NOT assigned to a route table, these default as
    # belonging to the default route table through the "main" 
    # association
    unassociated_subnets = all_subnets.inject([]) do |list,subnet|
      unless associated_subnets.include?(subnet)
        list << subnet
      end
      list
    end

    subnets + unassociated_subnets

  end

end

#vpcVPC

Returns the VPC this route table belongs to.

Returns:

  • (VPC)

    Returns the VPC this route table belongs to.



60
61
62
# File 'lib/aws/ec2/route_table.rb', line 60

def vpc
  VPC.new(vpc_id, :config => config)
end