diff options
| author | Jafar Al-Gharaibeh <jafar@atcorp.com> | 2025-03-12 15:37:02 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-12 15:37:02 -0500 | 
| commit | 68eaba52efdb8259259a863c050ae0065118036a (patch) | |
| tree | b21321f4b1fad014689c42fdb7519cb1f8cbb500 | |
| parent | 2cc4416f134aa23a59ccfc999ca3365dee50d0ac (diff) | |
| parent | d64f15289ba208bd1417acc878ce8356b196d1c7 (diff) | |
Merge pull request #18373 from donaldsharp/backport_missing_frr_config_to_10.1
Backport missing frr config to 10.1
| -rw-r--r-- | doc/developer/topotests.rst | 9 | ||||
| -rw-r--r-- | tests/topotests/lib/topogen.py | 13 | ||||
| -rw-r--r-- | tests/topotests/lib/topotest.py | 4 | 
3 files changed, 19 insertions, 7 deletions
diff --git a/doc/developer/topotests.rst b/doc/developer/topotests.rst index e1702c47c7..1089287bc2 100644 --- a/doc/developer/topotests.rst +++ b/doc/developer/topotests.rst @@ -1292,6 +1292,15 @@ Example:             router.load_config(TopoRouter.RD_ZEBRA, "zebra.conf")             router.load_config(TopoRouter.RD_OSPF) +or using unified config (specifying which daemons to run is optional): + +.. code:: py + +      for _, (rname, router) in enumerate(router_list.items(), 1): +         router.load_frr_config(os.path.join(CWD, "{}/frr.conf".format(rname)), [ +            (TopoRouter.RD_ZEBRA, "-s 90000000"), +            (TopoRouter.RD_MGMTD, None), +            (TopoRouter.RD_BGP, None)]  - The topology definition or build function diff --git a/tests/topotests/lib/topogen.py b/tests/topotests/lib/topogen.py index f49e30ea5f..8b01b9b317 100644 --- a/tests/topotests/lib/topogen.py +++ b/tests/topotests/lib/topogen.py @@ -824,6 +824,8 @@ class TopoRouter(TopoGear):          Loads the unified configuration file source          Start the daemons in the list          If daemons is None, try to infer daemons from the config file +        `daemons` is a tuple (daemon, param) of daemons to start, e.g.: +        (TopoRouter.RD_ZEBRA, "-s 90000000").          """          source_path = self.load_config(self.RD_FRR, source)          if not daemons: @@ -832,16 +834,17 @@ class TopoRouter(TopoGear):              for daemon in self.RD:                  # This will not work for all daemons                  daemonstr = self.RD.get(daemon).rstrip("d") -                if daemonstr == "pim": -                    grep_cmd = "grep 'ip {}' {}".format(daemonstr, source_path) +                if daemonstr == "path": +                    grep_cmd = "grep 'candidate-path' {}".format(source_path)                  else: -                    grep_cmd = "grep 'router {}' {}".format(daemonstr, source_path) +                    grep_cmd = "grep -w '{}' {}".format(daemonstr, source_path)                  result = self.run(grep_cmd, warn=False).strip()                  if result:                      self.load_config(daemon, "")          else: -            for daemon in daemons: -                self.load_config(daemon, "") +            for item in daemons: +                daemon, param = item +                self.load_config(daemon, "", param)      def load_config(self, daemon, source=None, param=None):          """Loads daemon configuration from the specified source diff --git a/tests/topotests/lib/topotest.py b/tests/topotests/lib/topotest.py index 087d8454fc..318f3de585 100644 --- a/tests/topotests/lib/topotest.py +++ b/tests/topotests/lib/topotest.py @@ -1406,7 +1406,7 @@ class Router(Node):          self.daemondir = None          self.hasmpls = False          self.routertype = "frr" -        self.unified_config = None +        self.unified_config = False          self.daemons = {              "zebra": 0,              "ripd": 0, @@ -1629,7 +1629,7 @@ class Router(Node):          # print "Daemons before:", self.daemons          if daemon in self.daemons.keys() or daemon == "frr":              if daemon == "frr": -                self.unified_config = 1 +                self.unified_config = True              else:                  self.daemons[daemon] = 1              if param is not None:  | 
