def external_gateway_removed(self, ri, ex_gw_port, interface_name):
if ri.router['distributed']:
self.process_router_floating_ip_nat_rules(ri)
- interface_name = self._get_external_device_interface_name(
+ to_fip_interface_name = self._get_external_device_interface_name(
ri, ex_gw_port)
- self.process_router_floating_ip_addresses(ri, interface_name)
+ self.process_router_floating_ip_addresses(
+ ri, to_fip_interface_name)
for p in ri.internal_ports:
internal_interface = self.get_internal_device_name(p['id'])
self._snat_redirect_remove(ri, p, internal_interface)
from neutron.agent.linux import dhcp
from neutron.agent.linux import external_process
from neutron.agent.linux import ip_lib
+from neutron.agent.linux import ovs_lib
from neutron.agent.metadata import agent as metadata_agent
from neutron.common import config as common_config
from neutron.common import constants as l3_constants
for extra_route in router.router['routes']:
self.assertIn(extra_route, routes)
+ def _assert_interfaces_deleted_from_ovs(self):
+ def assert_ovs_bridge_empty(bridge_name):
+ bridge = ovs_lib.OVSBridge(bridge_name, self.root_helper)
+ self.assertFalse(bridge.get_port_name_list())
+
+ assert_ovs_bridge_empty(self.agent.conf.ovs_integration_bridge)
+ assert_ovs_bridge_empty(self.agent.conf.external_network_bridge)
+
class L3AgentTestCase(L3AgentTestFramework):
def test_observer_notifications_legacy_router(self):
self._delete_router(self.agent, router.router_id)
+ self._assert_interfaces_deleted_from_ovs()
self._assert_router_does_not_exist(router)
if enable_ha:
self.assertFalse(router.keepalived_manager.process.active)
self._assert_extra_routes(router)
self._delete_router(self.agent, router.router_id)
+ self._assert_interfaces_deleted_from_ovs()
self._assert_router_does_not_exist(router)
def generate_dvr_router_info(self, enable_ha=False, enable_snat=False):
elif action == 'remove':
self.device_exists.return_value = True
agent.external_gateway_removed(ri, ex_gw_port, interface_name)
- self.assertEqual(self.mock_driver.unplug.call_count, 1)
+ self.mock_driver.unplug.assert_called_once_with(
+ interface_name,
+ bridge=agent.conf.external_network_bridge,
+ namespace=mock.ANY,
+ prefix=mock.ANY)
else:
raise Exception("Invalid action %s" % action)