From 06f19ac600ad65562e242b32843d6d6a8cff9508 Mon Sep 17 00:00:00 2001 From: Yevhen Fastiuk Date: Mon, 12 Jun 2023 23:22:45 +0300 Subject: [PATCH] Report ready status to Sysmonitor daemon Signed-off-by: Yevhen Fastiuk --- sonic-xcvrd/xcvrd/xcvrd.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/sonic-xcvrd/xcvrd/xcvrd.py b/sonic-xcvrd/xcvrd/xcvrd.py index 60b9d8d09..cc4dea169 100644 --- a/sonic-xcvrd/xcvrd/xcvrd.py +++ b/sonic-xcvrd/xcvrd/xcvrd.py @@ -224,6 +224,37 @@ def strip_unit_and_beautify(value, unit): return str(value) +def notify_system_ready(fail_status=False, fail_reason='-'): + key = 'FEATURE|pmon' + statusvalue = {} + + try: + state_db = swsscommon.SonicV2Connector(host='127.0.0.1') + state_db.connect(state_db.STATE_DB) + except Exception: + helper_logger.log_error('Failed to connect STATE_DB to report ' + f'{SYSLOG_IDENTIFIER} ready status') + return + + if fail_status: + statusvalue['up_status'] = 'false' + statusvalue['fail_reason'] = fail_reason + else: + statusvalue['up_status'] = 'true' + + if getattr(notify_system_ready, 'reported', False): + helper_logger.log_debug( + f'{SYSLOG_IDENTIFIER} ready status already reported. Tried to ' + f'report status: {statusvalue}') + return + + state_db.delete(state_db.STATE_DB, key) + state_db.hmset(state_db.STATE_DB, key, statusvalue) + helper_logger.log_info(f'Report {SYSLOG_IDENTIFIER} ready status: ' + f'{statusvalue}') + notify_system_ready.reported = True + + def _wrapper_get_presence(physical_port): if platform_chassis is not None: try: @@ -2178,6 +2209,11 @@ def retry_eeprom_reading(self): # Update retry EEPROM set self.retry_eeprom_set -= retry_success_set + # If we were here and now retry_eeprom_set is empty, then we can state + # that all SFPs accessible + if not self.retry_eeprom_set: + notify_system_ready() + # # Daemon =======================================================================