def plug(self, network, mac_address, gateway=True):
if network.get('vlan', None) is not None:
+ iface = FLAGS.vlan_interface or network['bridge_interface']
LinuxBridgeInterfaceDriver.ensure_vlan_bridge(
network['vlan'],
network['bridge'],
- network['bridge_interface'],
+ iface,
network,
mac_address)
else:
driver.plug({"bridge": "br100", "bridge_interface": "eth0"},
"fakemac")
+ def test_vlan_override(self):
+ """Makes sure vlan_interface flag overrides network bridge_interface.
+
+ Allows heterogeneous networks a la bug 833426"""
+
+ driver = linux_net.LinuxBridgeInterfaceDriver()
+
+ @classmethod
+ def test_ensure(_self, vlan, bridge, interface, network, mac_address):
+ self.passed_interface = interface
+
+ self.stubs.Set(linux_net.LinuxBridgeInterfaceDriver,
+ 'ensure_vlan_bridge', test_ensure)
+
+ network = {
+ "bridge": "br100",
+ "bridge_interface": "base_interface",
+ "vlan": "fake"
+ }
+ driver.plug(network, "fakemac")
+ self.assertEqual(self.passed_interface, "base_interface")
+ self.flags(vlan_interface="override_interface")
+ driver.plug(network, "fakemac")
+ self.assertEqual(self.passed_interface, "override_interface")
+
def _test_initialize_gateway(self, existing, expected, routes=''):
self.flags(fake_network=False)
executes = []
if (not network.get('multi_host') and
mapping.get('should_create_bridge')):
if mapping.get('should_create_vlan'):
+ iface = FLAGS.vlan_interface or network['bridge_interface']
LOG.debug(_('Ensuring vlan %(vlan)s and bridge %(bridge)s'),
{'vlan': network['vlan'],
'bridge': network['bridge']})
linux_net.LinuxBridgeInterfaceDriver.ensure_vlan_bridge(
network['vlan'],
network['bridge'],
- network['bridge_interface'])
+ iface)
else:
LOG.debug(_("Ensuring bridge %s"), network['bridge'])
linux_net.LinuxBridgeInterfaceDriver.ensure_bridge(
vlan_num = network['vlan']
bridge = network['bridge']
- bridge_interface = network['bridge_interface']
+ bridge_interface = FLAGS.vlan_interface or network['bridge_interface']
# Check whether bridge already exists
# Retrieve network whose name_label is "bridge"
network_ref = NetworkHelper.find_network_with_name_label(