LOG.debug("Cannot delete bridge %s; it does not exist",
bridge_name)
- def remove_empty_bridges(self):
- for network_id in list(self.network_map.keys()):
- # NOTE(nick-ma-z): Don't remove pre-existing user-defined bridges
- phy_net = self.network_map[network_id].physical_network
- if phy_net and phy_net in self.bridge_mappings:
- continue
-
- bridge_name = self.get_bridge_name(network_id)
- if not self.get_tap_devices_count(bridge_name):
- self.delete_bridge(bridge_name)
- del self.network_map[network_id]
-
def remove_interface(self, bridge_name, interface_name):
bridge_device = bridge_lib.BridgeDevice(bridge_name)
if bridge_device.exists():
self.lbm.delete_bridge("br0")
del_int.assert_called_once_with("eth1.1")
- def test_remove_empty_bridges(self):
- self.lbm.network_map = {'net1': mock.Mock(), 'net2': mock.Mock()}
-
- def tap_count_side_effect(*args):
- return 0 if args[0] == 'brqnet1' else 1
-
- with mock.patch.object(self.lbm, "delete_bridge") as del_br_fn,\
- mock.patch.object(self.lbm,
- "get_tap_devices_count",
- side_effect=tap_count_side_effect):
- self.lbm.remove_empty_bridges()
- del_br_fn.assert_called_once_with('brqnet1')
-
- def test_remove_empty_bridges_with_existed_brq(self):
- phy_net = mock.Mock()
- phy_net.physical_network = 'physnet0'
- self.lbm.network_map = {'net1': mock.Mock(),
- 'net2': mock.Mock(),
- 'net3': phy_net}
-
- def tap_count_side_effect(*args):
- return 0
-
- with mock.patch.object(self.lbm, "delete_bridge") as del_br_fn,\
- mock.patch.object(self.lbm,
- "get_tap_devices_count",
- side_effect=tap_count_side_effect):
- self.lbm.remove_empty_bridges()
- self.assertEqual(2, del_br_fn.call_count)
-
def test_remove_interface(self):
with mock.patch.object(ip_lib.IPDevice, "exists") as de_fn,\
mock.patch.object(bridge_lib,