From c202771cd59e78b16755dcee988fc834bcaf330f Mon Sep 17 00:00:00 2001 From: Stephen Sun Date: Fri, 2 Aug 2019 09:54:30 +0300 Subject: [PATCH 1/6] [sonic_platform]support led for fan/psu and fan direction on SPC2 devices --- .../sonic_platform/chassis.py | 4 +- .../mlnx-platform-api/sonic_platform/fan.py | 126 +++++++++++++++--- .../mlnx-platform-api/sonic_platform/psu.py | 116 +++++++++++++++- 3 files changed, 226 insertions(+), 20 deletions(-) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py b/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py index 44ef8981281f..ca17d6291d27 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py @@ -89,9 +89,9 @@ def initialize_fan(self): for index in range(num_of_fan): if multi_rotor_in_drawer: - fan = Fan(index, index/2) + fan = Fan(self.sku_name, index, index/2) else: - fan = Fan(index, index) + fan = Fan(self.sku_name, index, index) self._fan_list.append(fan) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py b/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py index 8b057e4123a2..0db7f0bce66b 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py @@ -22,16 +22,23 @@ FAN_PATH = "/var/run/hw-management/thermal/" LED_PATH = "/var/run/hw-management/led/" +# fan_dir only exist SPC2 switches +FAN_DIR = "/var/run/hw-management/system/fan_dir" + +skus_with_fan_dir = {'ACS-MSN3700', 'ACS-MSN3700C', 'ACS-MSN3800'} class Fan(FanBase): """Platform-specific Fan class""" - def __init__(self, fan_index, drawer_index = 1, psu_fan = False): + + STATUS_LED_COLOR_ORANGE = "orange" + + def __init__(self, sku, fan_index, drawer_index = 1, psu_fan = False): # API index is starting from 0, Mellanox platform index is starting from 1 self.index = fan_index + 1 self.drawer_index = drawer_index + 1 self.is_psu_fan = psu_fan - + self.fan_min_speed_path = "fan{}_min".format(self.index) if not self.is_psu_fan: self.fan_speed_get_path = "fan{}_speed_get".format(self.index) @@ -48,6 +55,45 @@ def __init__(self, fan_index, drawer_index = 1, psu_fan = False): self.fan_orange_led_path = "led_fan{}_orange".format(self.drawer_index) self.fan_pwm_path = "pwm1" self.fan_led_cap_path = "led_fan{}_capability".format(self.drawer_index) + if sku in skus_with_fan_dir: + self.fan_dir = FAN_DIR + else: + self.fan_dir = None + + + def get_direction(self): + """ + Retrieves the direction of fan + + Returns: + A string, either FAN_DIRECTION_INTAKE or FAN_DIRECTION_EXHAUST + depending on fan direction + + Notes: + What Mellanox calls forward: + Air flows from fans side to QSFP side, for example: MSN2700-CS2F + which means intake in community + What Mellanox calls reverse: + Air flow from QSFP side to fans side, for example: MSN2700-CS2R + which means exhaust in community + According to hw-mgmt: + 1 stands for forward, in other words intake + 0 stands for reverse, in other words exhaust + """ + if not self.fan_dir or self.is_psu_fan: + raise NotImplementedError + + try: + with open(os.path.join(self.fan_dir), 'r') as fan_dir: + fan_dir_bits = int(fan_dir.read()) + fan_mask = 1 << self.index - 1 + if fan_dir_bits & fan_mask: + return self.FAN_DIRECTION_INTAKE + else: + return self.FAN_DIRECTION_EXHAUST + except (ValueError, IOError) as e: + raise RuntimeError("Failed to read fan direction status to {}".format(repr(e))) + def get_status(self): """ @@ -68,6 +114,7 @@ def get_status(self): return status == 1 + def get_presence(self): """ Retrieves the presence status of fan @@ -89,7 +136,8 @@ def get_presence(self): status = 0 return status == 1 - + + def _get_min_speed_in_rpm(self): speed = 0 try: @@ -99,7 +147,8 @@ def _get_min_speed_in_rpm(self): speed = 0 return speed - + + def _get_max_speed_in_rpm(self): speed = 0 try: @@ -110,6 +159,7 @@ def _get_max_speed_in_rpm(self): return speed + def get_speed(self): """ Retrieves the speed of fan @@ -129,6 +179,7 @@ def get_speed(self): return speed + def get_target_speed(self): """ Retrieves the expected speed of fan @@ -151,6 +202,7 @@ def get_target_speed(self): return speed + def set_speed(self, speed): """ Set fan speed to expected value @@ -176,7 +228,8 @@ def set_speed(self, speed): status = False return status - + + def _get_led_capability(self): cap_list = None try: @@ -188,6 +241,7 @@ def _get_led_capability(self): return cap_list + def set_status_led(self, color): """ Set led to expected color @@ -208,32 +262,70 @@ def set_status_led(self, color): return False status = False try: - if color == 'green': + if color == self.STATUS_LED_COLOR_GREEN: with open(os.path.join(LED_PATH, self.fan_green_led_path), 'w') as fan_led: fan_led.write(str(LED_ON)) - elif color == 'red': + status = True + elif color == self.STATUS_LED_COLOR_RED: # Some fan don't support red led but support orange led, in this case we set led to orange - if 'red' in led_cap_list: + if self.STATUS_LED_COLOR_RED in led_cap_list: led_path = os.path.join(LED_PATH, self.fan_red_led_path) - elif 'orange' in led_cap_list: + elif self.STATUS_LED_COLOR_ORANGE in led_cap_list: led_path = os.path.join(LED_PATH, self.fan_orange_led_path) else: return False with open(led_path, 'w') as fan_led: fan_led.write(str(LED_ON)) - - elif color == 'off': - with open(os.path.join(LED_PATH, self.fan_green_led_path), 'w') as fan_led: - fan_led.write(str(LED_OFF)) - - with open(os.path.join(LED_PATH, self.fan_red_led_path), 'w') as fan_led: - fan_led.write(str(LED_OFF)) + status = True + elif color == self.STATUS_LED_COLOR_OFF: + if self.STATUS_LED_COLOR_GREEN in led_cap_list: + with open(os.path.join(LED_PATH, self.fan_green_led_path), 'w') as fan_led: + fan_led.write(str(LED_OFF)) + if self.STATUS_LED_COLOR_RED in led_cap_list: + with open(os.path.join(LED_PATH, self.fan_red_led_path), 'w') as fan_led: + fan_led.write(str(LED_OFF)) + if self.STATUS_LED_COLOR_ORANGE in led_cap_list: + with open(os.path.join(LED_PATH, self.fan_orange_led_path), 'w') as fan_led: + fan_led.write(str(LED_OFF)) + + status = True else: status = False except (ValueError, IOError): - status = False + status = False + return status + + def get_status_led(self): + """ + Gets the state of the fan status LED + + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings above + """ + led_cap_list = self._get_led_capability() + if led_cap_list is None: + return self.STATUS_LED_COLOR_OFF + + try: + with open(os.path.join(LED_PATH, self.fan_green_led_path), 'r') as fan_led: + if '0' != fan_led.read().rstrip('\n'): + return self.STATUS_LED_COLOR_GREEN + if self.STATUS_LED_COLOR_RED in led_cap_list: + with open(os.path.join(LED_PATH, self.fan_red_led_path), 'r') as fan_led: + if '0' != fan_led.read().rstrip('\n'): + return self.STATUS_LED_COLOR_RED + if self.STATUS_LED_COLOR_ORANGE in led_cap_list: + with open(os.path.join(LED_PATH, self.fan_orange_led_path), 'r') as fan_led: + if '0' != fan_led.read().rstrip('\n'): + return self.STATUS_LED_COLOR_RED + except (ValueError, IOError) as e: + raise RuntimeError("Failed to read led status for fan {} due to {}".format(self.index, repr(e))) + + return self.STATUS_LED_COLOR_OFF + + def get_speed_tolerance(self): """ Retrieves the speed tolerance of the fan diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/psu.py b/platform/mellanox/mlnx-platform-api/sonic_platform/psu.py index 0789f67e4f09..cca3f0860c63 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/psu.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/psu.py @@ -16,6 +16,9 @@ except ImportError as e: raise ImportError (str(e) + "- required module not found") +LED_ON = 1 +LED_OFF = 0 + # Global logger class instance logger = Logger() @@ -25,6 +28,8 @@ PSU_VOLTAGE = "voltage" PSU_POWER = "power" +LED_PATH = "/var/run/hw-management/led/" + # SKUs with unplugable PSUs: # 1. don't have psuX_status and should be treated as always present # 2. don't have voltage, current and power values @@ -50,6 +55,9 @@ class Psu(PsuBase): """Platform-specific Psu class""" + + STATUS_LED_COLOR_ORANGE = "orange" + def __init__(self, psu_index, sku): global psu_list PsuBase.__init__(self) @@ -90,10 +98,16 @@ def __init__(self, psu_index, sku): psu_presence = os.path.join(self.psu_path, psu_presence) self.psu_presence = psu_presence - fan = Fan(psu_index, psu_index, True) + fan = Fan(sku, psu_index, psu_index, True) if fan.get_presence(): self._fan = fan + self.psu_green_led_path = "led_psu_green" + self.psu_red_led_path = "led_psu_red" + self.psu_orange_led_path = "led_psu_orange" + self.psu_led_cap_path = "led_psu_capability" + + def _read_generic_file(self, filename, len): """ Read a generic file, returns the contents of the file @@ -106,6 +120,7 @@ def _read_generic_file(self, filename, len): logger.log_info("Fail to read file {} due to {}".format(filename, repr(e))) return result + def get_powergood_status(self): """ Retrieves the operational status of power supply unit (PSU) defined @@ -117,6 +132,7 @@ def get_powergood_status(self): return status == 1 + def get_presence(self): """ Retrieves the presence status of power supply unit (PSU) defined @@ -130,6 +146,7 @@ def get_presence(self): status = self._read_generic_file(self.psu_presence, 0) return status == 1 + def get_voltage(self): """ Retrieves current PSU voltage output @@ -144,6 +161,7 @@ def get_voltage(self): else: return None + def get_current(self): """ Retrieves present electric current supplied by PSU @@ -169,3 +187,99 @@ def get_power(self): return float(power) / 1000000 else: return None + + + def _get_led_capability(self): + cap_list = None + try: + with open(os.path.join(LED_PATH, self.psu_led_cap_path), 'r') as psu_led_cap: + caps = psu_led_cap.read() + cap_list = caps.split() + except (ValueError, IOError): + status = 0 + + return cap_list + + + def set_status_led(self, color): + """ + Sets the state of the PSU status LED + + Args: + color: A string representing the color with which to set the + PSU status LED + + Returns: + bool: True if status LED state is set successfully, False if not + + Notes: + Only one led for all PSUs. + """ + led_cap_list = self._get_led_capability() + if led_cap_list is None: + return False + + status = False + try: + if color == self.STATUS_LED_COLOR_GREEN: + with open(os.path.join(LED_PATH, self.psu_green_led_path), 'w') as psu_led: + psu_led.write(str(LED_ON)) + status = True + elif color == self.STATUS_LED_COLOR_RED: + # Some fan don't support red led but support orange led, in this case we set led to orange + if self.STATUS_LED_COLOR_RED in led_cap_list: + led_path = os.path.join(LED_PATH, self.psu_red_led_path) + elif self.STATUS_LED_COLOR_ORANGE in led_cap_list: + led_path = os.path.join(LED_PATH, self.psu_orange_led_path) + else: + return False + with open(led_path, 'w') as psu_led: + psu_led.write(str(LED_ON)) + status = True + elif color == self.STATUS_LED_COLOR_OFF: + if self.STATUS_LED_COLOR_GREEN in led_cap_list: + with open(os.path.join(LED_PATH, self.psu_green_led_path), 'w') as psu_led: + psu_led.write(str(LED_OFF)) + if self.STATUS_LED_COLOR_RED in led_cap_list: + with open(os.path.join(LED_PATH, self.psu_red_led_path), 'w') as psu_led: + psu_led.write(str(LED_OFF)) + if self.STATUS_LED_COLOR_ORANGE in led_cap_list: + with open(os.path.join(LED_PATH, self.psu_orange_led_path), 'w') as psu_led: + psu_led.write(str(LED_OFF)) + + status = True + else: + status = False + except (ValueError, IOError): + status = False + + return status + + + def get_status_led(self): + """ + Gets the state of the PSU status LED + + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings above + """ + led_cap_list = self._get_led_capability() + if led_cap_list is None: + return self.STATUS_LED_COLOR_OFF + + try: + with open(os.path.join(LED_PATH, self.psu_green_led_path), 'r') as psu_led: + if '0' != psu_led.read().rstrip('\n'): + return self.STATUS_LED_COLOR_GREEN + if self.STATUS_LED_COLOR_RED in led_cap_list: + with open(os.path.join(LED_PATH, self.psu_red_led_path), 'r') as psu_led: + if '0' != psu_led.read().rstrip('\n'): + return self.STATUS_LED_COLOR_RED + if self.STATUS_LED_COLOR_ORANGE in led_cap_list: + with open(os.path.join(LED_PATH, self.psu_orange_led_path), 'r') as psu_led: + if '0' != psu_led.read().rstrip('\n'): + return self.STATUS_LED_COLOR_RED + except (ValueError, IOError) as e: + raise RuntimeError("Failed to read led status for psu due to {}".format(repr(e))) + + return self.STATUS_LED_COLOR_OFF From 3b5507b7c84cc27cfb9fd5725f0b1b2b38bf7364 Mon Sep 17 00:00:00 2001 From: Stephen Sun Date: Wed, 20 Nov 2019 09:16:33 +0200 Subject: [PATCH 2/6] [sonic_platform]address comments --- .../mlnx-platform-api/sonic_platform/fan.py | 18 +++++++++--------- .../mlnx-platform-api/sonic_platform/psu.py | 14 +++++++------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py b/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py index 0db7f0bce66b..d2e00d43e25c 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py @@ -15,14 +15,14 @@ except ImportError as e: raise ImportError (str(e) + "- required module not found") -LED_ON = 1 -LED_OFF = 0 +LED_ON = '1' +LED_OFF = '0' PWM_MAX = 255 FAN_PATH = "/var/run/hw-management/thermal/" LED_PATH = "/var/run/hw-management/led/" -# fan_dir only exist SPC2 switches +# fan_dir only exist Spectrum 2 switches FAN_DIR = "/var/run/hw-management/system/fan_dir" skus_with_fan_dir = {'ACS-MSN3700', 'ACS-MSN3700C', 'ACS-MSN3800'} @@ -63,7 +63,7 @@ def __init__(self, sku, fan_index, drawer_index = 1, psu_fan = False): def get_direction(self): """ - Retrieves the direction of fan + Retrieves the fan's direction Returns: A string, either FAN_DIRECTION_INTAKE or FAN_DIRECTION_EXHAUST @@ -264,7 +264,7 @@ def set_status_led(self, color): try: if color == self.STATUS_LED_COLOR_GREEN: with open(os.path.join(LED_PATH, self.fan_green_led_path), 'w') as fan_led: - fan_led.write(str(LED_ON)) + fan_led.write(LED_ON) status = True elif color == self.STATUS_LED_COLOR_RED: # Some fan don't support red led but support orange led, in this case we set led to orange @@ -275,7 +275,7 @@ def set_status_led(self, color): else: return False with open(led_path, 'w') as fan_led: - fan_led.write(str(LED_ON)) + fan_led.write(LED_ON) status = True elif color == self.STATUS_LED_COLOR_OFF: if self.STATUS_LED_COLOR_GREEN in led_cap_list: @@ -310,15 +310,15 @@ def get_status_led(self): try: with open(os.path.join(LED_PATH, self.fan_green_led_path), 'r') as fan_led: - if '0' != fan_led.read().rstrip('\n'): + if LED_OFF != fan_led.read().rstrip('\n'): return self.STATUS_LED_COLOR_GREEN if self.STATUS_LED_COLOR_RED in led_cap_list: with open(os.path.join(LED_PATH, self.fan_red_led_path), 'r') as fan_led: - if '0' != fan_led.read().rstrip('\n'): + if LED_OFF != fan_led.read().rstrip('\n'): return self.STATUS_LED_COLOR_RED if self.STATUS_LED_COLOR_ORANGE in led_cap_list: with open(os.path.join(LED_PATH, self.fan_orange_led_path), 'r') as fan_led: - if '0' != fan_led.read().rstrip('\n'): + if LED_OFF != fan_led.read().rstrip('\n'): return self.STATUS_LED_COLOR_RED except (ValueError, IOError) as e: raise RuntimeError("Failed to read led status for fan {} due to {}".format(self.index, repr(e))) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/psu.py b/platform/mellanox/mlnx-platform-api/sonic_platform/psu.py index cca3f0860c63..0e4c3fd50f7a 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/psu.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/psu.py @@ -16,8 +16,8 @@ except ImportError as e: raise ImportError (str(e) + "- required module not found") -LED_ON = 1 -LED_OFF = 0 +LED_ON = '1' +LED_OFF = '0' # Global logger class instance logger = Logger() @@ -223,7 +223,7 @@ def set_status_led(self, color): try: if color == self.STATUS_LED_COLOR_GREEN: with open(os.path.join(LED_PATH, self.psu_green_led_path), 'w') as psu_led: - psu_led.write(str(LED_ON)) + psu_led.write(LED_ON) status = True elif color == self.STATUS_LED_COLOR_RED: # Some fan don't support red led but support orange led, in this case we set led to orange @@ -234,7 +234,7 @@ def set_status_led(self, color): else: return False with open(led_path, 'w') as psu_led: - psu_led.write(str(LED_ON)) + psu_led.write(LED_ON) status = True elif color == self.STATUS_LED_COLOR_OFF: if self.STATUS_LED_COLOR_GREEN in led_cap_list: @@ -269,15 +269,15 @@ def get_status_led(self): try: with open(os.path.join(LED_PATH, self.psu_green_led_path), 'r') as psu_led: - if '0' != psu_led.read().rstrip('\n'): + if LED_OFF != psu_led.read().rstrip('\n'): return self.STATUS_LED_COLOR_GREEN if self.STATUS_LED_COLOR_RED in led_cap_list: with open(os.path.join(LED_PATH, self.psu_red_led_path), 'r') as psu_led: - if '0' != psu_led.read().rstrip('\n'): + if LED_OFF != psu_led.read().rstrip('\n'): return self.STATUS_LED_COLOR_RED if self.STATUS_LED_COLOR_ORANGE in led_cap_list: with open(os.path.join(LED_PATH, self.psu_orange_led_path), 'r') as psu_led: - if '0' != psu_led.read().rstrip('\n'): + if LED_OFF != psu_led.read().rstrip('\n'): return self.STATUS_LED_COLOR_RED except (ValueError, IOError) as e: raise RuntimeError("Failed to read led status for psu due to {}".format(repr(e))) From b50b64f728e49a7ce509f5d5c2e12461182222f0 Mon Sep 17 00:00:00 2001 From: Stephen Sun Date: Thu, 21 Nov 2019 04:48:22 +0200 Subject: [PATCH 3/6] [sonic_platform]address comments --- .../sonic_platform/chassis.py | 19 +++++++++++++++++-- .../mlnx-platform-api/sonic_platform/fan.py | 8 +++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py b/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py index ca17d6291d27..a69c428758ae 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py @@ -14,6 +14,7 @@ from sonic_daemon_base.daemon_base import Logger from os import listdir from os.path import isfile, join + from glob import glob import sys import io import re @@ -33,6 +34,10 @@ HWMGMT_SYSTEM_ROOT = '/var/run/hw-management/system/' +MST_DEVICE_NAME_PATTERN = '/dev/mst/mt[0-9]*_pciconf0' +MST_DEVICE_RE_PATTERN = '/dev/mst/mt([0-9]*)_pciconf0' +CHIP_SPECTRUM1 = '53100' + #reboot cause related definitions REBOOT_CAUSE_ROOT = HWMGMT_SYSTEM_ROOT @@ -87,11 +92,21 @@ def initialize_fan(self): num_of_fan, num_of_drawer = self._extract_num_of_fans_and_fan_drawers() multi_rotor_in_drawer = num_of_fan > num_of_drawer + # Fan's direction is supported on spectrum 1 devices for now + mst_dev_list = glob(MST_DEVICE_NAME_PATTERN) + if not mst_dev_list: + raise RuntimeError("Can't get chip type due to {} not found".format(MST_DEVICE_NAME_PATTERN)) + m = re.search(MST_DEVICE_RE_PATTERN, mst_dev_list[0]) + if m.group(1) == CHIP_SPECTRUM1: + has_fan_dir = True + else: + has_fan_dir = False + for index in range(num_of_fan): if multi_rotor_in_drawer: - fan = Fan(self.sku_name, index, index/2) + fan = Fan(has_fan_dir, index, index/2) else: - fan = Fan(self.sku_name, index, index) + fan = Fan(has_fan_dir, index, index) self._fan_list.append(fan) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py b/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py index d2e00d43e25c..52a0aa1745d1 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py @@ -25,14 +25,12 @@ # fan_dir only exist Spectrum 2 switches FAN_DIR = "/var/run/hw-management/system/fan_dir" -skus_with_fan_dir = {'ACS-MSN3700', 'ACS-MSN3700C', 'ACS-MSN3800'} - class Fan(FanBase): """Platform-specific Fan class""" STATUS_LED_COLOR_ORANGE = "orange" - def __init__(self, sku, fan_index, drawer_index = 1, psu_fan = False): + def __init__(self, has_fan_dir, fan_index, drawer_index = 1, psu_fan = False): # API index is starting from 0, Mellanox platform index is starting from 1 self.index = fan_index + 1 self.drawer_index = drawer_index + 1 @@ -55,7 +53,7 @@ def __init__(self, sku, fan_index, drawer_index = 1, psu_fan = False): self.fan_orange_led_path = "led_fan{}_orange".format(self.drawer_index) self.fan_pwm_path = "pwm1" self.fan_led_cap_path = "led_fan{}_capability".format(self.drawer_index) - if sku in skus_with_fan_dir: + if has_fan_dir: self.fan_dir = FAN_DIR else: self.fan_dir = None @@ -81,7 +79,7 @@ def get_direction(self): 0 stands for reverse, in other words exhaust """ if not self.fan_dir or self.is_psu_fan: - raise NotImplementedError + return self.FAN_DIRECTION_NOT_APPLICABLE try: with open(os.path.join(self.fan_dir), 'r') as fan_dir: From 2a78ca29cf40784000b7a04d7321e5530ed2e2c8 Mon Sep 17 00:00:00 2001 From: Stephen Sun Date: Thu, 21 Nov 2019 10:05:21 +0200 Subject: [PATCH 4/6] [sonic_platform]fix typo --- .../mellanox/mlnx-platform-api/sonic_platform/chassis.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py b/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py index a69c428758ae..de1195a98ee2 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py @@ -36,7 +36,7 @@ MST_DEVICE_NAME_PATTERN = '/dev/mst/mt[0-9]*_pciconf0' MST_DEVICE_RE_PATTERN = '/dev/mst/mt([0-9]*)_pciconf0' -CHIP_SPECTRUM1 = '53100' +CHIP_SPECTRUM1 = '52100' #reboot cause related definitions REBOOT_CAUSE_ROOT = HWMGMT_SYSTEM_ROOT @@ -98,9 +98,9 @@ def initialize_fan(self): raise RuntimeError("Can't get chip type due to {} not found".format(MST_DEVICE_NAME_PATTERN)) m = re.search(MST_DEVICE_RE_PATTERN, mst_dev_list[0]) if m.group(1) == CHIP_SPECTRUM1: - has_fan_dir = True - else: has_fan_dir = False + else: + has_fan_dir = True for index in range(num_of_fan): if multi_rotor_in_drawer: From 59b7fcb12c8bee1e7e5810f41fc1aeea00b3baac Mon Sep 17 00:00:00 2001 From: Stephen Sun Date: Sun, 24 Nov 2019 16:00:14 +0200 Subject: [PATCH 5/6] [sonic_platform]fix typo: fan's direction isn't supported on spectrum 1 for now. --- platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py b/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py index de1195a98ee2..6f637077eb43 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py @@ -92,7 +92,7 @@ def initialize_fan(self): num_of_fan, num_of_drawer = self._extract_num_of_fans_and_fan_drawers() multi_rotor_in_drawer = num_of_fan > num_of_drawer - # Fan's direction is supported on spectrum 1 devices for now + # Fan's direction isn't supported on spectrum 1 devices for now mst_dev_list = glob(MST_DEVICE_NAME_PATTERN) if not mst_dev_list: raise RuntimeError("Can't get chip type due to {} not found".format(MST_DEVICE_NAME_PATTERN)) From 19fd4c6afcbca4f80ad23e257a09917939ecabfa Mon Sep 17 00:00:00 2001 From: Stephen Sun Date: Mon, 25 Nov 2019 08:08:05 +0200 Subject: [PATCH 6/6] [sonic_platform]rename the spectrum chip id --- platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py b/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py index 6f637077eb43..d34245390c59 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py @@ -36,7 +36,7 @@ MST_DEVICE_NAME_PATTERN = '/dev/mst/mt[0-9]*_pciconf0' MST_DEVICE_RE_PATTERN = '/dev/mst/mt([0-9]*)_pciconf0' -CHIP_SPECTRUM1 = '52100' +SPECTRUM1_CHIP_ID = '52100' #reboot cause related definitions REBOOT_CAUSE_ROOT = HWMGMT_SYSTEM_ROOT @@ -97,7 +97,7 @@ def initialize_fan(self): if not mst_dev_list: raise RuntimeError("Can't get chip type due to {} not found".format(MST_DEVICE_NAME_PATTERN)) m = re.search(MST_DEVICE_RE_PATTERN, mst_dev_list[0]) - if m.group(1) == CHIP_SPECTRUM1: + if m.group(1) == SPECTRUM1_CHIP_ID: has_fan_dir = False else: has_fan_dir = True