1
0
Fork 0
anta/tests/units/anta_tests/routing/test_isis.py

1919 lines
79 KiB
Python
Raw Normal View History

# 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."""
# pylint: disable=too-many-lines
from __future__ import annotations
from typing import Any
import pytest
from anta.tests.routing.isis import (
VerifyISISInterfaceMode,
VerifyISISNeighborCount,
VerifyISISNeighborState,
VerifyISISSegmentRoutingAdjacencySegments,
VerifyISISSegmentRoutingDataplane,
VerifyISISSegmentRoutingTunnels,
_get_interface_data,
)
from tests.lib.anta import test # noqa: F401; pylint: disable=W0611
DATA: list[dict[str, Any]] = [
{
"name": "success only default vrf",
"test": VerifyISISNeighborState,
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"neighbors": {
"0168.0000.0111": {
"adjacencies": [
{
"hostname": "s1-p01",
"circuitId": "83",
"interfaceName": "Ethernet1",
"state": "up",
"lastHelloTime": 1713688408,
"routerIdV4": "1.0.0.111",
}
]
},
"0168.0000.0112": {
"adjacencies": [
{
"hostname": "s1-p02",
"circuitId": "87",
"interfaceName": "Ethernet2",
"state": "up",
"lastHelloTime": 1713688405,
"routerIdV4": "1.0.0.112",
}
]
},
}
}
}
}
}
},
],
"inputs": None,
"expected": {"result": "success"},
},
{
"name": "success different vrfs",
"test": VerifyISISNeighborState,
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"neighbors": {
"0168.0000.0111": {
"adjacencies": [
{
"hostname": "s1-p01",
"circuitId": "83",
"interfaceName": "Ethernet1",
"state": "up",
"lastHelloTime": 1713688408,
"routerIdV4": "1.0.0.111",
}
]
},
},
},
},
"customer": {
"isisInstances": {
"CORE-ISIS": {
"neighbors": {
"0168.0000.0112": {
"adjacencies": [
{
"hostname": "s1-p02",
"circuitId": "87",
"interfaceName": "Ethernet2",
"state": "up",
"lastHelloTime": 1713688405,
"routerIdV4": "1.0.0.112",
}
]
}
}
}
}
},
}
}
},
],
"inputs": None,
"expected": {"result": "success"},
},
{
"name": "failure",
"test": VerifyISISNeighborState,
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"neighbors": {
"0168.0000.0111": {
"adjacencies": [
{
"hostname": "s1-p01",
"circuitId": "83",
"interfaceName": "Ethernet1",
"state": "down",
"lastHelloTime": 1713688408,
"routerIdV4": "1.0.0.111",
}
]
},
"0168.0000.0112": {
"adjacencies": [
{
"hostname": "s1-p02",
"circuitId": "87",
"interfaceName": "Ethernet2",
"state": "up",
"lastHelloTime": 1713688405,
"routerIdV4": "1.0.0.112",
}
]
},
}
}
}
}
}
},
],
"inputs": None,
"expected": {
"result": "failure",
"messages": ["Some neighbors are not in the correct state (UP): [{'vrf': 'default', 'instance': 'CORE-ISIS', 'neighbor': 's1-p01', 'state': 'down'}]."],
},
},
{
"name": "skipped - no neighbor",
"test": VerifyISISNeighborState,
"eos_data": [
{"vrfs": {"default": {"isisInstances": {"CORE-ISIS": {"neighbors": {}}}}}},
],
"inputs": None,
"expected": {
"result": "skipped",
"messages": ["No IS-IS neighbor detected"],
},
},
{
"name": "success only default vrf",
"test": VerifyISISNeighborCount,
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"interfaces": {
"Loopback0": {
"enabled": True,
"intfLevels": {
"2": {
"ipv4Metric": 10,
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": True,
"v4Protection": "disabled",
"v6Protection": "disabled",
}
},
"areaProxyBoundary": False,
},
"Ethernet1": {
"intfLevels": {
"2": {
"ipv4Metric": 10,
"numAdjacencies": 1,
"linkId": "84",
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": False,
"v4Protection": "link",
"v6Protection": "disabled",
}
},
"interfaceSpeed": 1000,
"areaProxyBoundary": False,
},
"Ethernet2": {
"enabled": True,
"intfLevels": {
"2": {
"ipv4Metric": 10,
"numAdjacencies": 1,
"linkId": "88",
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": False,
"v4Protection": "link",
"v6Protection": "disabled",
}
},
"interfaceSpeed": 1000,
"areaProxyBoundary": False,
},
}
}
}
}
}
},
],
"inputs": {
"interfaces": [
{"name": "Ethernet1", "level": 2, "count": 1},
{"name": "Ethernet2", "level": 2, "count": 1},
]
},
"expected": {"result": "success"},
},
{
"name": "skipped - no neighbor",
"test": VerifyISISNeighborCount,
"eos_data": [
{"vrfs": {"default": {"isisInstances": {"CORE-ISIS": {"interfaces": {}}}}}},
],
"inputs": {
"interfaces": [
{"name": "Ethernet1", "level": 2, "count": 1},
]
},
"expected": {
"result": "skipped",
"messages": ["No IS-IS neighbor detected"],
},
},
{
"name": "failure - missing interface",
"test": VerifyISISNeighborCount,
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"interfaces": {
"Ethernet1": {
"intfLevels": {
"2": {
"ipv4Metric": 10,
"numAdjacencies": 0,
"linkId": "84",
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": False,
"v4Protection": "link",
"v6Protection": "disabled",
}
},
"interfaceSpeed": 1000,
"areaProxyBoundary": False,
},
}
}
}
}
}
},
],
"inputs": {
"interfaces": [
{"name": "Ethernet2", "level": 2, "count": 1},
]
},
"expected": {
"result": "failure",
"messages": ["No neighbor detected for interface Ethernet2"],
},
},
{
"name": "failure - wrong count",
"test": VerifyISISNeighborCount,
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"interfaces": {
"Ethernet1": {
"intfLevels": {
"2": {
"ipv4Metric": 10,
"numAdjacencies": 3,
"linkId": "84",
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": False,
"v4Protection": "link",
"v6Protection": "disabled",
}
},
"interfaceSpeed": 1000,
"areaProxyBoundary": False,
},
}
}
}
}
}
},
],
"inputs": {
"interfaces": [
{"name": "Ethernet1", "level": 2, "count": 1},
]
},
"expected": {
"result": "failure",
"messages": ["Interface Ethernet1: expected Level 2: count 1, got Level 2: count 3"],
},
},
{
"name": "success VerifyISISInterfaceMode only default vrf",
"test": VerifyISISInterfaceMode,
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"interfaces": {
"Loopback0": {
"enabled": True,
"index": 2,
"snpa": "0:0:0:0:0:0",
"mtu": 65532,
"interfaceAddressFamily": "ipv4",
"interfaceType": "loopback",
"intfLevels": {
"2": {
"ipv4Metric": 10,
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": True,
"v4Protection": "disabled",
"v6Protection": "disabled",
}
},
"areaProxyBoundary": False,
},
"Ethernet1": {
"enabled": True,
"index": 132,
"snpa": "P2P",
"interfaceType": "point-to-point",
"intfLevels": {
"2": {
"ipv4Metric": 10,
"numAdjacencies": 1,
"linkId": "84",
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": False,
"v4Protection": "link",
"v6Protection": "disabled",
}
},
"interfaceSpeed": 1000,
"areaProxyBoundary": False,
},
"Ethernet2": {
"enabled": True,
"interfaceType": "broadcast",
"intfLevels": {
"2": {
"ipv4Metric": 10,
"numAdjacencies": 0,
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": True,
"v4Protection": "disabled",
"v6Protection": "disabled",
}
},
"interfaceSpeed": 1000,
"areaProxyBoundary": False,
},
}
}
}
}
}
}
],
"inputs": {
"interfaces": [
{"name": "Loopback0", "mode": "passive"},
{"name": "Ethernet2", "mode": "passive"},
{"name": "Ethernet1", "mode": "point-to-point", "vrf": "default"},
]
},
"expected": {"result": "success"},
},
{
"name": "failure VerifyISISInterfaceMode default vrf with interface not running passive mode",
"test": VerifyISISInterfaceMode,
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"interfaces": {
"Loopback0": {
"enabled": True,
"index": 2,
"snpa": "0:0:0:0:0:0",
"mtu": 65532,
"interfaceAddressFamily": "ipv4",
"interfaceType": "loopback",
"intfLevels": {
"2": {
"ipv4Metric": 10,
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": True,
"v4Protection": "disabled",
"v6Protection": "disabled",
}
},
"areaProxyBoundary": False,
},
"Ethernet1": {
"enabled": True,
"index": 132,
"snpa": "P2P",
"interfaceType": "point-to-point",
"intfLevels": {
"2": {
"ipv4Metric": 10,
"numAdjacencies": 1,
"linkId": "84",
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": False,
"v4Protection": "link",
"v6Protection": "disabled",
}
},
"interfaceSpeed": 1000,
"areaProxyBoundary": False,
},
"Ethernet2": {
"enabled": True,
"interfaceType": "point-to-point",
"intfLevels": {
"2": {
"ipv4Metric": 10,
"numAdjacencies": 0,
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": False,
"v4Protection": "disabled",
"v6Protection": "disabled",
}
},
"interfaceSpeed": 1000,
"areaProxyBoundary": False,
},
}
}
}
}
}
}
],
"inputs": {
"interfaces": [
{"name": "Loopback0", "mode": "passive"},
{"name": "Ethernet2", "mode": "passive"},
{"name": "Ethernet1", "mode": "point-to-point", "vrf": "default"},
]
},
"expected": {
"result": "failure",
"messages": ["Interface Ethernet2 in VRF default is not running in passive mode"],
},
},
{
"name": "failure VerifyISISInterfaceMode default vrf with interface not running point-point mode",
"test": VerifyISISInterfaceMode,
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"interfaces": {
"Loopback0": {
"enabled": True,
"index": 2,
"snpa": "0:0:0:0:0:0",
"mtu": 65532,
"interfaceAddressFamily": "ipv4",
"interfaceType": "loopback",
"intfLevels": {
"2": {
"ipv4Metric": 10,
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": True,
"v4Protection": "disabled",
"v6Protection": "disabled",
}
},
"areaProxyBoundary": False,
},
"Ethernet1": {
"enabled": True,
"index": 132,
"snpa": "P2P",
"interfaceType": "broadcast",
"intfLevels": {
"2": {
"ipv4Metric": 10,
"numAdjacencies": 1,
"linkId": "84",
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": False,
"v4Protection": "link",
"v6Protection": "disabled",
}
},
"interfaceSpeed": 1000,
"areaProxyBoundary": False,
},
"Ethernet2": {
"enabled": True,
"interfaceType": "broadcast",
"intfLevels": {
"2": {
"ipv4Metric": 10,
"numAdjacencies": 0,
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": True,
"v4Protection": "disabled",
"v6Protection": "disabled",
}
},
"interfaceSpeed": 1000,
"areaProxyBoundary": False,
},
}
}
}
}
}
}
],
"inputs": {
"interfaces": [
{"name": "Loopback0", "mode": "passive"},
{"name": "Ethernet2", "mode": "passive"},
{"name": "Ethernet1", "mode": "point-to-point", "vrf": "default"},
]
},
"expected": {
"result": "failure",
"messages": ["Interface Ethernet1 in VRF default is not running in point-to-point reporting broadcast"],
},
},
{
"name": "failure VerifyISISInterfaceMode default vrf with interface not running correct VRF mode",
"test": VerifyISISInterfaceMode,
"eos_data": [
{
"vrfs": {
"fake_vrf": {
"isisInstances": {
"CORE-ISIS": {
"interfaces": {
"Loopback0": {
"enabled": True,
"index": 2,
"snpa": "0:0:0:0:0:0",
"mtu": 65532,
"interfaceAddressFamily": "ipv4",
"interfaceType": "loopback",
"intfLevels": {
"2": {
"ipv4Metric": 10,
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": True,
"v4Protection": "disabled",
"v6Protection": "disabled",
}
},
"areaProxyBoundary": False,
},
"Ethernet1": {
"enabled": True,
"index": 132,
"snpa": "P2P",
"interfaceType": "point-to-point",
"intfLevels": {
"2": {
"ipv4Metric": 10,
"numAdjacencies": 1,
"linkId": "84",
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": False,
"v4Protection": "link",
"v6Protection": "disabled",
}
},
"interfaceSpeed": 1000,
"areaProxyBoundary": False,
},
"Ethernet2": {
"enabled": True,
"interfaceType": "broadcast",
"intfLevels": {
"2": {
"ipv4Metric": 10,
"numAdjacencies": 0,
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": True,
"v4Protection": "disabled",
"v6Protection": "disabled",
}
},
"interfaceSpeed": 1000,
"areaProxyBoundary": False,
},
}
}
}
}
}
}
],
"inputs": {
"interfaces": [
{"name": "Loopback0", "mode": "passive"},
{"name": "Ethernet2", "mode": "passive"},
{"name": "Ethernet1", "mode": "point-to-point", "vrf": "default"},
]
},
"expected": {
"result": "failure",
"messages": [
"Interface Loopback0 not found in VRF default",
"Interface Ethernet2 not found in VRF default",
"Interface Ethernet1 not found in VRF default",
],
},
},
{
"name": "skipped VerifyISISInterfaceMode no vrf",
"test": VerifyISISInterfaceMode,
"eos_data": [{"vrfs": {}}],
"inputs": {
"interfaces": [
{"name": "Loopback0", "mode": "passive"},
{"name": "Ethernet2", "mode": "passive"},
{"name": "Ethernet1", "mode": "point-to-point", "vrf": "default"},
]
},
"expected": {"result": "skipped", "messages": ["IS-IS is not configured on device"]},
},
{
"name": "Skipped of VerifyISISSegmentRoutingAdjacencySegments no VRF.",
"test": VerifyISISSegmentRoutingAdjacencySegments,
"eos_data": [{"vrfs": {}}],
"inputs": {
"instances": [
{
"name": "CORE-ISIS",
"vrf": "default",
"segments": [
{
"interface": "Ethernet2",
"address": "10.0.1.3",
"sid_origin": "dynamic",
}
],
}
]
},
"expected": {"result": "skipped", "messages": ["IS-IS is not configured on device"]},
},
{
"test": VerifyISISSegmentRoutingAdjacencySegments,
"name": "Success of VerifyISISSegmentRoutingAdjacencySegments in default VRF.",
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"dataPlane": "MPLS",
"routerId": "1.0.0.11",
"systemId": "0168.0000.0011",
"hostname": "s1-pe01",
"adjSidAllocationMode": "SrOnly",
"adjSidPoolBase": 116384,
"adjSidPoolSize": 16384,
"adjacencySegments": [
{
"ipAddress": "10.0.1.3",
"localIntf": "Ethernet2",
"sid": 116384,
"lan": False,
"sidOrigin": "dynamic",
"protection": "unprotected",
"flags": {
"b": False,
"v": True,
"l": True,
"f": False,
"s": False,
},
"level": 2,
},
{
"ipAddress": "10.0.1.1",
"localIntf": "Ethernet1",
"sid": 116385,
"lan": False,
"sidOrigin": "dynamic",
"protection": "unprotected",
"flags": {
"b": False,
"v": True,
"l": True,
"f": False,
"s": False,
},
"level": 2,
},
],
"receivedGlobalAdjacencySegments": [],
"misconfiguredAdjacencySegments": [],
}
}
}
}
}
],
"inputs": {
"instances": [
{
"name": "CORE-ISIS",
"vrf": "default",
"segments": [
{
"interface": "Ethernet2",
"address": "10.0.1.3",
"sid_origin": "dynamic",
}
],
}
]
},
"expected": {
"result": "success",
"messages": [],
},
},
{
"test": VerifyISISSegmentRoutingAdjacencySegments,
"name": "Failure of VerifyISISSegmentRoutingAdjacencySegments in default VRF for incorrect segment definition.",
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"dataPlane": "MPLS",
"routerId": "1.0.0.11",
"systemId": "0168.0000.0011",
"hostname": "s1-pe01",
"adjSidAllocationMode": "SrOnly",
"adjSidPoolBase": 116384,
"adjSidPoolSize": 16384,
"adjacencySegments": [
{
"ipAddress": "10.0.1.3",
"localIntf": "Ethernet2",
"sid": 116384,
"lan": False,
"sidOrigin": "dynamic",
"protection": "unprotected",
"flags": {
"b": False,
"v": True,
"l": True,
"f": False,
"s": False,
},
"level": 2,
},
{
"ipAddress": "10.0.1.1",
"localIntf": "Ethernet1",
"sid": 116385,
"lan": False,
"sidOrigin": "dynamic",
"protection": "unprotected",
"flags": {
"b": False,
"v": True,
"l": True,
"f": False,
"s": False,
},
"level": 2,
},
],
"receivedGlobalAdjacencySegments": [],
"misconfiguredAdjacencySegments": [],
}
}
}
}
}
],
"inputs": {
"instances": [
{
"name": "CORE-ISIS",
"vrf": "default",
"segments": [
{
"interface": "Ethernet2",
"address": "10.0.1.3",
"sid_origin": "dynamic",
},
{
"interface": "Ethernet3",
"address": "10.0.1.2",
"sid_origin": "dynamic",
},
],
}
]
},
"expected": {
"result": "failure",
"messages": ["Your segment has not been found: interface='Ethernet3' level=2 sid_origin='dynamic' address=IPv4Address('10.0.1.2')."],
},
},
{
"test": VerifyISISSegmentRoutingAdjacencySegments,
"name": "Failure of VerifyISISSegmentRoutingAdjacencySegments with incorrect VRF.",
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"dataPlane": "MPLS",
"routerId": "1.0.0.11",
"systemId": "0168.0000.0011",
"hostname": "s1-pe01",
"adjSidAllocationMode": "SrOnly",
"adjSidPoolBase": 116384,
"adjSidPoolSize": 16384,
"adjacencySegments": [
{
"ipAddress": "10.0.1.3",
"localIntf": "Ethernet2",
"sid": 116384,
"lan": False,
"sidOrigin": "dynamic",
"protection": "unprotected",
"flags": {
"b": False,
"v": True,
"l": True,
"f": False,
"s": False,
},
"level": 2,
},
{
"ipAddress": "10.0.1.1",
"localIntf": "Ethernet1",
"sid": 116385,
"lan": False,
"sidOrigin": "dynamic",
"protection": "unprotected",
"flags": {
"b": False,
"v": True,
"l": True,
"f": False,
"s": False,
},
"level": 2,
},
],
"receivedGlobalAdjacencySegments": [],
"misconfiguredAdjacencySegments": [],
}
}
}
}
}
],
"inputs": {
"instances": [
{
"name": "CORE-ISIS",
"vrf": "custom",
"segments": [
{
"interface": "Ethernet2",
"address": "10.0.1.3",
"sid_origin": "dynamic",
},
{
"interface": "Ethernet3",
"address": "10.0.1.2",
"sid_origin": "dynamic",
},
],
}
]
},
"expected": {
"result": "failure",
"messages": ["VRF custom is not configured to run segment routging."],
},
},
{
"test": VerifyISISSegmentRoutingAdjacencySegments,
"name": "Failure of VerifyISISSegmentRoutingAdjacencySegments with incorrect Instance.",
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"dataPlane": "MPLS",
"routerId": "1.0.0.11",
"systemId": "0168.0000.0011",
"hostname": "s1-pe01",
"adjSidAllocationMode": "SrOnly",
"adjSidPoolBase": 116384,
"adjSidPoolSize": 16384,
"adjacencySegments": [
{
"ipAddress": "10.0.1.3",
"localIntf": "Ethernet2",
"sid": 116384,
"lan": False,
"sidOrigin": "dynamic",
"protection": "unprotected",
"flags": {
"b": False,
"v": True,
"l": True,
"f": False,
"s": False,
},
"level": 2,
},
{
"ipAddress": "10.0.1.1",
"localIntf": "Ethernet1",
"sid": 116385,
"lan": False,
"sidOrigin": "dynamic",
"protection": "unprotected",
"flags": {
"b": False,
"v": True,
"l": True,
"f": False,
"s": False,
},
"level": 2,
},
],
"receivedGlobalAdjacencySegments": [],
"misconfiguredAdjacencySegments": [],
}
}
}
}
}
],
"inputs": {
"instances": [
{
"name": "CORE-ISIS2",
"vrf": "default",
"segments": [
{
"interface": "Ethernet2",
"address": "10.0.1.3",
"sid_origin": "dynamic",
},
{
"interface": "Ethernet3",
"address": "10.0.1.2",
"sid_origin": "dynamic",
},
],
}
]
},
"expected": {
"result": "failure",
"messages": ["Instance CORE-ISIS2 is not found in vrf default."],
},
},
{
"test": VerifyISISSegmentRoutingAdjacencySegments,
"name": "Failure of VerifyISISSegmentRoutingAdjacencySegments with incorrect segment info.",
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"dataPlane": "MPLS",
"routerId": "1.0.0.11",
"systemId": "0168.0000.0011",
"hostname": "s1-pe01",
"adjSidAllocationMode": "SrOnly",
"adjSidPoolBase": 116384,
"adjSidPoolSize": 16384,
"adjacencySegments": [
{
"ipAddress": "10.0.1.3",
"localIntf": "Ethernet2",
"sid": 116384,
"lan": False,
"sidOrigin": "dynamic",
"protection": "unprotected",
"flags": {
"b": False,
"v": True,
"l": True,
"f": False,
"s": False,
},
"level": 2,
},
],
"receivedGlobalAdjacencySegments": [],
"misconfiguredAdjacencySegments": [],
}
}
}
}
}
],
"inputs": {
"instances": [
{
"name": "CORE-ISIS",
"vrf": "default",
"segments": [
{
"interface": "Ethernet2",
"address": "10.0.1.3",
"sid_origin": "dynamic",
"level": 1, # Wrong level
},
],
}
]
},
"expected": {
"result": "failure",
"messages": [
(
"Your segment is not correct: Expected: interface='Ethernet2' level=1 sid_origin='dynamic' address=IPv4Address('10.0.1.3') - "
"Found: {'ipAddress': '10.0.1.3', 'localIntf': 'Ethernet2', 'sid': 116384, 'lan': False, 'sidOrigin': 'dynamic', 'protection': "
"'unprotected', 'flags': {'b': False, 'v': True, 'l': True, 'f': False, 's': False}, 'level': 2}."
)
],
},
},
{
"test": VerifyISISSegmentRoutingDataplane,
"name": "Check VerifyISISSegmentRoutingDataplane is running successfully",
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"dataPlane": "MPLS",
"routerId": "1.0.0.11",
"systemId": "0168.0000.0011",
"hostname": "s1-pe01",
}
}
}
}
}
],
"inputs": {
"instances": [
{
"name": "CORE-ISIS",
"vrf": "default",
"dataplane": "MPLS",
},
]
},
"expected": {
"result": "success",
"messages": [],
},
},
{
"test": VerifyISISSegmentRoutingDataplane,
"name": "Check VerifyISISSegmentRoutingDataplane is failing with incorrect dataplane",
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"dataPlane": "MPLS",
"routerId": "1.0.0.11",
"systemId": "0168.0000.0011",
"hostname": "s1-pe01",
}
}
}
}
}
],
"inputs": {
"instances": [
{
"name": "CORE-ISIS",
"vrf": "default",
"dataplane": "unset",
},
]
},
"expected": {
"result": "failure",
"messages": ["ISIS instance CORE-ISIS is not running dataplane unset (MPLS)"],
},
},
{
"test": VerifyISISSegmentRoutingDataplane,
"name": "Check VerifyISISSegmentRoutingDataplane is failing for unknown instance",
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"dataPlane": "MPLS",
"routerId": "1.0.0.11",
"systemId": "0168.0000.0011",
"hostname": "s1-pe01",
}
}
}
}
}
],
"inputs": {
"instances": [
{
"name": "CORE-ISIS2",
"vrf": "default",
"dataplane": "unset",
},
]
},
"expected": {
"result": "failure",
"messages": ["Instance CORE-ISIS2 is not found in vrf default."],
},
},
{
"test": VerifyISISSegmentRoutingDataplane,
"name": "Check VerifyISISSegmentRoutingDataplane is failing for unknown VRF",
"eos_data": [
{
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"dataPlane": "MPLS",
"routerId": "1.0.0.11",
"systemId": "0168.0000.0011",
"hostname": "s1-pe01",
}
}
}
}
}
],
"inputs": {
"instances": [
{
"name": "CORE-ISIS",
"vrf": "wrong_vrf",
"dataplane": "unset",
},
]
},
"expected": {
"result": "failure",
"messages": ["VRF wrong_vrf is not configured to run segment routing."],
},
},
{
"test": VerifyISISSegmentRoutingDataplane,
"name": "Check VerifyISISSegmentRoutingDataplane is skipped",
"eos_data": [{"vrfs": {}}],
"inputs": {
"instances": [
{
"name": "CORE-ISIS",
"vrf": "wrong_vrf",
"dataplane": "unset",
},
]
},
"expected": {
"result": "skipped",
"messages": ["IS-IS-SR is not running on device"],
},
},
{
"test": VerifyISISSegmentRoutingTunnels,
"name": "runs successfully",
"eos_data": [
{
"entries": {
"3": {
"endpoint": "1.0.0.122/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"31": {
"endpoint": "1.0.0.13/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"32": {
"endpoint": "1.0.0.122/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"2": {
"endpoint": "1.0.0.111/32",
"vias": [
{
"type": "tunnel",
"tunnelId": {"type": "TI-LFA", "index": 4},
"labels": ["3"],
}
],
},
}
}
],
"inputs": {
"entries": [
{"endpoint": "1.0.0.122/32"},
{"endpoint": "1.0.0.13/32", "vias": [{"type": "ip"}]},
{
"endpoint": "1.0.0.111/32",
"vias": [{"type": "tunnel", "tunnel_id": "ti-lfa"}],
},
{
"endpoint": "1.0.0.122/32",
"vias": [
{"interface": "Ethernet1", "nexthop": "10.0.1.1"}, # Testing empty type
{"type": "ip", "interface": "Ethernet2", "nexthop": "10.0.1.3"},
],
},
]
},
"expected": {
"result": "success",
"messages": [],
},
},
{
"test": VerifyISISSegmentRoutingTunnels,
"name": "is skipped if not entry founf in EOS",
"eos_data": [{"entries": {}}],
"inputs": {
"entries": [
{"endpoint": "1.0.0.122/32"},
]
},
"expected": {
"result": "skipped",
"messages": ["IS-IS-SR is not running on device."],
},
},
{
"test": VerifyISISSegmentRoutingTunnels,
"name": "runs successfully",
"eos_data": [
{
"entries": {
"2": {
"endpoint": "1.0.0.111/32",
"vias": [
{
"type": "tunnel",
"tunnelId": {"type": "TI-LFA", "index": 4},
"labels": ["3"],
}
],
},
}
}
],
"inputs": {
"entries": [
{"endpoint": "1.0.0.122/32"},
]
},
"expected": {
"result": "failure",
"messages": ["Tunnel to endpoint=IPv4Network('1.0.0.122/32') vias=None is not found."],
},
},
{
"test": VerifyISISSegmentRoutingTunnels,
"name": "fails with incorrect tunnel type",
"eos_data": [
{
"entries": {
"3": {
"endpoint": "1.0.0.122/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"31": {
"endpoint": "1.0.0.13/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"32": {
"endpoint": "1.0.0.122/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"2": {
"endpoint": "1.0.0.111/32",
"vias": [
{
"type": "tunnel",
"tunnelId": {"type": "TI-LFA", "index": 4},
"labels": ["3"],
}
],
},
}
}
],
"inputs": {
"entries": [
{"endpoint": "1.0.0.122/32"},
{"endpoint": "1.0.0.13/32", "vias": [{"type": "tunnel"}]},
]
},
"expected": {
"result": "failure",
"messages": ["Tunnel to 1.0.0.13/32 is incorrect: incorrect tunnel type"],
},
},
{
"test": VerifyISISSegmentRoutingTunnels,
"name": "fails with incorrect nexthop",
"eos_data": [
{
"entries": {
"3": {
"endpoint": "1.0.0.122/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"31": {
"endpoint": "1.0.0.13/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"32": {
"endpoint": "1.0.0.122/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"2": {
"endpoint": "1.0.0.111/32",
"vias": [
{
"type": "tunnel",
"tunnelId": {"type": "TI-LFA", "index": 4},
"labels": ["3"],
}
],
},
}
}
],
"inputs": {
"entries": [
{"endpoint": "1.0.0.122/32"},
{"endpoint": "1.0.0.13/32", "vias": [{"type": "ip"}]},
{
"endpoint": "1.0.0.122/32",
"vias": [
{"type": "ip", "interface": "Ethernet1", "nexthop": "10.0.1.2"},
{"type": "ip", "interface": "Ethernet2", "nexthop": "10.0.1.3"},
],
},
]
},
"expected": {
"result": "failure",
"messages": ["Tunnel to 1.0.0.122/32 is incorrect: incorrect nexthop"],
},
},
{
"test": VerifyISISSegmentRoutingTunnels,
"name": "fails with incorrect nexthop",
"eos_data": [
{
"entries": {
"3": {
"endpoint": "1.0.0.122/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"31": {
"endpoint": "1.0.0.13/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"32": {
"endpoint": "1.0.0.122/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"2": {
"endpoint": "1.0.0.111/32",
"vias": [
{
"type": "tunnel",
"tunnelId": {"type": "TI-LFA", "index": 4},
"labels": ["3"],
}
],
},
}
}
],
"inputs": {
"entries": [
{"endpoint": "1.0.0.122/32"},
{"endpoint": "1.0.0.13/32", "vias": [{"type": "ip"}]},
{
"endpoint": "1.0.0.122/32",
"vias": [
{"type": "ip", "interface": "Ethernet4", "nexthop": "10.0.1.1"},
{"type": "ip", "interface": "Ethernet2", "nexthop": "10.0.1.3"},
],
},
]
},
"expected": {
"result": "failure",
"messages": ["Tunnel to 1.0.0.122/32 is incorrect: incorrect interface"],
},
},
{
"test": VerifyISISSegmentRoutingTunnels,
"name": "fails with incorrect interface",
"eos_data": [
{
"entries": {
"3": {
"endpoint": "1.0.0.122/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"31": {
"endpoint": "1.0.0.13/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"32": {
"endpoint": "1.0.0.122/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"2": {
"endpoint": "1.0.0.111/32",
"vias": [
{
"type": "tunnel",
"tunnelId": {"type": "TI-LFA", "index": 4},
"labels": ["3"],
}
],
},
}
}
],
"inputs": {
"entries": [
{"endpoint": "1.0.0.122/32"},
{"endpoint": "1.0.0.13/32", "vias": [{"type": "ip"}]},
{
"endpoint": "1.0.0.122/32",
"vias": [
{"type": "ip", "interface": "Ethernet1", "nexthop": "10.0.1.2"},
{"type": "ip", "interface": "Ethernet2", "nexthop": "10.0.1.3"},
],
},
]
},
"expected": {
"result": "failure",
"messages": ["Tunnel to 1.0.0.122/32 is incorrect: incorrect nexthop"],
},
},
{
"test": VerifyISISSegmentRoutingTunnels,
"name": "fails with incorrect tunnel ID type",
"eos_data": [
{
"entries": {
"3": {
"endpoint": "1.0.0.122/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"31": {
"endpoint": "1.0.0.13/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"32": {
"endpoint": "1.0.0.122/32",
"vias": [
{
"type": "ip",
"nexthop": "10.0.1.1",
"interface": "Ethernet1",
"labels": ["900021"],
},
{
"type": "ip",
"nexthop": "10.0.1.3",
"interface": "Ethernet2",
"labels": ["900021"],
},
],
},
"2": {
"endpoint": "1.0.0.111/32",
"vias": [
{
"type": "tunnel",
"tunnelId": {"type": "TI-LFA", "index": 4},
"labels": ["3"],
}
],
},
}
}
],
"inputs": {
"entries": [
{"endpoint": "1.0.0.122/32"},
{"endpoint": "1.0.0.13/32", "vias": [{"type": "ip"}]},
{
"endpoint": "1.0.0.111/32",
"vias": [
{"type": "tunnel", "tunnel_id": "unset"},
],
},
]
},
"expected": {
"result": "failure",
"messages": ["Tunnel to 1.0.0.111/32 is incorrect: incorrect tunnel ID"],
},
},
]
COMMAND_OUTPUT = {
"vrfs": {
"default": {
"isisInstances": {
"CORE-ISIS": {
"interfaces": {
"Loopback0": {
"enabled": True,
"intfLevels": {
"2": {
"ipv4Metric": 10,
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": True,
"v4Protection": "disabled",
"v6Protection": "disabled",
}
},
"areaProxyBoundary": False,
},
"Ethernet1": {
"intfLevels": {
"2": {
"ipv4Metric": 10,
"numAdjacencies": 1,
"linkId": "84",
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": False,
"v4Protection": "link",
"v6Protection": "disabled",
}
},
"interfaceSpeed": 1000,
"areaProxyBoundary": False,
},
}
}
}
},
"EMPTY": {"isisInstances": {}},
"NO_INTERFACES": {"isisInstances": {"CORE-ISIS": {}}},
}
}
EXPECTED_LOOPBACK_0_OUTPUT = {
"enabled": True,
"intfLevels": {
"2": {
"ipv4Metric": 10,
"sharedSecretProfile": "",
"isisAdjacencies": [],
"passive": True,
"v4Protection": "disabled",
"v6Protection": "disabled",
}
},
"areaProxyBoundary": False,
}
@pytest.mark.parametrize(
("interface", "vrf", "expected_value"),
[
pytest.param("Loopback0", "WRONG_VRF", None, id="VRF_not_found"),
pytest.param("Loopback0", "EMPTY", None, id="VRF_no_ISIS_instances"),
pytest.param("Loopback0", "NO_INTERFACES", None, id="ISIS_instance_no_interfaces"),
pytest.param("Loopback42", "default", None, id="interface_not_found"),
pytest.param("Loopback0", "default", EXPECTED_LOOPBACK_0_OUTPUT, id="interface_found"),
],
)
def test__get_interface_data(interface: str, vrf: str, expected_value: dict[str, Any] | None) -> None:
"""Test anta.tests.routing.isis._get_interface_data."""
assert _get_interface_data(interface, vrf, COMMAND_OUTPUT) == expected_value