mirror of
https://github.com/CumulusNetworks/ifupdown2.git
synced 2024-05-06 15:54:50 +00:00
Added ifupdown support for different lacp bypass modes
Ticket: CM-5716 Reviewed By: Testing Done: Added mode to distinguish between priority based and multiple links lacp bypass modes.
This commit is contained in:
@@ -94,6 +94,11 @@ class ifenslave(moduleBase):
|
|||||||
'bond-lacp-bypass-priority':
|
'bond-lacp-bypass-priority':
|
||||||
{'help' : 'slave priority for lacp bypass',
|
{'help' : 'slave priority for lacp bypass',
|
||||||
'example' : ['bond-lacp-bypass-priority swp1=1 swp2=1 swp3=2']},
|
'example' : ['bond-lacp-bypass-priority swp1=1 swp2=1 swp3=2']},
|
||||||
|
'bond-lacp-bypass-use-priority':
|
||||||
|
{'help' : 'enable priority based selection for lacp bypass',
|
||||||
|
'validvals' : ['0', '1'],
|
||||||
|
'default' : '1',
|
||||||
|
'example' : ['bond-lacp-bypass-use-priority 1']},
|
||||||
'bond-slaves' :
|
'bond-slaves' :
|
||||||
{'help' : 'bond slaves',
|
{'help' : 'bond slaves',
|
||||||
'required' : True,
|
'required' : True,
|
||||||
@@ -188,6 +193,7 @@ class ifenslave(moduleBase):
|
|||||||
('bond-lacp-fallback-allow', 'lacp_bypass_allow'),
|
('bond-lacp-fallback-allow', 'lacp_bypass_allow'),
|
||||||
('bond-lacp-fallback-period', 'lacp_bypass_period'),
|
('bond-lacp-fallback-period', 'lacp_bypass_period'),
|
||||||
('bond-lacp-bypass-allow', 'lacp_bypass_allow'),
|
('bond-lacp-bypass-allow', 'lacp_bypass_allow'),
|
||||||
|
('bond-lacp-bypass-use-priority', 'lacp_bypass_use_priority'),
|
||||||
('bond-lacp-bypass-period', 'lacp_bypass_period')])
|
('bond-lacp-bypass-period', 'lacp_bypass_period')])
|
||||||
linkup = self.ipcmd.is_link_up(ifaceobj.name)
|
linkup = self.ipcmd.is_link_up(ifaceobj.name)
|
||||||
try:
|
try:
|
||||||
@@ -377,7 +383,9 @@ class ifenslave(moduleBase):
|
|||||||
'bond-lacp-bypass-period' :
|
'bond-lacp-bypass-period' :
|
||||||
self.ifenslavecmd.get_lacp_fallback_period(bondname),
|
self.ifenslavecmd.get_lacp_fallback_period(bondname),
|
||||||
'bond-lacp-bypass-priority' :
|
'bond-lacp-bypass-priority' :
|
||||||
self.ifenslavecmd.get_lacp_fallback_priority(bondname)}
|
self.ifenslavecmd.get_lacp_fallback_priority(bondname),
|
||||||
|
'bond-lacp-bypass-use-priority' :
|
||||||
|
self.ifenslavecmd.get_lacp_fallback_use_priority(bondname)}
|
||||||
slaves = self.ifenslavecmd.get_slaves(bondname)
|
slaves = self.ifenslavecmd.get_slaves(bondname)
|
||||||
if slaves:
|
if slaves:
|
||||||
bondattrs['bond-slaves'] = slaves
|
bondattrs['bond-slaves'] = slaves
|
||||||
|
@@ -54,7 +54,7 @@ class ifenslaveutil(utilsBase):
|
|||||||
%(bondname, x))),
|
%(bondname, x))),
|
||||||
['use_carrier', 'miimon', 'min_links', 'num_unsol_na',
|
['use_carrier', 'miimon', 'min_links', 'num_unsol_na',
|
||||||
'num_grat_arp', 'lacp_bypass_allow', 'lacp_bypass_period',
|
'num_grat_arp', 'lacp_bypass_allow', 'lacp_bypass_period',
|
||||||
'clag_enable'])
|
'lacp_bypass_use_priority', 'clag_enable'])
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -318,6 +318,26 @@ class ifenslaveutil(utilsBase):
|
|||||||
prio_str = ' '.join(prios)
|
prio_str = ' '.join(prios)
|
||||||
return prio_str
|
return prio_str
|
||||||
|
|
||||||
|
def set_lacp_fallback_use_priority(self, bondname, useprio, prehook=None, posthook=None):
|
||||||
|
if (self._cache_check([bondname, 'linkinfo', 'lacp_bypass_use_priority'],
|
||||||
|
lacp_bypass_use_priority)):
|
||||||
|
return
|
||||||
|
if prehook:
|
||||||
|
prehook(bondname)
|
||||||
|
try:
|
||||||
|
self.write_file('/sys/class/net/%s' %bondname +
|
||||||
|
'/bonding/lacp_bypass_use_priority', useprio)
|
||||||
|
except:
|
||||||
|
raise
|
||||||
|
finally:
|
||||||
|
if posthook:
|
||||||
|
posthook(bondname)
|
||||||
|
self._cache_update([bondname, 'linkinfo',
|
||||||
|
'lacp_bypass_use_priority'], useprio)
|
||||||
|
|
||||||
|
def get_lacp_fallback_use_priority(self, bondname):
|
||||||
|
return self._cache_get([bondname, 'linkinfo', 'lacp_bypass_use_priority'])
|
||||||
|
|
||||||
def get_ad_sys_mac_addr(self, bondname):
|
def get_ad_sys_mac_addr(self, bondname):
|
||||||
return self._cache_get([bondname, 'linkinfo', 'ad_sys_mac_addr'])
|
return self._cache_get([bondname, 'linkinfo', 'ad_sys_mac_addr'])
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user