diff options
| author | Vishvananda Ishaya <vishvananda@gmail.com> | 2012-03-02 15:16:34 -0800 |
|---|---|---|
| committer | Vishvananda Ishaya <vishvananda@gmail.com> | 2012-03-02 17:14:10 -0800 |
| commit | eea6aecf4ad18108e35cf86ab1be7e98e748fca6 (patch) | |
| tree | dcc97048aafac2b34b83ad86dc17404e8697f306 | |
| parent | d9097f35cd391fcd5a8ec735abd3b53e634bfa14 (diff) | |
| download | nova-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-x | nova/network/linux_net.py | 3 | ||||
| -rw-r--r-- | nova/tests/test_linux_net.py | 35 | ||||
| -rw-r--r-- | nova/virt/libvirt/vif.py | 3 |
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) |
