EC2 - search_transit_gateway_routes -search by CIDR (#5020)
This commit is contained in:
parent
f8f6f6f1ee
commit
48e3cbec99
@ -138,13 +138,20 @@ class TransitGatewayRouteTableBackend(object):
|
|||||||
def search_transit_gateway_routes(
|
def search_transit_gateway_routes(
|
||||||
self, transit_gateway_route_table_id, filters, max_results=None
|
self, transit_gateway_route_table_id, filters, max_results=None
|
||||||
):
|
):
|
||||||
|
"""
|
||||||
|
The following filters are currently supported: type, state, route-search.exact-match
|
||||||
|
"""
|
||||||
transit_gateway_route_table = self.transit_gateways_route_tables.get(
|
transit_gateway_route_table = self.transit_gateways_route_tables.get(
|
||||||
transit_gateway_route_table_id
|
transit_gateway_route_table_id
|
||||||
)
|
)
|
||||||
if not transit_gateway_route_table:
|
if not transit_gateway_route_table:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
attr_pairs = (("type", "type"), ("state", "state"))
|
attr_pairs = (
|
||||||
|
("type", "type"),
|
||||||
|
("state", "state"),
|
||||||
|
("route-search.exact-match", "destinationCidrBlock"),
|
||||||
|
)
|
||||||
|
|
||||||
routes = transit_gateway_route_table.routes.copy()
|
routes = transit_gateway_route_table.routes.copy()
|
||||||
for key in transit_gateway_route_table.routes:
|
for key in transit_gateway_route_table.routes:
|
||||||
|
@ -446,6 +446,43 @@ def test_search_transit_gateway_routes_by_state():
|
|||||||
routes.should.equal([])
|
routes.should.equal([])
|
||||||
|
|
||||||
|
|
||||||
|
@mock_ec2
|
||||||
|
def test_search_transit_gateway_routes_by_routesearch():
|
||||||
|
client = boto3.client("ec2", region_name="us-west-2")
|
||||||
|
vpc = client.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]
|
||||||
|
subnet = client.create_subnet(VpcId=vpc["VpcId"], CidrBlock="10.0.1.0/24")["Subnet"]
|
||||||
|
|
||||||
|
tgw = client.create_transit_gateway(Description="description")
|
||||||
|
tgw_id = tgw["TransitGateway"]["TransitGatewayId"]
|
||||||
|
route_table = client.create_transit_gateway_route_table(TransitGatewayId=tgw_id)
|
||||||
|
transit_gateway_route_id = route_table["TransitGatewayRouteTable"][
|
||||||
|
"TransitGatewayRouteTableId"
|
||||||
|
]
|
||||||
|
|
||||||
|
attachment = client.create_transit_gateway_vpc_attachment(
|
||||||
|
TransitGatewayId=tgw_id, VpcId=vpc["VpcId"], SubnetIds=[subnet["SubnetId"]]
|
||||||
|
)
|
||||||
|
transit_gateway_attachment_id = attachment["TransitGatewayVpcAttachment"][
|
||||||
|
"TransitGatewayAttachmentId"
|
||||||
|
]
|
||||||
|
|
||||||
|
exported_cidr_ranges = ["172.17.0.0/24", "192.160.0.0/24"]
|
||||||
|
for route in exported_cidr_ranges:
|
||||||
|
client.create_transit_gateway_route(
|
||||||
|
DestinationCidrBlock=route,
|
||||||
|
TransitGatewayRouteTableId=transit_gateway_route_id,
|
||||||
|
TransitGatewayAttachmentId=transit_gateway_attachment_id,
|
||||||
|
)
|
||||||
|
|
||||||
|
for route in exported_cidr_ranges:
|
||||||
|
expected_route = client.search_transit_gateway_routes(
|
||||||
|
TransitGatewayRouteTableId=transit_gateway_route_id,
|
||||||
|
Filters=[{"Name": "route-search.exact-match", "Values": [route]}],
|
||||||
|
)
|
||||||
|
|
||||||
|
expected_route["Routes"][0]["DestinationCidrBlock"].should.equal(route)
|
||||||
|
|
||||||
|
|
||||||
@mock_ec2
|
@mock_ec2
|
||||||
def test_delete_transit_gateway_route():
|
def test_delete_transit_gateway_route():
|
||||||
ec2 = boto3.client("ec2", region_name="us-west-1")
|
ec2 = boto3.client("ec2", region_name="us-west-1")
|
||||||
|
Loading…
Reference in New Issue
Block a user