diff --git a/sonic-ycabled/tests/test_y_cable_helper.py b/sonic-ycabled/tests/test_y_cable_helper.py index 283c71ae0..094b34cc7 100644 --- a/sonic-ycabled/tests/test_y_cable_helper.py +++ b/sonic-ycabled/tests/test_y_cable_helper.py @@ -5331,3 +5331,21 @@ def test_get_grpc_credentials_root(self, open): rc = get_grpc_credentials(type, kvp) assert(rc != None) + + + @patch('ycable.ycable_utilities.y_cable_helper.disable_telemetry') + def test_handle_ycable_enable_disable_tel_notification(self, patch): + + fvp_m = {"disable_telemetry": "True"} + rc = handle_ycable_enable_disable_tel_notification(fvp_m, "Y_CABLE") + assert(rc == None) + + def test_handle_ycable_enable_disable_tel_notification_probe(self): + + fvp_m = {"log_verbosity": "notice"} + rc = handle_ycable_enable_disable_tel_notification(fvp_m, "Y_CABLE") + assert(rc == None) + + fvp_m = {"log_verbosity": "debug"} + rc = handle_ycable_enable_disable_tel_notification(fvp_m, "Y_CABLE") + assert(rc == None) diff --git a/sonic-ycabled/ycable/ycable_utilities/y_cable_helper.py b/sonic-ycabled/ycable/ycable_utilities/y_cable_helper.py index e1db911d1..245932d23 100644 --- a/sonic-ycabled/ycable/ycable_utilities/y_cable_helper.py +++ b/sonic-ycabled/ycable/ycable_utilities/y_cable_helper.py @@ -90,6 +90,7 @@ y_cable_port_instances = {} y_cable_port_locks = {} +disable_telemetry = False Y_CABLE_STATUS_NO_TOR_ACTIVE = 0 Y_CABLE_STATUS_TORA_ACTIVE = 1 @@ -1505,6 +1506,11 @@ def delete_ports_status_for_y_cable(): def check_identifier_presence_and_update_mux_info_entry(state_db, mux_tbl, asic_index, logical_port_name): + global disable_telemetry + + if disable_telemetry == True: + return + # Get the namespaces in the platform config_db, port_tbl = {}, {} namespaces = multi_asic.get_front_end_namespaces() @@ -3323,6 +3329,35 @@ def handle_hw_mux_cable_table_grpc_notification(fvp, hw_mux_cable_tbl, asic_inde helper_logger.log_info("Got a change event on port {} of table {} that does not contain state".format( port, swsscommon.APP_HW_MUX_CABLE_TABLE_NAME)) +def handle_ycable_enable_disable_tel_notification(fvp_m, key): + + global disable_telemetry + + if fvp_m: + + if key != "Y_CABLE": + return + + fvp_dict = dict(fvp_m) + if "log_verbosity" in fvp_dict: + # check if xcvrd got a probe command + probe_identifier = fvp_dict["log_verbosity"] + + if probe_identifier == "debug": + helper_logger.set_min_log_priority_debug() + + elif probe_identifier == "notice": + helper_logger.set_min_log_priority_notice() + if "disable_telemetry" in fvp_dict: + # check if xcvrd got a probe command + enable = fvp_dict["disable_telemetry"] + + helper_logger.log_notice("Y_CABLE_DEBUG: trying to enable/disable telemetry flag to {}".format(enable)) + if enable == "True": + disable_telemetry = True + + elif enable == "False": + disable_telemetry = False # Thread wrapper class to update y_cable status periodically class YCableTableUpdateTask(object): @@ -3727,22 +3762,10 @@ def task_cli_worker(self): if not key: break - helper_logger.log_notice("Y_CABLE_DEBUG: trying to enable/disable debug logs") if fvp_m: - - if key == "Y_CABLE": - continue - - fvp_dict = dict(fvp_m) - if "log_verbosity" in fvp_dict: - # check if xcvrd got a probe command - probe_identifier = fvp_dict["log_verbosity"] - - if probe_identifier == "debug": - helper_logger.set_min_log_priority_debug() - - elif probe_identifier == "notice": - helper_logger.set_min_log_priority_notice() + helper_logger.log_notice("Y_CABLE_DEBUG: trying to enable/disable debug logs") + handle_ycable_enable_disable_tel_notification(fvp_m, 'Y_CABLE') + break while True: # show muxcable hwmode state