[yang]: Add constraint for pfcwd (#9513)

#### Why I did it
POLL_INTERVAL cannot be set if any of the detection/restoration times in this table is less than the POLL_INTERVAL.

#### How I did it
Add "must" constraint to make sure detection/restoration times are greater than POLL_INTERVAL.

#### How to verify it
Use apply-patch command to update POLL_INTERVAL.
Build sonic-yang-model.
This commit is contained in:
ganglv 2021-12-21 03:15:39 +08:00 committed by GitHub
parent 3af4a9619e
commit dfddd55cbf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 150 additions and 2 deletions

View File

@ -31,6 +31,10 @@
"desc": "PFC_WDOG_WITH_WRONG_DETECTION_TIME_HIGH_VALUE",
"eStr": "range"
},
"PFC_WDOG_WITH_INVALID_DETECTION_TIME": {
"desc": "PFC_WDOG_WITH_INVALID_DETECTION_TIME",
"eStr": ["detection_time must be greater than or equal to POLL_INTERVAL"]
},
"PFC_WDOG_WITH_WRONG_RESTORATION_TIME_LOW_VALUE": {
"desc": "PFC_WDOG_WITH_WRONG_RESTORATION_TIME_LOW_VALUE",
"eStr": "range"
@ -38,5 +42,9 @@
"PFC_WDOG_WITH_WRONG_RESTORATION_TIME_HIGH_VALUE": {
"desc": "PFC_WDOG_WITH_WRONG_RESTORATION_TIME_HIGH_VALUE",
"eStr": "range"
},
"PFC_WDOG_WITH_INVALID_RESTORATION_TIME": {
"desc": "PFC_WDOG_WITH_INVALID_RESTORATION_TIME",
"eStr": ["restoration_time must be greater than or equal to POLL_INTERVAL"]
}
}

View File

@ -105,36 +105,102 @@
}
},
"PFC_WDOG_WITH_CORRECT_POLL_INTERVAL_VALUE": {
"sonic-port:sonic-port": {
"sonic-port:PORT": {
"PORT_LIST": [
{
"admin_status": "up",
"alias": "eth0",
"description": "Ethernet4",
"lanes": "65",
"mtu": "9000",
"name": "Ethernet4",
"tpid": "0x8100",
"speed": "25000"
}
]
}
},
"sonic-pfcwd:sonic-pfcwd": {
"sonic-pfcwd:PFC_WD": {
"PFC_WD_LIST": [
{
"ifname": "GLOBAL",
"POLL_INTERVAL": 101
},
{
"ifname": "Ethernet4",
"action": "drop",
"detection_time": 101,
"restoration_time": 3000
}
]
}
}
},
"PFC_WDOG_WITH_WRONG_POLL_INTERVAL_LOW_VALUE": {
"sonic-port:sonic-port": {
"sonic-port:PORT": {
"PORT_LIST": [
{
"admin_status": "up",
"alias": "eth0",
"description": "Ethernet4",
"lanes": "65",
"mtu": "9000",
"name": "Ethernet4",
"tpid": "0x8100",
"speed": "25000"
}
]
}
},
"sonic-pfcwd:sonic-pfcwd": {
"sonic-pfcwd:PFC_WD": {
"PFC_WD_LIST": [
{
"ifname": "GLOBAL",
"POLL_INTERVAL":99
},
{
"ifname": "Ethernet4",
"action": "drop",
"detection_time": 100,
"restoration_time": 3000
}
]
}
}
},
"PFC_WDOG_WITH_WRONG_POLL_INTERVAL_HIGH_VALUE": {
"sonic-port:sonic-port": {
"sonic-port:PORT": {
"PORT_LIST": [
{
"admin_status": "up",
"alias": "eth0",
"description": "Ethernet4",
"lanes": "65",
"mtu": "9000",
"name": "Ethernet4",
"tpid": "0x8100",
"speed": "25000"
}
]
}
},
"sonic-pfcwd:sonic-pfcwd": {
"sonic-pfcwd:PFC_WD": {
"PFC_WD_LIST": [
{
"ifname": "GLOBAL",
"POLL_INTERVAL": 3001
},
{
"ifname": "Ethernet4",
"action": "drop",
"detection_time": 3001,
"restoration_time": 3001
}
]
}
@ -160,7 +226,7 @@
"PFC_WD_LIST": [
{
"ifname": "Ethernet4",
"action": "wrong",
"action": "drop",
"detection_time": 5001,
"restoration_time": 3000
}
@ -168,6 +234,40 @@
}
}
},
"PFC_WDOG_WITH_INVALID_DETECTION_TIME": {
"sonic-port:sonic-port": {
"sonic-port:PORT": {
"PORT_LIST": [
{
"admin_status": "up",
"alias": "eth0",
"description": "Ethernet4",
"lanes": "65",
"mtu": "9000",
"name": "Ethernet4",
"tpid": "0x8100",
"speed": "25000"
}
]
}
},
"sonic-pfcwd:sonic-pfcwd": {
"sonic-pfcwd:PFC_WD": {
"PFC_WD_LIST": [
{
"ifname": "GLOBAL",
"POLL_INTERVAL": 1000
},
{
"ifname": "Ethernet4",
"action": "drop",
"detection_time": 999,
"restoration_time": 1000
}
]
}
}
},
"PFC_WDOG_WITH_WRONG_RESTORATION_TIME_LOW_VALUE": {
"sonic-pfcwd:sonic-pfcwd": {
"sonic-pfcwd:PFC_WD": {
@ -188,12 +288,46 @@
"PFC_WD_LIST": [
{
"ifname": "Ethernet4",
"action": "wrong",
"action": "drop",
"detection_time": 60001,
"restoration_time": 3000
}
]
}
}
},
"PFC_WDOG_WITH_INVALID_RESTORATION_TIME": {
"sonic-port:sonic-port": {
"sonic-port:PORT": {
"PORT_LIST": [
{
"admin_status": "up",
"alias": "eth0",
"description": "Ethernet4",
"lanes": "65",
"mtu": "9000",
"name": "Ethernet4",
"tpid": "0x8100",
"speed": "25000"
}
]
}
},
"sonic-pfcwd:sonic-pfcwd": {
"sonic-pfcwd:PFC_WD": {
"PFC_WD_LIST": [
{
"ifname": "GLOBAL",
"POLL_INTERVAL": 1000
},
{
"ifname": "Ethernet4",
"action": "drop",
"detection_time": 1000,
"restoration_time": 999
}
]
}
}
}
}

View File

@ -51,6 +51,9 @@ module sonic-pfcwd {
}
leaf detection_time {
must "../ifname != 'GLOBAL'";
must "(not(boolean(current()/../../PFC_WD_LIST[ifname='GLOBAL'])) or (current() >= current()/../../PFC_WD_LIST[ifname='GLOBAL']/POLL_INTERVAL))" {
error-message "detection_time must be greater than or equal to POLL_INTERVAL";
}
type uint32 {
range 100..5000;
}
@ -59,6 +62,9 @@ module sonic-pfcwd {
}
leaf restoration_time {
must "../ifname != 'GLOBAL'";
must "(not(boolean(current()/../../PFC_WD_LIST[ifname='GLOBAL'])) or (current() >= current()/../../PFC_WD_LIST[ifname='GLOBAL']/POLL_INTERVAL))" {
error-message "restoration_time must be greater than or equal to POLL_INTERVAL";
}
type uint32 {
range 100..60000;
}