From c22470e2041e573ecab69da34ae2868a962f83bb Mon Sep 17 00:00:00 2001
From: Aleksandr Kurbatov <aleksandr.kurbatov@GL1342-AKURBATOV.local>
Date: Wed, 28 Aug 2024 21:56:52 +0100
Subject: [PATCH] BGP neighbor template update

Added for the use-case of Kentik:
- support for the `hold-time`
- support for the auth_key
- support for the `cluster-id`
---
 .../routers/nokia/router/bgp_neighbor.j2      | 29 +++++++++++++++----
 1 file changed, 23 insertions(+), 6 deletions(-)

diff --git a/geant/gap_ansible/roles/promote_p_to_pe/templates/routers/nokia/router/bgp_neighbor.j2 b/geant/gap_ansible/roles/promote_p_to_pe/templates/routers/nokia/router/bgp_neighbor.j2
index 12bf86f8..debe6613 100644
--- a/geant/gap_ansible/roles/promote_p_to_pe/templates/routers/nokia/router/bgp_neighbor.j2
+++ b/geant/gap_ansible/roles/promote_p_to_pe/templates/routers/nokia/router/bgp_neighbor.j2
@@ -3,27 +3,44 @@
                     <ip-address>{{ neighbor.ip }}</ip-address>
                     <description>{{ neighbor.description }}</description>
                     <group>{{ neighbor.group }}</group>
-                    {% if neighbor.families is defined %}
+                  {% if neighbor.auth_key is defined %}
+                    <authentication-key>{{ neighbor.auth_key }</authentication-key>
+                  {% endif %}
+                  {% if neighbor.hold_time is defined %}
+                    <hold-time>
+                      <seconds>{{ neighbor.hold_time }}</seconds>
+                    </hold-time>
+                  {% endif %}
+                  {% if neighbor.families is defined %}
                     <family>
                       {% for family in neighbor.families %}
                         <{{ family }}>true</{{ family }}>
                       {% endfor %}
                     </family>
-                    {% endif %}
-                    {% if neighbor.policies.import is defined %}
+                  {% endif %}
+                  {% if neighbor.policies.import is defined %}
                     <import>
                         {% for imp_pol in neighbor.policies.import %}
                         <policy>{{ imp_pol }}</policy>
                         {% endfor %}
                     </import>
-                    {% endif %}
-                    {% if neighbor.policies.export is defined %}
+                  {% endif %}
+                  {% if neighbor.policies.export is defined %}
                     <export>
                         {% for exp_pol in neighbor.policies.export %}
                         <policy>{{ exp_pol }}</policy>
                         {% endfor %}
                     </export>
-                    {% endif %}
+                  {% endif %}
+                  {% if neighbor.cluster_id is defined %}
+                    <cluster>
+                      {% if neighbor.cluster_id == 'system' %}
+                        <cluster-id>{{ lo_ipv4_address }}</cluster-id>
+                      {% else %}
+                        <cluster-id>{{ neighbor.cluster_id }}</cluster-id>
+                      {% endif %}
+                    </cluster>
+                  {% endif %}
                 </neighbor>
                 {% endfor %}
 
-- 
GitLab