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:
@@ -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:
|
||||||
|
@@ -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 []
|
||||||
|
Reference in New Issue
Block a user