From 915f2834b0c455277e9a58090b889ba653e1bc88 Mon Sep 17 00:00:00 2001 From: arlakshm <55814491+arlakshm@users.noreply.github.com> Date: Tue, 24 May 2022 14:36:09 -0700 Subject: [PATCH] [voq][chassis]fix recirc port admin status (#10769) Signed-off-by: Arvindsrinivasan Lakshmi Narasimhan arlakshm@microsoft.com Why I did it resolves #10761. For VOQ chassis, the Recirc port, which was added for the Everflow, stays admin down after load minigraph. This PR add the fix to make the recirc port as admin up How I did it The PR adds a change in minigraph.py, if port has role as Rec make the the port as admin-status up. How to verify it UT Signed-off-by: Arvindsrinivasan Lakshmi Narasimhan --- src/sonic-config-engine/minigraph.py | 6 +++ src/sonic-config-engine/tests/test_cfggen.py | 42 ++++++++++++----- .../tests/voq-sample-port-config.ini | 45 +++++-------------- 3 files changed, 47 insertions(+), 46 deletions(-) diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index e950e79122..1446457eb5 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -1540,6 +1540,12 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw if inband_port in ports.keys(): ports[inband_port]['admin_status'] = 'up' + # bring up the recirc port for voq chassis + for port, port_attributes in ports.items(): + port_role = port_attributes.get('role', None) + if port_role == 'Rec': + ports[port]['admin_status'] = 'up' + results['PORT'] = ports results['CONSOLE_PORT'] = console_ports diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index 22ce5671ee..175aefff8d 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -896,18 +896,36 @@ class TestCfgGen(TestCase): output = self.run_script(argument) output_dict = utils.to_dict(output.strip()) self.assertDictEqual( - output_dict['Ethernet-IB0'], - {'lanes': '133', - 'alias': 'Recycle0', - 'description': 'Recycle0', - 'mtu': '9100', - 'tpid': '0x8100', - 'pfc_asym': 'off', - 'admin_status': 'up', - 'fec': 'rs', - 'speed': '100000' - } - ) + output_dict['Ethernet-IB0'], { + "lanes": "222", + "alias": "Recirc0/1", + "index": "52", + "role": "Inb", + "speed": "400000", + "description": "Recirc0/1", + "mtu": "9100", + "tpid": "0x8100", + "pfc_asym": "off", + "admin_status": "up" + }) + + def test_minigraph_voq_recirc_ports(self): + argument = "-m {} -p {} --var-json PORT".format(self.sample_graph_voq, self.voq_port_config) + output = self.run_script(argument) + output_dict = utils.to_dict(output.strip()) + self.assertDictEqual( + output_dict['Ethernet-Rec0'], { + "lanes": "221", + "alias": "Recirc0/0", + "index": "51", + "role": "Rec", + "speed": "400000", + "description": "Recirc0/0", + "mtu": "9100", + "tpid": "0x8100", + "pfc_asym": "off", + "admin_status": "up" + }) def test_minigraph_dhcp(self): argument = '-m "' + self.sample_graph_simple_case + '" -p "' + self.port_config + '" -v DHCP_RELAY' diff --git a/src/sonic-config-engine/tests/voq-sample-port-config.ini b/src/sonic-config-engine/tests/voq-sample-port-config.ini index 3910e29de0..a0ea4e4512 100644 --- a/src/sonic-config-engine/tests/voq-sample-port-config.ini +++ b/src/sonic-config-engine/tests/voq-sample-port-config.ini @@ -1,34 +1,11 @@ -# name lanes alias -Ethernet0 29,30,31,32 fortyGigE0/0 -Ethernet4 25,26,27,28 fortyGigE0/4 -Ethernet8 37,38,39,40 fortyGigE0/8 -Ethernet12 33,34,35,36 fortyGigE0/12 -Ethernet16 41,42,43,44 fortyGigE0/16 -Ethernet20 45,46,47,48 fortyGigE0/20 -Ethernet24 5,6,7,8 fortyGigE0/24 -Ethernet28 1,2,3,4 fortyGigE0/28 -Ethernet32 9,10,11,12 fortyGigE0/32 -Ethernet36 13,14,15,16 fortyGigE0/36 -Ethernet40 21,22,23,24 fortyGigE0/40 -Ethernet44 17,18,19,20 fortyGigE0/44 -Ethernet48 49,50,51,52 fortyGigE0/48 -Ethernet52 53,54,55,56 fortyGigE0/52 -Ethernet56 61,62,63,64 fortyGigE0/56 -Ethernet60 57,58,59,60 fortyGigE0/60 -Ethernet64 65,66,67,68 fortyGigE0/64 -Ethernet68 69,70,71,72 fortyGigE0/68 -Ethernet72 77,78,79,80 fortyGigE0/72 -Ethernet76 73,74,75,76 fortyGigE0/76 -Ethernet80 105,106,107,108 fortyGigE0/80 -Ethernet84 109,110,111,112 fortyGigE0/84 -Ethernet88 117,118,119,120 fortyGigE0/88 -Ethernet92 113,114,115,116 fortyGigE0/92 -Ethernet96 121,122,123,124 fortyGigE0/96 -Ethernet100 125,126,127,128 fortyGigE0/100 -Ethernet104 85,86,87,88 fortyGigE0/104 -Ethernet108 81,82,83,84 fortyGigE0/108 -Ethernet112 89,90,91,92 fortyGigE0/112 -Ethernet116 93,94,95,96 fortyGigE0/116 -Ethernet120 97,98,99,100 fortyGigE0/120 -Ethernet124 101,102,103,104 fortyGigE0/124 -Ethernet-IB0 133 Recycle0 +# name lanes alias index role speed +Ethernet0 6,7 Ethernet1/1 1 Ext 100000 +Ethernet4 2,3 Ethernet2/1 2 Ext 100000 +Ethernet12 0,1 Ethernet4/1 4 Ext 100000 +Ethernet8 4,5 Ethernet3/1 3 Ext 100000 +Ethernet16 14,15 Ethernet5/1 5 Ext 100000 +Ethernet20 10,11 Ethernet6/1 6 Ext 100000 +Ethernet24 12,13 Ethernet7/1 7 Ext 100000 +Ethernet28 8,9 Ethernet8/1 8 Ext 100000 +Ethernet-Rec0 221 Recirc0/0 51 Rec 400000 +Ethernet-IB0 222 Recirc0/1 52 Inb 400000 \ No newline at end of file