]> git.puffer.fish Git - mirror/frr.git/commitdiff
tests: Framework changes to support bgp vrf dynamic route leak automation
authorKuldeep Kashyap <kashyapk@vmware.com>
Tue, 14 Sep 2021 11:26:37 +0000 (16:56 +0530)
committerKuldeep Kashyap <kashyapk@vmware.com>
Mon, 21 Mar 2022 02:12:20 +0000 (07:42 +0530)
1. Enhance framework to support bgp vrf dynamic route leak automation

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
tests/topotests/lib/bgp.py
tests/topotests/lib/common_config.py

index 34afa0d2c19dbb3f8c49d0b579d4a672412cd2c9..4dd44e3e9e7003f77c3728b978b049a46fe6e7cc 100644 (file)
@@ -991,11 +991,11 @@ def __create_bgp_unicast_address_family(
                 config_data.append("no {} allowas-in {}".format(neigh_cxt, allow_as_in))
 
             if "shutdown" in peer:
-                shut_val = peer["shutdown"]
-                if shut_val is True:
-                    config_data.append("{} shutdown".format(neigh_cxt))
-                elif shut_val is False:
-                    config_data.append("no {} shutdown".format(neigh_cxt))
+                config_data.append(
+                    "{} {} shutdown".format(
+                        "no" if not peer["shutdown"] else "", neigh_cxt
+                    )
+                )
 
             if prefix_lists:
                 for prefix_list in prefix_lists:
index 005896b01c0a3e0a9df0c43b349a4c95ae661331..0b97637c1ea2509d2fede5f3dd0851b72e0b471a 100644 (file)
@@ -1505,11 +1505,9 @@ def create_vrf_cfg(tgen, topo, input_dict=None, build=False):
             config_data = []
             if "vrfs" in c_data:
                 for vrf in c_data["vrfs"]:
-                    del_action = vrf.setdefault("delete", False)
                     name = vrf.setdefault("name", None)
                     table_id = vrf.setdefault("id", None)
-                    vni = vrf.setdefault("vni", None)
-                    del_vni = vrf.setdefault("no_vni", None)
+                    del_action = vrf.setdefault("delete", False)
 
                     if del_action:
                         # Kernel cmd- Add VRF and table
@@ -1543,43 +1541,45 @@ def create_vrf_cfg(tgen, topo, input_dict=None, build=False):
                             )
                             rnode.run(cmd)
 
-                            if "links" in c_data:
-                                for destRouterLink, data in sorted(
-                                    c_data["links"].items()
-                                ):
-                                    # Loopback interfaces
-                                    if "type" in data and data["type"] == "loopback":
-                                        interface_name = destRouterLink
-                                    else:
-                                        interface_name = data["interface"]
+                for vrf in c_data["vrfs"]:
+                    vni = vrf.setdefault("vni", None)
+                    del_vni = vrf.setdefault("no_vni", None)
 
-                                    if "vrf" in data:
-                                        vrf_list = data["vrf"]
+                    if "links" in c_data:
+                        for destRouterLink, data in sorted(c_data["links"].items()):
+                            # Loopback interfaces
+                            if "type" in data and data["type"] == "loopback":
+                                interface_name = destRouterLink
+                            else:
+                                interface_name = data["interface"]
 
-                                        if type(vrf_list) is not list:
-                                            vrf_list = [vrf_list]
+                            if "vrf" in data:
+                                vrf_list = data["vrf"]
 
-                                        for _vrf in vrf_list:
-                                            cmd = "ip link set {} master {}".format(
-                                                interface_name, _vrf
-                                            )
+                                if type(vrf_list) is not list:
+                                    vrf_list = [vrf_list]
 
-                                            logger.info(
-                                                "[DUT: %s]: Running" " kernel cmd [%s]",
-                                                c_router,
-                                                cmd,
-                                            )
-                                            rnode.run(cmd)
+                                for _vrf in vrf_list:
+                                    cmd = "ip link set {} master {}".format(
+                                        interface_name, _vrf
+                                    )
+
+                                    logger.info(
+                                        "[DUT: %s]: Running" " kernel cmd [%s]",
+                                        c_router,
+                                        cmd,
+                                    )
+                                    rnode.run(cmd)
 
-                        if vni:
-                            config_data.append("vrf {}".format(vrf["name"]))
-                            cmd = "vni {}".format(vni)
-                            config_data.append(cmd)
+                    if vni:
+                        config_data.append("vrf {}".format(vrf["name"]))
+                        cmd = "vni {}".format(vni)
+                        config_data.append(cmd)
 
-                        if del_vni:
-                            config_data.append("vrf {}".format(vrf["name"]))
-                            cmd = "no vni {}".format(del_vni)
-                            config_data.append(cmd)
+                    if del_vni:
+                        config_data.append("vrf {}".format(vrf["name"]))
+                        cmd = "no vni {}".format(del_vni)
+                        config_data.append(cmd)
 
             if config_data:
                 config_data_dict[c_router] = config_data