diff --git a/src/sonic-yang-mgmt/sonic-cfg-help b/src/sonic-yang-mgmt/sonic-cfg-help index 4c14cebc44..bd842b3c4d 100755 --- a/src/sonic-yang-mgmt/sonic-cfg-help +++ b/src/sonic-yang-mgmt/sonic-cfg-help @@ -54,7 +54,14 @@ class SonicCfgDescriber: self.print_field_desc(table['list'], field) print() elif table.get('container') is not None: - self.print_field_desc(table.get('container'), field) + if isinstance(table['container'], dict): + print("key - " + table['container'].get('@name')) + self.print_field_desc(table.get('container'), field) + elif isinstance(table['container'], list): + for c in table['container']: + print("key - " + c.get('@name')) + self.print_field_desc(c, field) + print() def get_referenced_table_field(self, ref): diff --git a/src/sonic-yang-mgmt/tests/test_cfghelp.py b/src/sonic-yang-mgmt/tests/test_cfghelp.py index 2eebebe7be..70b3a1edb1 100644 --- a/src/sonic-yang-mgmt/tests/test_cfghelp.py +++ b/src/sonic-yang-mgmt/tests/test_cfghelp.py @@ -25,6 +25,7 @@ techsupport_table_output="""\ AUTO_TECHSUPPORT Description: AUTO_TECHSUPPORT part of config_db.json +key - GLOBAL +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | Field | Description | Mandatory | Default | Reference | +=========================+====================================================+=============+===========+=============+ @@ -62,6 +63,7 @@ techsupport_table_field_output="""\ AUTO_TECHSUPPORT Description: AUTO_TECHSUPPORT part of config_db.json +key - GLOBAL +---------+--------------------------------------------------+-------------+-----------+-------------+ | Field | Description | Mandatory | Default | Reference | +=========+==================================================+=============+===========+=============+ @@ -118,6 +120,25 @@ key - ACL_TABLE_NAME:RULE_NAME """ +snmp_table_output="""\ + +SNMP + +key - CONTACT ++---------+----------------------+-------------+-----------+-------------+ +| Field | Description | Mandatory | Default | Reference | ++=========+======================+=============+===========+=============+ +| Contact | SNMP System Contact. | | | | ++---------+----------------------+-------------+-----------+-------------+ +key - LOCATION ++----------+-----------------------+-------------+-----------+-------------+ +| Field | Description | Mandatory | Default | Reference | ++==========+=======================+=============+===========+=============+ +| Location | SNMP System Location. | | | | ++----------+-----------------------+-------------+-----------+-------------+ + +""" + class TestCfgHelp(TestCase): def setUp(self): @@ -167,3 +188,8 @@ class TestCfgHelp(TestCase): argument = ['-t', 'ACL_RULE', '-f', 'ICMP_TYPE'] output = self.run_script(argument) self.assertEqual(output, acl_rule_table_field_output) + + def test_nested_container(self): + argument = ['-t', 'SNMP'] + output = self.run_script(argument) + self.assertEqual(output, snmp_table_output)