Skip to content
Snippets Groups Projects
Commit e06b8611 authored by Aleksandr Kurbatov's avatar Aleksandr Kurbatov
Browse files

`l2circuits` role update

- Support for Local Cross connects
- Support for VLAN-range circuits in Junos
parent 62de9547
No related branches found
No related tags found
1 merge request!254`l2circuits` role update
Pipeline #93296 passed
...@@ -10,9 +10,36 @@ ...@@ -10,9 +10,36 @@
ansible.builtin.include_vars: ansible.builtin.include_vars:
dir: /opt/ansible_inventory/geant_services/{{ subscription.product.product_type }}/{{ subscription.layer_2_circuit_service_type | upper | replace(' ', '_') }} dir: /opt/ansible_inventory/geant_services/{{ subscription.product.product_type }}/{{ subscription.layer_2_circuit_service_type | upper | replace(' ', '_') }}
- name: Include l2circuit role - name: Configure L2circuit as Local cross connect
ansible.builtin.include_role: when: subscription.layer_2_circuit.layer_2_circuit_sides[0].sbp.edge_port.node.router_fqdn ==
name: l2circuits subscription.layer_2_circuit.layer_2_circuit_sides[1].sbp.edge_port.node.router_fqdn
loop: "{{ subscription.layer_2_circuit.layer_2_circuit_sides }}" block:
loop_control: - name: Set vars
loop_var: l2c_side ansible.builtin.set_fact:
local_cross_connect: true
l2c_side_b_lag: "{{ subscription.layer_2_circuit.layer_2_circuit_sides[1].sbp.edge_port.edge_port_name }}"
l2c_side_b_vlan: "{{ subscription.layer_2_circuit.layer_2_circuit_sides[1].sbp.vlan_id }}"
l2c_side_b_gs_id: "{{ subscription.layer_2_circuit.layer_2_circuit_sides[1].sbp.gs_id }}"
remote_partner_name: "{{ subscription.layer_2_circuit.layer_2_circuit_sides[1].sbp.edge_port.partner_name }}"
- name: Include l2circuits role
ansible.builtin.include_role:
name: l2circuits
vars:
l2c_side: "{{ subscription.layer_2_circuit.layer_2_circuit_sides[0] }}"
- name: Configure L2circuit on 2 different nodes
when: subscription.layer_2_circuit.layer_2_circuit_sides[0].sbp.edge_port.node.router_fqdn !=
subscription.layer_2_circuit.layer_2_circuit_sides[1].sbp.edge_port.node.router_fqdn
block:
- name: Set vars
ansible.builtin.set_fact:
local_cross_connect: false
- name: Include l2circuits role
ansible.builtin.include_role:
name: l2circuits
loop: "{{ subscription.layer_2_circuit.layer_2_circuit_sides }}"
loop_control:
loop_var: l2c_side
--- ---
- name: Load info for the remote l2circuit endpoint - name: Load info for the remote l2circuit endpoint
when: not local_cross_connect
ansible.builtin.set_fact: ansible.builtin.set_fact:
remote_side: "{{ subscription | community.general.json_query(qry) }}" remote_side: "{{ subscription | community.general.json_query(qry) }}"
vars: vars:
...@@ -11,12 +12,17 @@ ...@@ -11,12 +12,17 @@
vars: vars:
qry: "layer_2_circuit.layer_2_circuit_sides[?sbp.edge_port.node.router_fqdn == '{{ inventory_hostname }}'] | [0]" qry: "layer_2_circuit.layer_2_circuit_sides[?sbp.edge_port.node.router_fqdn == '{{ inventory_hostname }}'] | [0]"
- name: Set partner names for the l2circuit endpoints - name: Set partner names for the l2circuit Local endpoint
ansible.builtin.set_fact: ansible.builtin.set_fact:
local_partner_name: "{{ local_side.sbp.edge_port.partner_name }}" local_partner_name: "{{ local_side.sbp.edge_port.partner_name }}"
- name: Set partner names for the l2circuit Remote endpoint
when: not local_cross_connect
ansible.builtin.set_fact:
remote_partner_name: "{{ remote_side.sbp.edge_port.partner_name }}" remote_partner_name: "{{ remote_side.sbp.edge_port.partner_name }}"
- name: Calculate SDP to use locally - name: Calculate SDP to use locally
when: not local_cross_connect
ansible.builtin.set_fact: ansible.builtin.set_fact:
sdp_id: "{{ remote_side.sbp.edge_port.node.router_lo_ipv4_address | sdp_id: "{{ remote_side.sbp.edge_port.node.router_lo_ipv4_address |
replace(sdp_prefix_regex, '') | replace('.', '') + l2circuits_sdp_type }}" replace(sdp_prefix_regex, '') | replace('.', '') + l2circuits_sdp_type }}"
...@@ -9,7 +9,12 @@ set interfaces {{ l2circuits_lag_name }} unit {{ l2circuits_vlan }} output-vlan- ...@@ -9,7 +9,12 @@ set interfaces {{ l2circuits_lag_name }} unit {{ l2circuits_vlan }} output-vlan-
set interfaces {{ l2circuits_lag_name }} unit {{ l2circuits_vlan }} vlan-id-range {{ subscription.layer_2_circuit.vlan_range_lower_bound }}-{{ subscription.layer_2_circuit.vlan_range_upper_bound }} set interfaces {{ l2circuits_lag_name }} unit {{ l2circuits_vlan }} vlan-id-range {{ subscription.layer_2_circuit.vlan_range_lower_bound }}-{{ subscription.layer_2_circuit.vlan_range_upper_bound }}
{% endif %} {% endif %}
{% if not local_cross_connect %}
set protocols l2circuit neighbor {{ remote_side.sbp.edge_port.node.router_lo_ipv4_address }} interface {{ l2circuits_lag_name }}.{{ l2circuits_vlan }} virtual-circuit-id {{ l2circuits_l2c_vcid }} set protocols l2circuit neighbor {{ remote_side.sbp.edge_port.node.router_lo_ipv4_address }} interface {{ l2circuits_lag_name }}.{{ l2circuits_vlan }} virtual-circuit-id {{ l2circuits_l2c_vcid }}
set protocols l2circuit neighbor {{ remote_side.sbp.edge_port.node.router_lo_ipv4_address }} interface {{ l2circuits_lag_name }}.{{ l2circuits_vlan }} control-word set protocols l2circuit neighbor {{ remote_side.sbp.edge_port.node.router_lo_ipv4_address }} interface {{ l2circuits_lag_name }}.{{ l2circuits_vlan }} control-word
set protocols l2circuit neighbor {{ remote_side.sbp.edge_port.node.router_lo_ipv4_address }} interface {{ l2circuits_lag_name }}.{{ l2circuits_vlan }} mtu {{ service_mtu.juniper }} set protocols l2circuit neighbor {{ remote_side.sbp.edge_port.node.router_lo_ipv4_address }} interface {{ l2circuits_lag_name }}.{{ l2circuits_vlan }} mtu {{ service_mtu.juniper }}
{% else %}
set protocols l2circuit local-switching interface {{ l2circuits_lag_name }}.{{ l2circuits_vlan }} end-interface {{ l2c_side_b_lag }}.{{ l2c_side_b_vlan }}
set protocols l2circuit local-switching interface {{ l2circuits_lag_name }}.{{ l2circuits_vlan }} ignore-mtu-mismatch
{% endif %}
{% if not local_cross_connect %}
delete protocols l2circuit neighbor {{ remote_side.sbp.edge_port.node.router_lo_ipv4_address }} interface {{ l2circuits_lag_name }}.{{ l2circuits_vlan }} delete protocols l2circuit neighbor {{ remote_side.sbp.edge_port.node.router_lo_ipv4_address }} interface {{ l2circuits_lag_name }}.{{ l2circuits_vlan }}
delete interfaces {{ l2circuits_lag_name }} unit {{ l2circuits_vlan }} delete interfaces {{ l2circuits_lag_name }} unit {{ l2circuits_vlan }}
{% else %}
delete protocols l2circuit local-switching interface {{ l2circuits_lag_name }}.{{ l2circuits_vlan }} ignore-mtu-mismatch
delete protocols l2circuit local-switching interface {{ l2circuits_lag_name }}.{{ l2circuits_vlan }} end-interface {{ l2c_side_b_lag }}.{{ l2c_side_b_vlan }}
{% endif %}
...@@ -14,16 +14,20 @@ ...@@ -14,16 +14,20 @@
</connection-profile> </connection-profile>
{% endif %} {% endif %}
{% set csn = '#'+l2circuits_custom_service_name|replace(' ', '_') if l2circuits_custom_service_name|length > 0 %}
<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"> <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">
<epipe alu:operation="replace"> <epipe alu:operation="replace">
<service-name >EPIPE:{{ l2circuits_custom_service_name | replace(' ', '_') }}:{{ l2circuits_l2c_vcid }}</service-name> <service-name>EPIPE:{{ l2circuits_custom_service_name | replace(' ', '_') }}:{{ l2circuits_l2c_vcid }}</service-name>
<admin-state>enable</admin-state> <admin-state>enable</admin-state>
<description>SRV_L2CIRCUIT CUSTOMER {{ local_partner_name | upper }} {{ remote_partner_name | upper }} #{{ l2circuits_custom_service_name | replace(' ', '_') }} ${{ local_side.sbp.gs_id }}</description> <description>SRV_L2CIRCUIT CUSTOMER {{ local_partner_name | upper }} {{ remote_partner_name | upper }} {{ csn | replace(' ', '_') if csn is defined }} ${{ local_side.sbp.gs_id }}</description>
<service-id>{{ l2circuits_l2c_vcid }}</service-id> <service-id>{{ l2circuits_l2c_vcid }}</service-id>
<customer>1</customer> <customer>1</customer>
<vpn-id>{{ l2circuits_l2c_vcid }}</vpn-id>
<service-mtu>{{ service_mtu.nokia }}</service-mtu> <service-mtu>{{ service_mtu.nokia }}</service-mtu>
{% if not local_cross_connect %}
<ignore-l2vpn-mtu-mismatch>false</ignore-l2vpn-mtu-mismatch> <ignore-l2vpn-mtu-mismatch>false</ignore-l2vpn-mtu-mismatch>
<vpn-id>{{ l2circuits_l2c_vcid }}</vpn-id>
<spoke-sdp> <spoke-sdp>
<sdp-bind-id>{{ sdp_id }}:{{ l2circuits_l2c_vcid }}</sdp-bind-id> <sdp-bind-id>{{ sdp_id }}:{{ l2circuits_l2c_vcid }}</sdp-bind-id>
<admin-state>enable</admin-state> <admin-state>enable</admin-state>
...@@ -33,6 +37,7 @@ ...@@ -33,6 +37,7 @@
<signaling>true</signaling> <signaling>true</signaling>
</pw-status> </pw-status>
</spoke-sdp> </spoke-sdp>
{% endif %}
<sap> <sap>
<description>{{ local_partner_name | upper }}:{{ l2circuits_vlan }}:{{ local_side.sbp.gs_id }}</description> <description>{{ local_partner_name | upper }}:{{ l2circuits_vlan }}:{{ local_side.sbp.gs_id }}</description>
{% if l2circuits_l2c_type == 'Ethernet' %} {% if l2circuits_l2c_type == 'Ethernet' %}
...@@ -42,6 +47,17 @@ ...@@ -42,6 +47,17 @@
{% endif %} {% endif %}
<admin-state>enable</admin-state> <admin-state>enable</admin-state>
</sap> </sap>
{% if local_cross_connect %}
<sap>
<description>{{ remote_partner_name | upper }}:{{ l2c_side_b_vlan }}:{{ l2c_side_b_gs_id }}</description>
{% if l2circuits_l2c_type == 'Ethernet' %}
<sap-id>{{ l2c_side_b_lag }}:{{ l2c_side_b_vlan }}</sap-id>
{% else %}
<sap-id>{{ l2c_side_b_lag }}:cp-{{ l2c_side_b_vlan }}</sap-id>
{% endif %}
<admin-state>enable</admin-state>
</sap>
{% endif %}
</epipe> </epipe>
</service> </service>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment