]> git.puffer.fish Git - matthieu/frr.git/commitdiff
tests: Update bgp api for community and aggregate address
authorAshish Pant <ashish12pant@gmail.com>
Wed, 16 Oct 2019 23:44:55 +0000 (05:14 +0530)
committerAshish Pant <ashish12pant@gmail.com>
Thu, 17 Oct 2019 03:47:03 +0000 (09:17 +0530)
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>
Add support for not sending community data in bgp and update
aggregate address configuration code

tests/topotests/lib/bgp.py

index 41d6a326cf08003a3f5d62b33a0618e01201c3cc..7ec584bf5fe8d1505325ee78d4c2729e69dc35a3 100644 (file)
@@ -200,29 +200,6 @@ def __create_bgp_global(tgen, input_dict, router, build=False):
         config_data.append("bgp router-id {}".format(
             router_id))
 
-    aggregate_address = bgp_data.setdefault("aggregate_address",
-                                            {})
-    if aggregate_address:
-        network = aggregate_address.setdefault("network", None)
-        if not network:
-            logger.error("Router %s: 'network' not present in "
-                         "input_dict for BGP", router)
-        else:
-            cmd = "aggregate-address {}".format(network)
-
-            as_set = aggregate_address.setdefault("as_set", False)
-            summary = aggregate_address.setdefault("summary", False)
-            del_action = aggregate_address.setdefault("delete", False)
-            if as_set:
-                cmd = "{} {}".format(cmd, "as-set")
-            if summary:
-                cmd = "{} {}".format(cmd, "summary")
-
-            if del_action:
-                cmd = "no {}".format(cmd)
-
-            config_data.append(cmd)
-
     return config_data
 
 
@@ -300,15 +277,25 @@ def __create_bgp_unicast_neighbor(tgen, topo, input_dict, router,
                     ebgp
                 ))
 
-        aggregate_address = addr_data.setdefault("aggregate_address",
-                                                 {})
-        if aggregate_address:
-            ip = aggregate_address("network", None)
-            attribute = aggregate_address("attribute", None)
-            if ip:
-                cmd = "aggregate-address {}".format(ip)
-                if attribute:
-                    cmd = "{} {}".format(cmd, attribute)
+        aggregate_addresses = addr_data.setdefault("aggregate_address", [])
+        for aggregate_address in aggregate_addresses:
+            network = aggregate_address.setdefault("network", None)
+            if not network:
+                logger.debug("Router %s: 'network' not present in "
+                             "input_dict for BGP", router)
+            else:
+                cmd = "aggregate-address {}".format(network)
+
+                as_set = aggregate_address.setdefault("as_set", False)
+                summary = aggregate_address.setdefault("summary", False)
+                del_action = aggregate_address.setdefault("delete", False)
+                if as_set:
+                    cmd = "{} as-set".format(cmd)
+                if summary:
+                    cmd = "{} summary".format(cmd)
+
+                if del_action:
+                    cmd = "no {}".format(cmd)
 
                 config_data.append(cmd)
 
@@ -481,14 +468,20 @@ def __create_bgp_unicast_address_family(topo, input_dict, router, addr_type,
             send_community = peer.setdefault("send_community", None)
             prefix_lists = peer.setdefault("prefix_lists", {})
             route_maps = peer.setdefault("route_maps", {})
+            no_send_community = peer.setdefault("no_send_community", None)
 
             # next-hop-self
             if next_hop_self:
                 config_data.append("{} next-hop-self".format(neigh_cxt))
-            # no_send_community
+            # send_community
             if send_community:
                 config_data.append("{} send-community".format(neigh_cxt))
 
+            # no_send_community
+            if no_send_community:
+                config_data.append("no {} send-community {}".format(
+                    neigh_cxt, no_send_community))
+
             if prefix_lists:
                 for prefix_list in prefix_lists:
                     name = prefix_list.setdefault("name", {})