[yang]Fixing sonic-cfg-help to handle nested container (#17260)
Why I did it Fixing sonic-cfg-help to handle nested container scenario. In case of nested container, the inner container name acts as key for the table. For e.g. "AUTO_TECHSUPPORT": { "GLOBAL": { } } Previous output AUTO_TECHSUPPORT Description: AUTO_TECHSUPPORT part of config_db.json +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | Field | Description | Mandatory | Default | Reference | +=========================+====================================================+=============+===========+=============+ | state | Knob to make techsupport invocation event-driven | | | | | | based on core-dump generation | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | rate_limit_interval | Minimum time in seconds between two successive | | | | | | techsupport invocations. Configure 0 to explicitly | | | | | | disable | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | max_techsupport_limit | Max Limit in percentage for the cummulative size | | | | | | of ts dumps. No cleanup is performed if the value | | | | | | isn't configured or is 0.0 | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | max_core_limit | Max Limit in percentage for the cummulative size | | | | | | of core dumps. No cleanup is performed if the | | | | | | value isn't congiured or is 0.0 | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | available_mem_threshold | Memory threshold; 0 to disable techsupport | | 10.0 | | | | invocation on memory usage threshold crossing | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | min_available_mem | Minimum Free memory (in MB) that should be | | 200 | | | | available for the techsupport execution to start | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | since | Only collect the logs & core-dumps generated since | | | | | | the time provided. A default value of '2 days ago' | | | | | | is used if this value is not set explicitly or a | | | | | | non-valid string is provided | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ New output AUTO_TECHSUPPORT Description: AUTO_TECHSUPPORT part of config_db.json key - GLOBAL +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | Field | Description | Mandatory | Default | Reference | +=========================+====================================================+=============+===========+=============+ | state | Knob to make techsupport invocation event-driven | | | | | | based on core-dump generation | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | rate_limit_interval | Minimum time in seconds between two successive | | | | | | techsupport invocations. Configure 0 to explicitly | | | | | | disable | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | max_techsupport_limit | Max Limit in percentage for the cummulative size | | | | | | of ts dumps. No cleanup is performed if the value | | | | | | isn't configured or is 0.0 | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | max_core_limit | Max Limit in percentage for the cummulative size | | | | | | of core dumps. No cleanup is performed if the | | | | | | value isn't congiured or is 0.0 | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | available_mem_threshold | Memory threshold; 0 to disable techsupport | | 10.0 | | | | invocation on memory usage threshold crossing | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | min_available_mem | Minimum Free memory (in MB) that should be | | 200 | | | | available for the techsupport execution to start | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ | since | Only collect the logs & core-dumps generated since | | | | | | the time provided. A default value of '2 days ago' | | | | | | is used if this value is not set explicitly or a | | | | | | non-valid string is provided | | | | +-------------------------+----------------------------------------------------+-------------+-----------+-------------+ Work item tracking Microsoft ADO (number only): How I did it Fixing sonic-cfg-help tool to handle nested container How to verify it Added UT to verify it.
This commit is contained in:
parent
2f3b48fe64
commit
8c1bd85830
@ -54,7 +54,14 @@ class SonicCfgDescriber:
|
|||||||
self.print_field_desc(table['list'], field)
|
self.print_field_desc(table['list'], field)
|
||||||
print()
|
print()
|
||||||
elif table.get('container') is not None:
|
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()
|
print()
|
||||||
|
|
||||||
def get_referenced_table_field(self, ref):
|
def get_referenced_table_field(self, ref):
|
||||||
|
@ -25,6 +25,7 @@ techsupport_table_output="""\
|
|||||||
AUTO_TECHSUPPORT
|
AUTO_TECHSUPPORT
|
||||||
Description: AUTO_TECHSUPPORT part of config_db.json
|
Description: AUTO_TECHSUPPORT part of config_db.json
|
||||||
|
|
||||||
|
key - GLOBAL
|
||||||
+-------------------------+----------------------------------------------------+-------------+-----------+-------------+
|
+-------------------------+----------------------------------------------------+-------------+-----------+-------------+
|
||||||
| Field | Description | Mandatory | Default | Reference |
|
| Field | Description | Mandatory | Default | Reference |
|
||||||
+=========================+====================================================+=============+===========+=============+
|
+=========================+====================================================+=============+===========+=============+
|
||||||
@ -62,6 +63,7 @@ techsupport_table_field_output="""\
|
|||||||
AUTO_TECHSUPPORT
|
AUTO_TECHSUPPORT
|
||||||
Description: AUTO_TECHSUPPORT part of config_db.json
|
Description: AUTO_TECHSUPPORT part of config_db.json
|
||||||
|
|
||||||
|
key - GLOBAL
|
||||||
+---------+--------------------------------------------------+-------------+-----------+-------------+
|
+---------+--------------------------------------------------+-------------+-----------+-------------+
|
||||||
| Field | Description | Mandatory | Default | Reference |
|
| 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):
|
class TestCfgHelp(TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@ -167,3 +188,8 @@ class TestCfgHelp(TestCase):
|
|||||||
argument = ['-t', 'ACL_RULE', '-f', 'ICMP_TYPE']
|
argument = ['-t', 'ACL_RULE', '-f', 'ICMP_TYPE']
|
||||||
output = self.run_script(argument)
|
output = self.run_script(argument)
|
||||||
self.assertEqual(output, acl_rule_table_field_output)
|
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)
|
||||||
|
Reference in New Issue
Block a user