From 6c3d5c1a7caf0da98c9366b2f1a2b148d4104b0c Mon Sep 17 00:00:00 2001 From: Aleksandr Kurbatov <ak@geant.org> Date: Tue, 14 Jan 2025 19:39:46 +0000 Subject: [PATCH] Update `bgp_config` role for LHCONE access --- .../roles/bgp_config/tasks/main.yml | 12 ++++++++ .../roles/bgp_config/tasks/merge_vars.yaml | 30 ++++++++++++++++++- .../roles/bgp_config/templates/bgp.j2 | 14 +++++++-- 3 files changed, 52 insertions(+), 4 deletions(-) diff --git a/geant/gap_ansible/roles/bgp_config/tasks/main.yml b/geant/gap_ansible/roles/bgp_config/tasks/main.yml index 13eca9ef..7bf1d663 100644 --- a/geant/gap_ansible/roles/bgp_config/tasks/main.yml +++ b/geant/gap_ansible/roles/bgp_config/tasks/main.yml @@ -1,5 +1,17 @@ --- # tasks file for bgp_config +- name: Set BGP V4 session object to check for custom policies + ansible.builtin.set_fact: + bgp_session_v4: "{{ ap.sbp | json_query(query) }}" + vars: + query: "bgp_session_list[?ip_type == 'ipv4'] | [0]" + +- name: Set BGP V6 session object to check for custom policies + ansible.builtin.set_fact: + bgp_session_v6: "{{ ap.sbp | json_query(query) }}" + vars: + query: "bgp_session_list[?ip_type == 'ipv6'] | [0]" + - name: Load Standard Policy Statements vars ansible.builtin.include_tasks: merge_vars.yaml diff --git a/geant/gap_ansible/roles/bgp_config/tasks/merge_vars.yaml b/geant/gap_ansible/roles/bgp_config/tasks/merge_vars.yaml index 77676232..a29606a9 100644 --- a/geant/gap_ansible/roles/bgp_config/tasks/merge_vars.yaml +++ b/geant/gap_ansible/roles/bgp_config/tasks/merge_vars.yaml @@ -1,7 +1,35 @@ --- -- name: Set Standard Import and export policies names +- name: Set Standard BGP import and export policy names for GEANT_IP + when: > + subscription.l3_core_service_type in ["GEANT_IP", "GEANT IP"] ansible.builtin.set_fact: import_policies_v4: "{{ bgp.policies.import.v4 }}" import_policies_v6: "{{ bgp.policies.import.v6 }}" export_policies_v4: "{{ bgp.policies.export.v4 }}" export_policies_v6: "{{ bgp.policies.export.v6 }}" + +- name: Set standard BGP import and export policy names for LHCONE + when: > + subscription.l3_core_service_type in ["LHCONE"] + and + not bgp_session_v4.has_custom_policies | ansible.builtin.bool + or + not bgp_session_v4.has_custom_policies | ansible.builtin.bool + ansible.builtin.set_fact: + import_policies_v4: "{{ bgp.policies.import.v4 }}" + import_policies_v6: "{{ bgp.policies.import.v6 }}" + export_policies_v4: "{{ bgp.policies.export.v4 }}" + export_policies_v6: "{{ bgp.policies.export.v6 }}" + +- name: Set custom BGP import and export policy names for LHCONE + when: > + subscription.l3_core_service_type in ["LHCONE"] + and + bgp_session_v4.has_custom_policies | ansible.builtin.bool + or + bgp_session_v4.has_custom_policies | ansible.builtin.bool + ansible.builtin.set_fact: + import_policies_v4: "{{ bgp_custom.policies.import.v4 }}" + import_policies_v6: "{{ bgp_custom.policies.import.v6 }}" + export_policies_v4: "{{ bgp_custom.policies.export.v4 }}" + export_policies_v6: "{{ bgp_custom.policies.export.v6 }}" diff --git a/geant/gap_ansible/roles/bgp_config/templates/bgp.j2 b/geant/gap_ansible/roles/bgp_config/templates/bgp.j2 index 47b82cfb..1ff02609 100644 --- a/geant/gap_ansible/roles/bgp_config/templates/bgp.j2 +++ b/geant/gap_ansible/roles/bgp_config/templates/bgp.j2 @@ -1,9 +1,17 @@ - + {% if subscription.l3_core_service_type in ['GEANT_IP', 'GEANT IP'] %} <router xmlns="urn:nokia.com:sros:ns:yang:sr:conf" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nokia-attr="urn:nokia.com:sros:ns:yang:sr:attributes"> <router-name>Base</router-name> <bgp xmlns="urn:nokia.com:sros:ns:yang:sr:conf" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nokia-attr="urn:nokia.com:sros:ns:yang:sr:attributes"> {% include 'bgp_neighbor.j2' %} </bgp> - </router> - + {% elif subscription.l3_core_service_type in ['LHCONE'] %} + <service xmlns="urn:nokia.com:sros:ns:yang:sr:conf" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nokia-attr="urn:nokia.com:sros:ns:yang:sr:attributes"> + <vprn xmlns="urn:nokia.com:sros:ns:yang:sr:conf" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nokia-attr="urn:nokia.com:sros:ns:yang:sr:attributes"> + <service-name>{{ vprn_name }}</service-name> + <bgp xmlns="urn:nokia.com:sros:ns:yang:sr:conf" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nokia-attr="urn:nokia.com:sros:ns:yang:sr:attributes"> + {% include 'bgp_neighbor.j2' %} + </bgp> + </vprn> + </service> + {% endif %} -- GitLab