Skip to content

Commit

Permalink
Ensure hybrid driver creates veth pair only once.
Browse files Browse the repository at this point in the history
Fixes bug 1053312

This commit fixes a bug that an instance can't obtain IP address by DHCP
when using LibvirtHybridOVSBridgeDriver. When nova-compute launches an
instance on KVM, vif driver plug() may be called twice and this causes
a behavior that a port of OVS cannot seen as a bridge port. So this patch
make sure create_veth_pair() is not called if a port already exists.

Change-Id: I76792df9f0dd28224d7d57989bf1e8ecadb92606
  • Loading branch information
amotoki authored and salv-orlando committed Sep 21, 2012
1 parent 075e788 commit 577ba62
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions nova/virt/libvirt/vif.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,15 +212,15 @@ def plug(self, instance, vif):
br_name = self.get_br_name(iface_id)
v1_name, v2_name = self.get_veth_pair_names(iface_id)

linux_net._create_veth_pair(v1_name, v2_name)

if not linux_net._device_exists(br_name):
utils.execute('brctl', 'addbr', br_name, run_as_root=True)

utils.execute('ip', 'link', 'set', br_name, 'up', run_as_root=True)
utils.execute('brctl', 'addif', br_name, v1_name, run_as_root=True)
self.create_ovs_vif_port(v2_name, iface_id, mapping['mac'],
instance['uuid'])
if not linux_net._device_exists(v2_name):
linux_net._create_veth_pair(v1_name, v2_name)
utils.execute('ip', 'link', 'set', br_name, 'up', run_as_root=True)
utils.execute('brctl', 'addif', br_name, v1_name, run_as_root=True)
self.create_ovs_vif_port(v2_name, iface_id, mapping['mac'],
instance['uuid'])

network['bridge'] = br_name
return self._get_configurations(instance, network, mapping)
Expand Down

0 comments on commit 577ba62

Please sign in to comment.