def test_delete_vxlan_bridge_no_int_mappings(self):
        interface_mappings = {}
        with mock.patch.object(ip_lib.IPWrapper,
                               'get_device_by_ip',
                               return_value=None):
            lbm = linuxbridge_neutron_agent.LinuxBridgeManager(
                interface_mappings)

        bridge_device = mock.Mock()
        with mock.patch.object(ip_lib, "device_exists") as de_fn,\
                mock.patch.object(lbm,
                                  "get_interfaces_on_bridge") as getif_fn,\
                mock.patch.object(lbm, "remove_interface"),\
                mock.patch.object(lbm, "delete_vxlan") as del_vxlan,\
                mock.patch.object(bridge_lib, "BridgeDevice",
                                  return_value=bridge_device):
            de_fn.return_value = False
            lbm.delete_vlan_bridge("br0")
            self.assertFalse(getif_fn.called)

            de_fn.return_value = True
            getif_fn.return_value = ["vxlan-1002"]
            bridge_device.link.set_down.return_value = False
            lbm.delete_vlan_bridge("br0")
            del_vxlan.assert_called_with("vxlan-1002")
Beispiel #2
0
def remove_empty_bridges():
    try:
        interface_mappings = helpers.parse_mappings(
            cfg.CONF.LINUX_BRIDGE.physical_interface_mappings)
    except ValueError as e:
        LOG.error("Parsing physical_interface_mappings failed: %s.", e)
        sys.exit(1)
    LOG.info("Interface mappings: %s.", interface_mappings)

    try:
        bridge_mappings = helpers.parse_mappings(
            cfg.CONF.LINUX_BRIDGE.bridge_mappings)
    except ValueError as e:
        LOG.error("Parsing bridge_mappings failed: %s.", e)
        sys.exit(1)
    LOG.info("Bridge mappings: %s.", bridge_mappings)

    lb_manager = linuxbridge_neutron_agent.LinuxBridgeManager(
        bridge_mappings, interface_mappings)

    bridge_names = lb_manager.get_deletable_bridges()
    for bridge_name in bridge_names:
        if lb_manager.get_tap_devices_count(bridge_name):
            continue

        try:
            lb_manager.delete_bridge(bridge_name)
            LOG.info("Linux bridge %s deleted", bridge_name)
        except RuntimeError:
            LOG.exception("Linux bridge %s delete failed", bridge_name)
    LOG.info("Linux bridge cleanup completed successfully")
Beispiel #3
0
def remove_empty_bridges():
    try:
        interface_mappings = n_utils.parse_mappings(
            cfg.CONF.LINUX_BRIDGE.physical_interface_mappings)
    except ValueError as e:
        LOG.error(_LE("Parsing physical_interface_mappings failed: %s."), e)
        sys.exit(1)
    LOG.info(_LI("Interface mappings: %s."), interface_mappings)

    try:
        bridge_mappings = n_utils.parse_mappings(
            cfg.CONF.LINUX_BRIDGE.bridge_mappings)
    except ValueError as e:
        LOG.error(_LE("Parsing bridge_mappings failed: %s."), e)
        sys.exit(1)
    LOG.info(_LI("Bridge mappings: %s."), bridge_mappings)

    lb_manager = linuxbridge_neutron_agent.LinuxBridgeManager(
        bridge_mappings, interface_mappings)

    # NOTE(mgagne) Don't remove pre-existing user-defined bridges
    bridge_names = set(lb_manager.get_all_neutron_bridges())
    bridge_names -= set(bridge_mappings.values())

    for bridge_name in bridge_names:
        if lb_manager.get_tap_devices_count(bridge_name):
            continue

        try:
            lb_manager.delete_bridge(bridge_name)
            LOG.info(_LI("Linux bridge %s deleted"), bridge_name)
        except RuntimeError:
            LOG.exception(_LE("Linux bridge %s delete failed"), bridge_name)
    LOG.info(_LI("Linux bridge cleanup completed successfully"))
    def setUp(self):
        super(TestLinuxBridge, self).setUp()
        interface_mappings = {'physnet1': 'eth1'}

        with mock.patch.object(ip_lib.IPWrapper,
                               'get_device_by_ip', return_value=None):
            self.linux_bridge = linuxbridge_neutron_agent.LinuxBridgeManager(
                interface_mappings)
Beispiel #5
0
def get_linuxbridge_manager(bridge_mappings, interface_mappings):
    with mock.patch.object(ip_lib.IPWrapper, 'get_device_by_ip',
                           return_value=FAKE_DEFAULT_DEV),\
            mock.patch.object(ip_lib, 'device_exists', return_value=True),\
            mock.patch.object(linuxbridge_neutron_agent.LinuxBridgeManager,
                              'check_vxlan_support'):
        cfg.CONF.set_override('local_ip', LOCAL_IP, 'VXLAN')
        return linuxbridge_neutron_agent.LinuxBridgeManager(
            bridge_mappings, interface_mappings)
Beispiel #6
0
            def __init__(self):
                self.agent_id = 1
                with mock.patch.object(ip_lib.IPWrapper,
                                       'get_device_by_ip',
                                       return_value=None):
                    self.br_mgr = (
                        linuxbridge_neutron_agent.LinuxBridgeManager(
                            {'physnet1': 'eth1'}))

                self.br_mgr.vxlan_mode = lconst.VXLAN_UCAST
                segment = mock.Mock()
                segment.network_type = 'vxlan'
                segment.segmentation_id = 1
                self.br_mgr.network_map['net_id'] = segment