We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Route Tables: update describe_route_tables to support additional route types (VPC peering connection, NIC)
Routes can be created to network interfaces and VPC peering connections, however these routes are not reflected properly in the DescribeRouteTables response.

Doc here:
- http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeRouteTables.html

...however, the doc does not provide actual examples of the AWS response for these routes.

As such, I've repro'ed both route types and captured the AWS response XML here:

```
import boto, boto.vpc
conn = boto.vpc.connect_to_region('us-west-1')

vpc1 = conn.create_vpc("10.0.0.0/16");
vpc2 = conn.create_vpc("11.0.0.0/16");
route_table1 = conn.get_all_route_tables(filters={'association.main':'true','vpc-id':vpc1.id})[0]

# PCX route
vpc_pcx = conn.create_vpc_peering_connection(vpc1.id, vpc2.id)
conn.create_route(route_table1.id, "11.0.0.0/16", vpc_peering_connection_id=vpc_pcx.id)

# NIC route
subnet = conn.create_subnet(vpc1.id, "10.0.0.0/18")
eni = conn.create_network_interface(subnet.id)
conn.create_route(route_table1.id, "10.0.0.0/15", interface_id=eni.id)

# Describe route table
In [21]: route_table1 = conn.get_all_route_tables(filters={'association.main':'true','vpc-id':vpc1.id})[0]
2014-09-09 23:11:07,715 boto [DEBUG]:Method: GET
2014-09-09 23:11:07,715 boto [DEBUG]:Path: /
2014-09-09 23:11:07,715 boto [DEBUG]:Data: 
2014-09-09 23:11:07,715 boto [DEBUG]:Headers: {}
2014-09-09 23:11:07,715 boto [DEBUG]:Host: ec2.us-west-1.amazonaws.com
2014-09-09 23:11:07,716 boto [DEBUG]:Port: 443
2014-09-09 23:11:07,716 boto [DEBUG]:Params: {'Filter.1.Name': 'association.main', 'Filter.2.Value.1': u'vpc-3f658b5a', 'Action': 'DescribeRouteTables', 'Version': '2014-05-01', 'Filter.2.Name': 'vpc-id', 'Filter.1.Value.1': 'true'}
2014-09-09 23:11:07,716 boto [DEBUG]:Token: None
2014-09-09 23:11:07,717 boto [DEBUG]:using _calc_signature_2
2014-09-09 23:11:07,717 boto [DEBUG]:query string: AWSAccessKeyId=AKIAI7ZA6HB42ZXF3LOA&Action=DescribeRouteTables&Filter.1.Name=association.main&Filter.1.Value.1=true&Filter.2.Name=vpc-id&Filter.2.Value.1=vpc-3f658b5a&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2014-09-09T23%3A11%3A07Z&Version=2014-05-01
2014-09-09 23:11:07,718 boto [DEBUG]:string_to_sign: GET
ec2.us-west-1.amazonaws.com
/
AWSAccessKeyId=AKIAI7ZA6HB42ZXF3LOA&Action=DescribeRouteTables&Filter.1.Name=association.main&Filter.1.Value.1=true&Filter.2.Name=vpc-id&Filter.2.Value.1=vpc-3f658b5a&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2014-09-09T23%3A11%3A07Z&Version=2014-05-01
2014-09-09 23:11:07,718 boto [DEBUG]:len(b64)=44
2014-09-09 23:11:07,718 boto [DEBUG]:base64 encoded digest: qAcNssrx85LkIJIUymuvM7dB1v527ogS8PGrsicg1f4=
2014-09-09 23:11:07,718 boto [DEBUG]:query_string: AWSAccessKeyId=AKIAI7ZA6HB42ZXF3LOA&Action=DescribeRouteTables&Filter.1.Name=association.main&Filter.1.Value.1=true&Filter.2.Name=vpc-id&Filter.2.Value.1=vpc-3f658b5a&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2014-09-09T23%3A11%3A07Z&Version=2014-05-01 Signature: qAcNssrx85LkIJIUymuvM7dB1v527ogS8PGrsicg1f4=
2014-09-09 23:11:07,718 boto [DEBUG]:Final headers: {'Content-Length': 0, 'Host': 'ec2.us-west-1.amazonaws.com', 'User-Agent': 'Boto/2.32.1 Python/2.6.5 Linux/2.6.32-45-server'}
2014-09-09 23:11:07,840 boto [DEBUG]:Response headers: [('transfer-encoding', 'chunked'), ('vary', 'Accept-Encoding'), ('server', 'AmazonEC2'), ('content-type', 'text/xml;charset=UTF-8'), ('date', 'Tue, 09 Sep 2014 23:11:07 GMT')]
2014-09-09 23:11:07,840 boto [DEBUG]:<?xml version="1.0" encoding="UTF-8"?>
<DescribeRouteTablesResponse xmlns="http://ec2.amazonaws.com/doc/2014-05-01/">
    <requestId>e22ff1da-fb06-4e0f-bda6-8555c18f0af6</requestId>
    <routeTableSet>
        <item>
            <routeTableId>rtb-a754bcc2</routeTableId>
            <vpcId>vpc-3f658b5a</vpcId>
            <routeSet>
                <item>
                    <destinationCidrBlock>10.0.0.0/16</destinationCidrBlock>
                    <gatewayId>local</gatewayId>
                    <state>active</state>
                    <origin>CreateRouteTable</origin>
                </item>
                <item>
                    <destinationCidrBlock>11.0.0.0/16</destinationCidrBlock>
                    <vpcPeeringConnectionId>pcx-efc52b86</vpcPeeringConnectionId>
                    <state>blackhole</state>
                    <origin>CreateRoute</origin>
                </item>
                <item>
                    <destinationCidrBlock>10.0.0.0/15</destinationCidrBlock>
                    <networkInterfaceId>eni-884ec1d1</networkInterfaceId>
                    <state>blackhole</state>
                    <origin>CreateRoute</origin>
                </item>
            </routeSet>
            <associationSet>
                <item>
                    <routeTableAssociationId>rtbassoc-111ef574</routeTableAssociationId>
                    <routeTableId>rtb-a754bcc2</routeTableId>
                    <main>true</main>
                </item>
            </associationSet>
            <propagatingVgwSet/>
            <tagSet/>
        </item>
    </routeTableSet>
</DescribeRouteTablesResponse>
```


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `boto/vpc/routetable.py`
Content:
```
1 # Copyright (c) 2009-2010 Mitch Garnaat http://garnaat.org/
2 #
3 # Permission is hereby granted, free of charge, to any person obtaining a
4 # copy of this software and associated documentation files (the
5 # "Software"), to deal in the Software without restriction, including
6 # without limitation the rights to use, copy, modify, merge, publish, dis-
7 # tribute, sublicense, and/or sell copies of the Software, and to permit
8 # persons to whom the Software is furnished to do so, subject to the fol-
9 # lowing conditions:
10 #
11 # The above copyright notice and this permission notice shall be included
12 # in all copies or substantial portions of the Software.
13 #
14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
16 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
17 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
18 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20 # IN THE SOFTWARE.
21 
22 """
23 Represents a Route Table
24 """
25 
26 from boto.ec2.ec2object import TaggedEC2Object
27 from boto.resultset import ResultSet
28 
29 class RouteTable(TaggedEC2Object):
30 
31     def __init__(self, connection=None):
32         super(RouteTable, self).__init__(connection)
33         self.id = None
34         self.vpc_id = None
35         self.routes = []
36         self.associations = []
37 
38     def __repr__(self):
39         return 'RouteTable:%s' % self.id
40 
41     def startElement(self, name, attrs, connection):
42         result = super(RouteTable, self).startElement(name, attrs, connection)
43 
44         if result is not None:
45             # Parent found an interested element, just return it
46             return result
47 
48         if name == 'routeSet':
49             self.routes = ResultSet([('item', Route)])
50             return self.routes
51         elif name == 'associationSet':
52             self.associations = ResultSet([('item', RouteAssociation)])
53             return self.associations
54         else:
55             return None
56 
57     def endElement(self, name, value, connection):
58         if name == 'routeTableId':
59             self.id = value
60         elif name == 'vpcId':
61             self.vpc_id = value
62         else:
63             setattr(self, name, value)
64 
65 class Route(object):
66     def __init__(self, connection=None):
67         self.destination_cidr_block = None
68         self.gateway_id = None
69         self.instance_id = None
70         self.state = None
71 
72     def __repr__(self):
73         return 'Route:%s' % self.destination_cidr_block
74 
75     def startElement(self, name, attrs, connection):
76         return None
77 
78     def endElement(self, name, value, connection):
79         if name == 'destinationCidrBlock':
80             self.destination_cidr_block = value
81         elif name == 'gatewayId':
82             self.gateway_id = value
83         elif name == 'instanceId':
84             self.instance_id = value
85         elif name == 'state':
86             self.state = value
87 
88 class RouteAssociation(object):
89     def __init__(self, connection=None):
90         self.id = None
91         self.route_table_id = None
92         self.subnet_id = None
93         self.main = False
94 
95     def __repr__(self):
96         return 'RouteAssociation:%s' % self.id
97 
98     def startElement(self, name, attrs, connection):
99         return None
100 
101     def endElement(self, name, value, connection):
102         if name == 'routeTableAssociationId':
103             self.id = value
104         elif name == 'routeTableId':
105             self.route_table_id = value
106         elif name == 'subnetId':
107             self.subnet_id = value
108         elif name == 'main':
109             self.main = value == 'true'
110
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/boto/vpc/routetable.py b/boto/vpc/routetable.py
--- a/boto/vpc/routetable.py
+++ b/boto/vpc/routetable.py
@@ -67,6 +67,8 @@
         self.destination_cidr_block = None
         self.gateway_id = None
         self.instance_id = None
+        self.interface_id = None
+        self.vpc_peering_connection_id = None
         self.state = None
 
     def __repr__(self):
@@ -82,6 +84,10 @@
             self.gateway_id = value
         elif name == 'instanceId':
             self.instance_id = value
+        elif name == 'networkInterfaceId':
+            self.interface_id = value
+        elif name == 'vpcPeeringConnectionId':
+            self.vpc_peering_connection_id = value
         elif name == 'state':
             self.state = value

{"golden_diff": "diff --git a/boto/vpc/routetable.py b/boto/vpc/routetable.py\n--- a/boto/vpc/routetable.py\n+++ b/boto/vpc/routetable.py\n@@ -67,6 +67,8 @@\n         self.destination_cidr_block = None\n         self.gateway_id = None\n         self.instance_id = None\n+        self.interface_id = None\n+        self.vpc_peering_connection_id = None\n         self.state = None\n \n     def __repr__(self):\n@@ -82,6 +84,10 @@\n             self.gateway_id = value\n         elif name == 'instanceId':\n             self.instance_id = value\n+        elif name == 'networkInterfaceId':\n+            self.interface_id = value\n+        elif name == 'vpcPeeringConnectionId':\n+            self.vpc_peering_connection_id = value\n         elif name == 'state':\n             self.state = value\n", "issue": "Route Tables: update describe_route_tables to support additional route types (VPC peering connection, NIC)\nRoutes can be created to network interfaces and VPC peering connections, however these routes are not reflected properly in the DescribeRouteTables response.\n\nDoc here:\n- http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeRouteTables.html\n\n...however, the doc does not provide actual examples of the AWS response for these routes.\n\nAs such, I've repro'ed both route types and captured the AWS response XML here:\n\n```\nimport boto, boto.vpc\nconn = boto.vpc.connect_to_region('us-west-1')\n\nvpc1 = conn.create_vpc(\"10.0.0.0/16\");\nvpc2 = conn.create_vpc(\"11.0.0.0/16\");\nroute_table1 = conn.get_all_route_tables(filters={'association.main':'true','vpc-id':vpc1.id})[0]\n\n# PCX route\nvpc_pcx = conn.create_vpc_peering_connection(vpc1.id, vpc2.id)\nconn.create_route(route_table1.id, \"11.0.0.0/16\", vpc_peering_connection_id=vpc_pcx.id)\n\n# NIC route\nsubnet = conn.create_subnet(vpc1.id, \"10.0.0.0/18\")\neni = conn.create_network_interface(subnet.id)\nconn.create_route(route_table1.id, \"10.0.0.0/15\", interface_id=eni.id)\n\n# Describe route table\nIn [21]: route_table1 = conn.get_all_route_tables(filters={'association.main':'true','vpc-id':vpc1.id})[0]\n2014-09-09 23:11:07,715 boto [DEBUG]:Method: GET\n2014-09-09 23:11:07,715 boto [DEBUG]:Path: /\n2014-09-09 23:11:07,715 boto [DEBUG]:Data: \n2014-09-09 23:11:07,715 boto [DEBUG]:Headers: {}\n2014-09-09 23:11:07,715 boto [DEBUG]:Host: ec2.us-west-1.amazonaws.com\n2014-09-09 23:11:07,716 boto [DEBUG]:Port: 443\n2014-09-09 23:11:07,716 boto [DEBUG]:Params: {'Filter.1.Name': 'association.main', 'Filter.2.Value.1': u'vpc-3f658b5a', 'Action': 'DescribeRouteTables', 'Version': '2014-05-01', 'Filter.2.Name': 'vpc-id', 'Filter.1.Value.1': 'true'}\n2014-09-09 23:11:07,716 boto [DEBUG]:Token: None\n2014-09-09 23:11:07,717 boto [DEBUG]:using _calc_signature_2\n2014-09-09 23:11:07,717 boto [DEBUG]:query string: AWSAccessKeyId=AKIAI7ZA6HB42ZXF3LOA&Action=DescribeRouteTables&Filter.1.Name=association.main&Filter.1.Value.1=true&Filter.2.Name=vpc-id&Filter.2.Value.1=vpc-3f658b5a&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2014-09-09T23%3A11%3A07Z&Version=2014-05-01\n2014-09-09 23:11:07,718 boto [DEBUG]:string_to_sign: GET\nec2.us-west-1.amazonaws.com\n/\nAWSAccessKeyId=AKIAI7ZA6HB42ZXF3LOA&Action=DescribeRouteTables&Filter.1.Name=association.main&Filter.1.Value.1=true&Filter.2.Name=vpc-id&Filter.2.Value.1=vpc-3f658b5a&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2014-09-09T23%3A11%3A07Z&Version=2014-05-01\n2014-09-09 23:11:07,718 boto [DEBUG]:len(b64)=44\n2014-09-09 23:11:07,718 boto [DEBUG]:base64 encoded digest: qAcNssrx85LkIJIUymuvM7dB1v527ogS8PGrsicg1f4=\n2014-09-09 23:11:07,718 boto [DEBUG]:query_string: AWSAccessKeyId=AKIAI7ZA6HB42ZXF3LOA&Action=DescribeRouteTables&Filter.1.Name=association.main&Filter.1.Value.1=true&Filter.2.Name=vpc-id&Filter.2.Value.1=vpc-3f658b5a&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2014-09-09T23%3A11%3A07Z&Version=2014-05-01 Signature: qAcNssrx85LkIJIUymuvM7dB1v527ogS8PGrsicg1f4=\n2014-09-09 23:11:07,718 boto [DEBUG]:Final headers: {'Content-Length': 0, 'Host': 'ec2.us-west-1.amazonaws.com', 'User-Agent': 'Boto/2.32.1 Python/2.6.5 Linux/2.6.32-45-server'}\n2014-09-09 23:11:07,840 boto [DEBUG]:Response headers: [('transfer-encoding', 'chunked'), ('vary', 'Accept-Encoding'), ('server', 'AmazonEC2'), ('content-type', 'text/xml;charset=UTF-8'), ('date', 'Tue, 09 Sep 2014 23:11:07 GMT')]\n2014-09-09 23:11:07,840 boto [DEBUG]:<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<DescribeRouteTablesResponse xmlns=\"http://ec2.amazonaws.com/doc/2014-05-01/\">\n    <requestId>e22ff1da-fb06-4e0f-bda6-8555c18f0af6</requestId>\n    <routeTableSet>\n        <item>\n            <routeTableId>rtb-a754bcc2</routeTableId>\n            <vpcId>vpc-3f658b5a</vpcId>\n            <routeSet>\n                <item>\n                    <destinationCidrBlock>10.0.0.0/16</destinationCidrBlock>\n                    <gatewayId>local</gatewayId>\n                    <state>active</state>\n                    <origin>CreateRouteTable</origin>\n                </item>\n                <item>\n                    <destinationCidrBlock>11.0.0.0/16</destinationCidrBlock>\n                    <vpcPeeringConnectionId>pcx-efc52b86</vpcPeeringConnectionId>\n                    <state>blackhole</state>\n                    <origin>CreateRoute</origin>\n                </item>\n                <item>\n                    <destinationCidrBlock>10.0.0.0/15</destinationCidrBlock>\n                    <networkInterfaceId>eni-884ec1d1</networkInterfaceId>\n                    <state>blackhole</state>\n                    <origin>CreateRoute</origin>\n                </item>\n            </routeSet>\n            <associationSet>\n                <item>\n                    <routeTableAssociationId>rtbassoc-111ef574</routeTableAssociationId>\n                    <routeTableId>rtb-a754bcc2</routeTableId>\n                    <main>true</main>\n                </item>\n            </associationSet>\n            <propagatingVgwSet/>\n            <tagSet/>\n        </item>\n    </routeTableSet>\n</DescribeRouteTablesResponse>\n```\n\n", "before_files": [{"content": "# Copyright (c) 2009-2010 Mitch Garnaat http://garnaat.org/\n#\n# Permission is hereby granted, free of charge, to any person obtaining a\n# copy of this software and associated documentation files (the\n# \"Software\"), to deal in the Software without restriction, including\n# without limitation the rights to use, copy, modify, merge, publish, dis-\n# tribute, sublicense, and/or sell copies of the Software, and to permit\n# persons to whom the Software is furnished to do so, subject to the fol-\n# lowing conditions:\n#\n# The above copyright notice and this permission notice shall be included\n# in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-\n# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT\n# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n# IN THE SOFTWARE.\n\n\"\"\"\nRepresents a Route Table\n\"\"\"\n\nfrom boto.ec2.ec2object import TaggedEC2Object\nfrom boto.resultset import ResultSet\n\nclass RouteTable(TaggedEC2Object):\n\n    def __init__(self, connection=None):\n        super(RouteTable, self).__init__(connection)\n        self.id = None\n        self.vpc_id = None\n        self.routes = []\n        self.associations = []\n\n    def __repr__(self):\n        return 'RouteTable:%s' % self.id\n\n    def startElement(self, name, attrs, connection):\n        result = super(RouteTable, self).startElement(name, attrs, connection)\n\n        if result is not None:\n            # Parent found an interested element, just return it\n            return result\n\n        if name == 'routeSet':\n            self.routes = ResultSet([('item', Route)])\n            return self.routes\n        elif name == 'associationSet':\n            self.associations = ResultSet([('item', RouteAssociation)])\n            return self.associations\n        else:\n            return None\n\n    def endElement(self, name, value, connection):\n        if name == 'routeTableId':\n            self.id = value\n        elif name == 'vpcId':\n            self.vpc_id = value\n        else:\n            setattr(self, name, value)\n\nclass Route(object):\n    def __init__(self, connection=None):\n        self.destination_cidr_block = None\n        self.gateway_id = None\n        self.instance_id = None\n        self.state = None\n\n    def __repr__(self):\n        return 'Route:%s' % self.destination_cidr_block\n\n    def startElement(self, name, attrs, connection):\n        return None\n\n    def endElement(self, name, value, connection):\n        if name == 'destinationCidrBlock':\n            self.destination_cidr_block = value\n        elif name == 'gatewayId':\n            self.gateway_id = value\n        elif name == 'instanceId':\n            self.instance_id = value\n        elif name == 'state':\n            self.state = value\n\nclass RouteAssociation(object):\n    def __init__(self, connection=None):\n        self.id = None\n        self.route_table_id = None\n        self.subnet_id = None\n        self.main = False\n\n    def __repr__(self):\n        return 'RouteAssociation:%s' % self.id\n\n    def startElement(self, name, attrs, connection):\n        return None\n\n    def endElement(self, name, value, connection):\n        if name == 'routeTableAssociationId':\n            self.id = value\n        elif name == 'routeTableId':\n            self.route_table_id = value\n        elif name == 'subnetId':\n            self.subnet_id = value\n        elif name == 'main':\n            self.main = value == 'true'\n", "path": "boto/vpc/routetable.py"}], "after_files": [{"content": "# Copyright (c) 2009-2010 Mitch Garnaat http://garnaat.org/\n#\n# Permission is hereby granted, free of charge, to any person obtaining a\n# copy of this software and associated documentation files (the\n# \"Software\"), to deal in the Software without restriction, including\n# without limitation the rights to use, copy, modify, merge, publish, dis-\n# tribute, sublicense, and/or sell copies of the Software, and to permit\n# persons to whom the Software is furnished to do so, subject to the fol-\n# lowing conditions:\n#\n# The above copyright notice and this permission notice shall be included\n# in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-\n# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT\n# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n# IN THE SOFTWARE.\n\n\"\"\"\nRepresents a Route Table\n\"\"\"\n\nfrom boto.ec2.ec2object import TaggedEC2Object\nfrom boto.resultset import ResultSet\n\nclass RouteTable(TaggedEC2Object):\n\n    def __init__(self, connection=None):\n        super(RouteTable, self).__init__(connection)\n        self.id = None\n        self.vpc_id = None\n        self.routes = []\n        self.associations = []\n\n    def __repr__(self):\n        return 'RouteTable:%s' % self.id\n\n    def startElement(self, name, attrs, connection):\n        result = super(RouteTable, self).startElement(name, attrs, connection)\n\n        if result is not None:\n            # Parent found an interested element, just return it\n            return result\n\n        if name == 'routeSet':\n            self.routes = ResultSet([('item', Route)])\n            return self.routes\n        elif name == 'associationSet':\n            self.associations = ResultSet([('item', RouteAssociation)])\n            return self.associations\n        else:\n            return None\n\n    def endElement(self, name, value, connection):\n        if name == 'routeTableId':\n            self.id = value\n        elif name == 'vpcId':\n            self.vpc_id = value\n        else:\n            setattr(self, name, value)\n\nclass Route(object):\n    def __init__(self, connection=None):\n        self.destination_cidr_block = None\n        self.gateway_id = None\n        self.instance_id = None\n        self.interface_id = None\n        self.vpc_peering_connection_id = None\n        self.state = None\n\n    def __repr__(self):\n        return 'Route:%s' % self.destination_cidr_block\n\n    def startElement(self, name, attrs, connection):\n        return None\n\n    def endElement(self, name, value, connection):\n        if name == 'destinationCidrBlock':\n            self.destination_cidr_block = value\n        elif name == 'gatewayId':\n            self.gateway_id = value\n        elif name == 'instanceId':\n            self.instance_id = value\n        elif name == 'networkInterfaceId':\n            self.interface_id = value\n        elif name == 'vpcPeeringConnectionId':\n            self.vpc_peering_connection_id = value\n        elif name == 'state':\n            self.state = value\n\nclass RouteAssociation(object):\n    def __init__(self, connection=None):\n        self.id = None\n        self.route_table_id = None\n        self.subnet_id = None\n        self.main = False\n\n    def __repr__(self):\n        return 'RouteAssociation:%s' % self.id\n\n    def startElement(self, name, attrs, connection):\n        return None\n\n    def endElement(self, name, value, connection):\n        if name == 'routeTableAssociationId':\n            self.id = value\n        elif name == 'routeTableId':\n            self.route_table_id = value\n        elif name == 'subnetId':\n            self.subnet_id = value\n        elif name == 'main':\n            self.main = value == 'true'\n", "path": "boto/vpc/routetable.py"}]}