diff options
Diffstat (limited to 'tests/units/anta_tests/routing')
-rw-r--r-- | tests/units/anta_tests/routing/__init__.py | 1 | ||||
-rw-r--r-- | tests/units/anta_tests/routing/test_bgp.py | 1906 | ||||
-rw-r--r-- | tests/units/anta_tests/routing/test_generic.py | 47 | ||||
-rw-r--r-- | tests/units/anta_tests/routing/test_ospf.py | 213 |
4 files changed, 1308 insertions, 859 deletions
diff --git a/tests/units/anta_tests/routing/__init__.py b/tests/units/anta_tests/routing/__init__.py index e772bee..aef1274 100644 --- a/tests/units/anta_tests/routing/__init__.py +++ b/tests/units/anta_tests/routing/__init__.py @@ -1,3 +1,4 @@ # Copyright (c) 2023-2024 Arista Networks, Inc. # Use of this source code is governed by the Apache License 2.0 # that can be found in the LICENSE file. +"""Test for anta.tests.routing submodule.""" diff --git a/tests/units/anta_tests/routing/test_bgp.py b/tests/units/anta_tests/routing/test_bgp.py index 799f058..31006c5 100644 --- a/tests/units/anta_tests/routing/test_bgp.py +++ b/tests/units/anta_tests/routing/test_bgp.py @@ -1,9 +1,8 @@ # Copyright (c) 2023-2024 Arista Networks, Inc. # Use of this source code is governed by the Apache License 2.0 # that can be found in the LICENSE file. -""" -Tests for anta.tests.routing.bgp.py -""" +"""Tests for anta.tests.routing.bgp.py.""" + # pylint: disable=C0302 from __future__ import annotations @@ -11,7 +10,7 @@ from typing import Any # pylint: disable=C0413 # because of the patch above -from anta.tests.routing.bgp import ( # noqa: E402 +from anta.tests.routing.bgp import ( VerifyBGPAdvCommunities, VerifyBGPExchangedRoutes, VerifyBGPPeerASNCap, @@ -34,44 +33,100 @@ DATA: list[dict[str, Any]] = [ { "vrfs": { "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.255.0": { - "description": "DC1-SPINE1_Ethernet1", - "version": 4, - "msgReceived": 0, - "msgSent": 0, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266295.098931, - "underMaintenance": False, "peerState": "Established", }, "10.1.255.2": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + }, + }, + { + "vrfs": { + "MGMT": { + "peers": { + "10.255.0.21": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + }, + }, + { + "vrfs": { + "default": { + "peers": { + "10.255.0.1": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "10.255.0.2": { "description": "DC1-SPINE2_Ethernet1", - "version": 4, - "msgReceived": 3759, - "msgSent": 3757, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 14, - "prefixReceived": 14, - "upDownTime": 1694266296.367261, - "underMaintenance": False, "peerState": "Established", }, }, - } - } - } + }, + }, + }, + { + "vrfs": { + "default": { + "peers": { + "10.255.0.11": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "10.255.0.12": { + "description": "DC1-SPINE2_Ethernet1", + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + }, + }, + { + "vrfs": { + "default": { + "peers": { + "10.255.0.21": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "10.255.0.22": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + }, + }, ], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "unicast", "vrf": "default", "num_peers": 2}]}, + "inputs": { + "address_families": [ + {"afi": "ipv4", "safi": "unicast", "vrf": "default", "num_peers": 2}, + {"afi": "ipv4", "safi": "sr-te", "vrf": "MGMT", "num_peers": 1}, + {"afi": "evpn", "num_peers": 2}, + {"afi": "link-state", "num_peers": 2}, + {"afi": "path-selection", "num_peers": 2}, + ] + }, "expected": {"result": "success"}, }, { @@ -81,59 +136,189 @@ DATA: list[dict[str, Any]] = [ { "vrfs": { "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.255.0": { - "description": "DC1-SPINE1_Ethernet1", - "version": 4, - "msgReceived": 0, - "msgSent": 0, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266295.098931, - "underMaintenance": False, "peerState": "Established", }, "10.1.255.2": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + }, + }, + { + "vrfs": { + "MGMT": { + "peers": { + "10.255.0.21": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + }, + }, + { + "vrfs": { + "default": { + "peers": { + "10.255.0.1": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "10.255.0.2": { "description": "DC1-SPINE2_Ethernet1", - "version": 4, - "msgReceived": 3759, - "msgSent": 3757, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 14, - "prefixReceived": 14, - "upDownTime": 1694266296.367261, - "underMaintenance": False, "peerState": "Established", }, }, - } - } - } + }, + }, + }, + { + "vrfs": { + "default": { + "peers": { + "10.255.0.11": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "10.255.0.12": { + "description": "DC1-SPINE2_Ethernet1", + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + }, + }, + { + "vrfs": { + "default": { + "peers": { + "10.255.0.21": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + }, + }, ], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "unicast", "vrf": "default", "num_peers": 3}]}, - "expected": {"result": "failure", "messages": ["Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'default': 'Expected: 3, Actual: 2'}}]"]}, + "inputs": { + "address_families": [ + {"afi": "ipv4", "safi": "unicast", "vrf": "default", "num_peers": 3}, + {"afi": "ipv4", "safi": "sr-te", "vrf": "MGMT", "num_peers": 2}, + {"afi": "evpn", "num_peers": 1}, + {"afi": "link-state", "num_peers": 3}, + {"afi": "path-selection", "num_peers": 3}, + ] + }, + "expected": { + "result": "failure", + "messages": [ + "Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'default': 'Expected: 3, Actual: 2'}}, " + "{'afi': 'ipv4', 'safi': 'sr-te', 'vrfs': {'MGMT': 'Expected: 2, Actual: 1'}}, " + "{'afi': 'evpn', 'vrfs': {'default': 'Expected: 1, Actual: 2'}}, " + "{'afi': 'link-state', 'vrfs': {'default': 'Expected: 3, Actual: 2'}}, " + "{'afi': 'path-selection', 'vrfs': {'default': 'Expected: 3, Actual: 1'}}]" + ], + }, }, { "name": "failure-no-peers", "test": VerifyBGPPeerCount, - "eos_data": [{"vrfs": {"default": {"vrf": "default", "routerId": "10.1.0.3", "asn": "65120", "peers": {}}}}], - "inputs": {"address_families": [{"afi": "ipv6", "safi": "unicast", "vrf": "default", "num_peers": 3}]}, - "expected": {"result": "failure", "messages": ["Failures: [{'afi': 'ipv6', 'safi': 'unicast', 'vrfs': {'default': 'Expected: 3, Actual: 0'}}]"]}, + "eos_data": [ + { + "vrfs": { + "default": { + "peers": {}, + } + } + }, + { + "vrfs": { + "MGMT": { + "peers": {}, + } + } + }, + { + "vrfs": { + "default": { + "peers": {}, + } + } + }, + { + "vrfs": { + "default": { + "peers": {}, + } + } + }, + { + "vrfs": { + "default": { + "peers": {}, + } + } + }, + ], + "inputs": { + "address_families": [ + {"afi": "ipv4", "safi": "unicast", "vrf": "default", "num_peers": 2}, + {"afi": "ipv4", "safi": "sr-te", "vrf": "MGMT", "num_peers": 1}, + {"afi": "evpn", "num_peers": 2}, + {"afi": "link-state", "num_peers": 2}, + {"afi": "path-selection", "num_peers": 2}, + ] + }, + "expected": { + "result": "failure", + "messages": [ + "Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'default': 'Expected: 2, Actual: 0'}}, " + "{'afi': 'ipv4', 'safi': 'sr-te', 'vrfs': {'MGMT': 'Expected: 1, Actual: 0'}}, " + "{'afi': 'evpn', 'vrfs': {'default': 'Expected: 2, Actual: 0'}}, " + "{'afi': 'link-state', 'vrfs': {'default': 'Expected: 2, Actual: 0'}}, " + "{'afi': 'path-selection', 'vrfs': {'default': 'Expected: 2, Actual: 0'}}]" + ], + }, }, { "name": "failure-not-configured", "test": VerifyBGPPeerCount, - "eos_data": [{"vrfs": {}}], - "inputs": {"address_families": [{"afi": "ipv6", "safi": "multicast", "vrf": "DEV", "num_peers": 3}]}, - "expected": {"result": "failure", "messages": ["Failures: [{'afi': 'ipv6', 'safi': 'multicast', 'vrfs': {'DEV': 'Not Configured'}}]"]}, + "eos_data": [{"vrfs": {}}, {"vrfs": {}}, {"vrfs": {}}, {"vrfs": {}}, {"vrfs": {}}], + "inputs": { + "address_families": [ + {"afi": "ipv6", "safi": "multicast", "vrf": "DEV", "num_peers": 3}, + {"afi": "ipv4", "safi": "sr-te", "vrf": "MGMT", "num_peers": 1}, + {"afi": "evpn", "num_peers": 2}, + {"afi": "link-state", "num_peers": 2}, + {"afi": "path-selection", "num_peers": 2}, + ] + }, + "expected": { + "result": "failure", + "messages": [ + "Failures: [{'afi': 'ipv6', 'safi': 'multicast', 'vrfs': {'DEV': 'Not Configured'}}, " + "{'afi': 'ipv4', 'safi': 'sr-te', 'vrfs': {'MGMT': 'Not Configured'}}, " + "{'afi': 'evpn', 'vrfs': {'default': 'Not Configured'}}, " + "{'afi': 'link-state', 'vrfs': {'default': 'Not Configured'}}, " + "{'afi': 'path-selection', 'vrfs': {'default': 'Not Configured'}}]" + ], + }, }, { "name": "success-vrf-all", @@ -142,226 +327,132 @@ DATA: list[dict[str, Any]] = [ { "vrfs": { "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.255.0": { - "description": "DC1-SPINE1_Ethernet1", - "version": 4, - "msgReceived": 0, - "msgSent": 0, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266295.098931, - "underMaintenance": False, "peerState": "Established", }, }, }, "PROD": { - "vrf": "PROD", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.254.1": { - "description": "DC1-LEAF1B", - "version": 4, - "msgReceived": 3777, - "msgSent": 3764, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65120", - "prefixAccepted": 2, - "prefixReceived": 2, - "upDownTime": 1694266296.659891, - "underMaintenance": False, "peerState": "Established", }, "192.168.1.11": { - "description": "K8S-CLUSTER1", - "version": 4, - "msgReceived": 6417, - "msgSent": 7546, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65000", - "prefixAccepted": 1, - "prefixReceived": 1, - "upDownTime": 1694266329.978035, - "underMaintenance": False, "peerState": "Established", }, }, }, - } - } - ], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "unicast", "vrf": "all", "num_peers": 3}]}, - "expected": {"result": "success"}, - }, - { - "name": "failure-vrf-all", - "test": VerifyBGPPeerCount, - "eos_data": [ + }, + }, { "vrfs": { "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { - "10.1.255.0": { - "description": "DC1-SPINE1_Ethernet1", - "version": 4, - "msgReceived": 0, - "msgSent": 0, + "10.1.255.10": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266295.098931, - "underMaintenance": False, "peerState": "Established", }, }, }, "PROD": { - "vrf": "PROD", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { - "10.1.254.1": { - "description": "DC1-LEAF1B", - "version": 4, - "msgReceived": 3777, - "msgSent": 3764, - "inMsgQueue": 0, - "outMsgQueue": 0, - "asn": "65120", - "prefixAccepted": 2, - "prefixReceived": 2, - "upDownTime": 1694266296.659891, - "underMaintenance": False, - "peerState": "Established", - }, - "192.168.1.11": { - "description": "K8S-CLUSTER1", - "version": 4, - "msgReceived": 6417, - "msgSent": 7546, + "10.1.254.11": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65000", - "prefixAccepted": 1, - "prefixReceived": 1, - "upDownTime": 1694266329.978035, - "underMaintenance": False, "peerState": "Established", }, }, }, - } - } + }, + }, ], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "unicast", "vrf": "all", "num_peers": 5}]}, - "expected": {"result": "failure", "messages": ["Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'all': 'Expected: 5, Actual: 3'}}]"]}, + "inputs": { + "address_families": [ + {"afi": "ipv4", "safi": "unicast", "vrf": "all", "num_peers": 3}, + {"afi": "ipv4", "safi": "sr-te", "vrf": "all", "num_peers": 2}, + ] + }, + "expected": {"result": "success"}, }, { - "name": "success-multiple-afi", + "name": "failure-vrf-all", "test": VerifyBGPPeerCount, "eos_data": [ { "vrfs": { + "default": { + "peers": { + "10.1.255.0": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, "PROD": { - "vrf": "PROD", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.254.1": { - "description": "DC1-LEAF1B", - "version": 4, - "msgReceived": 3777, - "msgSent": 3764, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65120", - "prefixAccepted": 2, - "prefixReceived": 2, - "upDownTime": 1694266296.659891, - "underMaintenance": False, "peerState": "Established", }, "192.168.1.11": { - "description": "K8S-CLUSTER1", - "version": 4, - "msgReceived": 6417, - "msgSent": 7546, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65000", - "prefixAccepted": 1, - "prefixReceived": 1, - "upDownTime": 1694266329.978035, - "underMaintenance": False, "peerState": "Established", }, }, - } - } + }, + }, }, { "vrfs": { "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { - "10.1.0.1": { - "description": "DC1-SPINE1", - "version": 4, - "msgReceived": 3894, - "msgSent": 3897, + "10.1.255.10": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266296.584472, - "underMaintenance": False, "peerState": "Established", }, - "10.1.0.2": { - "description": "DC1-SPINE2", - "version": 4, - "msgReceived": 3893, - "msgSent": 3902, + }, + }, + "PROD": { + "peers": { + "10.1.254.1": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "192.168.1.12": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266297.433896, - "underMaintenance": False, "peerState": "Established", }, }, - } - } + }, + }, }, ], "inputs": { "address_families": [ - {"afi": "ipv4", "safi": "unicast", "vrf": "PROD", "num_peers": 2}, - {"afi": "evpn", "num_peers": 2}, + {"afi": "ipv4", "safi": "unicast", "vrf": "all", "num_peers": 5}, + {"afi": "ipv4", "safi": "sr-te", "vrf": "all", "num_peers": 2}, ] }, "expected": { - "result": "success", + "result": "failure", + "messages": [ + "Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'all': 'Expected: 5, Actual: 3'}}, " + "{'afi': 'ipv4', 'safi': 'sr-te', 'vrfs': {'all': 'Expected: 2, Actual: 3'}}]" + ], }, }, { @@ -371,96 +462,114 @@ DATA: list[dict[str, Any]] = [ { "vrfs": { "PROD": { - "vrf": "PROD", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.254.1": { - "description": "DC1-LEAF1B", - "version": 4, - "msgReceived": 3777, - "msgSent": 3764, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65120", - "prefixAccepted": 2, - "prefixReceived": 2, - "upDownTime": 1694266296.659891, - "underMaintenance": False, "peerState": "Established", }, "192.168.1.11": { - "description": "K8S-CLUSTER1", - "version": 4, - "msgReceived": 6417, - "msgSent": 7546, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65000", - "prefixAccepted": 1, - "prefixReceived": 1, - "upDownTime": 1694266329.978035, - "underMaintenance": False, "peerState": "Established", }, }, - } - } + }, + }, }, {"vrfs": {}}, { "vrfs": { + "MGMT": { + "peers": { + "10.1.254.11": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "192.168.1.21": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + }, + }, + { + "vrfs": { "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.0.1": { - "description": "DC1-SPINE1", - "version": 4, - "msgReceived": 3894, - "msgSent": 3897, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266296.584472, - "underMaintenance": False, "peerState": "Established", }, "10.1.0.2": { - "description": "DC1-SPINE2", - "version": 4, - "msgReceived": 3893, - "msgSent": 3902, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266297.433896, - "underMaintenance": False, "peerState": "Established", }, }, - } - } + }, + }, + }, + { + "vrfs": { + "default": { + "peers": { + "10.1.0.11": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "10.1.0.21": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + }, + }, + { + "vrfs": { + "default": { + "peers": { + "10.1.0.2": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "10.1.0.22": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + }, }, ], "inputs": { "address_families": [ {"afi": "ipv4", "safi": "unicast", "vrf": "PROD", "num_peers": 3}, - {"afi": "evpn", "num_peers": 3}, {"afi": "ipv6", "safi": "unicast", "vrf": "default", "num_peers": 3}, - ] + {"afi": "ipv4", "safi": "sr-te", "vrf": "MGMT", "num_peers": 3}, + {"afi": "evpn", "num_peers": 3}, + {"afi": "link-state", "num_peers": 4}, + {"afi": "path-selection", "num_peers": 1}, + ], }, "expected": { "result": "failure", "messages": [ "Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'PROD': 'Expected: 3, Actual: 2'}}, " "{'afi': 'ipv6', 'safi': 'unicast', 'vrfs': {'default': 'Not Configured'}}, " - "{'afi': 'evpn', 'vrfs': {'default': 'Expected: 3, Actual: 2'}}" + "{'afi': 'ipv4', 'safi': 'sr-te', 'vrfs': {'MGMT': 'Expected: 3, Actual: 2'}}, " + "{'afi': 'evpn', 'vrfs': {'default': 'Expected: 3, Actual: 2'}}, " + "{'afi': 'link-state', 'vrfs': {'default': 'Expected: 4, Actual: 2'}}, " + "{'afi': 'path-selection', 'vrfs': {'default': 'Expected: 1, Actual: 2'}}]", ], }, }, @@ -471,44 +580,84 @@ DATA: list[dict[str, Any]] = [ { "vrfs": { "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.255.0": { - "description": "DC1-SPINE1_Ethernet1", - "version": 4, - "msgReceived": 0, - "msgSent": 0, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266295.098931, - "underMaintenance": False, "peerState": "Established", }, "10.1.255.2": { - "description": "DC1-SPINE2_Ethernet1", - "version": 4, - "msgReceived": 3759, - "msgSent": 3757, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 14, - "prefixReceived": 14, - "upDownTime": 1694266296.367261, - "underMaintenance": False, "peerState": "Established", }, }, } } - } + }, + { + "vrfs": { + "MGMT": { + "peers": { + "10.1.255.10": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "10.1.255.12": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + } + } + }, + { + "vrfs": { + "default": { + "peers": { + "10.1.255.20": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "10.1.255.22": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + } + } + }, + { + "vrfs": { + "default": { + "peers": { + "10.1.255.30": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "10.1.255.32": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + } + } + }, ], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "unicast", "vrf": "default"}]}, + "inputs": { + "address_families": [ + {"afi": "ipv4", "safi": "unicast", "vrf": "default"}, + {"afi": "ipv4", "safi": "sr-te", "vrf": "MGMT"}, + {"afi": "path-selection"}, + {"afi": "link-state"}, + ] + }, "expected": {"result": "success"}, }, { @@ -518,48 +667,91 @@ DATA: list[dict[str, Any]] = [ { "vrfs": { "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.255.0": { - "description": "DC1-SPINE1_Ethernet1", - "version": 4, - "msgReceived": 0, - "msgSent": 0, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266295.098931, - "underMaintenance": False, "peerState": "Idle", }, "10.1.255.2": { - "description": "DC1-SPINE2_Ethernet1", - "version": 4, - "msgReceived": 3759, - "msgSent": 3757, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 14, - "prefixReceived": 14, - "upDownTime": 1694266296.367261, - "underMaintenance": False, "peerState": "Established", }, }, } } - } + }, + { + "vrfs": { + "MGMT": { + "peers": { + "10.1.255.10": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "10.1.255.12": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Idle", + }, + }, + } + } + }, + { + "vrfs": { + "default": { + "peers": { + "10.1.255.20": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Idle", + }, + "10.1.255.22": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + } + } + }, + { + "vrfs": { + "default": { + "peers": { + "10.1.255.30": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "10.1.255.32": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Idle", + }, + }, + } + } + }, ], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "unicast", "vrf": "default"}]}, + "inputs": { + "address_families": [ + {"afi": "ipv4", "safi": "unicast", "vrf": "default"}, + {"afi": "ipv4", "safi": "sr-te", "vrf": "MGMT"}, + {"afi": "path-selection"}, + {"afi": "link-state"}, + ] + }, "expected": { "result": "failure", "messages": [ - "Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'default': {'10.1.255.0': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}}}]" + "Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'default': {'10.1.255.0': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}}}, " + "{'afi': 'ipv4', 'safi': 'sr-te', 'vrfs': {'MGMT': {'10.1.255.12': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}}}, " + "{'afi': 'path-selection', 'vrfs': {'default': {'10.1.255.20': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}}}, " + "{'afi': 'link-state', 'vrfs': {'default': {'10.1.255.32': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}}}]" ], }, }, @@ -570,79 +762,74 @@ DATA: list[dict[str, Any]] = [ { "vrfs": { "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.255.0": { - "description": "DC1-SPINE1_Ethernet1", - "version": 4, - "msgReceived": 0, - "msgSent": 0, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266295.098931, - "underMaintenance": False, "peerState": "Established", }, "10.1.255.2": { - "description": "DC1-SPINE2_Ethernet1", - "version": 4, - "msgReceived": 3759, - "msgSent": 3757, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 14, - "prefixReceived": 14, - "upDownTime": 1694266296.367261, - "underMaintenance": False, "peerState": "Established", }, }, }, "PROD": { - "vrf": "PROD", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.254.1": { - "description": "DC1-LEAF1B", - "version": 4, - "msgReceived": 3777, - "msgSent": 3764, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65120", - "prefixAccepted": 2, - "prefixReceived": 2, - "upDownTime": 1694266296.659891, - "underMaintenance": False, "peerState": "Established", }, "192.168.1.11": { - "description": "K8S-CLUSTER1", - "version": 4, - "msgReceived": 6417, - "msgSent": 7546, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65000", - "prefixAccepted": 1, - "prefixReceived": 1, - "upDownTime": 1694266329.978035, - "underMaintenance": False, "peerState": "Established", }, }, }, } - } + }, + { + "vrfs": { + "default": { + "peers": { + "10.1.255.10": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "10.1.255.12": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + "PROD": { + "peers": { + "10.1.254.11": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "192.168.1.111": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + } + }, ], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "unicast", "vrf": "all"}]}, + "inputs": { + "address_families": [ + {"afi": "ipv4", "safi": "unicast", "vrf": "all"}, + {"afi": "ipv4", "safi": "sr-te", "vrf": "all"}, + ] + }, "expected": { "result": "success", }, @@ -654,138 +841,183 @@ DATA: list[dict[str, Any]] = [ { "vrfs": { "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.255.0": { - "description": "DC1-SPINE1_Ethernet1", - "version": 4, - "msgReceived": 0, - "msgSent": 0, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266295.098931, - "underMaintenance": False, "peerState": "Idle", }, "10.1.255.2": { - "description": "DC1-SPINE2_Ethernet1", - "version": 4, - "msgReceived": 3759, - "msgSent": 3757, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 14, - "prefixReceived": 14, - "upDownTime": 1694266296.367261, - "underMaintenance": False, "peerState": "Established", }, }, }, "PROD": { - "vrf": "PROD", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.254.1": { - "description": "DC1-LEAF1B", - "version": 4, - "msgReceived": 3777, - "msgSent": 3764, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65120", - "prefixAccepted": 2, - "prefixReceived": 2, - "upDownTime": 1694266296.659891, - "underMaintenance": False, "peerState": "Established", }, "192.168.1.11": { - "description": "K8S-CLUSTER1", - "version": 4, - "msgReceived": 6417, - "msgSent": 7546, "inMsgQueue": 100, "outMsgQueue": 200, - "asn": "65000", - "prefixAccepted": 1, - "prefixReceived": 1, - "upDownTime": 1694266329.978035, - "underMaintenance": False, "peerState": "Established", }, }, }, } - } + }, + { + "vrfs": { + "default": { + "peers": { + "10.1.255.10": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Idle", + }, + "10.1.255.12": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + }, + }, + "PROD": { + "peers": { + "10.1.254.11": { + "inMsgQueue": 0, + "outMsgQueue": 0, + "peerState": "Established", + }, + "192.168.1.111": { + "inMsgQueue": 100, + "outMsgQueue": 200, + "peerState": "Established", + }, + }, + }, + } + }, ], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "unicast", "vrf": "all"}]}, + "inputs": { + "address_families": [ + {"afi": "ipv4", "safi": "unicast", "vrf": "all"}, + {"afi": "ipv4", "safi": "sr-te", "vrf": "all"}, + ] + }, "expected": { "result": "failure", "messages": [ "Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'default': {'10.1.255.0': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}, " - "'PROD': {'192.168.1.11': {'peerState': 'Established', 'inMsgQueue': 100, 'outMsgQueue': 200}}}}]" + "'PROD': {'192.168.1.11': {'peerState': 'Established', 'inMsgQueue': 100, 'outMsgQueue': 200}}}}, " + "{'afi': 'ipv4', 'safi': 'sr-te', 'vrfs': {'default': {'10.1.255.10': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}, " + "'PROD': {'192.168.1.111': {'peerState': 'Established', 'inMsgQueue': 100, 'outMsgQueue': 200}}}}]" ], }, }, { "name": "failure-not-configured", "test": VerifyBGPPeersHealth, - "eos_data": [{"vrfs": {}}], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "unicast", "vrf": "DEV"}]}, - "expected": {"result": "failure", "messages": ["Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'DEV': 'Not Configured'}}]"]}, + "eos_data": [{"vrfs": {}}, {"vrfs": {}}, {"vrfs": {}}, {"vrfs": {}}], + "inputs": { + "address_families": [ + {"afi": "ipv4", "safi": "unicast", "vrf": "DEV"}, + {"afi": "ipv4", "safi": "sr-te", "vrf": "MGMT"}, + {"afi": "link-state"}, + {"afi": "path-selection"}, + ] + }, + "expected": { + "result": "failure", + "messages": [ + "Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'DEV': 'Not Configured'}}, " + "{'afi': 'ipv4', 'safi': 'sr-te', 'vrfs': {'MGMT': 'Not Configured'}}, " + "{'afi': 'link-state', 'vrfs': {'default': 'Not Configured'}}, " + "{'afi': 'path-selection', 'vrfs': {'default': 'Not Configured'}}]" + ], + }, }, { "name": "failure-no-peers", "test": VerifyBGPPeersHealth, - "eos_data": [{"vrfs": {"default": {"vrf": "default", "routerId": "10.1.0.3", "asn": "65120", "peers": {}}}}], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "multicast"}]}, - "expected": {"result": "failure", "messages": ["Failures: [{'afi': 'ipv4', 'safi': 'multicast', 'vrfs': {'default': 'No Peers'}}]"]}, - }, - { - "name": "success-multiple-afi", - "test": VerifyBGPPeersHealth, "eos_data": [ { "vrfs": { - "PROD": { - "vrf": "PROD", + "default": { + "vrf": "default", "routerId": "10.1.0.3", "asn": "65120", + "peers": {}, + } + } + }, + { + "vrfs": { + "MGMT": { + "vrf": "MGMT", + "routerId": "10.1.0.3", + "asn": "65120", + "peers": {}, + } + } + }, + { + "vrfs": { + "default": { + "vrf": "default", + "routerId": "10.1.0.3", + "asn": "65120", + "peers": {}, + } + } + }, + { + "vrfs": { + "default": { + "vrf": "default", + "routerId": "10.1.0.3", + "asn": "65120", + "peers": {}, + } + } + }, + ], + "inputs": { + "address_families": [ + {"afi": "ipv4", "safi": "multicast"}, + {"afi": "ipv4", "safi": "sr-te", "vrf": "MGMT"}, + {"afi": "link-state"}, + {"afi": "path-selection"}, + ] + }, + "expected": { + "result": "failure", + "messages": [ + "Failures: [{'afi': 'ipv4', 'safi': 'multicast', 'vrfs': {'default': 'No Peers'}}, {'afi': 'ipv4', 'safi': 'sr-te', 'vrfs': {'MGMT': 'No Peers'}}, " + "{'afi': 'link-state', 'vrfs': {'default': 'No Peers'}}, {'afi': 'path-selection', 'vrfs': {'default': 'No Peers'}}]" + ], + }, + }, + { + "name": "success", + "test": VerifyBGPSpecificPeers, + "eos_data": [ + { + "vrfs": { + "default": { "peers": { - "10.1.254.1": { - "description": "DC1-LEAF1B", - "version": 4, - "msgReceived": 3777, - "msgSent": 3764, + "10.1.255.0": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65120", - "prefixAccepted": 2, - "prefixReceived": 2, - "upDownTime": 1694266296.659891, - "underMaintenance": False, "peerState": "Established", }, - "192.168.1.11": { - "description": "K8S-CLUSTER1", - "version": 4, - "msgReceived": 6417, - "msgSent": 7546, + "10.1.255.2": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65000", - "prefixAccepted": 1, - "prefixReceived": 1, - "upDownTime": 1694266329.978035, - "underMaintenance": False, "peerState": "Established", }, }, @@ -794,132 +1026,53 @@ DATA: list[dict[str, Any]] = [ }, { "vrfs": { - "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", + "MGMT": { "peers": { - "10.1.0.1": { - "description": "DC1-SPINE1", - "version": 4, - "msgReceived": 3894, - "msgSent": 3897, + "10.1.255.10": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266296.584472, - "underMaintenance": False, "peerState": "Established", }, - "10.1.0.2": { - "description": "DC1-SPINE2", - "version": 4, - "msgReceived": 3893, - "msgSent": 3902, + "10.1.255.12": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266297.433896, - "underMaintenance": False, "peerState": "Established", }, }, } } }, - ], - "inputs": { - "address_families": [ - {"afi": "ipv4", "safi": "unicast", "vrf": "PROD"}, - {"afi": "evpn"}, - ] - }, - "expected": { - "result": "success", - }, - }, - { - "name": "failure-multiple-afi", - "test": VerifyBGPPeersHealth, - "eos_data": [ { "vrfs": { - "PROD": { - "vrf": "PROD", - "routerId": "10.1.0.3", - "asn": "65120", + "default": { "peers": { - "10.1.254.1": { - "description": "DC1-LEAF1B", - "version": 4, - "msgReceived": 3777, - "msgSent": 3764, + "10.1.255.20": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65120", - "prefixAccepted": 2, - "prefixReceived": 2, - "upDownTime": 1694266296.659891, - "underMaintenance": False, "peerState": "Established", }, - "192.168.1.11": { - "description": "K8S-CLUSTER1", - "version": 4, - "msgReceived": 6417, - "msgSent": 7546, - "inMsgQueue": 10, + "10.1.255.22": { + "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65000", - "prefixAccepted": 1, - "prefixReceived": 1, - "upDownTime": 1694266329.978035, - "underMaintenance": False, "peerState": "Established", }, }, } } }, - {"vrfs": {}}, { "vrfs": { "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { - "10.1.0.1": { - "description": "DC1-SPINE1", - "version": 4, - "msgReceived": 3894, - "msgSent": 3897, + "10.1.255.30": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266296.584472, - "underMaintenance": False, "peerState": "Established", }, - "10.1.0.2": { - "description": "DC1-SPINE2", - "version": 4, - "msgReceived": 3893, - "msgSent": 3902, + "10.1.255.32": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266297.433896, - "underMaintenance": False, - "peerState": "Idle", + "peerState": "Established", }, }, } @@ -928,174 +1081,76 @@ DATA: list[dict[str, Any]] = [ ], "inputs": { "address_families": [ - {"afi": "ipv4", "safi": "unicast", "vrf": "PROD"}, - {"afi": "evpn"}, - {"afi": "ipv6", "safi": "unicast", "vrf": "default"}, + { + "afi": "ipv4", + "safi": "unicast", + "vrf": "default", + "peers": ["10.1.255.0", "10.1.255.2"], + }, + { + "afi": "ipv4", + "safi": "sr-te", + "vrf": "MGMT", + "peers": ["10.1.255.10", "10.1.255.12"], + }, + {"afi": "path-selection", "peers": ["10.1.255.20", "10.1.255.22"]}, + {"afi": "link-state", "peers": ["10.1.255.30", "10.1.255.32"]}, ] }, - "expected": { - "result": "failure", - "messages": [ - "Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': " - "{'PROD': {'192.168.1.11': {'peerState': 'Established', 'inMsgQueue': 10, 'outMsgQueue': 0}}}}, " - "{'afi': 'ipv6', 'safi': 'unicast', 'vrfs': {'default': 'Not Configured'}}, " - "{'afi': 'evpn', 'vrfs': {'default': {'10.1.0.2': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}}" - ], - }, + "expected": {"result": "success"}, }, { - "name": "success", + "name": "failure-issues", "test": VerifyBGPSpecificPeers, "eos_data": [ { "vrfs": { "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { "10.1.255.0": { - "description": "DC1-SPINE1_Ethernet1", - "version": 4, - "msgReceived": 0, - "msgSent": 0, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266295.098931, - "underMaintenance": False, - "peerState": "Established", + "peerState": "Idle", }, "10.1.255.2": { - "description": "DC1-SPINE2_Ethernet1", - "version": 4, - "msgReceived": 3759, - "msgSent": 3757, "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 14, - "prefixReceived": 14, - "upDownTime": 1694266296.367261, - "underMaintenance": False, "peerState": "Established", }, }, } } - } - ], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "unicast", "vrf": "default", "peers": ["10.1.255.0", "10.1.255.2"]}]}, - "expected": {"result": "success"}, - }, - { - "name": "failure-issues", - "test": VerifyBGPSpecificPeers, - "eos_data": [ + }, { "vrfs": { - "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", + "MGMT": { "peers": { - "10.1.255.0": { - "description": "DC1-SPINE1_Ethernet1", - "version": 4, - "msgReceived": 0, - "msgSent": 0, + "10.1.255.10": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266295.098931, - "underMaintenance": False, - "peerState": "Idle", + "peerState": "Established", }, - "10.1.255.2": { - "description": "DC1-SPINE2_Ethernet1", - "version": 4, - "msgReceived": 3759, - "msgSent": 3757, + "10.1.255.12": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 14, - "prefixReceived": 14, - "upDownTime": 1694266296.367261, - "underMaintenance": False, - "peerState": "Established", + "peerState": "Idle", }, }, } } - } - ], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "unicast", "vrf": "default", "peers": ["10.1.255.0", "10.1.255.2"]}]}, - "expected": { - "result": "failure", - "messages": [ - "Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'default': {'10.1.255.0': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}}}]" - ], - }, - }, - { - "name": "failure-not-configured", - "test": VerifyBGPSpecificPeers, - "eos_data": [{"vrfs": {}}], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "unicast", "vrf": "DEV", "peers": ["10.1.255.0"]}]}, - "expected": {"result": "failure", "messages": ["Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'DEV': 'Not Configured'}}]"]}, - }, - { - "name": "failure-no-peers", - "test": VerifyBGPSpecificPeers, - "eos_data": [{"vrfs": {"default": {"vrf": "default", "routerId": "10.1.0.3", "asn": "65120", "peers": {}}}}], - "inputs": {"address_families": [{"afi": "ipv4", "safi": "multicast", "peers": ["10.1.255.0"]}]}, - "expected": { - "result": "failure", - "messages": ["Failures: [{'afi': 'ipv4', 'safi': 'multicast', 'vrfs': {'default': {'10.1.255.0': {'peerNotFound': True}}}}]"], - }, - }, - { - "name": "success-multiple-afi", - "test": VerifyBGPSpecificPeers, - "eos_data": [ + }, { "vrfs": { - "PROD": { - "vrf": "PROD", - "routerId": "10.1.0.3", - "asn": "65120", + "default": { "peers": { - "10.1.254.1": { - "description": "DC1-LEAF1B", - "version": 4, - "msgReceived": 3777, - "msgSent": 3764, + "10.1.255.20": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65120", - "prefixAccepted": 2, - "prefixReceived": 2, - "upDownTime": 1694266296.659891, - "underMaintenance": False, - "peerState": "Established", + "peerState": "Idle", }, - "192.168.1.11": { - "description": "K8S-CLUSTER1", - "version": 4, - "msgReceived": 6417, - "msgSent": 7546, + "10.1.255.22": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65000", - "prefixAccepted": 1, - "prefixReceived": 1, - "upDownTime": 1694266329.978035, - "underMaintenance": False, "peerState": "Established", }, }, @@ -1105,37 +1160,16 @@ DATA: list[dict[str, Any]] = [ { "vrfs": { "default": { - "vrf": "default", - "routerId": "10.1.0.3", - "asn": "65120", "peers": { - "10.1.0.1": { - "description": "DC1-SPINE1", - "version": 4, - "msgReceived": 3894, - "msgSent": 3897, + "10.1.255.30": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266296.584472, - "underMaintenance": False, "peerState": "Established", }, - "10.1.0.2": { - "description": "DC1-SPINE2", - "version": 4, - "msgReceived": 3893, - "msgSent": 3902, + "10.1.255.32": { "inMsgQueue": 0, "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266297.433896, - "underMaintenance": False, - "peerState": "Established", + "peerState": "Idle", }, }, } @@ -1144,110 +1178,128 @@ DATA: list[dict[str, Any]] = [ ], "inputs": { "address_families": [ - {"afi": "ipv4", "safi": "unicast", "vrf": "PROD", "peers": ["10.1.254.1", "192.168.1.11"]}, - {"afi": "evpn", "peers": ["10.1.0.1", "10.1.0.2"]}, + { + "afi": "ipv4", + "safi": "unicast", + "vrf": "default", + "peers": ["10.1.255.0", "10.1.255.2"], + }, + { + "afi": "ipv4", + "safi": "sr-te", + "vrf": "MGMT", + "peers": ["10.1.255.10", "10.1.255.12"], + }, + {"afi": "path-selection", "peers": ["10.1.255.20", "10.1.255.22"]}, + {"afi": "link-state", "peers": ["10.1.255.30", "10.1.255.32"]}, ] }, - "expected": {"result": "success"}, + "expected": { + "result": "failure", + "messages": [ + "Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'default': {'10.1.255.0': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}}}, " + "{'afi': 'ipv4', 'safi': 'sr-te', 'vrfs': {'MGMT': {'10.1.255.12': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}}}, " + "{'afi': 'path-selection', 'vrfs': {'default': {'10.1.255.20': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}}}, " + "{'afi': 'link-state', 'vrfs': {'default': {'10.1.255.32': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}}}]" + ], + }, }, { - "name": "failure-multiple-afi", + "name": "failure-not-configured", + "test": VerifyBGPSpecificPeers, + "eos_data": [{"vrfs": {}}, {"vrfs": {}}, {"vrfs": {}}, {"vrfs": {}}], + "inputs": { + "address_families": [ + { + "afi": "ipv4", + "safi": "unicast", + "vrf": "DEV", + "peers": ["10.1.255.0"], + }, + { + "afi": "ipv4", + "safi": "sr-te", + "vrf": "MGMT", + "peers": ["10.1.255.10"], + }, + {"afi": "link-state", "peers": ["10.1.255.20"]}, + {"afi": "path-selection", "peers": ["10.1.255.30"]}, + ] + }, + "expected": { + "result": "failure", + "messages": [ + "Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': {'DEV': 'Not Configured'}}, " + "{'afi': 'ipv4', 'safi': 'sr-te', 'vrfs': {'MGMT': 'Not Configured'}}, {'afi': 'link-state', 'vrfs': {'default': 'Not Configured'}}, " + "{'afi': 'path-selection', 'vrfs': {'default': 'Not Configured'}}]" + ], + }, + }, + { + "name": "failure-no-peers", "test": VerifyBGPSpecificPeers, "eos_data": [ { "vrfs": { - "PROD": { - "vrf": "PROD", + "default": { + "vrf": "default", "routerId": "10.1.0.3", "asn": "65120", - "peers": { - "10.1.254.1": { - "description": "DC1-LEAF1B", - "version": 4, - "msgReceived": 3777, - "msgSent": 3764, - "inMsgQueue": 0, - "outMsgQueue": 0, - "asn": "65120", - "prefixAccepted": 2, - "prefixReceived": 2, - "upDownTime": 1694266296.659891, - "underMaintenance": False, - "peerState": "Established", - }, - "192.168.1.11": { - "description": "K8S-CLUSTER1", - "version": 4, - "msgReceived": 6417, - "msgSent": 7546, - "inMsgQueue": 10, - "outMsgQueue": 0, - "asn": "65000", - "prefixAccepted": 1, - "prefixReceived": 1, - "upDownTime": 1694266329.978035, - "underMaintenance": False, - "peerState": "Established", - }, - }, + "peers": {}, + } + } + }, + { + "vrfs": { + "MGMT": { + "vrf": "MGMT", + "routerId": "10.1.0.3", + "asn": "65120", + "peers": {}, } } }, - {"vrfs": {}}, { "vrfs": { "default": { "vrf": "default", "routerId": "10.1.0.3", "asn": "65120", - "peers": { - "10.1.0.1": { - "description": "DC1-SPINE1", - "version": 4, - "msgReceived": 3894, - "msgSent": 3897, - "inMsgQueue": 0, - "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266296.584472, - "underMaintenance": False, - "peerState": "Established", - }, - "10.1.0.2": { - "description": "DC1-SPINE2", - "version": 4, - "msgReceived": 3893, - "msgSent": 3902, - "inMsgQueue": 0, - "outMsgQueue": 0, - "asn": "65100", - "prefixAccepted": 0, - "prefixReceived": 0, - "upDownTime": 1694266297.433896, - "underMaintenance": False, - "peerState": "Idle", - }, - }, + "peers": {}, + } + } + }, + { + "vrfs": { + "default": { + "vrf": "default", + "routerId": "10.1.0.3", + "asn": "65120", + "peers": {}, } } }, ], "inputs": { "address_families": [ - {"afi": "ipv4", "safi": "unicast", "vrf": "PROD", "peers": ["10.1.254.1", "192.168.1.11"]}, - {"afi": "evpn", "peers": ["10.1.0.1", "10.1.0.2"]}, - {"afi": "ipv6", "safi": "unicast", "vrf": "default", "peers": ["10.1.0.1", "10.1.0.2"]}, + {"afi": "ipv4", "safi": "multicast", "peers": ["10.1.255.0"]}, + { + "afi": "ipv4", + "safi": "sr-te", + "vrf": "MGMT", + "peers": ["10.1.255.10"], + }, + {"afi": "link-state", "peers": ["10.1.255.20"]}, + {"afi": "path-selection", "peers": ["10.1.255.30"]}, ] }, "expected": { "result": "failure", "messages": [ - "Failures: [{'afi': 'ipv4', 'safi': 'unicast', 'vrfs': " - "{'PROD': {'192.168.1.11': {'peerState': 'Established', 'inMsgQueue': 10, 'outMsgQueue': 0}}}}, " - "{'afi': 'ipv6', 'safi': 'unicast', 'vrfs': {'default': 'Not Configured'}}, " - "{'afi': 'evpn', 'vrfs': {'default': {'10.1.0.2': {'peerState': 'Idle', 'inMsgQueue': 0, 'outMsgQueue': 0}}}" + "Failures: [{'afi': 'ipv4', 'safi': 'multicast', 'vrfs': {'default': {'10.1.255.0': {'peerNotFound': True}}}}, " + "{'afi': 'ipv4', 'safi': 'sr-te', 'vrfs': {'MGMT': {'10.1.255.10': {'peerNotFound': True}}}}, " + "{'afi': 'link-state', 'vrfs': {'default': {'10.1.255.20': {'peerNotFound': True}}}}, " + "{'afi': 'path-selection', 'vrfs': {'default': {'10.1.255.30': {'peerNotFound': True}}}}]" ], }, }, @@ -1390,10 +1442,46 @@ DATA: list[dict[str, Any]] = [ "name": "failure-no-routes", "test": VerifyBGPExchangedRoutes, "eos_data": [ - {"vrfs": {"default": {"vrf": "default", "routerId": "192.0.255.1", "asn": "65001", "bgpRouteEntries": {}}}}, - {"vrfs": {"default": {"vrf": "default", "routerId": "192.0.255.1", "asn": "65001", "bgpRouteEntries": {}}}}, - {"vrfs": {"default": {"vrf": "default", "routerId": "192.0.255.1", "asn": "65001", "bgpRouteEntries": {}}}}, - {"vrfs": {"default": {"vrf": "default", "routerId": "192.0.255.1", "asn": "65001", "bgpRouteEntries": {}}}}, + { + "vrfs": { + "default": { + "vrf": "default", + "routerId": "192.0.255.1", + "asn": "65001", + "bgpRouteEntries": {}, + } + } + }, + { + "vrfs": { + "default": { + "vrf": "default", + "routerId": "192.0.255.1", + "asn": "65001", + "bgpRouteEntries": {}, + } + } + }, + { + "vrfs": { + "default": { + "vrf": "default", + "routerId": "192.0.255.1", + "asn": "65001", + "bgpRouteEntries": {}, + } + } + }, + { + "vrfs": { + "default": { + "vrf": "default", + "routerId": "192.0.255.1", + "asn": "65001", + "bgpRouteEntries": {}, + } + } + }, ], "inputs": { "bgp_peers": [ @@ -1801,8 +1889,16 @@ DATA: list[dict[str, Any]] = [ "peerAddress": "172.30.11.1", "neighborCapabilities": { "multiprotocolCaps": { - "ipv4Unicast": {"advertised": True, "received": True, "enabled": True}, - "ipv4MplsLabels": {"advertised": True, "received": True, "enabled": True}, + "ipv4Unicast": { + "advertised": True, + "received": True, + "enabled": True, + }, + "ipv4MplsLabels": { + "advertised": True, + "received": True, + "enabled": True, + }, } }, } @@ -1814,8 +1910,16 @@ DATA: list[dict[str, Any]] = [ "peerAddress": "172.30.11.10", "neighborCapabilities": { "multiprotocolCaps": { - "ipv4Unicast": {"advertised": True, "received": True, "enabled": True}, - "ipv4MplsVpn": {"advertised": True, "received": True, "enabled": True}, + "ipv4Unicast": { + "advertised": True, + "received": True, + "enabled": True, + }, + "ipv4MplsVpn": { + "advertised": True, + "received": True, + "enabled": True, + }, } }, } @@ -1852,8 +1956,16 @@ DATA: list[dict[str, Any]] = [ "peerAddress": "172.30.11.1", "neighborCapabilities": { "multiprotocolCaps": { - "ipv4Unicast": {"advertised": True, "received": True, "enabled": True}, - "ipv4MplsVpn": {"advertised": True, "received": True, "enabled": True}, + "ipv4Unicast": { + "advertised": True, + "received": True, + "enabled": True, + }, + "ipv4MplsVpn": { + "advertised": True, + "received": True, + "enabled": True, + }, } }, } @@ -1889,7 +2001,13 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.1", "neighborCapabilities": { - "multiprotocolCaps": {"ipv4Unicast": {"advertised": True, "received": True, "enabled": True}}, + "multiprotocolCaps": { + "ipv4Unicast": { + "advertised": True, + "received": True, + "enabled": True, + } + }, }, } ] @@ -1899,7 +2017,13 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.10", "neighborCapabilities": { - "multiprotocolCaps": {"ipv4Unicast": {"advertised": True, "received": True, "enabled": True}}, + "multiprotocolCaps": { + "ipv4Unicast": { + "advertised": True, + "received": True, + "enabled": True, + } + }, }, } ] @@ -1940,7 +2064,13 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.1", "neighborCapabilities": { - "multiprotocolCaps": {"ipv4Unicast": {"advertised": True, "received": True, "enabled": True}}, + "multiprotocolCaps": { + "ipv4Unicast": { + "advertised": True, + "received": True, + "enabled": True, + } + }, }, } ] @@ -1948,7 +2078,15 @@ DATA: list[dict[str, Any]] = [ } } ], - "inputs": {"bgp_peers": [{"peer_address": "172.30.11.1", "vrf": "default", "capabilities": ["ipv4 Unicast", "L2VpnEVPN"]}]}, + "inputs": { + "bgp_peers": [ + { + "peer_address": "172.30.11.1", + "vrf": "default", + "capabilities": ["ipv4 Unicast", "L2VpnEVPN"], + } + ] + }, "expected": { "result": "failure", "messages": [ @@ -1968,8 +2106,16 @@ DATA: list[dict[str, Any]] = [ "peerAddress": "172.30.11.1", "neighborCapabilities": { "multiprotocolCaps": { - "ipv4Unicast": {"advertised": False, "received": False, "enabled": False}, - "ipv4MplsVpn": {"advertised": False, "received": True, "enabled": False}, + "ipv4Unicast": { + "advertised": False, + "received": False, + "enabled": False, + }, + "ipv4MplsVpn": { + "advertised": False, + "received": True, + "enabled": False, + }, }, }, } @@ -1981,8 +2127,16 @@ DATA: list[dict[str, Any]] = [ "peerAddress": "172.30.11.10", "neighborCapabilities": { "multiprotocolCaps": { - "l2VpnEvpn": {"advertised": True, "received": False, "enabled": False}, - "ipv4MplsVpn": {"advertised": False, "received": False, "enabled": True}, + "l2VpnEvpn": { + "advertised": True, + "received": False, + "enabled": False, + }, + "ipv4MplsVpn": { + "advertised": False, + "received": False, + "enabled": True, + }, }, }, }, @@ -1990,8 +2144,16 @@ DATA: list[dict[str, Any]] = [ "peerAddress": "172.30.11.11", "neighborCapabilities": { "multiprotocolCaps": { - "ipv4Unicast": {"advertised": False, "received": False, "enabled": False}, - "ipv4MplsVpn": {"advertised": False, "received": False, "enabled": False}, + "ipv4Unicast": { + "advertised": False, + "received": False, + "enabled": False, + }, + "ipv4MplsVpn": { + "advertised": False, + "received": False, + "enabled": False, + }, }, }, }, @@ -2002,9 +2164,21 @@ DATA: list[dict[str, Any]] = [ ], "inputs": { "bgp_peers": [ - {"peer_address": "172.30.11.1", "vrf": "default", "capabilities": ["ipv4 unicast", "ipv4 mpls vpn", "L2 vpn EVPN"]}, - {"peer_address": "172.30.11.10", "vrf": "MGMT", "capabilities": ["ipv4unicast", "ipv4 mplsvpn", "L2vpnEVPN"]}, - {"peer_address": "172.30.11.11", "vrf": "MGMT", "capabilities": ["Ipv4 Unicast", "ipv4 MPLSVPN", "L2 vpnEVPN"]}, + { + "peer_address": "172.30.11.1", + "vrf": "default", + "capabilities": ["ipv4 unicast", "ipv4 mpls vpn", "L2 vpn EVPN"], + }, + { + "peer_address": "172.30.11.10", + "vrf": "MGMT", + "capabilities": ["ipv4unicast", "ipv4 mplsvpn", "L2vpnEVPN"], + }, + { + "peer_address": "172.30.11.11", + "vrf": "MGMT", + "capabilities": ["Ipv4 Unicast", "ipv4 MPLSVPN", "L2 vpnEVPN"], + }, ] }, "expected": { @@ -2031,7 +2205,11 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.1", "neighborCapabilities": { - "fourOctetAsnCap": {"advertised": True, "received": True, "enabled": True}, + "fourOctetAsnCap": { + "advertised": True, + "received": True, + "enabled": True, + }, }, } ] @@ -2041,7 +2219,11 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.10", "neighborCapabilities": { - "fourOctetAsnCap": {"advertised": True, "received": True, "enabled": True}, + "fourOctetAsnCap": { + "advertised": True, + "received": True, + "enabled": True, + }, }, } ] @@ -2074,7 +2256,11 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.1", "neighborCapabilities": { - "fourOctetAsnCap": {"advertised": True, "received": True, "enabled": True}, + "fourOctetAsnCap": { + "advertised": True, + "received": True, + "enabled": True, + }, }, } ] @@ -2085,7 +2271,11 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.10", "neighborCapabilities": { - "fourOctetAsnCap": {"advertised": True, "received": True, "enabled": True}, + "fourOctetAsnCap": { + "advertised": True, + "received": True, + "enabled": True, + }, }, } ] @@ -2123,7 +2313,13 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.1", "neighborCapabilities": { - "multiprotocolCaps": {"ipv4Unicast": {"advertised": True, "received": True, "enabled": True}}, + "multiprotocolCaps": { + "ipv4Unicast": { + "advertised": True, + "received": True, + "enabled": True, + } + }, }, }, ] @@ -2157,7 +2353,13 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.1", "neighborCapabilities": { - "multiprotocolCaps": {"ipv4Unicast": {"advertised": True, "received": True, "enabled": True}}, + "multiprotocolCaps": { + "ipv4Unicast": { + "advertised": True, + "received": True, + "enabled": True, + } + }, }, } ] @@ -2167,7 +2369,13 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.10", "neighborCapabilities": { - "multiprotocolCaps": {"ipv4MplsLabels": {"advertised": True, "received": True, "enabled": True}}, + "multiprotocolCaps": { + "ipv4MplsLabels": { + "advertised": True, + "received": True, + "enabled": True, + } + }, }, } ] @@ -2175,7 +2383,12 @@ DATA: list[dict[str, Any]] = [ } } ], - "inputs": {"bgp_peers": [{"peer_address": "172.30.11.1", "vrf": "default"}, {"peer_address": "172.30.11.10", "vrf": "MGMT"}]}, + "inputs": { + "bgp_peers": [ + {"peer_address": "172.30.11.1", "vrf": "default"}, + {"peer_address": "172.30.11.10", "vrf": "MGMT"}, + ] + }, "expected": { "result": "failure", "messages": [ @@ -2195,7 +2408,11 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.1", "neighborCapabilities": { - "fourOctetAsnCap": {"advertised": False, "received": False, "enabled": False}, + "fourOctetAsnCap": { + "advertised": False, + "received": False, + "enabled": False, + }, }, } ] @@ -2205,7 +2422,11 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.10", "neighborCapabilities": { - "fourOctetAsnCap": {"advertised": True, "received": False, "enabled": True}, + "fourOctetAsnCap": { + "advertised": True, + "received": False, + "enabled": True, + }, }, } ] @@ -2213,7 +2434,12 @@ DATA: list[dict[str, Any]] = [ } } ], - "inputs": {"bgp_peers": [{"peer_address": "172.30.11.1", "vrf": "default"}, {"peer_address": "172.30.11.10", "vrf": "MGMT"}]}, + "inputs": { + "bgp_peers": [ + {"peer_address": "172.30.11.1", "vrf": "default"}, + {"peer_address": "172.30.11.10", "vrf": "MGMT"}, + ] + }, "expected": { "result": "failure", "messages": [ @@ -2234,7 +2460,11 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.1", "neighborCapabilities": { - "routeRefreshCap": {"advertised": True, "received": True, "enabled": True}, + "routeRefreshCap": { + "advertised": True, + "received": True, + "enabled": True, + }, }, } ] @@ -2244,7 +2474,11 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.11", "neighborCapabilities": { - "routeRefreshCap": {"advertised": True, "received": True, "enabled": True}, + "routeRefreshCap": { + "advertised": True, + "received": True, + "enabled": True, + }, }, } ] @@ -2296,7 +2530,13 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.1", "neighborCapabilities": { - "multiprotocolCaps": {"ip4Unicast": {"advertised": True, "received": True, "enabled": True}}, + "multiprotocolCaps": { + "ip4Unicast": { + "advertised": True, + "received": True, + "enabled": True, + } + }, }, } ] @@ -2306,7 +2546,13 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.12", "neighborCapabilities": { - "multiprotocolCaps": {"ip4Unicast": {"advertised": True, "received": True, "enabled": True}}, + "multiprotocolCaps": { + "ip4Unicast": { + "advertised": True, + "received": True, + "enabled": True, + } + }, }, } ] @@ -2345,7 +2591,13 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.1", "neighborCapabilities": { - "multiprotocolCaps": {"ipv4Unicast": {"advertised": True, "received": True, "enabled": True}}, + "multiprotocolCaps": { + "ipv4Unicast": { + "advertised": True, + "received": True, + "enabled": True, + } + }, }, } ] @@ -2355,7 +2607,13 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.11", "neighborCapabilities": { - "multiprotocolCaps": {"ipv4Unicast": {"advertised": True, "received": True, "enabled": True}}, + "multiprotocolCaps": { + "ipv4Unicast": { + "advertised": True, + "received": True, + "enabled": True, + } + }, }, } ] @@ -2363,7 +2621,12 @@ DATA: list[dict[str, Any]] = [ } } ], - "inputs": {"bgp_peers": [{"peer_address": "172.30.11.1", "vrf": "default"}, {"peer_address": "172.30.11.11", "vrf": "CS"}]}, + "inputs": { + "bgp_peers": [ + {"peer_address": "172.30.11.1", "vrf": "default"}, + {"peer_address": "172.30.11.11", "vrf": "CS"}, + ] + }, "expected": { "result": "failure", "messages": [ @@ -2383,7 +2646,11 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.1", "neighborCapabilities": { - "routeRefreshCap": {"advertised": False, "received": False, "enabled": False}, + "routeRefreshCap": { + "advertised": False, + "received": False, + "enabled": False, + }, }, } ] @@ -2393,7 +2660,11 @@ DATA: list[dict[str, Any]] = [ { "peerAddress": "172.30.11.11", "neighborCapabilities": { - "routeRefreshCap": {"advertised": True, "received": True, "enabled": True}, + "routeRefreshCap": { + "advertised": True, + "received": True, + "enabled": True, + }, }, } ] @@ -2401,7 +2672,12 @@ DATA: list[dict[str, Any]] = [ } } ], - "inputs": {"bgp_peers": [{"peer_address": "172.30.11.1", "vrf": "default"}, {"peer_address": "172.30.11.11", "vrf": "CS"}]}, + "inputs": { + "bgp_peers": [ + {"peer_address": "172.30.11.1", "vrf": "default"}, + {"peer_address": "172.30.11.11", "vrf": "CS"}, + ] + }, "expected": { "result": "failure", "messages": [ @@ -2592,10 +2868,22 @@ DATA: list[dict[str, Any]] = [ "peerAddress": "172.30.11.1", "state": "Established", }, - {"peerAddress": "172.30.11.10", "state": "Established", "md5AuthEnabled": False}, + { + "peerAddress": "172.30.11.10", + "state": "Established", + "md5AuthEnabled": False, + }, + ] + }, + "MGMT": { + "peerList": [ + { + "peerAddress": "172.30.11.11", + "state": "Established", + "md5AuthEnabled": False, + } ] }, - "MGMT": {"peerList": [{"peerAddress": "172.30.11.11", "state": "Established", "md5AuthEnabled": False}]}, } } ], @@ -2684,7 +2972,12 @@ DATA: list[dict[str, Any]] = [ }, }, ], - "inputs": {"vxlan_endpoints": [{"address": "192.168.20.102", "vni": 10020}, {"address": "aac1.ab5d.b41e", "vni": 10010}]}, + "inputs": { + "vxlan_endpoints": [ + {"address": "192.168.20.102", "vni": 10020}, + {"address": "aac1.ab5d.b41e", "vni": 10010}, + ] + }, "expected": {"result": "success"}, }, { @@ -3024,7 +3317,12 @@ DATA: list[dict[str, Any]] = [ }, }, ], - "inputs": {"vxlan_endpoints": [{"address": "192.168.20.102", "vni": 10020}, {"address": "aac1.ab5d.b41e", "vni": 10010}]}, + "inputs": { + "vxlan_endpoints": [ + {"address": "192.168.20.102", "vni": 10020}, + {"address": "aac1.ab5d.b41e", "vni": 10010}, + ] + }, "expected": { "result": "failure", "messages": [ @@ -3057,7 +3355,12 @@ DATA: list[dict[str, Any]] = [ }, }, ], - "inputs": {"vxlan_endpoints": [{"address": "aac1.ab4e.bec2", "vni": 10020}, {"address": "192.168.10.101", "vni": 10010}]}, + "inputs": { + "vxlan_endpoints": [ + {"address": "aac1.ab4e.bec2", "vni": 10020}, + {"address": "192.168.10.101", "vni": 10010}, + ] + }, "expected": { "result": "failure", "messages": [ @@ -3074,7 +3377,12 @@ DATA: list[dict[str, Any]] = [ {"vrf": "default", "routerId": "10.1.0.3", "asn": 65120, "evpnRoutes": {}}, {"vrf": "default", "routerId": "10.1.0.3", "asn": 65120, "evpnRoutes": {}}, ], - "inputs": {"vxlan_endpoints": [{"address": "aac1.ab4e.bec2", "vni": 10020}, {"address": "192.168.10.101", "vni": 10010}]}, + "inputs": { + "vxlan_endpoints": [ + {"address": "aac1.ab4e.bec2", "vni": 10020}, + {"address": "192.168.10.101", "vni": 10010}, + ] + }, "expected": { "result": "failure", "messages": ["The following VXLAN endpoint do not have any EVPN Type-2 route: [('aa:c1:ab:4e:be:c2', 10020), ('192.168.10.101', 10010)]"], @@ -3090,7 +3398,11 @@ DATA: list[dict[str, Any]] = [ "peerList": [ { "peerAddress": "172.30.11.1", - "advertisedCommunities": {"standard": True, "extended": True, "large": True}, + "advertisedCommunities": { + "standard": True, + "extended": True, + "large": True, + }, } ] }, @@ -3098,7 +3410,11 @@ DATA: list[dict[str, Any]] = [ "peerList": [ { "peerAddress": "172.30.11.10", - "advertisedCommunities": {"standard": True, "extended": True, "large": True}, + "advertisedCommunities": { + "standard": True, + "extended": True, + "large": True, + }, } ] }, @@ -3128,7 +3444,11 @@ DATA: list[dict[str, Any]] = [ "peerList": [ { "peerAddress": "172.30.11.1", - "advertisedCommunities": {"standard": True, "extended": True, "large": True}, + "advertisedCommunities": { + "standard": True, + "extended": True, + "large": True, + }, } ] }, @@ -3161,7 +3481,11 @@ DATA: list[dict[str, Any]] = [ "peerList": [ { "peerAddress": "172.30.11.1", - "advertisedCommunities": {"standard": True, "extended": True, "large": True}, + "advertisedCommunities": { + "standard": True, + "extended": True, + "large": True, + }, } ] }, @@ -3169,7 +3493,11 @@ DATA: list[dict[str, Any]] = [ "peerList": [ { "peerAddress": "172.30.11.1", - "advertisedCommunities": {"standard": True, "extended": True, "large": True}, + "advertisedCommunities": { + "standard": True, + "extended": True, + "large": True, + }, } ] }, @@ -3206,7 +3534,11 @@ DATA: list[dict[str, Any]] = [ "peerList": [ { "peerAddress": "172.30.11.1", - "advertisedCommunities": {"standard": False, "extended": False, "large": False}, + "advertisedCommunities": { + "standard": False, + "extended": False, + "large": False, + }, } ] }, @@ -3214,7 +3546,11 @@ DATA: list[dict[str, Any]] = [ "peerList": [ { "peerAddress": "172.30.11.10", - "advertisedCommunities": {"standard": True, "extended": True, "large": False}, + "advertisedCommunities": { + "standard": True, + "extended": True, + "large": False, + }, } ] }, diff --git a/tests/units/anta_tests/routing/test_generic.py b/tests/units/anta_tests/routing/test_generic.py index 90e70f8..36658f5 100644 --- a/tests/units/anta_tests/routing/test_generic.py +++ b/tests/units/anta_tests/routing/test_generic.py @@ -1,9 +1,8 @@ # Copyright (c) 2023-2024 Arista Networks, Inc. # Use of this source code is governed by the Apache License 2.0 # that can be found in the LICENSE file. -""" -Tests for anta.tests.routing.generic.py -""" +"""Tests for anta.tests.routing.generic.py.""" + from __future__ import annotations from typing import Any @@ -43,9 +42,9 @@ DATA: list[dict[str, Any]] = [ # Output truncated "maskLen": {"8": 2}, "totalRoutes": 123, - } + }, }, - } + }, ], "inputs": {"minimum": 42, "maximum": 666}, "expected": {"result": "success"}, @@ -60,9 +59,9 @@ DATA: list[dict[str, Any]] = [ # Output truncated "maskLen": {"8": 2}, "totalRoutes": 1000, - } + }, }, - } + }, ], "inputs": {"minimum": 42, "maximum": 666}, "expected": {"result": "failure", "messages": ["routing-table has 1000 routes and not between min (42) and maximum (666)"]}, @@ -99,10 +98,10 @@ DATA: list[dict[str, Any]] = [ "preference": 20, "metric": 0, "vias": [{"nexthopAddr": "10.1.255.4", "interface": "Ethernet1"}], - } + }, }, - } - } + }, + }, }, { "vrfs": { @@ -122,10 +121,10 @@ DATA: list[dict[str, Any]] = [ "preference": 20, "metric": 0, "vias": [{"nexthopAddr": "10.1.255.6", "interface": "Ethernet2"}], - } + }, }, - } - } + }, + }, }, ], "inputs": {"vrf": "default", "routes": ["10.1.0.1", "10.1.0.2"]}, @@ -143,8 +142,8 @@ DATA: list[dict[str, Any]] = [ "allRoutesProgrammedKernel": True, "defaultRouteState": "notSet", "routes": {}, - } - } + }, + }, }, { "vrfs": { @@ -164,10 +163,10 @@ DATA: list[dict[str, Any]] = [ "preference": 20, "metric": 0, "vias": [{"nexthopAddr": "10.1.255.6", "interface": "Ethernet2"}], - } + }, }, - } - } + }, + }, }, ], "inputs": {"vrf": "default", "routes": ["10.1.0.1", "10.1.0.2"]}, @@ -195,10 +194,10 @@ DATA: list[dict[str, Any]] = [ "preference": 20, "metric": 0, "vias": [{"nexthopAddr": "10.1.255.4", "interface": "Ethernet1"}], - } + }, }, - } - } + }, + }, }, { "vrfs": { @@ -218,10 +217,10 @@ DATA: list[dict[str, Any]] = [ "preference": 20, "metric": 0, "vias": [{"nexthopAddr": "10.1.255.6", "interface": "Ethernet2"}], - } + }, }, - } - } + }, + }, }, ], "inputs": {"vrf": "default", "routes": ["10.1.0.1", "10.1.0.2"]}, diff --git a/tests/units/anta_tests/routing/test_ospf.py b/tests/units/anta_tests/routing/test_ospf.py index fbabee9..81d8010 100644 --- a/tests/units/anta_tests/routing/test_ospf.py +++ b/tests/units/anta_tests/routing/test_ospf.py @@ -1,14 +1,13 @@ # Copyright (c) 2023-2024 Arista Networks, Inc. # Use of this source code is governed by the Apache License 2.0 # that can be found in the LICENSE file. -""" -Tests for anta.tests.routing.ospf.py -""" +"""Tests for anta.tests.routing.ospf.py.""" + from __future__ import annotations from typing import Any -from anta.tests.routing.ospf import VerifyOSPFNeighborCount, VerifyOSPFNeighborState +from anta.tests.routing.ospf import VerifyOSPFMaxLSA, VerifyOSPFNeighborCount, VerifyOSPFNeighborState from tests.lib.anta import test # noqa: F401; pylint: disable=W0611 DATA: list[dict[str, Any]] = [ @@ -40,9 +39,9 @@ DATA: list[dict[str, Any]] = [ "inactivity": 1683298014.844345, "interfaceAddress": "10.3.0.1", }, - ] - } - } + ], + }, + }, }, "BLAH": { "instList": { @@ -56,13 +55,13 @@ DATA: list[dict[str, Any]] = [ "adjacencyState": "full", "inactivity": 1683298014.844345, "interfaceAddress": "10.3.0.1", - } - ] - } - } + }, + ], + }, + }, }, - } - } + }, + }, ], "inputs": None, "expected": {"result": "success"}, @@ -95,9 +94,9 @@ DATA: list[dict[str, Any]] = [ "inactivity": 1683298014.844345, "interfaceAddress": "10.3.0.1", }, - ] - } - } + ], + }, + }, }, "BLAH": { "instList": { @@ -111,20 +110,20 @@ DATA: list[dict[str, Any]] = [ "adjacencyState": "down", "inactivity": 1683298014.844345, "interfaceAddress": "10.3.0.1", - } - ] - } - } + }, + ], + }, + }, }, - } - } + }, + }, ], "inputs": None, "expected": { "result": "failure", "messages": [ "Some neighbors are not correctly configured: [{'vrf': 'default', 'instance': '666', 'neighbor': '7.7.7.7', 'state': '2-way'}," - " {'vrf': 'BLAH', 'instance': '777', 'neighbor': '8.8.8.8', 'state': 'down'}]." + " {'vrf': 'BLAH', 'instance': '777', 'neighbor': '8.8.8.8', 'state': 'down'}].", ], }, }, @@ -134,7 +133,7 @@ DATA: list[dict[str, Any]] = [ "eos_data": [ { "vrfs": {}, - } + }, ], "inputs": None, "expected": {"result": "skipped", "messages": ["no OSPF neighbor found"]}, @@ -167,9 +166,9 @@ DATA: list[dict[str, Any]] = [ "inactivity": 1683298014.844345, "interfaceAddress": "10.3.0.1", }, - ] - } - } + ], + }, + }, }, "BLAH": { "instList": { @@ -183,13 +182,13 @@ DATA: list[dict[str, Any]] = [ "adjacencyState": "full", "inactivity": 1683298014.844345, "interfaceAddress": "10.3.0.1", - } - ] - } - } + }, + ], + }, + }, }, - } - } + }, + }, ], "inputs": {"number": 3}, "expected": {"result": "success"}, @@ -213,12 +212,12 @@ DATA: list[dict[str, Any]] = [ "inactivity": 1683298014.844345, "interfaceAddress": "10.3.0.1", }, - ] - } - } - } - } - } + ], + }, + }, + }, + }, + }, ], "inputs": {"number": 3}, "expected": {"result": "failure", "messages": ["device has 1 neighbors (expected 3)"]}, @@ -251,9 +250,9 @@ DATA: list[dict[str, Any]] = [ "inactivity": 1683298014.844345, "interfaceAddress": "10.3.0.1", }, - ] - } - } + ], + }, + }, }, "BLAH": { "instList": { @@ -267,20 +266,20 @@ DATA: list[dict[str, Any]] = [ "adjacencyState": "down", "inactivity": 1683298014.844345, "interfaceAddress": "10.3.0.1", - } - ] - } - } + }, + ], + }, + }, }, - } - } + }, + }, ], "inputs": {"number": 3}, "expected": { "result": "failure", "messages": [ "Some neighbors are not correctly configured: [{'vrf': 'default', 'instance': '666', 'neighbor': '7.7.7.7', 'state': '2-way'}," - " {'vrf': 'BLAH', 'instance': '777', 'neighbor': '8.8.8.8', 'state': 'down'}]." + " {'vrf': 'BLAH', 'instance': '777', 'neighbor': '8.8.8.8', 'state': 'down'}].", ], }, }, @@ -290,9 +289,123 @@ DATA: list[dict[str, Any]] = [ "eos_data": [ { "vrfs": {}, - } + }, ], "inputs": {"number": 3}, "expected": {"result": "skipped", "messages": ["no OSPF neighbor found"]}, }, + { + "name": "success", + "test": VerifyOSPFMaxLSA, + "eos_data": [ + { + "vrfs": { + "default": { + "instList": { + "1": { + "instanceId": 1, + "maxLsaInformation": { + "maxLsa": 12000, + "maxLsaThreshold": 75, + }, + "routerId": "1.1.1.1", + "lsaInformation": { + "lsaArrivalInterval": 1000, + "lsaStartInterval": 1000, + "lsaHoldInterval": 5000, + "lsaMaxWaitInterval": 5000, + "numLsa": 9, + }, + }, + }, + }, + "TEST": { + "instList": { + "10": { + "instanceId": 10, + "maxLsaInformation": { + "maxLsa": 1000, + "maxLsaThreshold": 75, + }, + "routerId": "20.20.20.20", + "lsaInformation": { + "lsaArrivalInterval": 1000, + "lsaStartInterval": 1000, + "lsaHoldInterval": 5000, + "lsaMaxWaitInterval": 5000, + "numLsa": 5, + }, + }, + }, + }, + }, + }, + ], + "inputs": None, + "expected": {"result": "success"}, + }, + { + "name": "failure", + "test": VerifyOSPFMaxLSA, + "eos_data": [ + { + "vrfs": { + "default": { + "instList": { + "1": { + "instanceId": 1, + "maxLsaInformation": { + "maxLsa": 12000, + "maxLsaThreshold": 75, + }, + "routerId": "1.1.1.1", + "lsaInformation": { + "lsaArrivalInterval": 1000, + "lsaStartInterval": 1000, + "lsaHoldInterval": 5000, + "lsaMaxWaitInterval": 5000, + "numLsa": 11500, + }, + }, + }, + }, + "TEST": { + "instList": { + "10": { + "instanceId": 10, + "maxLsaInformation": { + "maxLsa": 1000, + "maxLsaThreshold": 75, + }, + "routerId": "20.20.20.20", + "lsaInformation": { + "lsaArrivalInterval": 1000, + "lsaStartInterval": 1000, + "lsaHoldInterval": 5000, + "lsaMaxWaitInterval": 5000, + "numLsa": 1500, + }, + }, + }, + }, + }, + }, + ], + "inputs": None, + "expected": { + "result": "failure", + "messages": ["OSPF Instances ['1', '10'] crossed the maximum LSA threshold."], + }, + }, + { + "name": "skipped", + "test": VerifyOSPFMaxLSA, + "eos_data": [ + { + "vrfs": {}, + }, + ], + "inputs": None, + "expected": {"result": "skipped", "messages": ["No OSPF instance found."]}, + }, ] |