summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-03-12 19:12:36 +0000
committerGerrit Code Review <review@openstack.org>2012-03-12 19:12:36 +0000
commit4214fea02f65ccb66d34ba2a9af454c7491f1349 (patch)
treeab730f02b921e77428d45d567b3a3f97866d87a6
parent58ced1211ae3f39c7d869d86c8711acd472346de (diff)
parent1265104b873d4cd791cecc62134ef874b4656003 (diff)
Merge "Fix linux_net.py interface-driver loading."
-rwxr-xr-xnova/network/linux_net.py23
1 files changed, 17 insertions, 6 deletions
diff --git a/nova/network/linux_net.py b/nova/network/linux_net.py
index c0dbe88af..8b75635fd 100755
--- a/nova/network/linux_net.py
+++ b/nova/network/linux_net.py
@@ -907,18 +907,26 @@ def _ip_bridge_cmd(action, params, device):
# of creating ethernet interfaces and attaching them to the network.
# In the case of a network host, these interfaces
# act as gateway/dhcp/vpn/etc. endpoints not VM interfaces.
+interface_driver = None
+
+
+def _get_interface_driver():
+ global interface_driver
+ if not interface_driver:
+ interface_driver = utils.import_object(FLAGS.linuxnet_interface_driver)
+ return interface_driver
def plug(network, mac_address, gateway=True):
- return interface_driver.plug(network, mac_address, gateway)
+ return _get_interface_driver().plug(network, mac_address, gateway)
def unplug(network):
- return interface_driver.unplug(network)
+ return _get_interface_driver().unplug(network)
def get_dev(network):
- return interface_driver.get_dev(network)
+ return _get_interface_driver().get_dev(network)
class LinuxNetInterfaceDriver(object):
@@ -1077,7 +1085,7 @@ class LinuxBridgeInterfaceDriver(LinuxNetInterfaceDriver):
class LinuxOVSInterfaceDriver(LinuxNetInterfaceDriver):
def plug(self, network, mac_address, gateway=True):
- dev = "gw-" + str(network['uuid'][0:11])
+ dev = self.get_dev(network)
if not _device_exists(dev):
bridge = FLAGS.linuxnet_ovs_integration_bridge
_execute('ovs-vsctl',
@@ -1119,7 +1127,11 @@ class LinuxOVSInterfaceDriver(LinuxNetInterfaceDriver):
return dev
def unplug(self, network):
- return self.get_dev(network)
+ dev = self.get_dev(network)
+ bridge = FLAGS.linuxnet_ovs_integration_bridge
+ _execute('ovs-vsctl', '--', '--if-exists', 'del-port',
+ bridge, dev, run_as_root=True)
+ return dev
def get_dev(self, network):
dev = "gw-" + str(network['uuid'][0:11])
@@ -1208,4 +1220,3 @@ class QuantumLinuxBridgeInterfaceDriver(LinuxNetInterfaceDriver):
return bridge
iptables_manager = IptablesManager()
-interface_driver = utils.import_object(FLAGS.linuxnet_interface_driver)