]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: add and use Router.checkRouterVersion (based on bdpd version)
authorLou Berger <lberger@labn.net>
Sat, 30 Jun 2018 19:18:33 +0000 (15:18 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 28 Nov 2018 01:22:14 +0000 (20:22 -0500)
Signed-off-by: Lou Berger <lberger@labn.net>
tests/topotests/lib/topogen.py
tests/topotests/lib/topotest.py

index 63d3a5afddf8cfb8dfbfd87d8daafd2aaf9a54ce..9e4132e8fb879f73d117ce814637688db2fc2b69 100644 (file)
@@ -776,23 +776,7 @@ class TopoRouter(TopoGear):
 
         Usage example: router.has_version('>', '1.0')
         """
-        rversion = self.version_info()['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
+        return self.tgen.net[self.name].checkRouterVersion(cmpop, version)
 
     def has_type(self, rtype):
         """
index 655a05cbd40fd09e8aed380fbae2a92b8a8e1af6..f0412dc2df2772b5fc8252a92d77209df30c4765 100644 (file)
@@ -489,6 +489,7 @@ class Router(Node):
                         'ldpd': 0, 'eigrpd': 0, 'nhrpd': 0}
         self.daemons_options = {'zebra': ''}
         self.reportCores = True
+        self.version = None
 
     def _config_frr(self, **params):
         "Configure FRR binaries"
@@ -688,6 +689,9 @@ class Router(Node):
         self.cmd('umask 000')
         #Re-enable to allow for report per run
         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
         if self.daemons['zebra'] == 1:
             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 ""
+
+    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):
         "Get LinkLocal Addresses from interfaces"