From 003b98a73e5da99eadcc1806f3e0cc9a109ea1cb Mon Sep 17 00:00:00 2001 From: Dmitriy Rabotyagov Date: Tue, 13 Apr 2021 16:31:33 +0300 Subject: [PATCH] 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 d5497179d4789ef1c22ad8f9a39c719459241a62) --- trove/common/neutron.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/trove/common/neutron.py b/trove/common/neutron.py index 1c11dcb175..9f82eb16fb 100644 --- a/trove/common/neutron.py +++ b/trove/common/neutron.py @@ -81,6 +81,12 @@ def check_subnet_router(client, subnet_id): """Check if the subnet is associated with a router.""" router_ports = client.list_ports( 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"] if not router_ports: raise exception.TroveError(f"Subnet {subnet_id} is not "