Skip to content

OSPF

ANTA catalog for routing-ospf tests

OSPF test functions

VerifyOSPFNeighborCount

Bases: AntaTest

Verifies the number of OSPF neighbors in FULL state is the one we expect.

Source code in anta/tests/routing/ospf.py
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
class VerifyOSPFNeighborCount(AntaTest):
    """
    Verifies the number of OSPF neighbors in FULL state is the one we expect.
    """

    name = "VerifyOSPFNeighborCount"
    description = "Verifies the number of OSPF neighbors in FULL state is the one we expect."
    categories = ["routing", "ospf"]
    commands = [AntaCommand(command="show ip ospf neighbor")]

    class Input(AntaTest.Input):  # pylint: disable=missing-class-docstring
        number: int
        """The expected number of OSPF neighbors in FULL state"""

    @AntaTest.anta_test
    def test(self) -> None:
        command_output = self.instance_commands[0].json_output
        if (neighbor_count := _count_ospf_neighbor(command_output)) == 0:
            self.result.is_skipped("no OSPF neighbor found")
            return
        self.result.is_success()
        if neighbor_count != self.inputs.number:
            self.result.is_failure(f"device has {neighbor_count} neighbors (expected {self.inputs.number})")
        not_full_neighbors = _get_not_full_ospf_neighbors(command_output)
        print(not_full_neighbors)
        if not_full_neighbors:
            self.result.is_failure(f"Some neighbors are not correctly configured: {not_full_neighbors}.")

Input

Bases: Input

Source code in anta/tests/routing/ospf.py
79
80
81
class Input(AntaTest.Input):  # pylint: disable=missing-class-docstring
    number: int
    """The expected number of OSPF neighbors in FULL state"""

number instance-attribute

number: int

The expected number of OSPF neighbors in FULL state

VerifyOSPFNeighborState

Bases: AntaTest

Verifies all OSPF neighbors are in FULL state.

Source code in anta/tests/routing/ospf.py
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
class VerifyOSPFNeighborState(AntaTest):
    """
    Verifies all OSPF neighbors are in FULL state.
    """

    name = "VerifyOSPFNeighborState"
    description = "Verifies all OSPF neighbors are in FULL state."
    categories = ["routing", "ospf"]
    commands = [AntaCommand(command="show ip ospf neighbor")]

    @AntaTest.anta_test
    def test(self) -> None:
        command_output = self.instance_commands[0].json_output
        if _count_ospf_neighbor(command_output) == 0:
            self.result.is_skipped("no OSPF neighbor found")
            return
        self.result.is_success()
        not_full_neighbors = _get_not_full_ospf_neighbors(command_output)
        if not_full_neighbors:
            self.result.is_failure(f"Some neighbors are not correctly configured: {not_full_neighbors}.")