mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 11:25:41 +00:00
lib: add and use Router.checkRouterVersion (based on bdpd version)
Signed-off-by: Lou Berger <lberger@labn.net>
This commit is contained in:
parent
95460a6b7e
commit
fb80b81b26
@ -776,23 +776,7 @@ class TopoRouter(TopoGear):
|
|||||||
|
|
||||||
Usage example: router.has_version('>', '1.0')
|
Usage example: router.has_version('>', '1.0')
|
||||||
"""
|
"""
|
||||||
rversion = self.version_info()['version']
|
return self.tgen.net[self.name].checkRouterVersion(cmpop, version)
|
||||||
if rversion is None:
|
|
||||||
return False
|
|
||||||
|
|
||||||
result = topotest.version_cmp(rversion, version)
|
|
||||||
if cmpop == '>=':
|
|
||||||
return result >= 0
|
|
||||||
if cmpop == '>':
|
|
||||||
return result > 0
|
|
||||||
if cmpop == '=':
|
|
||||||
return result == 0
|
|
||||||
if cmpop == '<':
|
|
||||||
return result < 0
|
|
||||||
if cmpop == '<':
|
|
||||||
return result < 0
|
|
||||||
if cmpop == '<=':
|
|
||||||
return result <= 0
|
|
||||||
|
|
||||||
def has_type(self, rtype):
|
def has_type(self, rtype):
|
||||||
"""
|
"""
|
||||||
|
@ -489,6 +489,7 @@ class Router(Node):
|
|||||||
'ldpd': 0, 'eigrpd': 0, 'nhrpd': 0}
|
'ldpd': 0, 'eigrpd': 0, 'nhrpd': 0}
|
||||||
self.daemons_options = {'zebra': ''}
|
self.daemons_options = {'zebra': ''}
|
||||||
self.reportCores = True
|
self.reportCores = True
|
||||||
|
self.version = None
|
||||||
|
|
||||||
def _config_frr(self, **params):
|
def _config_frr(self, **params):
|
||||||
"Configure FRR binaries"
|
"Configure FRR binaries"
|
||||||
@ -688,6 +689,9 @@ class Router(Node):
|
|||||||
self.cmd('umask 000')
|
self.cmd('umask 000')
|
||||||
#Re-enable to allow for report per run
|
#Re-enable to allow for report per run
|
||||||
self.reportCores = True
|
self.reportCores = True
|
||||||
|
if self.version == None:
|
||||||
|
self.version = self.cmd(os.path.join(self.daemondir, 'bgpd')+' -v').split()[2]
|
||||||
|
logger.info('{}: running version: {}'.format(self.name,self.version))
|
||||||
# Start Zebra first
|
# Start Zebra first
|
||||||
if self.daemons['zebra'] == 1:
|
if self.daemons['zebra'] == 1:
|
||||||
zebra_path = os.path.join(self.daemondir, 'zebra')
|
zebra_path = os.path.join(self.daemondir, 'zebra')
|
||||||
@ -797,6 +801,37 @@ class Router(Node):
|
|||||||
|
|
||||||
return "%s: Daemon %s not running" % (self.name, daemon)
|
return "%s: Daemon %s not running" % (self.name, daemon)
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
def checkRouterVersion(self, cmpop, version):
|
||||||
|
"""
|
||||||
|
Compares router version using operation `cmpop` with `version`.
|
||||||
|
Valid `cmpop` values:
|
||||||
|
* `>=`: has the same version or greater
|
||||||
|
* '>': has greater version
|
||||||
|
* '=': has the same version
|
||||||
|
* '<': has a lesser version
|
||||||
|
* '<=': has the same version or lesser
|
||||||
|
|
||||||
|
Usage example: router.checkRouterVersion('>', '1.0')
|
||||||
|
"""
|
||||||
|
rversion = self.version
|
||||||
|
if rversion is None:
|
||||||
|
return False
|
||||||
|
|
||||||
|
result = version_cmp(rversion, version)
|
||||||
|
if cmpop == '>=':
|
||||||
|
return result >= 0
|
||||||
|
if cmpop == '>':
|
||||||
|
return result > 0
|
||||||
|
if cmpop == '=':
|
||||||
|
return result == 0
|
||||||
|
if cmpop == '<':
|
||||||
|
return result < 0
|
||||||
|
if cmpop == '<':
|
||||||
|
return result < 0
|
||||||
|
if cmpop == '<=':
|
||||||
|
return result <= 0
|
||||||
|
|
||||||
def get_ipv6_linklocal(self):
|
def get_ipv6_linklocal(self):
|
||||||
"Get LinkLocal Addresses from interfaces"
|
"Get LinkLocal Addresses from interfaces"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user