converting to Platform based utils (#4830)

Co-authored-by: Madhan Babu <madhan@arc-build-server.mtr.labs.mlnx>
This commit is contained in:
madhanmellanox 2020-06-23 09:12:54 -07:00 committed by GitHub
parent 67e183d0dc
commit 337502c220
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 26 deletions

View File

@ -33,15 +33,15 @@ SYSTEM_NOT_READY = 'system_not_ready'
SYSTEM_READY = 'system_become_ready' SYSTEM_READY = 'system_become_ready'
SYSTEM_FAIL = 'system_fail' SYSTEM_FAIL = 'system_fail'
GET_HWSKU_CMD = "sonic-cfggen -d -v DEVICE_METADATA.localhost.hwsku" GET_PLATFORM_CMD = "sonic-cfggen -d -v DEVICE_METADATA.localhost.platform"
# Ethernet<n> <=> sfp<n+SFP_PORT_NAME_OFFSET> # Ethernet<n> <=> sfp<n+SFP_PORT_NAME_OFFSET>
SFP_PORT_NAME_OFFSET = 1 SFP_PORT_NAME_OFFSET = 1
SFP_PORT_NAME_CONVENTION = "sfp{}" SFP_PORT_NAME_CONVENTION = "sfp{}"
# magic code defnition for port number, qsfp port position of each hwsku # magic code defnition for port number, qsfp port position of each Platform
# port_position_tuple = (PORT_START, QSFP_PORT_START, PORT_END, PORT_IN_BLOCK, EEPROM_OFFSET) # port_position_tuple = (PORT_START, QSFP_PORT_START, PORT_END, PORT_IN_BLOCK, EEPROM_OFFSET)
hwsku_dict = {'ACS-MSN2700': 0, 'Mellanox-SN2700': 0, 'Mellanox-SN2700-D48C8': 0, 'LS-SN2700':0, 'ACS-MSN2740': 0, 'ACS-MSN2100': 1, 'ACS-MSN2410': 2, 'ACS-MSN2010': 3, 'ACS-MSN3700': 0, 'ACS-MSN3700C': 0, 'ACS-MSN3800': 4, 'Mellanox-SN3800-D112C8': 4, 'ACS-MSN4700': 0, 'ACS-MSN3420': 5, 'ACS-MSN4600C': 4} platform_dict = {'x86_64-mlnx_msn2700-r0': 0, 'x86_64-mlnx_msn2740-r0': 0, 'x86_64-mlnx_msn2100-r0': 1, 'x86_64-mlnx_msn2410-r0': 2, 'x86_64-mlnx_msn2010-r0': 3, 'x86_64-mlnx_msn3420-r0':5, 'x86_64-mlnx_msn3700-r0': 0, 'x86_64-mlnx_msn3700c-r0': 0, 'x86_64-mlnx_msn3800-r0': 4, 'x86_64-mlnx_msn4600c':4, 'x86_64-mlnx_msn4700-r0': 0}
port_position_tuple_list = [(0, 0, 31, 32, 1), (0, 0, 15, 16, 1), (0, 48, 55, 56, 1), (0, 18, 21, 22, 1), (0, 0, 63, 64, 1), (0, 48, 59, 60, 1)] port_position_tuple_list = [(0, 0, 31, 32, 1), (0, 0, 15, 16, 1), (0, 48, 55, 56, 1), (0, 18, 21, 22, 1), (0, 0, 63, 64, 1), (0, 48, 59, 60, 1)]
def log_info(msg, also_print_to_console=False): def log_info(msg, also_print_to_console=False):
@ -86,14 +86,14 @@ class SfpUtil(SfpUtilBase):
print "dependency on sysfs has been removed" print "dependency on sysfs has been removed"
raise Exception() raise Exception()
def get_port_position_tuple_by_sku_name(self): def get_port_position_tuple_by_platform_name(self):
p = subprocess.Popen(GET_HWSKU_CMD, shell=True, stdout=subprocess.PIPE) p = subprocess.Popen(GET_PLATFORM_CMD, shell=True, stdout=subprocess.PIPE)
out, err = p.communicate() out, err = p.communicate()
position_tuple = port_position_tuple_list[hwsku_dict[out.rstrip('\n')]] position_tuple = port_position_tuple_list[platform_dict[out.rstrip('\n')]]
return position_tuple return position_tuple
def __init__(self): def __init__(self):
port_position_tuple = self.get_port_position_tuple_by_sku_name() port_position_tuple = self.get_port_position_tuple_by_platform_name()
self.PORT_START = port_position_tuple[0] self.PORT_START = port_position_tuple[0]
self.QSFP_PORT_START = port_position_tuple[1] self.QSFP_PORT_START = port_position_tuple[1]
self.PORT_END = port_position_tuple[2] self.PORT_END = port_position_tuple[2]

View File

@ -52,9 +52,9 @@ logger = Logger()
SYSTEM_STATUS_LED_GREEN_FILE = '/run/hw-management/led/led_status_green' SYSTEM_STATUS_LED_GREEN_FILE = '/run/hw-management/led/led_status_green'
LED_ON = '1' LED_ON = '1'
# magic code defnition for port number, qsfp port position of each hwsku # magic code defnition for port number, qsfp port position of each Platform
# port_position_tuple = (PORT_START, QSFP_PORT_START, PORT_END, PORT_IN_BLOCK, EEPROM_OFFSET) # port_position_tuple = (PORT_START, QSFP_PORT_START, PORT_END, PORT_IN_BLOCK, EEPROM_OFFSET)
hwsku_dict_port = {'ACS-MSN2010': 3, 'ACS-MSN2100': 1, 'ACS-MSN2410': 2, 'ACS-MSN2700': 0, 'Mellanox-SN2700': 0, 'Mellanox-SN2700-D48C8': 0, 'LS-SN2700':0, 'ACS-MSN2740': 0, 'ACS-MSN3700': 0, 'ACS-MSN3700C': 0, 'ACS-MSN3800': 4, 'Mellanox-SN3800-D112C8': 4, 'ACS-MSN4700': 0, 'ACS-MSN3420': 5, 'ACS-MSN4600C': 4} platform_dict_port = {'x86_64-mlnx_msn2010-r0': 3, 'x86_64-mlnx_msn2100-r0': 1, 'x86_64-mlnx_msn2410-r0': 2, 'x86_64-mlnx_msn2700-r0': 0, 'x86_64-mlnx_lssn2700':0, 'x86_64-mlnx_msn2740-r0': 0, 'x86_64-mlnx_msn3420-r0':5, 'x86_64-mlnx_msn3700-r0': 0, 'x86_64-mlnx_msn3700C-r0': 0, 'x86_64-mlnx_msn3800-r0': 4, 'x86_64-mlnx_msn4600c-r0':4, 'x86_64-mlnx_msn4700-r0': 0}
port_position_tuple_list = [(0, 0, 31, 32, 1), (0, 0, 15, 16, 1), (0, 48, 55, 56, 1), (0, 18, 21, 22, 1), (0, 0, 63, 64, 1), (0, 48, 59, 60, 1)] port_position_tuple_list = [(0, 0, 31, 32, 1), (0, 0, 15, 16, 1), (0, 48, 55, 56, 1), (0, 18, 21, 22, 1), (0, 0, 63, 64, 1), (0, 48, 59, 60, 1)]
class Chassis(ChassisBase): class Chassis(ChassisBase):
@ -63,7 +63,7 @@ class Chassis(ChassisBase):
def __init__(self): def __init__(self):
super(Chassis, self).__init__() super(Chassis, self).__init__()
# Initialize SKU name # Initialize SKU name and Platform name
self.sku_name = self._get_sku_name() self.sku_name = self._get_sku_name()
self.platform_name = self._get_platform_name() self.platform_name = self._get_platform_name()
mi = get_machine_info() mi = get_machine_info()
@ -91,7 +91,7 @@ class Chassis(ChassisBase):
# Initialize PSU list # Initialize PSU list
self.psu_module = Psu self.psu_module = Psu
for index in range(MLNX_NUM_PSU): for index in range(MLNX_NUM_PSU):
psu = Psu(index, self.sku_name) psu = Psu(index, self.platform_name)
self._psu_list.append(psu) self._psu_list.append(psu)
@ -129,7 +129,7 @@ class Chassis(ChassisBase):
self.sfp_module = SFP self.sfp_module = SFP
# Initialize SFP list # Initialize SFP list
port_position_tuple = self._get_port_position_tuple_by_sku_name() port_position_tuple = self._get_port_position_tuple_by_platform_name()
self.PORT_START = port_position_tuple[0] self.PORT_START = port_position_tuple[0]
self.QSFP_PORT_START = port_position_tuple[1] self.QSFP_PORT_START = port_position_tuple[1]
self.PORT_END = port_position_tuple[2] self.PORT_END = port_position_tuple[2]
@ -148,7 +148,7 @@ class Chassis(ChassisBase):
def initialize_thermals(self): def initialize_thermals(self):
from sonic_platform.thermal import initialize_thermals from sonic_platform.thermal import initialize_thermals
# Initialize thermals # Initialize thermals
initialize_thermals(self.sku_name, self._thermal_list, self._psu_list) initialize_thermals(self.platform_name, self._thermal_list, self._psu_list)
def initialize_eeprom(self): def initialize_eeprom(self):
@ -260,8 +260,8 @@ class Chassis(ChassisBase):
return out.rstrip('\n') return out.rstrip('\n')
def _get_port_position_tuple_by_sku_name(self): def _get_port_position_tuple_by_platform_name(self):
position_tuple = port_position_tuple_list[hwsku_dict_port[self.sku_name]] position_tuple = port_position_tuple_list[platform_dict_port[self.platform_name]]
return position_tuple return position_tuple

View File

@ -28,11 +28,11 @@ PSU_POWER = "power"
# SKUs with unplugable PSUs: # SKUs with unplugable PSUs:
# 1. don't have psuX_status and should be treated as always present # 1. don't have psuX_status and should be treated as always present
# 2. don't have voltage, current and power values # 2. don't have voltage, current and power values
hwsku_dict_with_unplugable_psu = ['ACS-MSN2010', 'ACS-MSN2100'] platform_dict_with_unplugable_psu = ['x86_64-mlnx_msn2010-r0', 'x86_64-mlnx_msn2100-r0']
# in most SKUs the file psuX_curr, psuX_volt and psuX_power contain current, voltage and power data respectively. # in most SKUs the file psuX_curr, psuX_volt and psuX_power contain current, voltage and power data respectively.
# but there are exceptions which will be handled by the following dictionary # but there are exceptions which will be handled by the following dictionary
hwsku_dict_psu = {'ACS-MSN3700': 1, 'ACS-MSN3700C': 1, 'ACS-MSN3800': 1, 'Mellanox-SN3800-D112C8': 1, 'ACS-MSN4700': 1, 'ACS-MSN3420': 1, 'ACS-MSN4600C': 1} platform_dict_psu = {'x86_64-mlnx_msn3420-r0':1, 'x86_64-mlnx_msn3700-r0': 1, 'x86_64-mlnx_msn3700c-r0': 1, 'x86_64-mlnx_msn3800-r0': 1, 'x86_64-mlnx_msn4600c-r0':1, 'x86_64-mlnx_msn4700-r0': 1}
psu_profile_list = [ psu_profile_list = [
# default filename convention # default filename convention
{ {
@ -40,7 +40,7 @@ psu_profile_list = [
PSU_VOLTAGE : "power/psu{}_volt", PSU_VOLTAGE : "power/psu{}_volt",
PSU_POWER : "power/psu{}_power" PSU_POWER : "power/psu{}_power"
}, },
# for 3420, 3700, 3700c, 3800, 4700 # for 3420, 3700, 3700c, 3800, 4600c, 4700
{ {
PSU_CURRENT : "power/psu{}_curr", PSU_CURRENT : "power/psu{}_curr",
PSU_VOLTAGE : "power/psu{}_volt_out2", PSU_VOLTAGE : "power/psu{}_volt_out2",
@ -50,7 +50,7 @@ psu_profile_list = [
class Psu(PsuBase): class Psu(PsuBase):
"""Platform-specific Psu class""" """Platform-specific Psu class"""
def __init__(self, psu_index, sku): def __init__(self, psu_index, platform):
global psu_list global psu_list
PsuBase.__init__(self) PsuBase.__init__(self)
# PSU is 1-based on Mellanox platform # PSU is 1-based on Mellanox platform
@ -62,12 +62,12 @@ class Psu(PsuBase):
self.psu_oper_status = os.path.join(self.psu_path, psu_oper_status) self.psu_oper_status = os.path.join(self.psu_path, psu_oper_status)
self._name = "PSU{}".format(psu_index + 1) self._name = "PSU{}".format(psu_index + 1)
if sku in hwsku_dict_psu: if platform in platform_dict_psu:
filemap = psu_profile_list[hwsku_dict_psu[sku]] filemap = psu_profile_list[platform_dict_psu[platform]]
else: else:
filemap = psu_profile_list[0] filemap = psu_profile_list[0]
if sku in hwsku_dict_with_unplugable_psu: if platform in platform_dict_with_unplugable_psu:
self.always_presence = True self.always_presence = True
self.psu_voltage = None self.psu_voltage = None
self.psu_current = None self.psu_current = None
@ -92,7 +92,7 @@ class Psu(PsuBase):
self.psu_presence = psu_presence self.psu_presence = psu_presence
# unplugable PSU has no FAN # unplugable PSU has no FAN
if sku not in hwsku_dict_with_unplugable_psu: if platform not in platform_dict_with_unplugable_psu:
fan = Fan(False, psu_index, psu_index, True) fan = Fan(False, psu_index, psu_index, True)
self._fan_list.append(fan) self._fan_list.append(fan)

View File

@ -124,7 +124,7 @@ thermal_api_names = [
THERMAL_API_GET_HIGH_THRESHOLD THERMAL_API_GET_HIGH_THRESHOLD
] ]
hwsku_dict_thermal = {'ACS-MSN2700': 0, 'LS-SN2700':0, 'ACS-MSN2740': 3, 'ACS-MSN2100': 1, 'ACS-MSN2410': 2, 'ACS-MSN2010': 4, 'ACS-MSN3700': 5, 'ACS-MSN3700C': 6, 'Mellanox-SN2700': 0, 'Mellanox-SN2700-D48C8': 0, 'ACS-MSN3800': 7, 'Mellanox-SN3800-D112C8': 7, 'ACS-MSN4700': 8, 'ACS-MSN3420': 9, 'ACS-MSN4600C': 9} platform_dict_thermal = {'x86_64-mlnx_msn2700-r0': 0, 'x86_64-mlnx_lssn2700-r0':0, 'x86_64-mlnx_msn2740-r0': 3, 'x86_64-mlnx_msn2100-r0': 1, 'x86_64-mlnx_msn2410-r0': 2, 'x86_64-mlnx_msn2010-r0': 4, 'x86_64-mlnx_msn3420-r0':9, 'x86_64-mlnx_msn3700-r0': 5, 'x86_64-mlnx_msn3700c-r0': 6, 'x86_64-mlnx_msn3800-r0': 7, 'x86_64-mlnx_msn4600c-r0':9, 'x86_64-mlnx_msn4700-r0': 8}
thermal_profile_list = [ thermal_profile_list = [
# 2700 # 2700
{ {
@ -300,9 +300,9 @@ thermal_profile_list = [
] ]
def initialize_thermals(sku, thermal_list, psu_list): def initialize_thermals(platform, thermal_list, psu_list):
# create thermal objects for all categories of sensors # create thermal objects for all categories of sensors
tp_index = hwsku_dict_thermal[sku] tp_index = platform_dict_thermal[platform]
thermal_profile = thermal_profile_list[tp_index] thermal_profile = thermal_profile_list[tp_index]
Thermal.thermal_profile = thermal_profile Thermal.thermal_profile = thermal_profile
for category in thermal_device_categories_all: for category in thermal_device_categories_all: