Skip to content

SNMP

ANTA catalog for SNMP tests

Test functions related to the EOS various SNMP settings

VerifySnmpIPv4Acl

Bases: AntaTest

Verifies if the SNMP agent has the right number IPv4 ACL(s) configured for a specified VRF.

Expected results
  • success: The test will pass if the SNMP agent has the provided number of IPv4 ACL(s) in the specified VRF.
  • failure: The test will fail if the SNMP agent has not the right number of IPv4 ACL(s) in the specified VRF.
  • skipped: The test will be skipped if the number of IPv4 ACL(s) or VRF parameter is not provided.
Source code in anta/tests/snmp.py
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
84
85
86
87
88
89
90
class VerifySnmpIPv4Acl(AntaTest):
    """
    Verifies if the SNMP agent has the right number IPv4 ACL(s) configured for a specified VRF.

    Expected results:
        * success: The test will pass if the SNMP agent has the provided number of IPv4 ACL(s) in the specified VRF.
        * failure: The test will fail if the SNMP agent has not the right number of IPv4 ACL(s) in the specified VRF.
        * skipped: The test will be skipped if the number of IPv4 ACL(s) or VRF parameter is not provided.
    """

    name = "VerifySnmpIPv4Acl"
    description = "Verifies if the SNMP agent has IPv4 ACL(s) configured."
    categories = ["snmp"]
    commands = [AntaCommand(command="show snmp ipv4 access-list summary")]

    @AntaTest.anta_test
    def test(self, number: Optional[int] = None, vrf: str = "default") -> None:
        """
        Run VerifySnmpIPv4Acl validation.

        Args:
            number: The number of expected IPv4 ACL(s).
            vrf: The name of the VRF in which to check for the SNMP agent. Defaults to 'default'.
        """
        if not number or not vrf:
            self.result.is_skipped(f"{self.__class__.name} did not run because number or vrf was not supplied")
            return

        command_output = self.instance_commands[0].json_output

        ipv4_acl_list = command_output["ipAclList"]["aclList"]
        ipv4_acl_number = len(ipv4_acl_list)
        not_configured_acl_list = []

        if ipv4_acl_number != number:
            self.result.is_failure(f"Expected {number} SNMP IPv4 ACL(s) in vrf {vrf} but got {ipv4_acl_number}")
            return

        for ipv4_acl in ipv4_acl_list:
            if vrf not in ipv4_acl["configuredVrfs"] or vrf not in ipv4_acl["activeVrfs"]:
                not_configured_acl_list.append(ipv4_acl["name"])

        if not_configured_acl_list:
            self.result.is_failure(f"SNMP IPv4 ACL(s) not configured or active in vrf {vrf}: {not_configured_acl_list}")
        else:
            self.result.is_success()

test

test(
    number: Optional[int] = None, vrf: str = "default"
) -> None

Run VerifySnmpIPv4Acl validation.

Parameters:

Name Type Description Default
number Optional[int]

The number of expected IPv4 ACL(s).

None
vrf str

The name of the VRF in which to check for the SNMP agent. Defaults to ‘default’.

'default'
Source code in anta/tests/snmp.py
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
@AntaTest.anta_test
def test(self, number: Optional[int] = None, vrf: str = "default") -> None:
    """
    Run VerifySnmpIPv4Acl validation.

    Args:
        number: The number of expected IPv4 ACL(s).
        vrf: The name of the VRF in which to check for the SNMP agent. Defaults to 'default'.
    """
    if not number or not vrf:
        self.result.is_skipped(f"{self.__class__.name} did not run because number or vrf was not supplied")
        return

    command_output = self.instance_commands[0].json_output

    ipv4_acl_list = command_output["ipAclList"]["aclList"]
    ipv4_acl_number = len(ipv4_acl_list)
    not_configured_acl_list = []

    if ipv4_acl_number != number:
        self.result.is_failure(f"Expected {number} SNMP IPv4 ACL(s) in vrf {vrf} but got {ipv4_acl_number}")
        return

    for ipv4_acl in ipv4_acl_list:
        if vrf not in ipv4_acl["configuredVrfs"] or vrf not in ipv4_acl["activeVrfs"]:
            not_configured_acl_list.append(ipv4_acl["name"])

    if not_configured_acl_list:
        self.result.is_failure(f"SNMP IPv4 ACL(s) not configured or active in vrf {vrf}: {not_configured_acl_list}")
    else:
        self.result.is_success()

VerifySnmpIPv6Acl

Bases: AntaTest

Verifies if the SNMP agent has the right number IPv6 ACL(s) configured for a specified VRF.

Expected results
  • success: The test will pass if the SNMP agent has the provided number of IPv6 ACL(s) in the specified VRF.
  • failure: The test will fail if the SNMP agent has not the right number of IPv6 ACL(s) in the specified VRF.
  • skipped: The test will be skipped if the number of IPv6 ACL(s) or VRF parameter is not provided.
Source code in anta/tests/snmp.py
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
class VerifySnmpIPv6Acl(AntaTest):
    """
    Verifies if the SNMP agent has the right number IPv6 ACL(s) configured for a specified VRF.

    Expected results:
        * success: The test will pass if the SNMP agent has the provided number of IPv6 ACL(s) in the specified VRF.
        * failure: The test will fail if the SNMP agent has not the right number of IPv6 ACL(s) in the specified VRF.
        * skipped: The test will be skipped if the number of IPv6 ACL(s) or VRF parameter is not provided.
    """

    name = "VerifySnmpIPv6Acl"
    description = "Verifies if the SNMP agent has IPv6 ACL(s) configured."
    categories = ["snmp"]
    commands = [AntaCommand(command="show snmp ipv6 access-list summary")]

    @AntaTest.anta_test
    def test(self, number: Optional[int] = None, vrf: str = "default") -> None:
        """
        Run VerifySnmpIPv6Acl validation.

        Args:
            number: The number of expected IPv6 ACL(s).
            vrf: The name of the VRF in which to check for the SNMP agent. Defaults to 'default'.
        """
        if not number or not vrf:
            self.result.is_skipped(f"{self.__class__.name} did not run because number or vrf was not supplied")
            return

        command_output = self.instance_commands[0].json_output

        ipv6_acl_list = command_output["ipv6AclList"]["aclList"]
        ipv6_acl_number = len(ipv6_acl_list)
        not_configured_acl_list = []

        if ipv6_acl_number != number:
            self.result.is_failure(f"Expected {number} SNMP IPv6 ACL(s) in vrf {vrf} but got {ipv6_acl_number}")
            return

        for ipv6_acl in ipv6_acl_list:
            if vrf not in ipv6_acl["configuredVrfs"] or vrf not in ipv6_acl["activeVrfs"]:
                not_configured_acl_list.append(ipv6_acl["name"])

        if not_configured_acl_list:
            self.result.is_failure(f"SNMP IPv6 ACL(s) not configured or active in vrf {vrf}: {not_configured_acl_list}")
        else:
            self.result.is_success()

test

test(
    number: Optional[int] = None, vrf: str = "default"
) -> None

Run VerifySnmpIPv6Acl validation.

Parameters:

Name Type Description Default
number Optional[int]

The number of expected IPv6 ACL(s).

None
vrf str

The name of the VRF in which to check for the SNMP agent. Defaults to ‘default’.

'default'
Source code in anta/tests/snmp.py
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
@AntaTest.anta_test
def test(self, number: Optional[int] = None, vrf: str = "default") -> None:
    """
    Run VerifySnmpIPv6Acl validation.

    Args:
        number: The number of expected IPv6 ACL(s).
        vrf: The name of the VRF in which to check for the SNMP agent. Defaults to 'default'.
    """
    if not number or not vrf:
        self.result.is_skipped(f"{self.__class__.name} did not run because number or vrf was not supplied")
        return

    command_output = self.instance_commands[0].json_output

    ipv6_acl_list = command_output["ipv6AclList"]["aclList"]
    ipv6_acl_number = len(ipv6_acl_list)
    not_configured_acl_list = []

    if ipv6_acl_number != number:
        self.result.is_failure(f"Expected {number} SNMP IPv6 ACL(s) in vrf {vrf} but got {ipv6_acl_number}")
        return

    for ipv6_acl in ipv6_acl_list:
        if vrf not in ipv6_acl["configuredVrfs"] or vrf not in ipv6_acl["activeVrfs"]:
            not_configured_acl_list.append(ipv6_acl["name"])

    if not_configured_acl_list:
        self.result.is_failure(f"SNMP IPv6 ACL(s) not configured or active in vrf {vrf}: {not_configured_acl_list}")
    else:
        self.result.is_success()

VerifySnmpStatus

Bases: AntaTest

Verifies whether the SNMP agent is enabled in a specified VRF.

Expected Results
  • success: The test will pass if the SNMP agent is enabled in the specified VRF.
  • failure: The test will fail if the SNMP agent is disabled in the specified VRF.
  • skipped: The test will be skipped if the VRF parameter is not provided.
Source code in anta/tests/snmp.py
11
12
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
41
42
class VerifySnmpStatus(AntaTest):
    """
    Verifies whether the SNMP agent is enabled in a specified VRF.

    Expected Results:
        * success: The test will pass if the SNMP agent is enabled in the specified VRF.
        * failure: The test will fail if the SNMP agent is disabled in the specified VRF.
        * skipped: The test will be skipped if the VRF parameter is not provided.
    """

    name = "VerifySnmpStatus"
    description = "Verifies if the SNMP agent is enabled."
    categories = ["snmp"]
    commands = [AntaCommand(command="show snmp")]

    @AntaTest.anta_test
    def test(self, vrf: str = "default") -> None:
        """
        Run VerifySnmpStatus validation.

        Args:
            vrf: The name of the VRF in which to check for the SNMP agent. Defaults to 'default'.
        """
        if not vrf:
            self.result.is_skipped(f"{self.__class__.name} did not run because vrf was not supplied")
        else:
            command_output = self.instance_commands[0].json_output

            if command_output["enabled"] and vrf in command_output["vrfs"]["snmpVrfs"]:
                self.result.is_success()
            else:
                self.result.is_failure(f"SNMP agent disabled in vrf {vrf}")

test

test(vrf: str = 'default') -> None

Run VerifySnmpStatus validation.

Parameters:

Name Type Description Default
vrf str

The name of the VRF in which to check for the SNMP agent. Defaults to ‘default’.

'default'
Source code in anta/tests/snmp.py
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@AntaTest.anta_test
def test(self, vrf: str = "default") -> None:
    """
    Run VerifySnmpStatus validation.

    Args:
        vrf: The name of the VRF in which to check for the SNMP agent. Defaults to 'default'.
    """
    if not vrf:
        self.result.is_skipped(f"{self.__class__.name} did not run because vrf was not supplied")
    else:
        command_output = self.instance_commands[0].json_output

        if command_output["enabled"] and vrf in command_output["vrfs"]["snmpVrfs"]:
            self.result.is_success()
        else:
            self.result.is_failure(f"SNMP agent disabled in vrf {vrf}")

Last update: July 19, 2023