infra-crt template

This commit is contained in:
Jonathan Dale
2025-03-28 16:10:18 -04:00
parent c7ec274171
commit 4729dbf1ea

View File

@@ -1,69 +1,183 @@
{# {#-
Declare Lo0.0 and all common protocols for a Core router Declare Lo0.0 and all common protocols for a Core router
Lo0.0 must be declared and created before protocols can be applied Lo0.0 must be declared and created before protocols can be applied
Protocols for the Lo0.0 are automatically handled by the common packages Protocols for the Lo0.0 are automatically handled by the common packages
#} #}
{%- for loopback, unit in interfaces["loopback-interface"]["lo0"]["units"].items() %}
set services infra-crt {{device}} interface loopback-interface lo0 {{unit["name"]}} skip-loopback-check true
{%- if unit["description"] is not none %}
set services infra-crt {{device}} interface loopback-interface lo0 {{unit["name"]}} description {{unit["description"]}}
{%- else %}
ERROR: Missing Description for Lo0 unit {{unit["name"]}}!!!
set services infra-crt {{device}} interface loopback-interface lo0 {{unit["name"]}} description "FIX_ME"
{%- endif %}
{%- if unit["inet4"] is not none %}
set services infra-crt {{device}} interface loopback-interface lo0 {{unit["name"]}} ipv4 {{unit["inet4"]}}
{%- endif %}
{%- if unit["inet6"] is not none %}
set services infra-crt {{device}} interface loopback-interface lo0 {{unit["name"]}} ipv6 {{unit["inet6"]}}
{%- endif %}
{%- if unit["inet4"] == none and unit["inet6"] == none %}
ERROR: ERROR: IP Addressing Missing for Lo0 unit {{unit["name"]}}!!!
set services infra-crt {{device}} interface loopback-interface lo0 {{unit["name"]}} [ipv4|ipv6] FIX_ME
{%- endif %}
{%- endfor %}
{% for loopback_unit in device_info["interface"]["loopback-interface"]["lo0"]["units"] %} set services infra-crt {{device}} isis
set services infra-crt {{device_info["device"]}} interface loopback-interface lo0 {{loopback_unit["name"]}} skip-loopback-check true set services infra-crt {{device}} ldp
{% if loopback_unit["description"] not None %} set services infra-crt {{device}} rsvp
set services infra-crt {{device_info["device"]}} interface loopback-interface lo0 {{loopback_unit["name"]}} description {{loopback_unit["description"]}} set services infra-crt {{device}} mpls-te
{% if loopback_unit["inet4"] not None %} set services infra-crt {{device}} service-policy
set services infra-crt {{device_info["device"]}} interface loopback-interface lo0 {{loopback_unit["name"]}} ipv4 {{loopback_unit["inet4"]}}
{% if loopback_unit["inet6"] not None %}
set services infra-crt {{device_info["device"]}} interface loopback-interface lo0 {{loopback_unit["name"]}} ipv6 {{loopback_unit["inet6"]}}
set services infra-crt {{device_info["device"]}} isis
set services infra-crt {{device_info["device"]}} ldp
set services infra-crt {{device_info["device"]}} rsvp
set services infra-crt {{device_info["device"]}} mpls-te
set services infra-crt {{device_info["device"]}} service-policy
{# Aggregate-interface declaration - protocol declaration for AEs is same as standard core-interfaces #} {# Aggregate-interface declaration - protocol declaration for AEs is same as standard core-interfaces #}
{% for aggregate_interface in device_info["interface"]["aggregate-interface"] %} {%- for key,aggregate_interface in interfaces["aggregate-interface"].items() %}
{% set ae_num = aggregate_interface["name"] | replace('ae', '') %} {%- set ae_num = key | replace('ae', '') %}
{% for aggregate_unit in aggregate_interface["units"] %} {%- for key,aggregate_unit in aggregate_interface["units"].items() %}
{% if aggregate_unit["mtu"] not None %} {%- set protocol_int_name = aggregate_interface["name"] ~ '.' ~ aggregate_unit["name"] %}
set services infra-crt {{device_info["device"]}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} mtu {{aggregate_unit["mtu"]}} {%- if aggregate_interface["mtu"] is not none %}
{% if aggregate_unit["inet4"] not None %} set services infra-crt {{device}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} mtu {{aggregate_interface["mtu"]}}
set services infra-crt {{device_info["device"]}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} ipv4 {{aggregate_unit["inet4"]}} {%- endif %}
{% if aggregate_unit["description"] not None %} {%- if aggregate_unit["inet4"] is not none %}
set services infra-crt {{device_info["device"]}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} description {{aggregate_unit["description"]}} set services infra-crt {{device}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} ipv4 {{aggregate_unit["inet4"]}}
{% for core_interface in aggregate_interface["units"] %} {%- else %}
{% if core_interface["description"] not None %} ERROR: IP Addressing Missing for {{aggregate_interface["name"]}} unit {{aggregate_unit["name"]}}!!!
set services infra-crt {{device_info["device"]}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} core-interface {{core_interface["name"]}} description {{aggregate_unit["description"]}} set services infra-crt {{device}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} ipv4 FIX_ME
{% else %} {%- endif %}
set services infra-crt {{device_info["device"]}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} core-interface {{core_interface["name"]}} {%- if aggregate_interface["description"] is not none %}
set services infra-crt {{device}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} description {{aggregate_interface["description"]}}
{%- else %}
ERROR: Missing Description for {{aggregate_interface["name"]}} unit {{aggregate_unit["name"]}}!!!
set services infra-crt {{device}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} description FIX_ME
{%- endif %}
{#- Find Protocols for AE #}
{#- ISIS#}
{%- if protocol_int_name in isis["interface"] %}
{%- if isis["interface"][protocol_int_name]["passive"] == True %}
set services infra-crt {{device}} isis passive-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}}
{%- else %}
set services infra-crt {{device}} isis core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} metric {{isis["interface"][protocol_int_name]["metric"]}}
{%- if isis["interface"][protocol_int_name]["enable-bfd"] == True %}
set services infra-crt {{device}} isis core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} enable-bfd true
set services infra-crt {{device}} isis core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} bfd-min-interval {{isis["interface"][protocol_int_name]["bfd-interval"]}}
set services infra-crt {{device}} isis core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} bfd-multiplier {{isis["interface"][protocol_int_name]["bfd-multiplier"]}}
{%- else %}
set services infra-crt {{device}} isis core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} enable-bfd false
{%- endif %}
{%- endif %}
{%- endif %}
{#- LDP #}
{%- if protocol_int_name in ldp["interface"] %}
set services infra-crt {{device}} ldp core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}}
{%- endif %}
{#- MPLS-TE #}
{%- if protocol_int_name in mpls_te["interface"] %}
{%- if mpls_te["interface"][protocol_int_name]["mpls-te-att-names"] is not none %}
set services infra-crt {{device}} mpls-te core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} mpls-te-att-names {{mpls_te["interface"][protocol_int_name]["mpls-te-att-names"]}}
{%- else %}
set services infra-crt {{device}} mpls-te core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}}
{%- endif %}
{%- endif %}
{#- MPLS-TE-FRR #}
{%- if protocol_int_name in mpls_te_frr["interface"] %}
set services infra-crt {{device}} mpls-te-frr junos-core-interface {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} backup-bandwidth {{mpls_te_frr["interface"][protocol_int_name]["backup-bandwidth"]}}
{%- endif %}
{#- RSVP #}
{%- if protocol_int_name in rsvp["interface"] %}
set services infra-crt {{device}} rsvp core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} core-intf-bandwidth {{rsvp["interface"][protocol_int_name]["core-intf-bandwidth"]}}
set services infra-crt {{device}} rsvp core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} core-intf-subscription {{rsvp["interface"][protocol_int_name]["core-intf-subscription"]}}
{%- endif %}
{#- Service-Policy #}
{%- if aggregate_unit["name"] in service_policy["interface"][aggregate_interface["name"]]["units"] %}
set services infra-crt {{device}} service-policy core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}}
{%- if service_policy["interface"][aggregate_interface["name"]]["service-map"] is not none %}
set services infra-crt {{device}} service-policy core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} service-map {{service_policy["interface"][aggregate_interface["name"]]["service-map"]}}
{%- endif %}
{%- if service_policy["interface"][aggregate_interface["name"]]["shaper-rate"] is not none %}
set services infra-crt {{device}} service-policy core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}} shaper-rate {{service_policy["interface"][aggregate_interface["name"]]["shaper-rate"]}}
{%- endif %}
{%- else %}
ERROR: Missing Service-Policy for {{aggregate_interface["name"]}} unit {{aggregate_unit["name"]}}!!!
set services infra-crt {{device}} service-policy core-interface name {{aggregate_interface["name"]}} {{aggregate_unit["name"]}}
{%- endif %}
{%- endfor %}
{%- for key,member_interface in aggregate_interface["member-interface"].items() %}
{%- if member_interface["description"] is not none %}
set services infra-crt {{device}} interface aggregate-interface {{ae_num}} 0 core-interface {{member_interface["name"]}} description {{member_interface["description"]}}
{%- else %}
ERROR: Missing Description for {{aggregate_interface["name"]}} Member-interface {{member_interface["name"]}}!!!
set services infra-crt {{device}} interface aggregate-interface {{ae_num}} 0 core-interface {{member_interface["name"]}} description FIX_ME
{%- endif %}
{%- endfor %}
{%- endfor %}
{# Standard core-interface declaration #} {#- Standard core-interface declaration #}
set services infra-crt {{device_info["device"]}} interface core-interface name {{iface_name}} {{unit_num}} ipv4 {{inet4-cidr}} {%- for key,core_interface in interfaces["core-interface"].items() %}
set services infra-crt {{device_info["device"]}} interface core-interface name {{iface_name}} {{unit_num}} mtu {{mtu}} {% for key,core_unit in core_interface["units"].items() %}
set services infra-crt {{device_info["device"]}} interface core-interface name {{iface_name}} {{unit_num}} description {{description}} {%- set protocol_int_name = core_interface["name"] ~ '.' ~ core_unit["name"] %}
{%- if core_interface["description"] is not none %}
set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} description {{core_interface["description"]}}
{# Below protocol delcarations should only be made if the interface was declared #} {%- endif %}
{%- if core_interface["description"] is none %}
{# Declare protocol LDP per participating interface #} set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} description FIX_ME
set services infra-crt {{device_info["device"]}} ldp core-interface name {{iface_name}} {{unit_num}} {%- endif %}
{%- if core_interface["mtu"] is not none%}
{# Declare protocol ISIS per participating interface - BFD settings only needed if enable-bfd == true #} set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} mtu {{core_interface["mtu"]}}
set services infra-crt {{device_info["device"]}} isis core-interface name {{iface_name}} {{unit_num}} metric {{metric}} {%- endif %}
set services infra-crt {{device_info["device"]}} isis core-interface name {{iface_name}} {{unit_num}} enable-bfd {{enable-bfd}} {%- if core_unit["inet4"] is not none%}
set services infra-crt {{device_info["device"]}} isis core-interface name {{iface_name}} {{unit_num}} bfd-min-interval {{bfd-interval}} set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} ipv4 {{core_unit["inet4"]}}
set services infra-crt {{device_info["device"]}} isis core-interface name {{iface_name}} {{unit_num}} bfd-multiplier {{bfd-multiplier}} {%- endif %}
{%- if core_unit["inet4"] is none%}
{# Declare protocol RSVP per participating interface #} set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} ipv4 FIX_ME
set services infra-crt {{device_info["device"]}} rsvp core-interface name {{iface_name}} {{unit_num}} core-intf-bandwidth {{core-intf-bandwidth}} {%- endif %}
set services infra-crt {{device_info["device"]}} rsvp core-interface name {{iface_name}} {{unit_num}} core-intf-subscription {{core-intf-subscription}} {#- Find Protocols for AE #}
{#- ISIS#}
{# Declare Service-Policy per interface -- truncate service-map and shaper-rate if values are null ?? #} {%- if protocol_int_name in isis["interface"] %}
set services infra-crt {{device_info["device"]}} service-policy core-interface name {{iface_name}} {{unit_num}} {%- if isis["interface"][protocol_int_name]["passive"] == True %}
set services infra-crt {{device_info["device"]}} service-policy core-interface name {{iface_name}} {{unit_num}} service-map {{service-map}} set services infra-crt {{device}} isis passive-interface name {{core_interface["name"]}} {{core_unit["name"]}}
set services infra-crt {{device_info["device"]}} service-policy core-interface name {{iface_name}} {{unit_num}} shaper-rate {{shaper-rate}} {%- else %}
set services infra-crt {{device}} isis core-interface name {{core_interface["name"]}} {{core_unit["name"]}} metric {{isis["interface"][protocol_int_name]["metric"]}}
{# Declare MPLS-TE per participating Interface - Truncate line if mpls-te-att-names is null #} {%- if isis["interface"][protocol_int_name]["enable-bfd"] == True %}
set services infra-crt {{device_info["device"]}} mpls-te core-interface name {{iface_name}} {{unit_num}} set services infra-crt {{device}} isis core-interface name {{core_interface["name"]}} {{core_unit["name"]}} enable-bfd true
set services infra-crt {{device_info["device"]}} mpls-te core-interface name {{iface_name}} {{unit_num}} mpls-te-att-names [ {{mpls-te-att-names}} ] set services infra-crt {{device}} isis core-interface name {{core_interface["name"]}} {{core_unit["name"]}} bfd-min-interval {{isis["interface"][protocol_int_name]["bfd-interval"]}}
set services infra-crt {{device}} isis core-interface name {{core_interface["name"]}} {{core_unit["name"]}} bfd-multiplier {{isis["interface"][protocol_int_name]["bfd-multiplier"]}}
{# Declare MPLS-TE-FRR per participating interface #} {%- else %}
set services infra-crt {{device_info["device"]}} mpls-te-frr junos-core-interface {{iface_name}} {{unit_num}} backup-bandwidth {{backup-bandwidth}} set services infra-crt {{device}} isis core-interface name {{core_interface["name"]}} {{core_unit["name"]}} enable-bfd false
{%- endif %}
{%- endif %}
{%- endif %}
{#- LDP #}
{%- if protocol_int_name in ldp["interface"] %}
set services infra-crt {{device}} ldp core-interface name {{core_interface["name"]}} {{core_unit["name"]}}
{%- endif %}
{#- MPLS-TE #}
{%- if protocol_int_name in mpls_te["interface"] %}
{%- if mpls_te["interface"][protocol_int_name]["mpls-te-att-names"] is not none %}
set services infra-crt {{device}} mpls-te core-interface name {{core_interface["name"]}} {{core_unit["name"]}} mpls-te-att-names {{mpls_te["interface"][protocol_int_name]["mpls-te-att-names"]}}
{%- else %}
set services infra-crt {{device}} mpls-te core-interface name {{core_interface["name"]}} {{core_unit["name"]}}
{%- endif %}
{%- endif %}
{#- MPLS-TE-FRR #}
{%- if protocol_int_name in mpls_te_frr["interface"] %}
set services infra-crt {{device}} mpls-te-frr junos-core-interface {{core_interface["name"]}} {{core_unit["name"]}} backup-bandwidth {{mpls_te_frr["interface"][protocol_int_name]["backup-bandwidth"]}}
{%- endif %}
{#- RSVP #}
{%- if protocol_int_name in rsvp["interface"] %}
set services infra-crt {{device}} rsvp core-interface name {{core_interface["name"]}} {{core_unit["name"]}} core-intf-bandwidth {{rsvp["interface"][protocol_int_name]["core-intf-bandwidth"]}}
set services infra-crt {{device}} rsvp core-interface name {{core_interface["name"]}} {{core_unit["name"]}} core-intf-subscription {{rsvp["interface"][protocol_int_name]["core-intf-subscription"]}}
{%- endif %}
{#- Service-Policy #}
{%- if core_unit["name"] in service_policy["interface"][core_interface["name"]]["units"] %}
set services infra-crt {{device}} service-policy core-interface name {{core_interface["name"]}} {{core_unit["name"]}}
{%- if service_policy["interface"][core_interface["name"]]["service-map"] is not none %}
set services infra-crt {{device}} service-policy core-interface name {{core_interface["name"]}} {{core_unit["name"]}} service-map {{service_policy["interface"][core_interface["name"]]["service-map"]}}
{%- endif %}
{%- if service_policy["interface"][core_interface["name"]]["shaper-rate"] is not none %}
set services infra-crt {{device}} service-policy core-interface name {{core_interface["name"]}} {{core_unit["name"]}} shaper-rate {{service_policy["interface"][core_interface["name"]]["shaper-rate"]}}
{%- endif %}
{%- else %}
ERROR: Missing Service-Policy for {{core_interface["name"]}} unit {{core_unit["name"]}}!!!
set services infra-crt {{device}} service-policy core-interface name {{core_interface["name"]}} {{core_unit["name"]}}
{%- endif %}
{%- endfor %}
{%- endfor %}