ttp
ttp copied to clipboard
TTP KeyError while running macro
trying to parse some ios-xr 5.1.3 router interfaces and am running into a "KeyError:" issue whenever an interface has "secondary" IP's assigned to it.
I think it may have something to do with the 2nd group tag, although I tried grouping another variable in the template and it worked.
template = """
<input load="text">
interface Bundle-Ether801.101
description TTP MACRO TEST INTERFACE
mtu 9104
ipv4 address 192.168.1.1 255.255.255.0
ipv4 address 10.50.45.1 255.255.255.128 secondary
load-interval 30
encapsulation dot1q 101
!
</input>
<macro>
def is_trunk(data):
if "dot1q" in data['interface']:
data['trunk'] = True
else:
data['trunk'] = False
return data
</macro>
<group name="interfaces.{{ interface }}" macro="is_trunk">
interface {{ interface }}
description {{ description |ORPHRASE }}
mtu {{ mtu }}
vrf {{ vrf |default(None) }}
service-policy input {{ sp_ingress |default(None) }}
service-policy output {{ sp_egress |default(None) }}
ipv4 address {{ ipv4_addr |default(None) }} {{ ipv4_mask |default(None) }}
<group name="secondary">
ipv4 address {{ ipv4_addr |default(None) }} {{ ipv4_mask |default(None) }} secondary
</group>
ipv6 address {{ ipv6_addr |default(None) }}/{{ ipv6_mask |default(None) }}
encapsulation dot1q {{ dot1q }}
ipv4 access-group {{ ingress_acl_v4 |_exact_ |default(None) }} ingress
ipv4 access-group {{ egress_acl_v4 |_exact_ |default(None) }} egress
bundle id {{ lag_id }} mode {{ mode }}
ipv6 access-group {{ ingress_acl_v6 |_exact_ |default(None) }} ingress
ipv6 access-group {{ egress_acl_v6 |_exact_ |default(None) }} egress
shutdown {{ disabled |set(True) }}
! {{ _end_ }}
</group>
"""
parser = ttp(
template=template,
log_level ="DEBUG",
log_file="macro_test_1.log",
)
parser.parse()
res = parser.result()
print(res)
issue seen on ttp 0.9.1 using python version 3.6.9, Python 3.9.13 + ttp 0.7.2 works fine