63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
#!/usr/bin/env python
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
# Copyright 2023, 6wind
|
|
import json
|
|
|
|
from lib import topotest
|
|
|
|
|
|
def check_show_bgp_vpn_prefix_not_found(router, ipversion, prefix, rd, label=None):
|
|
"""
|
|
Check if a given vpn prefix is not present in the BGP RIB
|
|
* 'router': the router to check BGP VPN RIB
|
|
* 'ipversion': The ip version to check: ipv4 or ipv6
|
|
* 'prefix': the IP prefix to check
|
|
* 'rd': the route distinguisher to check
|
|
* 'label: the label to check
|
|
"""
|
|
output = json.loads(
|
|
router.vtysh_cmd("show bgp {} vpn {} json".format(ipversion, prefix))
|
|
)
|
|
if label:
|
|
expected = {rd: {"prefix": prefix, "paths": [{"remoteLabel": label}]}}
|
|
else:
|
|
expected = {rd: {"prefix": prefix}}
|
|
ret = topotest.json_cmp(output, expected)
|
|
if ret is None:
|
|
return "not good"
|
|
return None
|
|
|
|
|
|
def check_show_bgp_vpn_prefix_found(
|
|
router, ipversion, prefix, rd, label=None, nexthop=None
|
|
):
|
|
"""
|
|
Check if a given vpn prefix is present in the BGP RIB
|
|
* 'router': the router to check BGP VPN RIB
|
|
* 'ipversion': The ip version to check: ipv4 or ipv6
|
|
* 'prefix': the IP prefix to check
|
|
* 'rd': the route distinguisher to check
|
|
* 'label: the label to check
|
|
"""
|
|
output = json.loads(
|
|
router.vtysh_cmd("show bgp {} vpn {} json".format(ipversion, prefix))
|
|
)
|
|
if label:
|
|
if nexthop:
|
|
expected = {
|
|
rd: {
|
|
"prefix": prefix,
|
|
"paths": [{"remoteLabel": label, "nexthops": [{"ip": nexthop}]}],
|
|
}
|
|
}
|
|
else:
|
|
expected = {rd: {"prefix": prefix, "paths": [{"remoteLabel": label}]}}
|
|
else:
|
|
if nexthop:
|
|
expected = {
|
|
rd: {"prefix": prefix, "paths": [{"nexthops": [{"ip": nexthop}]}]}
|
|
}
|
|
else:
|
|
expected = {rd: {"prefix": prefix}}
|
|
return topotest.json_cmp(output, expected)
|