From 9b64216bc28600fa75a92e022446db20caeefa43 Mon Sep 17 00:00:00 2001
From: Aleksandr Kurbatov <ak@geant.org>
Date: Thu, 1 May 2025 13:06:29 +0100
Subject: [PATCH] Add Juniper templates for `create` and `update`

---
 .../templates/juniper/edge_port_create.j2     |  5 ----
 .../templates/juniper/edge_port_update.j2     | 23 +++++++++++++++++++
 2 files changed, 23 insertions(+), 5 deletions(-)
 create mode 100644 geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_update.j2

diff --git a/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_create.j2 b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_create.j2
index b5f6bb6..e9be698 100644
--- a/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_create.j2
+++ b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_create.j2
@@ -6,11 +6,6 @@
 set interfaces {{ member.interface_name }} description "PHY CUSTOMER {{ partner_name }} P_{{ ep.edge_port_name }}{{ ' | '+member.interface_description if member.interface_description is string }}"
 set interfaces {{ member.interface_name }} gigether-options 802.3ad {{ ep.edge_port_name }}
 {% endfor %}
-{% if removed_ae_members is defined and removed_ae_members|length > 0 %}
-  {% for member in removed_ae_members %}
-deactivate {{ member.interface_name }}
-  {% endfor %}
-{% endif %}
 
 set interfaces {{ ep.edge_port_name }} description "LAG {{ ep.edge_port_type }} {{ partner_name }}{{ ' | '+gaid_prefix+ep.ga_id if ep.ga_id is string }}{{ ' | '+csn_prefix+(ep.custom_service_name | replace("#","")) if ep.custom_service_name is string }}{{ ' | '+ep.edge_port_description if ep.edge_port_description is string }}"
 set interfaces {{ ep.edge_port_name }} {{ 'flexible-vlan-tagging' if ep.encapsulation == 'qinq' else 'vlan-tagging' }}
diff --git a/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_update.j2 b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_update.j2
new file mode 100644
index 0000000..da7dcd3
--- /dev/null
+++ b/geant/gap_ansible/roles/edge_port/templates/juniper/edge_port_update.j2
@@ -0,0 +1,23 @@
+{% set gaid_prefix = '$' %}
+{% set csn_prefix = '#' %}
+
+
+{% for member in  ep.edge_port_ae_members %}
+set interfaces {{ member.interface_name }} description "PHY CUSTOMER {{ partner_name }} P_{{ ep.edge_port_name }}{{ ' | '+member.interface_description if member.interface_description is string }}"
+set interfaces {{ member.interface_name }} gigether-options 802.3ad {{ ep.edge_port_name }}
+{% endfor %}
+{% if removed_ae_members is defined and removed_ae_members|length > 0 %}
+  {% for member in removed_ae_members %}
+delete interfaces {{ member.interface_name }}
+  {% endfor %}
+{% endif %}
+
+set interfaces {{ ep.edge_port_name }} description "LAG {{ ep.edge_port_type }} {{ partner_name }}{{ ' | '+gaid_prefix+ep.ga_id if ep.ga_id is string }}{{ ' | '+csn_prefix+(ep.custom_service_name | replace("#","")) if ep.custom_service_name is string }}{{ ' | '+ep.edge_port_description if ep.edge_port_description is string }}"
+set interfaces {{ ep.edge_port_name }} {{ 'flexible-vlan-tagging' if ep.encapsulation == 'qinq' else 'vlan-tagging' }}
+set interfaces {{ ep.edge_port_name }} mtu 9192
+set interfaces {{ ep.edge_port_name }} encapsulation flexible-ethernet-services
+set interfaces {{ ep.edge_port_name }} aggregated-ether-options minimum-links {{ ep.minimum_links }}
+set interfaces {{ ep.edge_port_name }} aggregated-ether-options link-speed {{ ep.member_speed | lower }}
+{% if ep.enable_lacp %}
+set interfaces {{ ep.edge_port_name }} aggregated-ether-options lacp active
+{% endif %}
-- 
GitLab