From efbe1f429108bd08ef781160d184e269458f5488 Mon Sep 17 00:00:00 2001 From: "Marty Y. Lok" <76118573+mlok-nokia@users.noreply.github.com> Date: Wed, 3 Nov 2021 20:36:10 -0400 Subject: [PATCH] [chassis][supervisor][show][interfaces]show interfaces command warning on Supervisor card (#1771) What I did Fixed Azure/sonic-buildimage#8521 How I did it Before displaying the warning message, call device_info.is_supervisor() function to check if it is supervisor card, don't display the warning message. How to verify it Running the image on supervisor card Execute the CLI "show interfaces status" No warning should be seen. Signed-off-by: mlok --- tests/interfaces_test.py | 26 +++++++++++++++++++++++++- utilities_common/cli.py | 5 +++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/tests/interfaces_test.py b/tests/interfaces_test.py index 2146523576d2..493533430ba0 100644 --- a/tests/interfaces_test.py +++ b/tests/interfaces_test.py @@ -2,6 +2,7 @@ import traceback from click.testing import CliRunner +from unittest import mock import show.main as show @@ -292,7 +293,30 @@ def test_show_interfaces_portchannel_in_alias_mode(self): traceback.print_tb(result.exc_info[2]) assert result.exit_code == 0 assert result.output == show_interfaces_portchannel_in_alias_mode_output - + + @mock.patch('sonic_py_common.multi_asic.get_port_table', mock.MagicMock(return_value={})) + def test_supervisor_show_interfaces_alias_etp1_with_waring(self): + runner = CliRunner() + os.environ['SONIC_CLI_IFACE_MODE'] = "alias" + result = runner.invoke(show.cli.commands["interfaces"].commands["alias"], ["etp1"]) + os.environ['SONIC_CLI_IFACE_MODE'] = "default" + print(result.exit_code) + print(result.output) + assert result.exit_code != 0 + assert "Configuration database contains no ports" in result.output + + @mock.patch('sonic_py_common.multi_asic.get_port_table', mock.MagicMock(return_value={})) + @mock.patch('sonic_py_common.device_info.is_supervisor', mock.MagicMock(return_value=True)) + def test_supervisor_show_interfaces_alias_etp1_without_waring(self): + runner = CliRunner() + os.environ['SONIC_CLI_IFACE_MODE'] = "alias" + result = runner.invoke(show.cli.commands["interfaces"].commands["alias"], ["etp1"]) + os.environ['SONIC_CLI_IFACE_MODE'] = "default" + print(result.exit_code) + print(result.output) + assert result.exit_code != 0 + assert "Configuration database contains no ports" not in result.output + @classmethod def teardown_class(cls): print("TEARDOWN") diff --git a/utilities_common/cli.py b/utilities_common/cli.py index 72442878bebd..04129d1d8bd2 100644 --- a/utilities_common/cli.py +++ b/utilities_common/cli.py @@ -10,7 +10,7 @@ import netaddr from natsort import natsorted -from sonic_py_common import multi_asic +from sonic_py_common import multi_asic, device_info from utilities_common.db import Db from utilities_common.general import load_db_config @@ -131,7 +131,8 @@ def __init__(self, db=None): if not self.port_dict: - click.echo(message="Configuration database contains no ports") + if not device_info.is_supervisor(): + click.echo(message="Configuration database contains no ports") self.port_dict = {} for port_name in self.port_dict: