Skip to content

Commit

Permalink
fix LGTM
Browse files Browse the repository at this point in the history
Signed-off-by: vaibhav-dahiya <vdahiya@microsoft.com>
  • Loading branch information
vdahiya12 committed Jul 29, 2021
1 parent d29e556 commit 88caade
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 43 deletions.
57 changes: 35 additions & 22 deletions config/muxcable.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import json
import os
import sys
import time

import click
import re
Expand Down Expand Up @@ -54,14 +55,18 @@ def delete_all_keys_in_db_table(db_type, table_name):
table[asic_id]._del(key)


def update_and_get_response_for_xcvr_cmd(cmd_name, rsp_name, exp_rsp, cmd_table_name, rsp_table_name, port, arg=None):
def update_and_get_response_for_xcvr_cmd(cmd_name, rsp_name, exp_rsp, cmd_table_name, rsp_table_name, port, cmd_timeout_secs, arg=None):

res_dict = {}
state_db, appl_db = {}, {}
firmware_rsp_tbl, firmware_rsp_tbl_keys = {}, {}
firmware_rsp_sub_tbl = {}
firmware_cmd_tbl = {}

CMD_TIMEOUT_SECS = cmd_timeout_secs

time_start = time.time()

sel = swsscommon.Select()
namespaces = multi_asic.get_front_end_namespaces()
for namespace in namespaces:
Expand Down Expand Up @@ -116,6 +121,11 @@ def update_and_get_response_for_xcvr_cmd(cmd_name, rsp_name, exp_rsp, cmd_table_

(state, selectableObj) = sel.select(SELECT_TIMEOUT)

time_now = time.time()
time_diff = time_now - time_start
if time_diff >= CMD_TIMEOUT_SECS:
return res_dict

if state == swsscommon.Select.TIMEOUT:
# Do not flood log when select times out
continue
Expand Down Expand Up @@ -154,6 +164,7 @@ def update_and_get_response_for_xcvr_cmd(cmd_name, rsp_name, exp_rsp, cmd_table_
# check if xcvrd got a probe command
result = fvp_dict[rsp_name]


if result == exp_rsp:
res_dict[1] = result
res_dict[0] = 0
Expand Down Expand Up @@ -422,7 +433,7 @@ def state(db, state, port):
res_dict = {}
res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd("config","result", "True", "XCVRD_CONFIG_HWMODE_DIR_CMD", "XCVRD_CONFIG_HWMODE_DIR_RSP", port, res_dict, state)
res_dict = update_and_get_response_for_xcvr_cmd("config","result", "True", "XCVRD_CONFIG_HWMODE_DIR_CMD", "XCVRD_CONFIG_HWMODE_DIR_RSP", port, 1, state)

rc = res_dict[0]
if rc == 0:
Expand Down Expand Up @@ -465,7 +476,7 @@ def state(db, state, port):
res_dict [0] = CONFIG_FAIL
res_dict [1] = 'unknown'

res_dict = update_and_get_response_for_xcvr_cmd("config","result", "True", "XCVRD_CONFIG_HWMODE_DIR_CMD", "XCVRD_CONFIG_HWMODE_DIR_RSP", port, res_dict, state)
res_dict = update_and_get_response_for_xcvr_cmd("config","result", "True", "XCVRD_CONFIG_HWMODE_DIR_CMD", "XCVRD_CONFIG_HWMODE_DIR_RSP", port, 1, state)

rc = res_dict[0]

Expand Down Expand Up @@ -497,7 +508,7 @@ def setswitchmode(db, state, port):
res_dict = {}
res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd("config", "result", "True", "XCVRD_CONFIG_HWMODE_SWMODE_CMD", "XCVRD_CONFIG_HWMODE_SWMODE_RSP", port, res_dicti, state)
res_dict = update_and_get_response_for_xcvr_cmd("config", "result", "True", "XCVRD_CONFIG_HWMODE_SWMODE_CMD", "XCVRD_CONFIG_HWMODE_SWMODE_RSP", port, 1, state)


rc = res_dict[0]
Expand Down Expand Up @@ -540,7 +551,7 @@ def setswitchmode(db, state, port):
res_dict = {}
res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd("config", "result", "True", "XCVRD_CONFIG_HWMODE_SWMODE_CMD", "XCVRD_CONFIG_HWMODE_SWMODE_RSP", port, res_dicti, state)
res_dict = update_and_get_response_for_xcvr_cmd("config", "result", "True", "XCVRD_CONFIG_HWMODE_SWMODE_CMD", "XCVRD_CONFIG_HWMODE_SWMODE_RSP", port, 1, state)

rc = res_dict[0]

Expand All @@ -566,7 +577,7 @@ def firmware():
def download(db, fwfile, port):
"""Config muxcable firmware download"""

#port = platform_sfputil_helper.get_interface_alias(port, db)
port = platform_sfputil_helper.get_interface_alias(port, db)

delete_all_keys_in_db_table("STATE_DB", "XCVRD_DOWN_FW_RSP")
delete_all_keys_in_db_table("APPL_DB", "XCVRD_DOWN_FW_CMD")
Expand All @@ -576,7 +587,7 @@ def download(db, fwfile, port):
res_dict = {}
res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd("download_firmware", "status", "0", "XCVRD_DOWN_FW_CMD", "XCVRD_DOWN_FW_RSP", port, fwfile)
res_dict = update_and_get_response_for_xcvr_cmd("download_firmware", "status", "0", "XCVRD_DOWN_FW_CMD", "XCVRD_DOWN_FW_RSP", port, 1000, fwfile)

rc = res_dict[0]
if rc == 0:
Expand Down Expand Up @@ -619,7 +630,7 @@ def download(db, fwfile, port):

res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd("download_firmware", "status", "0", "XCVRD_DOWN_FW_CMD", "XCVRD_DOWN_FW_RSP", port, fwfile)
res_dict = update_and_get_response_for_xcvr_cmd("download_firmware", "status", "0", "XCVRD_DOWN_FW_CMD", "XCVRD_DOWN_FW_RSP", port, 1000, fwfile)

rc = res_dict[0]

Expand All @@ -639,7 +650,7 @@ def download(db, fwfile, port):
def activate(db, port, fwfile):
"""Config muxcable firmware activate"""

#port = platform_sfputil_helper.get_interface_alias(port, db)
port = platform_sfputil_helper.get_interface_alias(port, db)

delete_all_keys_in_db_table("STATE_DB", "XCVRD_ACTI_FW_RSP")
delete_all_keys_in_db_table("APPL_DB", "XCVRD_ACTI_FW_CMD")
Expand All @@ -649,13 +660,13 @@ def activate(db, port, fwfile):
res_dict = {}
res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd("activate_firmware", "status", "0", "XCVRD_ACTI_FW_CMD", "XCVRD_ACTI_FW_RSP", port, fwfile)
res_dict = update_and_get_response_for_xcvr_cmd("activate_firmware", "status", "0", "XCVRD_ACTI_FW_CMD", "XCVRD_ACTI_FW_RSP", port, 60, fwfile)

rc = res_dict[0]
if rc == 0:
click.echo("Success in activating firmware port {} {}".format(port, fwfile))
click.echo("Success in activate firmware port {} fwfile {}".format(port, fwfile))
else:
click.echo("ERR: Unable to activating firmware port {} {}".format(port, fwfile))
click.echo("ERR: Unable to activate firmware port {} fwfile {}".format(port, fwfile))
sys.exit(CONFIG_FAIL)

elif port == "all":
Expand Down Expand Up @@ -691,14 +702,14 @@ def activate(db, port, fwfile):

res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd("activate_firmware", "status", "0", "XCVRD_ACTI_FW_CMD", "XCVRD_ACTI_FW_RSP", port, fwfile)
res_dict = update_and_get_response_for_xcvr_cmd("activate_firmware", "status", "0", "XCVRD_ACTI_FW_CMD", "XCVRD_ACTI_FW_RSP", port, 60, fwfile)

rc = res_dict[1]
rc = res_dict[0]

if rc == 0:
click.echo("Success in activate firmware port {} {}".format(port, fwfile))
click.echo("Success in activate firmware port {} fwfile {}".format(port, fwfile))
else:
click.echo("ERR: Unable to activate firmware port {} {}".format(port, fwfile))
click.echo("ERR: Unable to activate firmware port {} fwfile {}".format(port, fwfile))
rc_exit = CONFIG_FAIL

sys.exit(rc_exit)
Expand All @@ -711,6 +722,8 @@ def activate(db, port, fwfile):
def rollback(db, port, fwfile):
"""Config muxcable firmware rollback"""

port = platform_sfputil_helper.get_interface_alias(port, db)

delete_all_keys_in_db_table("STATE_DB", "XCVRD_ROLL_FW_RSP")
delete_all_keys_in_db_table("APPL_DB", "XCVRD_ROLL_FW_CMD")

Expand All @@ -719,13 +732,13 @@ def rollback(db, port, fwfile):
res_dict = {}
res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd("rollback_firmware", "status", "0", "XCVRD_ROLL_FW_CMD", "XCVRD_ROLL_FW_RSP", port, fwfile)
res_dict = update_and_get_response_for_xcvr_cmd("rollback_firmware", "status", "0", "XCVRD_ROLL_FW_CMD", "XCVRD_ROLL_FW_RSP", port, 60, fwfile)

rc = res_dict[0]
if rc == 0:
click.echo("Success in rollback firmware port {} {}".format(port, fwfile))
click.echo("Success in rollback firmware port {} fwfile {}".format(port, fwfile))
else:
click.echo("ERR: Unable to rollback firmware port {} {}".format(port, fwfile))
click.echo("ERR: Unable to rollback firmware port {} fwfile {}".format(port, fwfile))
sys.exit(CONFIG_FAIL)

elif port == "all":
Expand Down Expand Up @@ -761,14 +774,14 @@ def rollback(db, port, fwfile):

res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd("rollback_firmware", "status", "0", "XCVRD_ROLL_FW_CMD", "XCVRD_ROLL_FW_RSP", port, fwfile)
res_dict = update_and_get_response_for_xcvr_cmd("rollback_firmware", "status", "0", "XCVRD_ROLL_FW_CMD", "XCVRD_ROLL_FW_RSP", port, 60, fwfile)

rc = res_dict[0]

if rc == 0:
click.echo("Success in rollback firmware port {} {}".format(port, fwfile))
click.echo("Success in rollback firmware port {} fwfile {}".format(port, fwfile))
else:
click.echo("ERR: Unable to rollback firmware port {} {}".format(port, fwfile))
click.echo("ERR: Unable to rollback firmware port {} fwfile {}".format(port, fwfile))
rc_exit = CONFIG_FAIL

sys.exit(rc_exit)
61 changes: 40 additions & 21 deletions show/muxcable.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,11 @@
VENDOR_NAME = "Credo"
VENDOR_MODEL_REGEX = re.compile(r"CAC\w{3}321P2P\w{2}MS")


def db_connect(db_name, namespace=EMPTY_NAMESPACE):
return swsscommon.DBConnector(db_name, REDIS_TIMEOUT_MSECS, True, namespace)


def delete_all_keys_in_db_table(db_type, table_name):

redis_db = {}
Expand All @@ -50,6 +52,7 @@ def delete_all_keys_in_db_table(db_type, table_name):
for key in table_keys[asic_id]:
table[asic_id]._del(key)


def get_response_for_version(port, mux_info_dict):
state_db = {}
xcvrd_show_fw_res_tbl = {}
Expand All @@ -60,7 +63,6 @@ def get_response_for_version(port, mux_info_dict):
state_db[asic_id] = db_connect("STATE_DB", namespace)
xcvrd_show_fw_res_tbl[asic_id] = swsscommon.Table(state_db[asic_id], "XCVRD_SHOW_FW_RES")


logical_port_list = platform_sfputil_helper.get_logical_list()
if port not in logical_port_list:
click.echo("ERR: This is not a valid port, valid ports ({})".format(", ".join(logical_port_list)))
Expand All @@ -82,7 +84,6 @@ def get_response_for_version(port, mux_info_dict):
res_dict[1] = rc
return mux_info_dict


(status, fvp) = xcvrd_show_fw_res_tbl[asic_index].get(port)
res_dir = dict(fvp)
mux_info_dict["version_nic_active"] = res_dir.get("version_nic_active", None)
Expand All @@ -97,7 +98,8 @@ def get_response_for_version(port, mux_info_dict):

return mux_info_dict

def update_and_get_response_for_xcvr_cmd(cmd_name, rsp_name, exp_rsp, cmd_table_name, rsp_table_name, port, arg=None):

def update_and_get_response_for_xcvr_cmd(cmd_name, rsp_name, exp_rsp, cmd_table_name, rsp_table_name, port, cmd_timeout_secs, arg=None):

res_dict = {}
state_db, appl_db = {}, {}
Expand All @@ -106,6 +108,10 @@ def update_and_get_response_for_xcvr_cmd(cmd_name, rsp_name, exp_rsp, cmd_table_
firmware_cmd_tbl = {}
firmware_res_tbl = {}

CMD_TIMEOUT_SECS = cmd_timeout_secs

time_start = time.time()

sel = swsscommon.Select()
namespaces = multi_asic.get_front_end_namespaces()
for namespace in namespaces:
Expand Down Expand Up @@ -160,6 +166,11 @@ def update_and_get_response_for_xcvr_cmd(cmd_name, rsp_name, exp_rsp, cmd_table_

(state, selectableObj) = sel.select(SELECT_TIMEOUT)

time_now = time.time()
time_diff = time_now - time_start
if time_diff >= CMD_TIMEOUT_SECS:
return res_dict

if state == swsscommon.Select.TIMEOUT:
# Do not flood log when select times out
continue
Expand Down Expand Up @@ -218,6 +229,7 @@ def update_and_get_response_for_xcvr_cmd(cmd_name, rsp_name, exp_rsp, cmd_table_
# 'muxcable' command ("show muxcable")
#


@click.group(name='muxcable', cls=clicommon.AliasedGroup)
def muxcable():
"""SONiC command line - 'show muxcable' command"""
Expand Down Expand Up @@ -643,17 +655,18 @@ def hwmode():
def muxdirection(db, port):
"""Shows the current direction of the muxcable {active/standy}"""

#port = platform_sfputil_helper.get_interface_alias(port, db)
port = platform_sfputil_helper.get_interface_alias(port, db)

delete_all_keys_in_db_table("APPL_DB", "XCVRD_SHOW_HWMODE_DIR_CMD")
delete_all_keys_in_db_table("STATE_DB", "XCVRD_SHOW_HWMODE_DIR_RSP")

if port is not None:

res_dict = {}
res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd("state", "state", "True", "XCVRD_SHOW_HWMODE_DIR_CMD", "XCVRD_SHOW_HWMODE_DIR_RSP", port, "probe")
res_dict[0] = CONFIG_FAIL
res_dict[1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd(
"state", "state", "True", "XCVRD_SHOW_HWMODE_DIR_CMD", "XCVRD_SHOW_HWMODE_DIR_RSP", port, 1, "probe")

body = []
temp_list = []
Expand Down Expand Up @@ -698,9 +711,10 @@ def muxdirection(db, port):

temp_list = []
res_dict = {}
res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd("state", "state", "True", "XCVRD_SHOW_HWMODE_DIR_CMD", "XCVRD_SHOW_HWMODE_DIR_RSP", port, "probe")
res_dict[0] = CONFIG_FAIL
res_dict[1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd(
"state", "state", "True", "XCVRD_SHOW_HWMODE_DIR_CMD", "XCVRD_SHOW_HWMODE_DIR_RSP", port, 1, "probe")
temp_list.append(port)
temp_list.append(res_dict[1])
body.append(temp_list)
Expand All @@ -714,22 +728,24 @@ def muxdirection(db, port):
if rc_exit == False:
sys.exit(EXIT_FAIL)


@hwmode.command()
@click.argument('port', metavar='<port_name>', required=False, default=None)
@clicommon.pass_db
def switchmode(db, port):
"""Shows the current switching mode of the muxcable {auto/manual}"""

#port = platform_sfputil_helper.get_interface_alias(port, db)
port = platform_sfputil_helper.get_interface_alias(port, db)
delete_all_keys_in_db_table("APPL_DB", "XCVRD_SHOW_HWMODE_SWMODE_CMD")
delete_all_keys_in_db_table("STATE_DB", "XCVRD_SHOW_HWMODE_SWMODE_RSP")

if port is not None:

res_dict = {}
res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd("state","state", "True", "XCVRD_SHOW_HWMODE_SWMODE_CMD", "XCVRD_SHOW_HWMODE_SWMODE_RSP", port, "probe")
res_dict[0] = CONFIG_FAIL
res_dict[1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd(
"state", "state", "True", "XCVRD_SHOW_HWMODE_SWMODE_CMD", "XCVRD_SHOW_HWMODE_SWMODE_RSP", port, 1, "probe")

body = []
temp_list = []
Expand Down Expand Up @@ -774,9 +790,10 @@ def switchmode(db, port):

temp_list = []
res_dict = {}
res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd("state","state", "True", "XCVRD_SHOW_HWMODE_SWMODE_CMD", "XCVRD_SHOW_HWMODE_SWMODE_RSP", port, "probe")
res_dict[0] = CONFIG_FAIL
res_dict[1] = "unknown"
res_dict = update_and_get_response_for_xcvr_cmd(
"state", "state", "True", "XCVRD_SHOW_HWMODE_SWMODE_CMD", "XCVRD_SHOW_HWMODE_SWMODE_RSP", port, 1, "probe")
temp_list.append(port)
temp_list.append(res_dict[1])
rc = res_dict[1]
Expand Down Expand Up @@ -955,19 +972,20 @@ def firmware():
def version(db, port, active):
"""Show muxcable firmware version"""

#port = platform_sfputil_helper.get_interface_alias(port, db)
port = platform_sfputil_helper.get_interface_alias(port, db)
delete_all_keys_in_db_table("APPL_DB", "XCVRD_DOWN_FW_CMD")
delete_all_keys_in_db_table("STATE_DB", "XCVRD_DOWN_FW_RSP")
delete_all_keys_in_db_table("APPL_DB", "XCVRD_SHOW_FW_CMD")
delete_all_keys_in_db_table("STATE_DB", "XCVRD_SHOW_FW_RSP")
delete_all_keys_in_db_table("STATE_DB", "XCVRD_SHOW_FW_RES")

if port is not None:

res_dict = {}
mux_info_dict, mux_info_active_dict = {}, {}

res_dict [0] = CONFIG_FAIL
res_dict [1] = "unknown"
res_dict[0] = CONFIG_FAIL
res_dict[1] = "unknown"
mux_info_dict["version_nic_active"] = "N/A"
mux_info_dict["version_nic_inactive"] = "N/A"
mux_info_dict["version_nic_next"] = "N/A"
Expand All @@ -978,7 +996,8 @@ def version(db, port, active):
mux_info_dict["version_self_inactive"] = "N/A"
mux_info_dict["version_self_next"] = "N/A"

res_dict = update_and_get_response_for_xcvr_cmd("firmware_version","status", "True", "XCVRD_SHOW_FW_CMD", "XCVRD_SHOW_FW_RSP", port, "probe")
res_dict = update_and_get_response_for_xcvr_cmd(
"firmware_version", "status", "True", "XCVRD_SHOW_FW_CMD", "XCVRD_SHOW_FW_RSP", port, 20, "probe")

if res_dict[1] == "True":
mux_info_dict = get_response_for_version(port, mux_info_dict)
Expand Down

0 comments on commit 88caade

Please sign in to comment.