Skip to content

Commit 6621120

Browse files
authored
Fix sudo sfputil show error-status on a multiasic platform issue (sonic-net#2373)
Fixed "sudo sfputil show error-status" on a multiasic platform issue. Fixes sonic-net#8504
1 parent e8b1dcd commit 6621120

File tree

2 files changed

+36
-9
lines changed

2 files changed

+36
-9
lines changed

sfputil/main.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -1009,15 +1009,15 @@ def error_status(port, fetch_from_hardware):
10091009
if fetch_from_hardware:
10101010
output_table = fetch_error_status_from_platform_api(port)
10111011
else:
1012-
# Connect to STATE_DB
1013-
state_db = SonicV2Connector(host='127.0.0.1')
1014-
if state_db is not None:
1015-
state_db.connect(state_db.STATE_DB)
1016-
else:
1017-
click.echo("Failed to connect to STATE_DB")
1018-
return
1019-
1020-
output_table = fetch_error_status_from_state_db(port, state_db)
1012+
namespaces = multi_asic.get_front_end_namespaces()
1013+
for namespace in namespaces:
1014+
state_db = SonicV2Connector(use_unix_socket_path=False, namespace=namespace)
1015+
if state_db is not None:
1016+
state_db.connect(state_db.STATE_DB)
1017+
output_table.extend(fetch_error_status_from_state_db(port, state_db))
1018+
else:
1019+
click.echo("Failed to connect to STATE_DB")
1020+
return
10211021

10221022
click.echo(tabulate(output_table, table_header, tablefmt='simple'))
10231023

tests/sfputil_test.py

+27
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,33 @@ def test_show_presence(self, mock_chassis):
367367
"""
368368
assert result.output == expected_output
369369

370+
@patch('sfputil.main.is_port_type_rj45', MagicMock(return_value=False))
371+
@patch('sfputil.main.platform_sfputil', MagicMock(is_logical_port=MagicMock(return_value=1)))
372+
def test_show_error_status(self):
373+
runner = CliRunner()
374+
result = runner.invoke(sfputil.cli.commands['show'].commands['error-status'], [])
375+
assert result.exit_code == 0
376+
expected_output = """Port Error Status
377+
---------- -------------------------------
378+
Ethernet0 Blocking Error|High temperature
379+
Ethernet4 OK
380+
Ethernet8 Unplugged
381+
Ethernet12 Unknown state: 255
382+
Ethernet16 Unplugged
383+
Ethernet28 Unplugged
384+
Ethernet36 Unknown
385+
"""
386+
assert result.output == expected_output
387+
388+
@patch('sfputil.main.SonicV2Connector', MagicMock(return_value=None))
389+
def test_show_error_status_error_case(self):
390+
runner = CliRunner()
391+
result = runner.invoke(sfputil.cli.commands['show'].commands['error-status'], [])
392+
assert result.exit_code == 0
393+
expected_output = """Failed to connect to STATE_DB\n"""
394+
assert result.output == expected_output
395+
396+
370397
@patch('sfputil.main.platform_chassis')
371398
@patch('sfputil.main.logical_port_name_to_physical_port_list', MagicMock(return_value=[1]))
372399
@patch('sfputil.main.platform_sfputil', MagicMock(is_logical_port=MagicMock(return_value=1)))

0 commit comments

Comments
 (0)