Files
config_builder/templates/infra-crt-NSO.config
2025-03-28 16:10:18 -04:00

184 lines
12 KiB
Plaintext

{#-
Declare Lo0.0 and all common protocols for a Core router
Lo0.0 must be declared and created before protocols can be applied
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 %}
set services infra-crt {{device}} isis
set services infra-crt {{device}} ldp
set services infra-crt {{device}} rsvp
set services infra-crt {{device}} mpls-te
set services infra-crt {{device}} service-policy
{# Aggregate-interface declaration - protocol declaration for AEs is same as standard core-interfaces #}
{%- for key,aggregate_interface in interfaces["aggregate-interface"].items() %}
{%- set ae_num = key | replace('ae', '') %}
{%- for key,aggregate_unit in aggregate_interface["units"].items() %}
{%- set protocol_int_name = aggregate_interface["name"] ~ '.' ~ aggregate_unit["name"] %}
{%- if aggregate_interface["mtu"] is not none %}
set services infra-crt {{device}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} mtu {{aggregate_interface["mtu"]}}
{%- endif %}
{%- if aggregate_unit["inet4"] is not none %}
set services infra-crt {{device}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} ipv4 {{aggregate_unit["inet4"]}}
{%- else %}
ERROR: IP Addressing Missing for {{aggregate_interface["name"]}} unit {{aggregate_unit["name"]}}!!!
set services infra-crt {{device}} interface aggregate-interface {{ae_num}} {{aggregate_unit["name"]}} ipv4 FIX_ME
{%- endif %}
{%- 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 #}
{%- for key,core_interface in interfaces["core-interface"].items() %}
{% for key,core_unit in core_interface["units"].items() %}
{%- 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"]}}
{%- endif %}
{%- if core_interface["description"] is none %}
set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} description FIX_ME
{%- endif %}
{%- if core_interface["mtu"] is not none%}
set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} mtu {{core_interface["mtu"]}}
{%- endif %}
{%- if core_unit["inet4"] is not none%}
set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} ipv4 {{core_unit["inet4"]}}
{%- endif %}
{%- if core_unit["inet4"] is none%}
set services infra-crt {{device}} interface core-interface name {{core_interface["name"]}} {{core_unit["name"]}} ipv4 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 {{core_interface["name"]}} {{core_unit["name"]}}
{%- else %}
set services infra-crt {{device}} isis core-interface name {{core_interface["name"]}} {{core_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 {{core_interface["name"]}} {{core_unit["name"]}} enable-bfd true
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"]}}
{%- else %}
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 %}