Skip to content

Commit

Permalink
Add yang model definition for CHASSIS_MODULE table (sonic-net#14007)
Browse files Browse the repository at this point in the history
Why I did it
Add yang model definition for CHASSIS_MODULE define and implemented for sonic chassis. HLD for this configuration is included in https://github.com/sonic-net/SONiC/blob/master/doc/pmon/pmon-chassis-design.md#configuration

Fixes sonic-net#12640

How I did it
Added yang model definition, unit tests, sample config and documentation for the table

How to verify it
Validated config tree generation using "pyang -Vf tree -p /usr/local/share/yang/modules/ietf ./yang-models/sonic-voq-inband-interface.yang"

Built the below python-wheels to validate unit tests and other changes
target/python-wheels/bullseye/sonic_yang_mgmt-1.0-py3-none-any.whl
target/python-wheels/bullseye/sonic_yang_models-1.0-py3-none-any.whl
target/python-wheels/bullseye/sonic_config_engine-1.0-py3-none-any.whl
  • Loading branch information
tjchadaga committed Mar 20, 2023
1 parent 24c53a5 commit a61c54d
Show file tree
Hide file tree
Showing 6 changed files with 132 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/sonic-yang-models/doc/Configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Table of Contents
* [Buffer port ingress profile list](#buffer-port-ingress-profile-list)
* [Buffer port egress profile list](#buffer-port-egress-profile-list)
* [Cable length](#cable-length)
* [Chassis module](#chassis-module)
* [COPP_TABLE](#copp_table)
* [Console](#console)
* [CRM](#crm)
Expand Down Expand Up @@ -641,6 +642,25 @@ This kind of profiles will be handled by buffer manager and won't be applied to
```

### Chassis Module

CHASSIS_MODULE table holds the list and configuration of linecard and fabric modules in a SONiC chassis.
It currently allows user to administratively bring down a line-card or fabric-card

```
{
"CHASSIS_MODULE": {
"LINE-CARD0": {
"admin_status": "down"
},
"FABRIC-CARD1": {
"admin_status": "down"
}
}
}
```

### COPP_TABLE

```
Expand Down
1 change: 1 addition & 0 deletions src/sonic-yang-models/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ def run(self):
'./yang-models/sonic-buffer-profile.yang',
'./yang-models/sonic-buffer-queue.yang',
'./yang-models/sonic-cable-length.yang',
'./yang-models/sonic-chassis-module.yang',
'./yang-models/sonic-copp.yang',
'./yang-models/sonic-console.yang',
'./yang-models/sonic-crm.yang',
Expand Down
8 changes: 8 additions & 0 deletions src/sonic-yang-models/tests/files/sample_config_db.json
Original file line number Diff line number Diff line change
Expand Up @@ -1476,6 +1476,14 @@
"prefix1|1|10.0.0.0/8|8..16": {
}
},
"CHASSIS_MODULE": {
"LINE-CARD0": {
"admin_status": "down"
},
"FABRIC-CARD1": {
"admin_status": "down"
}
},
"COPP_GROUP": {
"queue1_group1": {
"queue": "1",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"CHASSIS_MODULE_WITH_DEFAULT_VALUES": {
"desc": "Load chassis module table with fields set to default values"
},
"CHASSIS_MODULE_WITH_LINECARD_ADMIN_DOWN": {
"desc": "Load chassis module table with admin_status set to down"
},
"CHASSIS_MODULE_WITH_LINECARD_ADMIN_INVALID_VALUE": {
"desc": "Load chassis module table with admin_status set to invalid value",
"eStrKey": "InvalidValue",
"eStr": ["admin_status"]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"CHASSIS_MODULE_WITH_DEFAULT_VALUES": {
"sonic-chassis-module:sonic-chassis-module": {
"sonic-chassis-module:CHASSIS_MODULE": {
"CHASSIS_MODULE_LIST": [
{
"name": "LINE-CARD0",
"admin_status": "up"
},
{
"name": "LINE-CARD1",
"admin_status": "up"
},
{
"name": "FABRIC-CARD0",
"admin_status": "up"
},
{
"name": "FABRIC-CARD1",
"admin_status": "up"
}
]
}
}
},
"CHASSIS_MODULE_WITH_LINECARD_ADMIN_DOWN": {
"sonic-chassis-module:sonic-chassis-module": {
"sonic-chassis-module:CHASSIS_MODULE": {
"CHASSIS_MODULE_LIST": [
{
"name": "LINE-CARD0",
"admin_status": "down"
},
{
"name": "FABRIC-CARD1",
"admin_status": "down"
}
]
}
}
},
"CHASSIS_MODULE_WITH_LINECARD_ADMIN_INVALID_VALUE": {
"sonic-chassis-module:sonic-chassis-module": {
"sonic-chassis-module:CHASSIS_MODULE": {
"CHASSIS_MODULE_LIST": [
{
"name": "LINE-CARD0",
"admin_status": "false"
}
]
}
}
}
}
36 changes: 36 additions & 0 deletions src/sonic-yang-models/yang-models/sonic-chassis-module.yang
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
module sonic-chassis-module {

yang-version 1.1;

namespace "http://github.com/sonic-net/sonic-chassis-module";
prefix chassis_mod;
import sonic-types {
prefix stypes;
}
description "CHASSIS_MODULE YANG to administratively set SONIC modules state";

revision 2023-02-24 {
description "Initial version";
}

container sonic-chassis-module {
container CHASSIS_MODULE {
description "List of modules in the chassis";
list CHASSIS_MODULE_LIST {
key "name";
leaf name {
type string {
pattern "LINE-CARD[0-9]+|FABRIC-CARD[0-9]+";
}
description "Line-card or fabric-card module name";
}

leaf admin_status {
type stypes:admin_status;
default up;
description "Administrative state of chassis module";
}
}
}
}
}

0 comments on commit a61c54d

Please sign in to comment.