from ._base_response import EC2BaseResponse
from moto.utilities.utils import str2bool
class TransitGatewayRouteTable(EC2BaseResponse):
def create_transit_gateway_route_table(self):
transit_gateway_id = self._get_param("TransitGatewayId")
tags = self._get_multi_param("TagSpecifications")
tags = tags[0] if isinstance(tags, list) and len(tags) == 1 else tags
tags = (tags or {}).get("Tag", [])
tags = {t["Key"]: t["Value"] for t in tags}
transit_gateway_route_table = (
self.ec2_backend.create_transit_gateway_route_table(
transit_gateway_id=transit_gateway_id, tags=tags
)
)
template = self.response_template(CREATE_TRANSIT_GATEWAY_ROUTE_TABLE_RESPONSE)
return template.render(transit_gateway_route_table=transit_gateway_route_table)
def describe_transit_gateway_route_tables(self):
filters = self._filters_from_querystring()
transit_gateway_route_table_ids = (
self._get_multi_param("TransitGatewayRouteTableIds") or None
)
transit_gateway_route_tables = (
self.ec2_backend.get_all_transit_gateway_route_tables(
transit_gateway_route_table_ids, filters
)
)
template = self.response_template(DESCRIBE_TRANSIT_GATEWAY_ROUTE_TABLE_RESPONSE)
return template.render(
transit_gateway_route_tables=transit_gateway_route_tables
)
def delete_transit_gateway_route_table(self):
transit_gateway_route_table_id = self._get_param("TransitGatewayRouteTableId")
transit_gateway_route_table = (
self.ec2_backend.delete_transit_gateway_route_table(
transit_gateway_route_table_id
)
)
template = self.response_template(DELETE_TRANSIT_GATEWAY_ROUTE_TABLE_RESPONSE)
return template.render(transit_gateway_route_table=transit_gateway_route_table)
def create_transit_gateway_route(self):
transit_gateway_attachment_id = self._get_param("TransitGatewayAttachmentId")
destination_cidr_block = self._get_param("DestinationCidrBlock")
transit_gateway_route_table_id = self._get_param("TransitGatewayRouteTableId")
blackhole = str2bool(self._get_param("Blackhole"))
transit_gateways_route_table = self.ec2_backend.create_transit_gateway_route(
destination_cidr_block=destination_cidr_block,
transit_gateway_route_table_id=transit_gateway_route_table_id,
transit_gateway_attachment_id=transit_gateway_attachment_id,
blackhole=blackhole,
)
template = self.response_template(CREATE_TRANSIT_GATEWAY_ROUTE_RESPONSE)
return template.render(
transit_gateway_route_table=transit_gateways_route_table,
destination_cidr_block=destination_cidr_block,
)
def delete_transit_gateway_route(self):
destination_cidr_block = self._get_param("DestinationCidrBlock")
transit_gateway_route_table_id = self._get_param("TransitGatewayRouteTableId")
transit_gateway_route_table = self.ec2_backend.delete_transit_gateway_route(
destination_cidr_block=destination_cidr_block,
transit_gateway_route_table_id=transit_gateway_route_table_id,
)
template = self.response_template(DELETE_TRANSIT_GATEWAY_ROUTE_RESPONSE)
rendered_template = template.render(
transit_gateway_route_table=transit_gateway_route_table,
destination_cidr_block=destination_cidr_block,
)
del transit_gateway_route_table.routes[destination_cidr_block]
return rendered_template
def search_transit_gateway_routes(self):
transit_gateway_route_table_id = self._get_param("TransitGatewayRouteTableId")
filters = self._filters_from_querystring()
max_results = self._get_param("MaxResults")
transit_gateway_routes = self.ec2_backend.search_transit_gateway_routes(
transit_gateway_route_table_id=transit_gateway_route_table_id,
filters=filters,
max_results=max_results,
)
template = self.response_template(SEARCH_TRANSIT_GATEWAY_ROUTES_RESPONSE)
return template.render(transit_gateway_routes=transit_gateway_routes)
def get_transit_gateway_route_table_associations(self):
transit_gateway_route_table_id = self._get_param("TransitGatewayRouteTableId")
filters = self._filters_from_querystring()
transit_gateway_route_table_associations = (
self.ec2_backend.get_all_transit_gateway_route_table_associations(
transit_gateway_route_table_id, filters
)
)
template = self.response_template(
GET_TRANSIT_GATEWAY_ROUTE_TABLE_ASSOCIATIONS_RESPONSE
)
return template.render(
transit_gateway_route_table_associations=transit_gateway_route_table_associations
)
def get_transit_gateway_route_table_propagations(self):
transit_gateway_route_table_id = self._get_param("TransitGatewayRouteTableId")
filters = self._filters_from_querystring()
transit_gateway_route_table_propagations = (
self.ec2_backend.get_all_transit_gateway_route_table_propagations(
transit_gateway_route_table_id, filters
)
)
template = self.response_template(
GET_TRANSIT_GATEWAY_ROUTE_TABLE_PROPAGATIONS_RESPONSE
)
return template.render(
transit_gateway_route_table_propagations=transit_gateway_route_table_propagations
)
CREATE_TRANSIT_GATEWAY_ROUTE_TABLE_RESPONSE = """
3a495d25-08d4-466d-822e-477c9b1fc606
{{ transit_gateway_route_table.create_time }}
{{ transit_gateway_route_table.default_association_route_table }}
{{ transit_gateway_route_table.default_propagation_route_table }}
{{ transit_gateway_route_table.state }}
{{ transit_gateway_route_table.transit_gateway_id }}
{{ transit_gateway_route_table.id }}
{% for tag in transit_gateway_route_table.get_tags() %}
-
{{ tag.key }}
{{ tag.value }}
{% endfor %}
"""
DESCRIBE_TRANSIT_GATEWAY_ROUTE_TABLE_RESPONSE = """
f9dea58a-7bb3-458b-a40d-0b7ae32eefdb
{% for transit_gateway_route_table in transit_gateway_route_tables %}
-
{{ transit_gateway_route_table.create_time }}
{{ transit_gateway_route_table.default_association_route_table }}
{{ transit_gateway_route_table.default_propagation_route_table }}
{{ transit_gateway_route_table.state }}
{% for tag in transit_gateway_route_table.get_tags() %}
-
{{ tag.key }}
{{ tag.value }}
{% endfor %}
{{ transit_gateway_route_table.transit_gateway_id }}
{{ transit_gateway_route_table.id }}
{% endfor %}
"""
DELETE_TRANSIT_GATEWAY_ROUTE_TABLE_RESPONSE = """
a9a07226-c7b1-4305-9934-0bcfc3ef1c5e
{{ transit_gateway_route_table.create_time }}
{{ transit_gateway_route_table.default_association_route_table }}
{{ transit_gateway_route_table.default_propagation_route_table }}
{{ transit_gateway_route_table.state }}
{{ transit_gateway_route_table.transit_gateway_id }}
{{ transit_gateway_route_table.id }}
"""
CREATE_TRANSIT_GATEWAY_ROUTE_RESPONSE = """
072b02ce-df3a-4de6-a20b-6653ae4b91a4
{{ transit_gateway_route_table.destinationCidrBlock }}
{{ transit_gateway_route_table.state }}
{{ transit_gateway_route_table.type }}
{% if transit_gateway_route_table.state != 'blackhole' and transit_gateway_route_table.transitGatewayAttachments %}
-
{{ transit_gateway_route_table.transitGatewayAttachments.resourceId }}
{{ transit_gateway_route_table.transitGatewayAttachments.resourceType }}
{{ transit_gateway_route_table.transitGatewayAttachments.transitGatewayAttachmentId }}
{% endif %}
"""
DELETE_TRANSIT_GATEWAY_ROUTE_RESPONSE = """
2109d5bb-f874-4f35-b419-4723792a638f
{{ transit_gateway_route_table.routes[destination_cidr_block].destinationCidrBlock }}
{{ transit_gateway_route_table.routes[destination_cidr_block].state }}
{{ transit_gateway_route_table.routes[destination_cidr_block].type }}
"""
SEARCH_TRANSIT_GATEWAY_ROUTES_RESPONSE = """
04b46ad2-5a0e-46db-afe4-68679a193b48
{% for route in transit_gateway_routes %}
-
{{ transit_gateway_routes[route].destinationCidrBlock }}
{{ transit_gateway_routes[route].state }}
{{ transit_gateway_routes[route].type }}
{% if transit_gateway_routes[route].get('transitGatewayAttachments') %}
-
{{ transit_gateway_routes[route].transitGatewayAttachments.resourceId }}
{{ transit_gateway_routes[route].transitGatewayAttachments.resourceType }}
{{ transit_gateway_routes[route].transitGatewayAttachments.transitGatewayAttachmentId }}
{% endif %}
{% endfor %}
false
"""
GET_TRANSIT_GATEWAY_ROUTE_TABLE_ASSOCIATIONS_RESPONSE = """
92fdc91d-c374-4217-b2b4-33f2fb0a2be7
{% for route_table in transit_gateway_route_table_associations %}
-
{{ route_table.route_table_association.resourceId }}
{{ route_table.route_table_association.resourceType }}
{{ route_table.route_table_association.state }}
{{ route_table.route_table_association.transitGatewayAttachmentId }}
{% endfor %}
"""
GET_TRANSIT_GATEWAY_ROUTE_TABLE_PROPAGATIONS_RESPONSE = """
541bc42d-9ed9-4aef-a5f7-2ea32fbdec16
{% for route_table in transit_gateway_route_table_propagations %}
-
{{ route_table.route_table_propagation.resourceId }}
{{ route_table.route_table_propagation.resourceType }}
{{ route_table.route_table_propagation.state }}
{{ route_table.route_table_propagation.transitGatewayAttachmentId }}
{% endfor %}
"""