From 764d0b93dab854d28b1635be77d0492b6d07f822 Mon Sep 17 00:00:00 2001 From: Sudharsan Dhamal Gopalarathnam Date: Thu, 2 Mar 2023 14:45:22 -0800 Subject: [PATCH] [yang]Add missing fields in PortChannel yang model (#14045) Fixing issue https://github.com/sonic-net/sonic-buildimage/issues/13983 #### Why I did it Added Missing fields in sonic-portchannel yang model. "fallback" and "fast_rate" fields are present in configuration schema but not in yang model. This leads to traceback when yang is validated sonic_yang(3):All Keys are not parsed in PORTCHANNEL dict_keys(['PortChannel100']) sonic_yang(3):exceptionList:["'fast_rate'"] sonic_yang(3):Data Loading Failed:All Keys are not parsed in PORTCHANNEL dict_keys(['PortChannel100']) exceptionList:["'fast_rate'"] Data Loading Failed All Keys are not parsed in PORTCHANNEL dict_keys(['PortChannel100']) exceptionList:["'fast_rate'"] ConfigMgmt Class creation failed Failed to break out Port. Error: Failed to load the config. Error: ConfigMgmtDPB Class creation failed #### How I did it Updated yang model #### How to verify it Added tests to verify #### Link to config_db schema for YANG module changes Part of the PR --- src/sonic-yang-models/doc/Configuration.md | 4 ++- .../tests/files/sample_config_db.json | 4 ++- .../yang_model_tests/tests/portchannel.json | 10 ++++++ .../tests_config/portchannel.json | 34 ++++++++++++++++++- .../yang-models/sonic-portchannel.yang | 9 +++++ 5 files changed, 58 insertions(+), 3 deletions(-) diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md index bfc97850bbfa..6ce68ffdd5ef 100644 --- a/src/sonic-yang-models/doc/Configuration.md +++ b/src/sonic-yang-models/doc/Configuration.md @@ -1476,7 +1476,9 @@ name as object key and member list as attribute. "members": [ "Ethernet56" ], - "mtu": "9100" + "mtu": "9100", + "fallback": "false", + "fast_rate": "true" } } } diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json index e326ee07852b..94b37260f6aa 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -108,7 +108,9 @@ "admin_status": "up", "min_links": "2", "mtu": "9100", - "tpid": "0x8100" + "tpid": "0x8100", + "fast_rate": "false", + "fallback" : "true" } }, "PORTCHANNEL_INTERFACE": { diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/portchannel.json b/src/sonic-yang-models/tests/yang_model_tests/tests/portchannel.json index e69074bdfbf6..ae7a7dffd928 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/portchannel.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/portchannel.json @@ -19,6 +19,16 @@ "eStrKey" : "Pattern", "eStr": ["0x8100|0x9100|0x9200|0x88a8|0x88A8"] }, + "PORT_CHANNEL_INVALID_FALLBACK": { + "desc": "INCORRECT PORTCHANNEL FALLBACK IN PORT_CHANNEL TABLE.", + "eStrKey" : "Pattern", + "eStr": ["false|true|False|True"] + }, + "PORT_CHANNEL_INVALID_FAST_RATE": { + "desc": "INCORRECT PORTCHANNEL FAST_RATE IN PORT_CHANNEL TABLE.", + "eStrKey" : "Pattern", + "eStr": ["false|true|False|True"] + }, "PORTCHANNEL_INTERFACE_IP_ADDR_TEST": { "desc": "Configure IP address on PORTCHANNEL_INTERFACE table." }, diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json index ba0762e5ebc6..36f2484fa3bf 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json @@ -25,7 +25,9 @@ "mtu": "9100", "tpid": "0x8100", "lacp_key": "auto", - "name": "PortChannel0001" + "name": "PortChannel0001", + "fast_rate": "false", + "fallback" : "false" } ] } @@ -116,6 +118,36 @@ } } }, + "PORT_CHANNEL_INVALID_FALLBACK": { + "sonic-portchannel:sonic-portchannel": { + "sonic-portchannel:PORTCHANNEL": { + "PORTCHANNEL_LIST": [ + { + "admin_status": "up", + "mtu": "9100", + "tpid": "0x9100", + "name": "PortChannel0001", + "fallback": "enabled" + } + ] + } + } + }, + "PORT_CHANNEL_INVALID_FAST_RATE": { + "sonic-portchannel:sonic-portchannel": { + "sonic-portchannel:PORTCHANNEL": { + "PORTCHANNEL_LIST": [ + { + "admin_status": "up", + "mtu": "9100", + "tpid": "0x9100", + "name": "PortChannel0001", + "fast_rate": "TRUE" + } + ] + } + } + }, "PORTCHANNEL_INTERFACE_IP_ADDR_TEST": { "sonic-portchannel:sonic-portchannel": { "sonic-portchannel:PORTCHANNEL": { diff --git a/src/sonic-yang-models/yang-models/sonic-portchannel.yang b/src/sonic-yang-models/yang-models/sonic-portchannel.yang index 96872eeadb1d..717e3924c420 100644 --- a/src/sonic-yang-models/yang-models/sonic-portchannel.yang +++ b/src/sonic-yang-models/yang-models/sonic-portchannel.yang @@ -102,6 +102,15 @@ module sonic-portchannel { type stypes:tpid_type; } + leaf fallback { + description "Enable LACP fallback feature"; + type stypes:boolean_type; + } + leaf fast_rate { + description "Enable LACP fast rate"; + type stypes:boolean_type; + } + } /* end of list PORTCHANNEL_LIST */ } /* end of container PORTCHANNEL */