我正在用python解析器在Nokia节点上为VPLS服务配置设计一个解析器。下面是VPLS服务上evpn配置的两个示例。我想现在集中讨论bgp和bgp-evpn部件。
description "evpn-mpls-service with single-active multihoming"
bgp
bgp-evpn
evi 10
mpls
no shutdown
auto-bind-tunnel resolution any
spoke-sdp 2:1 create
exit--
bgp
route-distinguisher 63.130.124.186:50050
route-target export target:4445:50050 import target:4445:50050
exit
bgp-evpn
mpls bgp 1
control-word
auto-bind-tunnel
resolution-filter
ldp
rsvp
sr-isis
sr-te
exit
resolution filter
exit
no shutdown
exit
exit下面是第二个示例的TTP模板:
<group name="bgp">
bgp {{ _start_ }}
route-distinguisher {{ route_distinguisher }}
<group name="route_target**">
route-target export target:{{ export_target}} import target:{{ import_target }}
</group>
exit {{ _end_ }}
</group>
<group name="bgp_evpn">
bgp-evpn {{ _start_ }}
<group name="mpls">
mpls {{ reference | ORPHRASE }}
<group name="auto_bind_tunnel">
auto-bind-tunnel {{ _start_ }}
<group name="resolution_filters">
resolution-filter {{ _start_ }}
{{ resolution_filter | _line_ }}
exit {{ _end_ }}
</group>
resolution {{ resolution }}
exit {{ _end_ }}
</group>
no shutdown {{ state | set("enabled") | default("disabled") }}
exit {{ _end_ }}
</group>
exit {{ _end_ }}
</group>因为这两种配置格式都可能存在于单个配置文件中。我需要使用一个模板来涵盖这两种情况。是可行的吗?我该如何调整模板呢?
发布于 2022-07-02 01:42:53
此模板:
<group name="bgp">
bgp {{ _start_ }}
route-distinguisher {{ route_distinguisher }}
<group name="route_target**">
route-target export target:{{ export_target}} import target:{{ import_target }}
</group>
exit {{ _end_ }}
</group>
<group name="bgp_evpn">
bgp-evpn {{ _start_ }}
<group name="evi">
evi {{ reference }}
<group name="mpls_params**">
mpls {{ _start_ }}
no shutdown {{ state | set("enabled") | default("disabled") }}
auto-bind-tunnel resolution {{ resolution }}
</group>
</group>
<group name="mpls">
mpls {{ reference | ORPHRASE }}
<group name="auto_bind_tunnel">
auto-bind-tunnel {{ _start_ }}
<group name="resolution_filters">
resolution-filter {{ _start_ }}
{{ resolution_filter | _line_ }}
exit {{ _end_ }}
</group>
resolution {{ resolution }}
exit {{ _end_ }}
</group>
no shutdown {{ state | set("enabled") | default("disabled") }}
exit {{ _end_ }}
</group>
exit {{ _end_ }}
</group>给出这个输出:
[
{
"bgp": {
"route_distinguisher": "63.130.124.186:50050",
"route_target": {
"export_target": "4445:50050",
"import_target": "4445:50050"
}
},
"bgp_evpn": [
{
"evi": {
"mpls_params": {
"resolution": "any",
"state": "enabled"
},
"reference": "10"
}
},
{
"mpls": {
"auto_bind_tunnel": {
"resolution": "filter",
"resolution_filters": {
"resolution_filter": "ldp\nrsvp\nsr-isis\nsr-te"
}
},
"reference": "bgp 1",
"state": "enabled"
}
}
]
}
]以上使用此沙箱进行测试:https://textfsm.nornir.tech/
不确定这是否是您所追求的,但它可以解析这两种格式并将它们合并到总体结果中,对于sros,此回购可能是一个有用的示例来源:https://pypi.org/project/ttp-sros-parser/。
https://stackoverflow.com/questions/72700964
复制相似问题