Browse Source

refactor

master
Marek Isalski 3 years ago
parent
commit
4a6d5dacf9
3 changed files with 68 additions and 69 deletions
  1. +0
    -51
      includes/junos-macros.j2
  2. +68
    -16
      includes/junos-v21-core-router/interfaces.j2
  3. +0
    -2
      junos-v21-core-router.j2

+ 0
- 51
includes/junos-macros.j2

@ -1,51 +0,0 @@
{%- macro interface_description(interface, interface_context) %}
description "{% if interface.label %}{{ interface.label|replace('"','\\"') or "-" }}: {% endif %}{{ interface.description|replace('"','\\"') or "-" }}{% if interface.connected_endpoint %} ({{ interface.connected_endpoint.name|replace('"','\\"')|replace('.voneus.net','') }}{% if interface.connected_endpoint.device.name %} @ {{ interface.connected_endpoint.device.name|replace('.voneus.net','')|replace('"','\\"') }}{% endif %}){% endif %}{% if interface.cable %} via [{{ interface.cable.label.split("/")[-1] }}]{% endif %}{% if interface.link_peer %} to [{{ interface.link_peer.label or interface.link_peer.name }}{% if interface.link_peer.device %} @ {{ interface.link_peer.device.name.split("/")[-1]|replace('"','\\"')|replace('.voneus.net','') }}]{% endif %}{% endif %}"
{%- endmacro %}
{%- macro interface_common(interface, interface_context, mtu=True) %}
{%- if mtu and interface.mtu %}
mtu {{ interface.mtu }};
{%- endif %}
{%- endmacro %}
{%- macro interface_addresses(device, interface, interface_context, interface_tags, mtu=False) %}
family inet {
{%- if mtu and interface.mtu %}
mtu {{ interface.mtu }};
{%- endif %}
{%- for address in interface|get_addresses %}{% if address|ipv4 %}
address {{ address.address }}{% if address.address == device.primary_ip4.address %}{
primary;
preferred;
}{% else %};{% endif %}
{%- endif %}{%- endfor %}
filter {
input control-plane-protection-IPv4;
}
}
family inet6 {
{%- if mtu and interface.mtu %}
mtu {{ interface.mtu }};
{%- endif %}
{%- for address in interface|get_addresses %}{% if address|ipv6 %}
address {{ address.address }}{% if address.address == device.primary_ip6.address %}{
primary;
preferred;
}{% else %};{% endif %}
{%- endif %}{%- endfor %}
filter {
input control-plane-protection-IPv6;
}
}
{%- set tags = interface.tags|tags_to_map %}
{%- if 'core-isis-link' in tags %}
family iso;
family mpls;
{%- elif 'isis-loopback' in tags %}
family iso {
address {{ device.primary_ip4.address|ipv4_to_iso }};
}
{%- endif %}
{%- endmacro %}

+ 68
- 16
includes/junos-v21-core-router/interfaces.j2

@ -1,3 +1,55 @@
{%- macro interface_description(interface, interface_context) %}
description "{% if interface.label %}{{ interface.label|replace('"','\\"') or "-" }}: {% endif %}{{ interface.description|replace('"','\\"') or "-" }}{% if interface.connected_endpoint %} ({{ interface.connected_endpoint.name|replace('"','\\"')|replace('.voneus.net','') }}{% if interface.connected_endpoint.device.name %} @ {{ interface.connected_endpoint.device.name|replace('.voneus.net','')|replace('"','\\"') }}{% endif %}){% endif %}{% if interface.cable %} via [{{ interface.cable.label.split("/")[-1] }}]{% endif %}{% if interface.link_peer %} to [{{ interface.link_peer.label or interface.link_peer.name }}{% if interface.link_peer.device %} @ {{ interface.link_peer.device.name.split("/")[-1]|replace('"','\\"')|replace('.voneus.net','') }}]{% endif %}{% endif %}"
{%- endmacro %}
{%- macro interface_common(interface, interface_context, mtu=True) %}
{%- if mtu and interface.mtu %}
mtu {{ interface.mtu }};
{%- endif %}
{%- endmacro %}
{%- macro interface_addresses(device, interface, interface_context, interface_tags, mtu=False) %}
family inet {
{%- if mtu and interface.mtu %}
mtu {{ interface.mtu }};
{%- endif %}
{%- for address in interface|get_addresses %}{% if address|ipv4 %}
address {{ address.address }}{% if address.address == device.primary_ip4.address %}{
primary;
preferred;
}{% else %};{% endif %}
{%- endif %}{%- endfor %}
filter {
input control-plane-protection-IPv4;
}
}
family inet6 {
{%- if mtu and interface.mtu %}
mtu {{ interface.mtu }};
{%- endif %}
{%- for address in interface|get_addresses %}{% if address|ipv6 %}
address {{ address.address }}{% if address.address == device.primary_ip6.address %}{
primary;
preferred;
}{% else %};{% endif %}
{%- endif %}{%- endfor %}
filter {
input control-plane-protection-IPv6;
}
}
{%- set tags = interface.tags|tags_to_map %}
{%- if 'core-isis-link' in tags %}
family iso;
family mpls;
{%- elif 'isis-loopback' in tags %}
family iso {
address {{ device.primary_ip4.address|ipv4_to_iso }};
}
{%- endif %}
{%- endmacro %}
{{ "interfaces"|progress }} {
{%- for interface, subinterfaces in device_interfaces|subinterfaces(".") %}
@ -19,16 +71,16 @@
{% elif interface.lag %}
{{ interface.name }} {
{{ macros.interface_description(interface, interface_context) }}
{{ macros.interface_common(interface, interface_context, mtu=False) }}
{{ interface_description(interface, interface_context) }}
{{ interface_common(interface, interface_context, mtu=False) }}
gigether-options {
802.3ad {{ interface.lag.name }};
}
{%- elif interface.name.startswith( 'lo' ) %}
{{ interface.name }} {
{{ macros.interface_description(interface, interface_context) }}
{{ macros.interface_common(interface, interface_context) }}
{{ interface_description(interface, interface_context) }}
{{ interface_common(interface, interface_context) }}
{%- for unit, subinterface in subinterfaces %}
{%- set subinterface_tags = [] %}
@ -42,9 +94,9 @@
vlan-id {{ unit }};
{%- endif %}
{%- set subinterface_context = subinterface.tags|get_netbox_tags_contexts|contexts_merge_last %}
{{ macros.interface_description(subinterface, subinterface_context) }}
{{ macros.interface_common(subinterface, subinterface_context, mtu=False) }}
{{ macros.interface_addresses(device, subinterface, subinterface_context, subinterface_tags, mtu=False) }}
{{ interface_description(subinterface, subinterface_context) }}
{{ interface_common(subinterface, subinterface_context, mtu=False) }}
{{ interface_addresses(device, subinterface, subinterface_context, subinterface_tags, mtu=False) }}
}
{%- endfor %}
@ -55,18 +107,18 @@
minimum-links 1;
link-speed 100g;
}
{{ macros.interface_description(interface, interface_context) }}
{{ macros.interface_common(interface, interface_context, mtu=True) }}
{{ interface_description(interface, interface_context) }}
{{ interface_common(interface, interface_context, mtu=True) }}
{%- elif interface.type.value != 'virtual' %}
{{ interface.name }} {
{{ macros.interface_description(interface) }}
{{ interface_description(interface) }}
{%- if not interface.mode or ( interface.mode.value == 'access' ) %}
unit 0 {
{{ macros.interface_description(interface, interface_context) }}
{{ macros.interface_common(interface, interface_context, mtu=False) }}
{{ macros.interface_addresses(device, interface, interface_context, interface_tags, mtu=True) }}
{{ interface_description(interface, interface_context) }}
{{ interface_common(interface, interface_context, mtu=False) }}
{{ interface_addresses(device, interface, interface_context, interface_tags, mtu=True) }}
}
{%- elif interface.mode.value == 'tagged' %}
vlan-tagging;
@ -91,9 +143,9 @@
vlan-id {{ unit }};
{%- endif %}
{%- set subinterface_context = subinterface.tags|get_netbox_tags_contexts|contexts_merge_last %}
{{ macros.interface_description(subinterface, subinterface_context) }}
{{ macros.interface_common(subinterface, subinterface_context, mtu=False) }}
{{ macros.interface_addresses(device, subinterface, subinterface_context, subinterface_tags, mtu=True) }}
{{ interface_description(subinterface, subinterface_context) }}
{{ interface_common(subinterface, subinterface_context, mtu=False) }}
{{ interface_addresses(device, subinterface, subinterface_context, subinterface_tags, mtu=True) }}
}
{%- endfor %}
{%- endif %}

+ 0
- 2
junos-v21-core-router.j2

@ -1,7 +1,5 @@
/* generated by bgprtrmgr using junos-v21-core-router.j2 at XXX */
{% import "includes/junos-macros.j2" as macros %}
version 21.3R1.9;
{% set asns_requiring_prefixes = [] %}

Loading…
Cancel
Save