Merge "Check if interface exists in bridge prior to adding."

This commit is contained in:
Jenkins 2012-07-02 21:49:00 +00:00 committed by Gerrit Code Review
commit e4a08fa36c

View File

@ -73,6 +73,13 @@ class LinuxBridge:
return False return False
return True return True
def interface_exists_on_bridge(self, bridge, interface):
directory = '/sys/class/net/%s/brif' % bridge
for filename in os.listdir(directory):
if filename == interface:
return True
return False
def get_bridge_name(self, network_id): def get_bridge_name(self, network_id):
if not network_id: if not network_id:
LOG.warning("Invalid Network ID, will lead to incorrect bridge" LOG.warning("Invalid Network ID, will lead to incorrect bridge"
@ -205,8 +212,10 @@ class LinuxBridge:
LOG.debug("Done starting bridge %s for subinterface %s" % LOG.debug("Done starting bridge %s for subinterface %s" %
(bridge_name, interface)) (bridge_name, interface))
utils.execute(['brctl', 'addif', bridge_name, interface], # Check if the interface is part of the bridge
root_helper=self.root_helper) if not self.interface_exists_on_bridge(bridge_name, interface):
utils.execute(['brctl', 'addif', bridge_name, interface],
root_helper=self.root_helper)
def add_tap_interface(self, network_id, vlan_id, tap_device_name): def add_tap_interface(self, network_id, vlan_id, tap_device_name):
""" """