':returns: item_list - list of route tables.
:returns: exception_map - A dict where the keys are a tuple containing the
location of the exception and the value is the actual exception'

def slurp(self):

    self.prep_for_slurp()
    @iter_account_region(index=self.index, accounts=self.accounts, service_name='ec2')
    def slurp_items(**kwargs):
        item_list = []
        exception_map = {}
        kwargs['exception_map'] = exception_map
        app.logger.debug('Checking    {}/{}/{}'.format(self.index, kwargs['account_name'], kwargs['region']))
        all_route_tables = self.describe_route_tables(**kwargs)
        if all_route_tables:
            app.logger.debug('Found    {}    {}'.format(len(all_route_tables), self.i_am_plural))
            for route_table in all_route_tables:
                tags = route_table.get('Tags', {})
                joined_tags = {}
                for tag in tags:
                    if (tag.get('Key') and tag.get('Value')):
                        joined_tags[tag['Key']] = tag['Value']
                subnet_name = joined_tags.get('Name')
                if subnet_name:
                    subnet_name = '{0}    ({1})'.format(subnet_name, route_table.get('RouteTableId'))
                else:
                    subnet_name = route_table.get('RouteTableId')
                if self.check_ignore_list(subnet_name):
                    continue
                routes = []
                for boto_route in route_table.get('Routes'):
                    routes.append({'destination_cidr_block': boto_route.get('DestinationCidrBlock'), 'gateway_id': boto_route.get('GatewayId'), 'instance_id': boto_route.get('InstanceId'), 'interface_id': boto_route.get('NetworkInterfaceId'), 'nat_gateway_id': boto_route.get('NatGatewayId'), 'state': boto_route.get('State'), 'vpc_peering_connection_id': boto_route.get('VpcPeeringConnectionId')})
                associations = []
                for boto_association in route_table.get('Associations'):
                    associations.append({'id': boto_association.get('RouteTableAssociationId'), 'main': boto_association.get('Main', False), 'subnet_id': boto_association.get('SubnetId')})
                arn = 'arn:aws:ec2:{region}:{account_number}:route-table/{route_table_id}'.format(region=kwargs['region'], account_number=kwargs['account_number'], route_table_id=route_table.get('RouteTableId'))
                config = {'name': joined_tags.get('Name'), 'arn': arn, 'id': route_table.get('RouteTableId'), 'routes': routes, 'tags': joined_tags, 'vpc_id': route_table.get('VpcId'), 'associations': associations}
                item = RouteTableItem(region=kwargs['region'], account=kwargs['account_name'], name=subnet_name, arn=arn, config=config)
                item_list.append(item)
        return (item_list, exception_map)
    return slurp_items()
