|
1 | 1 | {% from "templates/initial/sros.j2" import if_name, declare_router with context %} |
2 | 2 |
|
3 | | -{% macro isis_config(l) %} |
4 | | -{{ declare_router(l) }} |
| 3 | +{% macro isis_router(vrf_data,isis,intf_list) %} |
| 4 | +{% set kw_level = {'level-1': '1', 'level-2': '2', 'level-1-2': '1/2'} %} |
| 5 | +{{ declare_router(vrf_data) }} |
5 | 6 | val: |
6 | | - isis: |
7 | | - - isis-instance: 0 |
8 | | - admin-state: enable |
9 | | - area-address: ["{{ isis.net | default( "%s.0000.0000.%04d.00" % (isis.area,id) ) }}"] |
10 | | - level-capability: "{{ '2' if isis.type=='level-2' else ('1' if isis.type=='level-1' else '1/2') }}" |
| 7 | + isis: |
| 8 | + - isis-instance: 0 |
| 9 | + system-id: "{{ isis.system_id }}" |
| 10 | + admin-state: enable |
| 11 | + area-address: ["{{ isis.area }}"] |
| 12 | + level: |
| 13 | + - level-number: "1" |
| 14 | + wide-metrics-only: True |
| 15 | + - level-number: "2" |
| 16 | + wide-metrics-only: True |
| 17 | +{% if isis.type is defined %} |
| 18 | + level-capability: "{{ kw_level[isis.type] }}" |
| 19 | +{% endif %} |
11 | 20 | {% if isis.af.ipv6 is defined %} |
12 | | - multi-topology: |
13 | | - ipv6-unicast: True |
| 21 | + multi-topology: |
| 22 | + ipv6-unicast: True |
14 | 23 | {% endif %} |
15 | | - interface: |
16 | | - - interface-name: {{ if_name(l,l.ifname) }} |
17 | | - interface-type: {{ l.isis.network_type|default('broadcast') }} |
18 | | - passive: {{ l.isis.passive }} |
| 24 | +{% for l in intf_list if 'isis' in l %} |
| 25 | +{% if loop.first %} |
| 26 | + interface: |
| 27 | +{% endif %} |
| 28 | + - interface-name: {{ if_name(l,l.ifname) }} |
| 29 | + interface-type: {{ l.isis.network_type|default('broadcast') }} |
| 30 | + passive: {{ l.isis.passive }} |
19 | 31 | {% if l.isis.bfd is defined %} |
20 | | - bfd-liveness: |
| 32 | + bfd-liveness: |
21 | 33 | {% if l.isis.bfd.ipv4|default(False) %} |
22 | | - ipv4: |
23 | | - include-bfd-tlv: True |
| 34 | + ipv4: |
| 35 | + include-bfd-tlv: True |
24 | 36 | {% endif %} |
25 | 37 | {% if l.isis.bfd.ipv6|default(False) %} |
26 | | - ipv6: |
27 | | - include-bfd-tlv: True |
| 38 | + ipv6: |
| 39 | + include-bfd-tlv: True |
28 | 40 | {% endif %} |
29 | 41 | {% endif %} |
30 | 42 | {% if (l.isis.metric is defined or l.isis.cost is defined) %} |
31 | | - level: |
32 | | -{% for level in ['1','2'] %} |
33 | | - - level-number: "{{ level }}" |
34 | | - metric: {{ l.isis.metric|default(l.isis.cost) }} |
35 | | -{% if 'ipv6' in isis.af and 'ipv6' in l %} |
36 | | - ipv6-unicast-metric: {{ l.isis.metric|default(l.isis.cost) }} |
37 | | -{% endif %} |
38 | | -{% endfor %} |
| 43 | + level: |
| 44 | +{% for level in ['1','2'] %} |
| 45 | + - level-number: "{{ level }}" |
| 46 | + metric: {{ l.isis.metric|default(l.isis.cost) }} |
| 47 | +{% if 'ipv6' in isis.af and 'ipv6' in l %} |
| 48 | + ipv6-unicast-metric: {{ l.isis.metric|default(l.isis.cost) }} |
| 49 | +{% endif %} |
| 50 | +{% endfor %} |
39 | 51 | {% endif %} |
| 52 | +{% endfor %} |
40 | 53 | {% endmacro %} |
41 | 54 |
|
42 | 55 | updates: |
43 | | -{{ isis_config( { 'ifname': 'system', 'isis': { 'passive' : True } } ) }} |
44 | | - |
45 | | -{% for l in interfaces|default([]) if 'isis' in l %} |
46 | | -{{ isis_config(l) }} |
47 | | -{% endfor %} |
| 56 | +{% if isis is defined %} |
| 57 | +{{ isis_router({},isis,netlab_interfaces) }} |
| 58 | +{% endif %} |
0 commit comments