Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ycabled] add capability to enable/disable telemetry (#279) #280

Merged
merged 7 commits into from
Aug 10, 2022
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ jobs:
inputs:
source: specific
project: build
pipeline: 1
pipeline: 142
artifact: sonic-buildimage.vs
runVersion: 'latestFromBranch'
runBranch: 'refs/heads/master'
runBranch: 'refs/heads/202012'
displayName: "Download artifacts from latest sonic-buildimage build"

- script: |
Expand Down
16 changes: 16 additions & 0 deletions sonic-ycabled/tests/test_y_cable_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -4746,3 +4746,19 @@ def test_get_mux_cable_static_info_without_presence(self):
assert(rc['nic_lane1_postcursor2'] == 'N/A')


@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)
54 changes: 39 additions & 15 deletions sonic-ycabled/ycable/ycable_utilities/y_cable_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,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
Expand Down Expand Up @@ -981,6 +982,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()
Expand Down Expand Up @@ -2521,6 +2527,36 @@ def handle_show_hwmode_state_cmd_arg_tbl_notification(fvp, xcvrd_show_hwmode_dir
helper_logger.log_warning("Error: Wrong input param for cli command show mux hwmode muxdirection logical port {}".format(port))
set_result_and_delete_port('state', 'unknown', xcvrd_show_hwmode_dir_cmd_sts_tbl[asic_index], xcvrd_show_hwmode_dir_rsp_tbl[asic_index], port)

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):
def __init__(self):
Expand Down Expand Up @@ -2863,22 +2899,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 <port>
Expand Down