1
0
mirror of https://github.com/CumulusNetworks/ifupdown2.git synced 2024-05-06 15:54:50 +00:00

bring up bridge ports only after vlan config is done

Ticket:
Reviewed By: wkok
Testing Done: unit testing + testing by wkok/purna
(cherry picked from commit 5af90b2893cd54bb21fedaf27ec6dd22de3f2802)

Conflicts:
	packages/ifupdown2/addons/bridge.py
This commit is contained in:
Roopa Prabhu
2014-12-12 23:45:31 -08:00
parent 1be3f95b01
commit ff3bdefff7
2 changed files with 12 additions and 8 deletions

View File

@@ -278,16 +278,19 @@ class bridge(moduleBase):
runningbridgeports = [] runningbridgeports = []
self._process_bridge_waitport(ifaceobj, bridgeports) self._process_bridge_waitport(ifaceobj, bridgeports)
self.ipcmd.batch_start()
# Delete active ports not in the new port list # Delete active ports not in the new port list
if not self.PERFMODE: if not self.PERFMODE:
runningbridgeports = self.brctlcmd.get_bridge_ports(ifaceobj.name) runningbridgeports = self.brctlcmd.get_bridge_ports(ifaceobj.name)
if runningbridgeports: if runningbridgeports:
[self.ipcmd.link_set(bport, 'nomaster') for bport in runningbridgeports:
for bport in runningbridgeports if not bridgeports or bport not in bridgeports:
if not bridgeports or bport not in bridgeports] self.ipcmd.link_set(bport, 'nomaster')
self.ipcmd.link_set(bport, 'down')
else: else:
runningbridgeports = [] runningbridgeports = []
if not bridgeports: if not bridgeports:
self.ipcmd.batch_commit()
return return
err = 0 err = 0
for bridgeport in Set(bridgeports).difference(Set(runningbridgeports)): for bridgeport in Set(bridgeports).difference(Set(runningbridgeports)):
@@ -302,7 +305,9 @@ class bridge(moduleBase):
'/disable_ipv6', '1') '/disable_ipv6', '1')
self.ipcmd.addr_flush(bridgeport) self.ipcmd.addr_flush(bridgeport)
except Exception, e: except Exception, e:
self.log_error(str(e)) self.logger.error(str(e))
pass
self.ipcmd.batch_commit()
if err: if err:
self.log_error('bridge configuration failed (missing ports)') self.log_error('bridge configuration failed (missing ports)')
@@ -784,7 +789,6 @@ class bridge(moduleBase):
link_exists = False link_exists = False
porterr = False porterr = False
porterrstr = '' porterrstr = ''
self.ipcmd.batch_start()
if not self.PERFMODE: if not self.PERFMODE:
if not self.ipcmd.link_exists(ifaceobj.name): if not self.ipcmd.link_exists(ifaceobj.name):
self.ipcmd.link_create(ifaceobj.name, 'bridge') self.ipcmd.link_create(ifaceobj.name, 'bridge')
@@ -797,8 +801,6 @@ class bridge(moduleBase):
porterr = True porterr = True
porterrstr = str(e) porterrstr = str(e)
pass pass
finally:
self.ipcmd.batch_commit()
self._apply_bridge_settings(ifaceobj) self._apply_bridge_settings(ifaceobj)
self._apply_bridge_port_settings_all(ifaceobj, self._apply_bridge_port_settings_all(ifaceobj,
ifaceobj_getfunc=ifaceobj_getfunc) ifaceobj_getfunc=ifaceobj_getfunc)
@@ -806,6 +808,8 @@ class bridge(moduleBase):
except Exception, e: except Exception, e:
self.log_error(str(e)) self.log_error(str(e))
finally: finally:
running_ports = self.brctlcmd.get_bridge_ports(ifaceobj.name)
[rtnetlink_api.rtnl_api.link_set(p, "up") for p in running_ports]
if link_exists and ifaceobj.addr_method == 'manual': if link_exists and ifaceobj.addr_method == 'manual':
rtnetlink_api.rtnl_api.link_set(ifaceobj.name, "up") rtnetlink_api.rtnl_api.link_set(ifaceobj.name, "up")
if porterr: if porterr:

View File

@@ -498,4 +498,4 @@ class brctl(utilsBase):
try: try:
return os.listdir('/sys/class/net/%s/brif/' %bridgename) return os.listdir('/sys/class/net/%s/brif/' %bridgename)
except: except:
return {} return []