diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-03-12 19:12:36 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-03-12 19:12:36 +0000 |
| commit | 4214fea02f65ccb66d34ba2a9af454c7491f1349 (patch) | |
| tree | ab730f02b921e77428d45d567b3a3f97866d87a6 | |
| parent | 58ced1211ae3f39c7d869d86c8711acd472346de (diff) | |
| parent | 1265104b873d4cd791cecc62134ef874b4656003 (diff) | |
Merge "Fix linux_net.py interface-driver loading."
| -rwxr-xr-x | nova/network/linux_net.py | 23 |
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) |
