Skip to content

Commit

Permalink
Update xcvrd to use new STATE_DB FAST_REBOOT entry (#335)
Browse files Browse the repository at this point in the history
Update xcvrd to check if fast-reboot is enabled according to the new value for FAST_REBOOT entry in STATE_DB.

This PR should come along with the following PRs:
sonic-net/sonic-utilities#2621
sonic-net/sonic-buildimage#13484
sonic-net/sonic-swss-common#742
sonic-net/sonic-sairedis#1196

This set of PRs solves the issue sonic-net/sonic-buildimage#13251

Description
Update xcvrd to check the updated form of fast-reboot entry in state-db as it was changed.

Motivation and Context
Introducing fast-reboot finalizer on top of warmboot-finalizer, fast-reboot entry in STATE_DB is now changed from "1"/None to "enable"/"disable".

How Has This Been Tested?
Existing tests, and fast-reboot.
  • Loading branch information
arfeigin authored and StormLiangMS committed Apr 11, 2023
1 parent 6391de0 commit 338d161
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 14 deletions.
9 changes: 6 additions & 3 deletions sonic-xcvrd/tests/test_xcvrd.py
Original file line number Diff line number Diff line change
Expand Up @@ -1422,10 +1422,13 @@ def test_get_media_val_str(self):
@patch('sonic_py_common.device_info.get_paths_to_platform_and_hwsku_dirs', MagicMock(return_value=('/tmp', None)))
@patch('swsscommon.swsscommon.WarmStart', MagicMock())
@patch('xcvrd.xcvrd.DaemonXcvrd.wait_for_port_config_done', MagicMock())
def test_DaemonXcvrd_init_deinit(self):
def test_DaemonXcvrd_init_deinit_fastboot_enabled(self):
xcvrd = DaemonXcvrd(SYSLOG_IDENTIFIER)
xcvrd.init()
xcvrd.deinit()
with patch("subprocess.check_output") as mock_run:
mock_run.return_value = "true"

xcvrd.init()
xcvrd.deinit()


def wait_until(total_wait_time, interval, call_back, *args, **kwargs):
Expand Down
13 changes: 2 additions & 11 deletions sonic-xcvrd/xcvrd/xcvrd.py
Original file line number Diff line number Diff line change
Expand Up @@ -921,17 +921,8 @@ def init_port_sfp_status_tbl(port_mapping, xcvr_table_helper, stop_event=threadi
update_port_transceiver_status_table_sw(logical_port_name, xcvr_table_helper.get_status_tbl(asic_index), sfp_status_helper.SFP_STATUS_INSERTED)

def is_fast_reboot_enabled():
fastboot_enabled = False
state_db_host = daemon_base.db_connect("STATE_DB")
fastboot_tbl = swsscommon.Table(state_db_host, 'FAST_REBOOT')
keys = fastboot_tbl.getKeys()

if "system" in keys:
output = subprocess.check_output(['sonic-db-cli', 'STATE_DB', 'get', "FAST_REBOOT|system"], universal_newlines=True)
if "1" in output:
fastboot_enabled = True

return fastboot_enabled
fastboot_enabled = subprocess.check_output('sonic-db-cli STATE_DB hget "FAST_RESTART_ENABLE_TABLE|system" enable', shell=True, universal_newlines=True)
return "true" in fastboot_enabled

#
# Helper classes ===============================================================
Expand Down

0 comments on commit 338d161

Please sign in to comment.