From 372bb5c160daf9c5c6688f783903fab26f37a75d Mon Sep 17 00:00:00 2001
From: aapostoliuk <a.apostoliuk@vyos.io>
Date: Tue, 2 Apr 2024 17:42:06 +0300
Subject: T6196: Fixed applying parameters for aggregation in BGP

Fixed using 'route-map', 'as-set' and 'summary-only' together in
aggregation in BGP

(cherry picked from commit d8df8339d665db58afbf20cecaeb49ac9d1b617d)
---
 data/templates/frr/bgpd.frr.j2              |  5 +----
 smoketest/scripts/cli/test_protocols_bgp.py | 13 +++++++++++--
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/data/templates/frr/bgpd.frr.j2 b/data/templates/frr/bgpd.frr.j2
index 7d1241f5a..e5bfad59d 100644
--- a/data/templates/frr/bgpd.frr.j2
+++ b/data/templates/frr/bgpd.frr.j2
@@ -290,10 +290,7 @@ router bgp {{ system_as }} {{ 'vrf ' ~ vrf if vrf is vyos_defined }}
 {%         endif %}
 {%         if afi_config.aggregate_address is vyos_defined %}
 {%             for aggregate, aggregate_config in afi_config.aggregate_address.items() %}
-  aggregate-address {{ aggregate }}{{ ' as-set' if aggregate_config.as_set is vyos_defined }}{{ ' summary-only' if aggregate_config.summary_only is vyos_defined }}
-{%                 if aggregate_config.route_map is vyos_defined %}
-  aggregate-address {{ aggregate }} route-map {{ aggregate_config.route_map }}
-{%                 endif %}
+  aggregate-address {{ aggregate }} {{ 'as-set' if aggregate_config.as_set is vyos_defined }} {{ 'summary-only' if aggregate_config.summary_only is vyos_defined }} {{ 'route-map ' ~ aggregate_config.route_map if aggregate_config.route_map is vyos_defined }}
 {%             endfor %}
 {%         endif %}
 {%         if afi_config.maximum_paths.ebgp is vyos_defined %}
diff --git a/smoketest/scripts/cli/test_protocols_bgp.py b/smoketest/scripts/cli/test_protocols_bgp.py
index e26ac0646..60c49b8b4 100755
--- a/smoketest/scripts/cli/test_protocols_bgp.py
+++ b/smoketest/scripts/cli/test_protocols_bgp.py
@@ -630,6 +630,8 @@ class TestProtocolsBGP(VyOSUnitTestSHIM.TestCase):
         networks = {
             '10.0.0.0/8' : {
                 'as_set' : '',
+                'summary_only' : '',
+                'route_map' : route_map_in,
                 },
             '100.64.0.0/10' : {
                 'as_set' : '',
@@ -654,6 +656,9 @@ class TestProtocolsBGP(VyOSUnitTestSHIM.TestCase):
             if 'summary_only' in network_config:
                 self.cli_set(base_path + ['address-family', 'ipv4-unicast',
                                               'aggregate-address', network, 'summary-only'])
+            if 'route_map' in network_config:
+                self.cli_set(base_path + ['address-family', 'ipv4-unicast',
+                                              'aggregate-address', network, 'route-map', network_config['route_map']])
 
         # commit changes
         self.cli_commit()
@@ -668,10 +673,14 @@ class TestProtocolsBGP(VyOSUnitTestSHIM.TestCase):
 
         for network, network_config in networks.items():
             self.assertIn(f' network {network}', frrconfig)
+            command = f'aggregate-address {network}'
             if 'as_set' in network_config:
-                self.assertIn(f' aggregate-address {network} as-set', frrconfig)
+                command = f'{command} as-set'
             if 'summary_only' in network_config:
-                self.assertIn(f' aggregate-address {network} summary-only', frrconfig)
+                command = f'{command} summary-only'
+            if 'route_map' in network_config:
+                command = f'{command} route-map {network_config["route_map"]}'
+            self.assertIn(command, frrconfig)
 
     def test_bgp_05_afi_ipv6(self):
         networks = {
-- 
cgit v1.2.3