[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:
Stephen Sun 2021-06-15 22:57:48 +08:00 committed by GitHub
parent 87bdc1a415
commit 80d01f2f9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 19 additions and 30 deletions

View File

@ -1,7 +1,6 @@
{
"skip_ledd": true,
"skip_fancontrol": true,
"delay_xcvrd": true,
"python2_daemons": ["xcvrd"]
"delay_xcvrd": true
}

View File

@ -1,5 +1,3 @@
#!/usr/bin/env python
#############################################################################
# Mellanox
#

View File

@ -1,5 +1,3 @@
#!/usr/bin/env python
#############################################################################
# Mellanox
#

View File

@ -1,5 +1,3 @@
#!/usr/bin/env python
#############################################################################
# Mellanox
#

View File

@ -1,5 +1,3 @@
#!/usr/bin/env python
#############################################################################
# Mellanox
#

View File

@ -1,5 +1,3 @@
#!/usr/bin/env python
#############################################################################
# Mellanox
#

View File

@ -1,5 +1,3 @@
#!/usr/bin/env python
#############################################################################
# Mellanox
#

View File

@ -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:

View File

@ -1,4 +1,3 @@
#!/usr/bin/env python
'''
listen to the SDK for the SFP change event and return to chassis.
'''

View File

@ -1,5 +1,3 @@
#!/usr/bin/env python
#############################################################################
# Mellanox
#

View File

@ -1,5 +1,3 @@
#!/usr/bin/env python
"""
Mellanox