[Celestica Seastone] fix multi sonic platform issues (#13356)

Why I did it
Fix the following issues for Seastone platform:

- system-health issue: show system-health detail will not complete #9530, Celestica Seastone DX010-C32: show system-health detail fails with 'Chassis' object has no attribute 'initizalize_system_led' #11322
- show platform firmware updates issue: Celestica Seastone DX010-C32: show platform firmware updates #11317
- other platform optimization

How I did it
Modify and optimize the platform implememtation.

How to verify it
Manual run the test commands described in these issues.
This commit is contained in:
Ikki Zhu 2023-01-19 08:27:48 +08:00 committed by GitHub
parent e1f0d7650e
commit eba30ff26f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 12 deletions

View File

@ -1,13 +1,14 @@
{
"chassis": {
"Celestica-DX010-C32": {
"Seastone-DX010": {
"component": {
"CPLD1": {},
"CPLD2": {},
"CPLD3": {},
"CPLD4": {},
"CPLD5": {},
"BIOS": {}
}
}
}
}
}

View File

@ -20,7 +20,7 @@ NUM_FAN_TRAY = 5
NUM_PSU = 2
NUM_THERMAL = 5
NUM_SFP = 32
NUM_COMPONENT = 5
NUM_COMPONENT = 6
RESET_REGISTER = "0x103"
HOST_REBOOT_CAUSE_PATH = "/host/reboot-cause/"
REBOOT_CAUSE_FILE = "reboot-cause.txt"
@ -43,6 +43,7 @@ class Chassis(ChassisBase):
self.__initialize_psu()
self.__initialize_thermals()
self.__initialize_components()
self.__initialize_system_led()
def __initialize_sfp(self):
sfputil_helper = SfpUtilHelper()
@ -85,6 +86,9 @@ class Chassis(ChassisBase):
component = Component(index)
self._component_list.append(component)
def __initialize_system_led(self):
self.set_status_led(self.STATUS_LED_COLOR_GREEN)
def __get_air_flow(self):
air_flow_path = '/usr/share/sonic/device/{}/fan_airflow'.format(
self._api_helper.platform) \
@ -316,6 +320,14 @@ class Chassis(ChassisBase):
"""
return False
def initizalize_system_led(self):
"""
This function is not defined in chassis base class,
system-health command would invoke chassis.initizalize_system_led(),
add this stub function just to let the command sucessfully execute
"""
pass
def set_status_led(self, color):
"""
Sets the state of the PSU status LED
@ -344,7 +356,7 @@ class Chassis(ChassisBase):
"""
status = self._api_helper.read_txt_file(STATUS_LED_PATH)
status_str = {
'255': self.STATUS_LED_COLOR_GREEN,
'1': self.STATUS_LED_COLOR_GREEN,
'0': self.STATUS_LED_COLOR_OFF
}.get(status, None)

View File

@ -24,9 +24,11 @@ CPLD_ADDR_MAPPING = {
}
GETREG_PATH = "/sys/devices/platform/dx010_cpld/getreg"
BIOS_VERSION_PATH = "/sys/class/dmi/id/bios_version"
COMPONENT_NAME_LIST = ["CPLD1", "CPLD2", "CPLD3", "CPLD4", "BIOS"]
COMPONENT_NAME_LIST = ["CPLD1", "CPLD2", "CPLD3", "CPLD4", "CPLD5", "BIOS"]
COMPONENT_DES_LIST = ["Used for managing the CPU",
"Used for managing QSFP+ ports (1-10)", "Used for managing QSFP+ ports (11-20)", "Used for managing QSFP+ ports (22-32)", "Basic Input/Output System"]
"Used for managing QSFP+ ports (1-10)", "Used for managing QSFP+ ports (11-21)",
"Used for misc status and control", "Used for managing QSFP+ ports (22-32)",
"Basic Input/Output System"]
class Component(ComponentBase):

View File

@ -197,7 +197,7 @@ class Psu(PsuBase):
"""
set_status_str = {
self.STATUS_LED_COLOR_GREEN: '1',
self.STATUS_LED_COLOR_GREEN: '255',
self.STATUS_LED_COLOR_OFF: '0'
}.get(color, None)

View File

@ -1,10 +1,8 @@
{
"services_to_ignore": [],
"devices_to_ignore": [
"asic",
"psu.temperature",
"PSU2 Fan",
"PSU1 Fan"
"PSU-1 FAN-1",
"PSU-2 FAN-1"
],
"user_defined_checkers": [],
"polling_interval": 60,
@ -13,4 +11,4 @@
"normal": "green",
"booting": "orange_blink"
}
}
}