Skip to content

OSPF

ANTA catalog for routing-ospf tests

OSPF test functions

verify_ospf_count(device, result, number) async

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

Parameters:

Name Type Description Default
device InventoryDevice

InventoryDevice instance containing all devices information.

required
number int

The expected number of OSPF neighbors in FULL state.

required

Returns:

Type Description
TestResult

TestResult instance with

TestResult
  • result = “unset” if the test has not been executed
TestResult
  • result = “skipeed” if the number parameter is missing
TestResult
  • result = “success” if device has correct number of devices
TestResult
  • result = “failure” otherwise.
TestResult
  • result = “error” if any exception is caught
Source code in anta/tests/routing/ospf.py
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
@anta_test
async def verify_ospf_count(
    device: InventoryDevice, result: TestResult, number: int
) -> TestResult:
    """
    Verifies the number of OSPF neighbors in FULL state is the one we expect.

    Args:
        device (InventoryDevice): InventoryDevice instance containing all devices information.
        number (int): The expected number of OSPF neighbors in FULL state.

    Returns:
        TestResult instance with
        * result = "unset" if the test has not been executed
        * result = "skipeed" if the `number` parameter is missing
        * result = "success" if device has correct number of devices
        * result = "failure" otherwise.
        * result = "error" if any exception is caught
    """
    if not number:
        result.is_skipped(
            "verify_igmp_snooping_vlans was not run as no number was given"
        )
        return result

    response = await device.session.cli(
        command="show ip ospf neighbor | exclude  Address", ofmt="text"
    )
    logger.debug(f"query result is: {response}")
    if len(response) == 0:
        result.is_skipped("no OSPF neighbor found")
        return result
    response_data = response.count("FULL")
    if response_data.count("FULL") == number:
        result.is_success()
    else:
        result.is_failure(
            f'device has {response_data.count("FULL")} neighbors (expected {number}'
        )

    return result

verify_ospf_state(device, result) async

Verifies all OSPF neighbors are in FULL state.

Parameters:

Name Type Description Default
device InventoryDevice

InventoryDevice instance containing all devices information.

required

Returns:

Type Description
TestResult

TestResult instance with

TestResult
  • result = “unset” if the test has not been executed
TestResult
  • result = “success” if all OSPF neighbors are FULL.
TestResult
  • result = “failure” otherwise.
TestResult
  • result = “error” if any exception is caught
Source code in anta/tests/routing/ospf.py
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@anta_test
async def verify_ospf_state(device: InventoryDevice, result: TestResult) -> TestResult:
    """
    Verifies all OSPF neighbors are in FULL state.

    Args:
        device (InventoryDevice): InventoryDevice instance containing all devices information.

    Returns:
        TestResult instance with
        * result = "unset" if the test has not been executed
        * result = "success" if all OSPF neighbors are FULL.
        * result = "failure" otherwise.
        * result = "error" if any exception is caught
    """
    response = await device.session.cli(
        command="show ip ospf neighbor | exclude FULL|Address", ofmt="text"
    )
    logger.debug(f"query result is: {response}")
    if len(response) == 0:
        result.is_skipped("no OSPF neighbor found")
        return result
    if response.count("\n") == 0:
        result.is_success()
    else:
        result.is_failure("Some neighbors are not correctly configured.")

    return result

Last update: September 5, 2022