summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2012-03-02 15:16:34 -0800
committerVishvananda Ishaya <vishvananda@gmail.com>2012-03-02 17:14:10 -0800
commiteea6aecf4ad18108e35cf86ab1be7e98e748fca6 (patch)
treedcc97048aafac2b34b83ad86dc17404e8697f306
parentd9097f35cd391fcd5a8ec735abd3b53e634bfa14 (diff)
downloadnova-eea6aecf4ad18108e35cf86ab1be7e98e748fca6.tar.gz
nova-eea6aecf4ad18108e35cf86ab1be7e98e748fca6.tar.xz
nova-eea6aecf4ad18108e35cf86ab1be7e98e748fca6.zip
Allows --flat_interface flag to override db
* this replicates what commit 8efe15209 did for vlan_interface * includes a test to verify that the override works * cleans up memory usage in the vlan test * Fixes bug 944734 Change-Id: I21a04a43051f723029513c4c9548003f959cff37
-rwxr-xr-xnova/network/linux_net.py3
-rw-r--r--nova/tests/test_linux_net.py35
-rw-r--r--nova/virt/libvirt/vif.py3
3 files changed, 36 insertions, 5 deletions
diff --git a/nova/network/linux_net.py b/nova/network/linux_net.py
index 46d2aadd6..230755b81 100755
--- a/nova/network/linux_net.py
+++ b/nova/network/linux_net.py
@@ -951,9 +951,10 @@ class LinuxBridgeInterfaceDriver(LinuxNetInterfaceDriver):
network,
mac_address)
else:
+ iface = FLAGS.flat_interface or network['bridge_interface']
LinuxBridgeInterfaceDriver.ensure_bridge(
network['bridge'],
- network['bridge_interface'],
+ iface,
network, gateway)
# NOTE(vish): applying here so we don't get a lock conflict
diff --git a/nova/tests/test_linux_net.py b/nova/tests/test_linux_net.py
index 1c57220d5..39a5d3bed 100644
--- a/nova/tests/test_linux_net.py
+++ b/nova/tests/test_linux_net.py
@@ -421,9 +421,11 @@ class LinuxNetworkTestCase(test.TestCase):
driver = linux_net.LinuxBridgeInterfaceDriver()
+ info = {}
+
@classmethod
def test_ensure(_self, vlan, bridge, interface, network, mac_address):
- self.passed_interface = interface
+ info['passed_interface'] = interface
self.stubs.Set(linux_net.LinuxBridgeInterfaceDriver,
'ensure_vlan_bridge', test_ensure)
@@ -434,10 +436,37 @@ class LinuxNetworkTestCase(test.TestCase):
"vlan": "fake"
}
driver.plug(network, "fakemac")
- self.assertEqual(self.passed_interface, "base_interface")
+ self.assertEqual(info['passed_interface'], "base_interface")
self.flags(vlan_interface="override_interface")
driver.plug(network, "fakemac")
- self.assertEqual(self.passed_interface, "override_interface")
+ self.assertEqual(info['passed_interface'], "override_interface")
+ driver.plug(network, "fakemac")
+
+ def test_flat_override(self):
+ """Makes sure flat_interface flag overrides network bridge_interface.
+
+ Allows heterogeneous networks a la bug 833426"""
+
+ driver = linux_net.LinuxBridgeInterfaceDriver()
+
+ info = {}
+
+ @classmethod
+ def test_ensure(_self, bridge, interface, network, gateway):
+ info['passed_interface'] = interface
+
+ self.stubs.Set(linux_net.LinuxBridgeInterfaceDriver,
+ 'ensure_bridge', test_ensure)
+
+ network = {
+ "bridge": "br100",
+ "bridge_interface": "base_interface",
+ }
+ driver.plug(network, "fakemac")
+ self.assertEqual(info['passed_interface'], "base_interface")
+ self.flags(flat_interface="override_interface")
+ driver.plug(network, "fakemac")
+ self.assertEqual(info['passed_interface'], "override_interface")
def _test_initialize_gateway(self, existing, expected, routes=''):
self.flags(fake_network=False)
diff --git a/nova/virt/libvirt/vif.py b/nova/virt/libvirt/vif.py
index 268a84525..ada4a7701 100644
--- a/nova/virt/libvirt/vif.py
+++ b/nova/virt/libvirt/vif.py
@@ -90,10 +90,11 @@ class LibvirtBridgeDriver(VIFDriver):
network['bridge'],
iface)
else:
+ iface = FLAGS.flat_interface or network['bridge_interface']
LOG.debug(_("Ensuring bridge %s"), network['bridge'])
linux_net.LinuxBridgeInterfaceDriver.ensure_bridge(
network['bridge'],
- network['bridge_interface'])
+ iface)
return self._get_configurations(network, mapping)