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