[YANG][SNMP]: Add YANG model for SNMP_AGENT_ADDRESS_CONFIG table (#15587)
#### Why I did it https://github.com/sonic-net/sonic-utilities/pull/472 Added SNMP_AGENT_ADDRESS_CONFIG table in config db. This PR is to add corresponding YANG model for that table. ##### Work item tracking - Microsoft ADO **(number only)**: #### How I did it Added YANG modesl for SNMP_AGENT_ADDRESS_CONFIG. keys: agent_ip, port number, vrf. CLI implementaion checks if agent_ip, port number already exists in CONFIG_DB table, if it does, then new entry is not added. So added another condition to ensure combination of agent_ip and port is unique. Below is an example of how data looks like in DB: ``` 127.0.0.1:6379[4]> HGETALL "SNMP_AGENT_ADDRESS_CONFIG|10.1.1.1|161|foo" 1) "NULL" 2) "NULL" 127.0.0.1:6379[4]> HGETALL "SNMP_AGENT_ADDRESS_CONFIG|10.1.0.32|161|" 1) "NULL" 2) "NULL" ``` #### How to verify it Added unit-test for various combinations and ensures that it passes.
This commit is contained in:
parent
42a13665f8
commit
c8b2d33b89
@ -113,5 +113,40 @@
|
||||
"SNMP_USER_PRIV_LONG_ENCRYPT_PASS_NEG_TEST": {
|
||||
"desc": "Load SNMP user with user type Priv with long encryption password",
|
||||
"eStrKey": "Range"
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG": {
|
||||
"desc": "Load SNMP agent address config"
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_IPV6": {
|
||||
"desc": "Load SNMP agent address config"
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_EMPTY_PORT_NUMBER": {
|
||||
"desc": "Load SNMP agent address config with empty port number"
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_MGMT_VRF": {
|
||||
"desc": "Load SNMP agent address config with mgmt vrf"
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_NO_VRF": {
|
||||
"desc": "Load SNMP agent address config with no vrf",
|
||||
"eStr": ["Missing required element"]
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_INVALID_PORT": {
|
||||
"desc": "Load SNMP agent address config with invalid port",
|
||||
"eStrKey": "InvalidValue"
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_DUPLICATE_IP_PORT": {
|
||||
"desc": "Load two SNMP agent address config same ip and port",
|
||||
"eStr": ["Unique data leaf(s)"]
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_INVALID_IPV4_ADDRESS": {
|
||||
"desc": "Load SNMP agent address config with invalid IPv4 address",
|
||||
"eStrKey": "InvalidValue",
|
||||
"eStr": ["ip"]
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_INVALID_IPV6_ADDRESS": {
|
||||
"desc": "Load SNMP agent address config with invalid IPV6 address",
|
||||
"eStrKey": "InvalidValue",
|
||||
"eStr": ["ip"]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -502,5 +502,126 @@
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG": {
|
||||
"sonic-snmp:sonic-snmp": {
|
||||
"sonic-snmp:SNMP_AGENT_ADDRESS_CONFIG": {
|
||||
"SNMP_AGENT_ADDRESS_LIST": [
|
||||
{
|
||||
"agent_ip": "10.0.0.1",
|
||||
"port": "161",
|
||||
"vrf_name": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_IPV6": {
|
||||
"sonic-snmp:sonic-snmp": {
|
||||
"sonic-snmp:SNMP_AGENT_ADDRESS_CONFIG": {
|
||||
"SNMP_AGENT_ADDRESS_LIST": [
|
||||
{
|
||||
"agent_ip": "fd00::1",
|
||||
"port": "161",
|
||||
"vrf_name": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_EMPTY_PORT_NUMBER": {
|
||||
"sonic-snmp:sonic-snmp": {
|
||||
"sonic-snmp:SNMP_AGENT_ADDRESS_CONFIG": {
|
||||
"SNMP_AGENT_ADDRESS_LIST": [
|
||||
{
|
||||
"agent_ip": "10.0.0.1",
|
||||
"port": "",
|
||||
"vrf_name": "mgmt"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_MGMT_VRF": {
|
||||
"sonic-snmp:sonic-snmp": {
|
||||
"sonic-snmp:SNMP_AGENT_ADDRESS_CONFIG": {
|
||||
"SNMP_AGENT_ADDRESS_LIST": [
|
||||
{
|
||||
"agent_ip": "10.0.0.1",
|
||||
"port": "161",
|
||||
"vrf_name": "mgmt"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_NO_VRF": {
|
||||
"sonic-snmp:sonic-snmp": {
|
||||
"sonic-snmp:SNMP_AGENT_ADDRESS_CONFIG": {
|
||||
"SNMP_AGENT_ADDRESS_LIST": [
|
||||
{
|
||||
"agent_ip": "10.0.0.1",
|
||||
"port": "161"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_INVALID_PORT": {
|
||||
"sonic-snmp:sonic-snmp": {
|
||||
"sonic-snmp:SNMP_AGENT_ADDRESS_CONFIG": {
|
||||
"SNMP_AGENT_ADDRESS_LIST": [
|
||||
{
|
||||
"agent_ip": "10.0.0.1",
|
||||
"port": "65536",
|
||||
"vrf_name": "mgmt"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_DUPLICATE_IP_PORT": {
|
||||
"sonic-snmp:sonic-snmp": {
|
||||
"sonic-snmp:SNMP_AGENT_ADDRESS_CONFIG": {
|
||||
"SNMP_AGENT_ADDRESS_LIST": [
|
||||
{
|
||||
"agent_ip": "10.0.0.1",
|
||||
"port": "161",
|
||||
"vrf_name": "mgmt"
|
||||
},
|
||||
{
|
||||
"agent_ip": "10.0.0.1",
|
||||
"port": "161",
|
||||
"vrf_name": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_INVALID_IPV4_ADDRESS": {
|
||||
"sonic-snmp:sonic-snmp": {
|
||||
"sonic-snmp:SNMP_AGENT_ADDRESS_CONFIG": {
|
||||
"SNMP_AGENT_ADDRESS_LIST": [
|
||||
{
|
||||
"agent_ip": "340.1.1.10",
|
||||
"port": "161",
|
||||
"vrf_name": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"SNMP_AGENT_ADDRESS_CONFIG_INVALID_IPV6_ADDRESS": {
|
||||
"sonic-snmp:sonic-snmp": {
|
||||
"sonic-snmp:SNMP_AGENT_ADDRESS_CONFIG": {
|
||||
"SNMP_AGENT_ADDRESS_LIST": [
|
||||
{
|
||||
"agent_ip": "2001:aa:aa:aa",
|
||||
"port": "161",
|
||||
"vrf_name": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,12 @@ module sonic-snmp {
|
||||
prefix ssnmp;
|
||||
yang-version 1.1;
|
||||
|
||||
import ietf-inet-types {
|
||||
prefix inet;
|
||||
}
|
||||
import sonic-vrf {
|
||||
prefix vrf;
|
||||
}
|
||||
|
||||
organization
|
||||
"SONiC";
|
||||
@ -156,5 +162,42 @@ module sonic-snmp {
|
||||
}
|
||||
}
|
||||
}
|
||||
container SNMP_AGENT_ADDRESS_CONFIG {
|
||||
list SNMP_AGENT_ADDRESS_LIST {
|
||||
key "agent_ip port vrf_name";
|
||||
unique "agent_ip port";
|
||||
description "List of SNMP agent listening IP Addresses and ports.";
|
||||
|
||||
leaf agent_ip {
|
||||
type inet:ip-address;
|
||||
description "SNMP agent listening IP";
|
||||
}
|
||||
leaf port {
|
||||
type union {
|
||||
type string {
|
||||
pattern '';
|
||||
}
|
||||
type inet:port-number;
|
||||
}
|
||||
default "";
|
||||
description "SNMP agent listening port number";
|
||||
}
|
||||
leaf vrf_name {
|
||||
type union {
|
||||
type string {
|
||||
pattern '';
|
||||
}
|
||||
type string {
|
||||
pattern 'mgmt';
|
||||
}
|
||||
type string {
|
||||
pattern "Vrf[a-zA-Z0-9_-]+";
|
||||
}
|
||||
}
|
||||
default "";
|
||||
description "VRF name";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user