Fix check_subnet_router filters

Device owner of router ports is not limited to network:router_interface
and can also be network:router_interface_distributed or
network:ha_router_replicated_interface depending on the router
to which port is attached.

Currently, when HA router is used, trove fails with:
`Subnet is not associated with router` since port does not pass filter

Change-Id: Ie8b3884dd13147f29d5632275fa5c75e801e04c8
(cherry picked from commit d5497179d4)
This commit is contained in:
Dmitriy Rabotyagov 2021-04-13 16:31:33 +03:00 committed by Dmitriy Rabotyagov
parent 368915a29d
commit 003b98a73e
1 changed files with 6 additions and 0 deletions

View File

@ -81,6 +81,12 @@ def check_subnet_router(client, subnet_id):
"""Check if the subnet is associated with a router.""" """Check if the subnet is associated with a router."""
router_ports = client.list_ports( router_ports = client.list_ports(
device_owner="network:router_interface", device_owner="network:router_interface",
fixed_ips=f"subnet_id={subnet_id}"
)["ports"] + client.list_ports(
device_owner="network:router_interface_distributed",
fixed_ips=f"subnet_id={subnet_id}"
)["ports"] + client.list_ports(
device_owner="network:ha_router_replicated_interface",
fixed_ips=f"subnet_id={subnet_id}")["ports"] fixed_ips=f"subnet_id={subnet_id}")["ports"]
if not router_ports: if not router_ports:
raise exception.TroveError(f"Subnet {subnet_id} is not " raise exception.TroveError(f"Subnet {subnet_id} is not "