[Mellanox] Enhance Python3 support for platform API (#7410)
- Why I did it Enhance the Python3 support for platform API. Originally, some platform APIs call SDK API which didn't support Python 3. Now the Python 3 APIs have been supported in SDK 4.4.3XXX, Python3 is completely supported by platform API - How I did it Start all platform daemons from python3 1. Remove #/usr/bin/env python at the beginning of each platform API file as the platform API won't be started as daemons but be imported from other daemons. 2. Adjust SDK API calls accordingly - How to verify it Manually test and run regression platform test Signed-off-by: Stephen Sun <stephens@nvidia.com>
This commit is contained in:
parent
87bdc1a415
commit
80d01f2f9a
@ -1,7 +1,6 @@
|
||||
{
|
||||
"skip_ledd": true,
|
||||
"skip_fancontrol": true,
|
||||
"delay_xcvrd": true,
|
||||
"python2_daemons": ["xcvrd"]
|
||||
"delay_xcvrd": true
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
#############################################################################
|
||||
# Mellanox
|
||||
#
|
||||
|
@ -1,5 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
#############################################################################
|
||||
# Mellanox
|
||||
#
|
||||
|
@ -1,5 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
#############################################################################
|
||||
# Mellanox
|
||||
#
|
||||
|
@ -1,5 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
#############################################################################
|
||||
# Mellanox
|
||||
#
|
||||
|
@ -1,5 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
#############################################################################
|
||||
# Mellanox
|
||||
#
|
||||
|
@ -1,5 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
#############################################################################
|
||||
# Mellanox
|
||||
#
|
||||
|
@ -1,5 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
#############################################################################
|
||||
# Mellanox
|
||||
#
|
||||
@ -1493,9 +1491,12 @@ class SFP(SfpBase):
|
||||
sx_mgmt_phy_mod_pwr_attr = sx_mgmt_phy_mod_pwr_attr_t()
|
||||
sx_mgmt_phy_mod_pwr_attr.power_attr_type = power_attr_type
|
||||
sx_mgmt_phy_mod_pwr_attr_t_p_assign(sx_mgmt_phy_mod_pwr_attr_p, sx_mgmt_phy_mod_pwr_attr)
|
||||
module_id_info = sx_mgmt_module_id_info_t()
|
||||
module_id_info.slot_id = 0
|
||||
module_id_info.module_id = sdk_index
|
||||
try:
|
||||
rc = sx_mgmt_phy_mod_pwr_attr_get(sdk_handle, sdk_index, sx_mgmt_phy_mod_pwr_attr_p)
|
||||
assert SX_STATUS_SUCCESS == rc, "sx_mgmt_phy_mod_pwr_attr_get failed"
|
||||
rc = sx_mgmt_phy_module_pwr_attr_get(sdk_handle, module_id_info, sx_mgmt_phy_mod_pwr_attr_p)
|
||||
assert SX_STATUS_SUCCESS == rc, "sx_mgmt_phy_module_pwr_attr_get failed {}".format(rc)
|
||||
sx_mgmt_phy_mod_pwr_attr = sx_mgmt_phy_mod_pwr_attr_t_p_value(sx_mgmt_phy_mod_pwr_attr_p)
|
||||
pwr_mode_attr = sx_mgmt_phy_mod_pwr_attr.pwr_mode_attr
|
||||
return pwr_mode_attr.admin_pwr_mode_e, pwr_mode_attr.oper_pwr_mode_e
|
||||
@ -1517,7 +1518,7 @@ class SFP(SfpBase):
|
||||
get_lpmode_code = 'from sonic_platform import sfp;\n' \
|
||||
'with sfp.SdkHandleContext() as sdk_handle:' \
|
||||
'print(sfp.SFP._get_lpmode(sdk_handle, {}))'.format(self.sdk_index)
|
||||
lpm_cmd = "docker exec pmon python -c \"{}\"".format(get_lpmode_code)
|
||||
lpm_cmd = "docker exec pmon python3 -c \"{}\"".format(get_lpmode_code)
|
||||
try:
|
||||
output = subprocess.check_output(lpm_cmd, shell=True, universal_newlines=True)
|
||||
return 'True' in output
|
||||
@ -1921,7 +1922,7 @@ class SFP(SfpBase):
|
||||
'with sfp.SdkHandleContext() as sdk_handle:' \
|
||||
'print(sfp.SFP._reset(sdk_handle, {}))' \
|
||||
.format(self.sdk_index)
|
||||
reset_cmd = "docker exec pmon python -c \"{}\"".format(reset_code)
|
||||
reset_cmd = "docker exec pmon python3 -c \"{}\"".format(reset_code)
|
||||
|
||||
try:
|
||||
output = subprocess.check_output(reset_cmd, shell=True, universal_newlines=True)
|
||||
@ -1935,9 +1936,12 @@ class SFP(SfpBase):
|
||||
|
||||
@classmethod
|
||||
def _reset(cls, sdk_handle, sdk_index):
|
||||
rc = sx_mgmt_phy_mod_reset(sdk_handle, sdk_index)
|
||||
module_id_info = sx_mgmt_module_id_info_t()
|
||||
module_id_info.slot_id = 0
|
||||
module_id_info.module_id = sdk_index
|
||||
rc = sx_mgmt_phy_module_reset(sdk_handle, module_id_info)
|
||||
if rc != SX_STATUS_SUCCESS:
|
||||
logger.log_warning("sx_mgmt_phy_mod_reset failed, rc = %d" % rc)
|
||||
logger.log_error("Error occurred when resetting SFP module {}, error code {}".format(sdk_index, rc))
|
||||
|
||||
return rc == SX_STATUS_SUCCESS
|
||||
|
||||
@ -2051,10 +2055,13 @@ class SFP(SfpBase):
|
||||
sx_mgmt_phy_mod_pwr_attr.pwr_mode_attr = sx_mgmt_phy_mod_pwr_mode_attr
|
||||
sx_mgmt_phy_mod_pwr_attr_p = new_sx_mgmt_phy_mod_pwr_attr_t_p()
|
||||
sx_mgmt_phy_mod_pwr_attr_t_p_assign(sx_mgmt_phy_mod_pwr_attr_p, sx_mgmt_phy_mod_pwr_attr)
|
||||
module_id_info = sx_mgmt_module_id_info_t()
|
||||
module_id_info.slot_id = 0
|
||||
module_id_info.module_id = sdk_index
|
||||
try:
|
||||
rc = sx_mgmt_phy_mod_pwr_attr_set(sdk_handle, SX_ACCESS_CMD_SET, sdk_index, sx_mgmt_phy_mod_pwr_attr_p)
|
||||
rc = sx_mgmt_phy_module_pwr_attr_set(sdk_handle, SX_ACCESS_CMD_SET, module_id_info, sx_mgmt_phy_mod_pwr_attr_p)
|
||||
if SX_STATUS_SUCCESS != rc:
|
||||
logger.log_error("sx_mgmt_phy_mod_pwr_attr_set failed, rc = %d" % rc)
|
||||
logger.log_error("Error occurred when setting power mode for SFP module {}, error code {}".format(sdk_index, rc))
|
||||
result = False
|
||||
else:
|
||||
result = True
|
||||
@ -2104,7 +2111,7 @@ class SFP(SfpBase):
|
||||
'with sfp.SdkHandleContext() as sdk_handle:' \
|
||||
'print(sfp.SFP._set_lpmode({}, sdk_handle, {}))' \
|
||||
.format('True' if lpmode else 'False', self.sdk_index)
|
||||
lpm_cmd = "docker exec pmon python -c \"{}\"".format(set_lpmode_code)
|
||||
lpm_cmd = "docker exec pmon python3 -c \"{}\"".format(set_lpmode_code)
|
||||
|
||||
# Set LPM
|
||||
try:
|
||||
|
@ -1,4 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
'''
|
||||
listen to the SDK for the SFP change event and return to chassis.
|
||||
'''
|
||||
|
@ -1,5 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
#############################################################################
|
||||
# Mellanox
|
||||
#
|
||||
|
@ -1,5 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
Mellanox
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user