From ab4176a1666eb64c5af7a46d059d8db9d1a392b2 Mon Sep 17 00:00:00 2001 From: Sridhar Ravindran Date: Fri, 21 Jun 2019 11:57:23 -0700 Subject: [PATCH 1/9] DELL Platform 2.0 API Infra and Reboot Reason support in Z9100 & S6100 --- dockers/docker-platform-monitor/start.sh.j2 | 6 ++ .../debian/platform-modules-s6100.install | 1 + .../debian/platform-modules-z9100.install | 1 + .../sonic-platform-modules-dell/debian/rules | 12 +++ .../s6100/scripts/s6100_platform.sh | 11 +++ .../s6100/setup.py | 30 +++++++ .../s6100/sonic_platform/__init__.py | 2 + .../s6100/sonic_platform/chassis.py | 79 +++++++++++++++++++ .../z9100/scripts/z9100_platform.sh | 9 +++ .../z9100/setup.py | 1 + .../z9100/sonic_platform/__init__.py | 1 + .../z9100/sonic_platform/chassis.py | 1 + 12 files changed, 154 insertions(+) create mode 100755 platform/broadcom/sonic-platform-modules-dell/s6100/setup.py create mode 100755 platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/__init__.py create mode 100755 platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py create mode 120000 platform/broadcom/sonic-platform-modules-dell/z9100/setup.py create mode 120000 platform/broadcom/sonic-platform-modules-dell/z9100/sonic_platform/__init__.py create mode 120000 platform/broadcom/sonic-platform-modules-dell/z9100/sonic_platform/chassis.py diff --git a/dockers/docker-platform-monitor/start.sh.j2 b/dockers/docker-platform-monitor/start.sh.j2 index 3520ba5894a..9a281164787 100644 --- a/dockers/docker-platform-monitor/start.sh.j2 +++ b/dockers/docker-platform-monitor/start.sh.j2 @@ -37,6 +37,12 @@ if [ -e /usr/share/sonic/platform/fancontrol ]; then supervisorctl start fancontrol fi +# If this platform has a python api wheel file, install it +if [ -e /usr/share/sonic/platform/sonic_platform-1.0-py2-none-any.whl ]; then + # install sonic_platform wheel + pip install /usr/share/sonic/platform/sonic_platform-1.0-py2-none-any.whl +fi + {% if not skip_ledd %} supervisorctl start ledd {% endif %} diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install index eef7c106304..75680668583 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install @@ -4,5 +4,6 @@ common/dell_i2c_utils.sh usr/local/bin common/io_rd_wr.py usr/local/bin common/platform_reboot usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/platform_sensors.py usr/local/bin +s6100/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/sensors usr/bin s6100/systemd/platform-modules-s6100.service etc/systemd/system diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9100.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9100.install index e332f1affdc..afeb04c2a34 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9100.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9100.install @@ -8,6 +8,7 @@ z9100/scripts/z9100_qsfp_monitor.py usr/local/bin z9100/scripts/z9100_preemp_db.py usr/local/bin z9100/scripts/qsfp_monitor usr/local/bin z9100/scripts/sensors usr/bin +z9100/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dell_z9100_c2538-r0 z9100/cfg/z9100-modules.conf etc/modules-load.d z9100/systemd/platform-modules-z9100.service etc/systemd/system z9100/systemd/z9100-qsfp-monitor.service etc/systemd/system diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/rules b/platform/broadcom/sonic-platform-modules-dell/debian/rules index 860e46bf700..7ec14a23f21 100755 --- a/platform/broadcom/sonic-platform-modules-dell/debian/rules +++ b/platform/broadcom/sonic-platform-modules-dell/debian/rules @@ -16,9 +16,15 @@ override_dh_auto_build: if [ $$mod = "s6100" ]; then \ cp $(COMMON_DIR)/dell_pmc.c $(MOD_SRC_DIR)/$${mod}/modules/dell_s6100_lpc.c; \ cp $(COMMON_DIR)/dell_ich.c $(MOD_SRC_DIR)/$${mod}/modules/dell_ich.c; \ + cd $(MOD_SRC_DIR)/$${mod}; \ + python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ + cd $(MOD_SRC_DIR); \ elif [ $$mod = "z9100" ]; then \ cp $(COMMON_DIR)/dell_pmc.c $(MOD_SRC_DIR)/$${mod}/modules/dell_mailbox.c; \ cp $(COMMON_DIR)/dell_ich.c $(MOD_SRC_DIR)/$${mod}/modules/dell_ich.c; \ + cd $(MOD_SRC_DIR)/$${mod}; \ + python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ + cd $(MOD_SRC_DIR); \ fi; \ echo "making man page alias $$mod -> $$mod APIs";\ make -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules; \ @@ -40,9 +46,15 @@ override_dh_clean: if [ $$mod = "s6100" ]; then \ rm -f $(MOD_SRC_DIR)/$${mod}/modules/dell_s6100_lpc.c; \ rm -f $(MOD_SRC_DIR)/$${mod}/modules/dell_ich.c; \ + rm -f $(MOD_SRC_DIR)/$${mod}/modules/*.whl; \ + rm -rf $(MOD_SRC_DIR)/$${mod}/build; \ + rm -rf $(MOD_SRC_DIR)/$${mod}/build/*.egg-info; \ elif [ $$mod = "z9100" ]; then \ rm -f $(MOD_SRC_DIR)/$${mod}/modules/dell_mailbox.c; \ rm -f $(MOD_SRC_DIR)/$${mod}/modules/dell_ich.c; \ + rm -f $(MOD_SRC_DIR)/$${mod}/modules/*.whl; \ + rm -rf $(MOD_SRC_DIR)/$${mod}/build; \ + rm -rf $(MOD_SRC_DIR)/$${mod}/build/*.egg-info; \ fi; \ make -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules clean; \ done) diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_platform.sh b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_platform.sh index 1ac6ce93bc1..3b455a9bf93 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_platform.sh +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_platform.sh @@ -217,6 +217,14 @@ reset_muxes() { io_rd_wr.py --set --val 0xff --offset 0x20b } +install_python_api_package() { + device="/usr/share/sonic/device" + platform=$(/usr/local/bin/sonic-cfggen -H -v DEVICE_METADATA.localhost.platform) + + rv=$(pip install $device/$platform/sonic_platform-1.0-py2-none-any.whl) + echo "pip install result = $rv" +} + init_devnum if [[ "$1" == "init" ]]; then @@ -235,6 +243,9 @@ if [[ "$1" == "init" ]]; then switch_board_qsfp "new_device" switch_board_qsfp_lpmode "disable" xcvr_presence_interrupts "enable" + + install_python_api_package + elif [[ "$1" == "deinit" ]]; then xcvr_presence_interrupts "disable" switch_board_sfp "delete_device" diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/setup.py b/platform/broadcom/sonic-platform-modules-dell/s6100/setup.py new file mode 100755 index 00000000000..eb95775c667 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/setup.py @@ -0,0 +1,30 @@ +from setuptools import setup + +setup( + name='sonic-platform', + version='1.0', + description='SONiC platform API implementation on DellEmc Platforms', + license='Apache 2.0', + author='SONiC Team', + author_email='linuxnetdev@microsoft.com', + url='https://github.com/Azure/sonic-buildimage', + maintainer='DellEMC', + maintainer_email='dell-sonic@dell.com', + packages=[ + 'sonic_platform', + ], + classifiers=[ + 'Development Status :: 3 - Alpha', + 'Environment :: Plugins', + 'Intended Audience :: Developers', + 'Intended Audience :: Information Technology', + 'Intended Audience :: System Administrators', + 'License :: OSI Approved :: Apache Software License', + 'Natural Language :: English', + 'Operating System :: POSIX :: Linux', + 'Programming Language :: Python :: 2.7', + 'Topic :: Utilities', + ], + keywords='sonic SONiC platform PLATFORM', +) + diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/__init__.py b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/__init__.py new file mode 100755 index 00000000000..139597f9cb0 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/__init__.py @@ -0,0 +1,2 @@ + + diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py new file mode 100755 index 00000000000..16f2d83fca9 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python + +############################################################################# +# DELLEMC +# +# Module contains an implementation of SONiC Platform Base API and +# provides the platform information +# +############################################################################# + +try: + import os + from sonic_platform_base.chassis_base import ChassisBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class Chassis(ChassisBase): + """ + DELLEMC Platform-specific Chassis class + """ + + HWMON_DIR = "/sys/devices/platform/SMF.512/hwmon/" + HWMON_NODE = os.listdir(HWMON_DIR)[0] + MAILBOX_DIR = HWMON_DIR + HWMON_NODE + + reset_reason_dict = {} + reset_reason_dict[11] = [(ChassisBase.REBOOT_CAUSE_POWER_LOSS)] + reset_reason_dict[33] = [(ChassisBase.REBOOT_CAUSE_WATCHDOG)] + reset_reason_dict[44] = [(ChassisBase.REBOOT_CAUSE_NON_HARDWARE)] + reset_reason_dict[55] = [(ChassisBase.REBOOT_CAUSE_NON_HARDWARE)] + + power_reason_dict = {} + power_reason_dict[11] = [(ChassisBase.REBOOT_CAUSE_POWER_LOSS)] + power_reason_dict[22] = [(ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_CPU)] + power_reason_dict[33] = [(ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_ASIC)] + power_reason_dict[44] = [(ChassisBase.REBOOT_CAUSE_INSUFFICIENT_FAN)] + + def __init__(self): + ChassisBase.__init__(self) + + def get_pmc_register(self, reg_name): + rv = 'ERR' + mb_reg_file = self.MAILBOX_DIR+'/'+reg_name + + if (not os.path.isfile(mb_reg_file)): + print mb_reg_file, 'not found !' + return rv + + try: + with open(mb_reg_file, 'r') as fd: + rv = fd.read() + except Exception as error: + logging.error("Unable to open ", mb_reg_file, "file !") + + rv = rv.rstrip('\r\n') + rv = rv.lstrip(" ") + return rv + + def get_reboot_cause(self): + """ + Retrieves the cause of the previous reboot + """ + reset_reason = int(self.get_pmc_register('smf_reset_reason')) + power_reason = int(self.get_pmc_register('smf_poweron_reason')) + + # Reset_Reason = 11 ==> PowerLoss + # So return the reboot reason from Last Power_Reason Dictionary + # If Reset_Reason is not 11 return from Reset_Reason dictionary + # Also check if power_reason, reset_reason are valid values by + # checking key presence in dictionary else return empty tuple + if (reset_reason == 11): + if (power_reason in self.power_reason_dict): + return self.power_reason_dict[power_reason] + else: + if (reset_reason in self.reset_reason_dict): + return self.reset_reason_dict[reset_reason] + return ((),) + diff --git a/platform/broadcom/sonic-platform-modules-dell/z9100/scripts/z9100_platform.sh b/platform/broadcom/sonic-platform-modules-dell/z9100/scripts/z9100_platform.sh index 3cc48e52110..a98da8ff2fb 100755 --- a/platform/broadcom/sonic-platform-modules-dell/z9100/scripts/z9100_platform.sh +++ b/platform/broadcom/sonic-platform-modules-dell/z9100/scripts/z9100_platform.sh @@ -200,6 +200,14 @@ init_switch_port_led() { } +install_python_api_package() { + device="/usr/share/sonic/device" + platform=$(/usr/local/bin/sonic-cfggen -H -v DEVICE_METADATA.localhost.platform) + + rv=$(pip install $device/$platform/sonic_platform-1.0-py2-none-any.whl) + echo "pip install result = $rv" +} + init_devnum if [[ "$1" == "init" ]]; then @@ -220,6 +228,7 @@ if [[ "$1" == "init" ]]; then #Copy led_proc_init.soc init_switch_port_led + install_python_api_package value=0x0 echo $value > /sys/class/i2c-adapter/i2c-14/14-003e/qsfp_lpmode diff --git a/platform/broadcom/sonic-platform-modules-dell/z9100/setup.py b/platform/broadcom/sonic-platform-modules-dell/z9100/setup.py new file mode 120000 index 00000000000..4f6de9941d9 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/z9100/setup.py @@ -0,0 +1 @@ +../s6100/setup.py \ No newline at end of file diff --git a/platform/broadcom/sonic-platform-modules-dell/z9100/sonic_platform/__init__.py b/platform/broadcom/sonic-platform-modules-dell/z9100/sonic_platform/__init__.py new file mode 120000 index 00000000000..9972084d4df --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/z9100/sonic_platform/__init__.py @@ -0,0 +1 @@ +../../s6100/sonic_platform/__init__.py \ No newline at end of file diff --git a/platform/broadcom/sonic-platform-modules-dell/z9100/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/z9100/sonic_platform/chassis.py new file mode 120000 index 00000000000..06fba1ae4f6 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/z9100/sonic_platform/chassis.py @@ -0,0 +1 @@ +../../s6100/sonic_platform/chassis.py \ No newline at end of file From 25568fa5f116b1a3a8fd0cc5c536086e319bbf6f Mon Sep 17 00:00:00 2001 From: Sridhar Ravindran Date: Mon, 24 Jun 2019 06:54:30 -0700 Subject: [PATCH 2/9] Addressing Review Comments for DELL Platform 2.0 API Infra --- dockers/docker-platform-monitor/start.sh.j2 | 20 +++++++++++++++---- .../s6100/sonic_platform/chassis.py | 6 ++++-- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/dockers/docker-platform-monitor/start.sh.j2 b/dockers/docker-platform-monitor/start.sh.j2 index 9a281164787..44f8f159f61 100644 --- a/dockers/docker-platform-monitor/start.sh.j2 +++ b/dockers/docker-platform-monitor/start.sh.j2 @@ -37,10 +37,22 @@ if [ -e /usr/share/sonic/platform/fancontrol ]; then supervisorctl start fancontrol fi -# If this platform has a python api wheel file, install it -if [ -e /usr/share/sonic/platform/sonic_platform-1.0-py2-none-any.whl ]; then - # install sonic_platform wheel - pip install /usr/share/sonic/platform/sonic_platform-1.0-py2-none-any.whl + +# If the sonic-platform package is not installed, try to install it +pip show sonic-platform > /dev/null 2>&1 +if [ $? -ne 0 ]; then + SONIC_PLATFORM_WHEEL="/usr/share/sonic/platform/sonic_platform-1.0-py2-none-any.whl" + echo "sonic-platform package not installed, attempting to install..." + if [ -e ${SONIC_PLATFORM_WHEEL} ]; then + pip install ${SONIC_PLATFORM_WHEEL} + if [ $? -eq 0 ]; then + echo "Successfully installed ${SONIC_PLATFORM_WHEEL}" + else + echo "Error: Failed to install ${SONIC_PLATFORM_WHEEL}" + fi + else + echo "Error: Unable to locate ${SONIC_PLATFORM_WHEEL}" + fi fi {% if not skip_ledd %} diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py index 16f2d83fca9..538d2ad5bac 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py @@ -68,12 +68,14 @@ def get_reboot_cause(self): # So return the reboot reason from Last Power_Reason Dictionary # If Reset_Reason is not 11 return from Reset_Reason dictionary # Also check if power_reason, reset_reason are valid values by - # checking key presence in dictionary else return empty tuple + # checking key presence in dictionary else return + # REBOOT_CAUSE_NON_HARDWARE as default if (reset_reason == 11): if (power_reason in self.power_reason_dict): return self.power_reason_dict[power_reason] else: if (reset_reason in self.reset_reason_dict): return self.reset_reason_dict[reset_reason] - return ((),) + + return [(ChassisBase.REBOOT_CAUSE_NON_HARDWARE)] From bf5485b250e6202f2924dddbd1c8d1db62cf8492 Mon Sep 17 00:00:00 2001 From: Sridhar Ravindran Date: Mon, 24 Jun 2019 07:13:21 -0700 Subject: [PATCH 3/9] Addressing Review Comments for DELL Platform 2.0 API Infra --- .../s6100/sonic_platform/chassis.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py index 538d2ad5bac..b34777f2238 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py @@ -69,7 +69,8 @@ def get_reboot_cause(self): # If Reset_Reason is not 11 return from Reset_Reason dictionary # Also check if power_reason, reset_reason are valid values by # checking key presence in dictionary else return - # REBOOT_CAUSE_NON_HARDWARE as default + # REBOOT_CAUSE_HARDWARE_OTHER as the Power_Reason and Reset_Reason + # registers returned invalid data if (reset_reason == 11): if (power_reason in self.power_reason_dict): return self.power_reason_dict[power_reason] @@ -77,5 +78,5 @@ def get_reboot_cause(self): if (reset_reason in self.reset_reason_dict): return self.reset_reason_dict[reset_reason] - return [(ChassisBase.REBOOT_CAUSE_NON_HARDWARE)] + return [(ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Invalid Reason")] From 2afdbbfa52191fa43954cc264b86eb84b83407f7 Mon Sep 17 00:00:00 2001 From: Sridhar Ravindran Date: Tue, 25 Jun 2019 09:07:19 -0700 Subject: [PATCH 4/9] Addressing Review comments --- .../sonic-platform-modules-dell/s6100/sonic_platform/chassis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py index b34777f2238..83ba6f75b00 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py @@ -78,5 +78,5 @@ def get_reboot_cause(self): if (reset_reason in self.reset_reason_dict): return self.reset_reason_dict[reset_reason] - return [(ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Invalid Reason")] + return [(ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER)] From f49e1f311564ef9d927865545edf4d871c910770 Mon Sep 17 00:00:00 2001 From: Sridhar Ravindran Date: Tue, 25 Jun 2019 19:50:58 -0700 Subject: [PATCH 5/9] Addressing review comments, Return string instead of tuple --- .../s6100/sonic_platform/chassis.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py index 83ba6f75b00..e030556bc0c 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py @@ -25,16 +25,16 @@ class Chassis(ChassisBase): MAILBOX_DIR = HWMON_DIR + HWMON_NODE reset_reason_dict = {} - reset_reason_dict[11] = [(ChassisBase.REBOOT_CAUSE_POWER_LOSS)] - reset_reason_dict[33] = [(ChassisBase.REBOOT_CAUSE_WATCHDOG)] - reset_reason_dict[44] = [(ChassisBase.REBOOT_CAUSE_NON_HARDWARE)] - reset_reason_dict[55] = [(ChassisBase.REBOOT_CAUSE_NON_HARDWARE)] + reset_reason_dict[11] = ChassisBase.REBOOT_CAUSE_POWER_LOSS + reset_reason_dict[33] = ChassisBase.REBOOT_CAUSE_WATCHDOG + reset_reason_dict[44] = ChassisBase.REBOOT_CAUSE_NON_HARDWARE + reset_reason_dict[55] = ChassisBase.REBOOT_CAUSE_NON_HARDWARE power_reason_dict = {} - power_reason_dict[11] = [(ChassisBase.REBOOT_CAUSE_POWER_LOSS)] - power_reason_dict[22] = [(ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_CPU)] - power_reason_dict[33] = [(ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_ASIC)] - power_reason_dict[44] = [(ChassisBase.REBOOT_CAUSE_INSUFFICIENT_FAN)] + power_reason_dict[11] = ChassisBase.REBOOT_CAUSE_POWER_LOSS + power_reason_dict[22] = ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_CPU + power_reason_dict[33] = ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_ASIC + power_reason_dict[44] = ChassisBase.REBOOT_CAUSE_INSUFFICIENT_FAN def __init__(self): ChassisBase.__init__(self) @@ -78,5 +78,5 @@ def get_reboot_cause(self): if (reset_reason in self.reset_reason_dict): return self.reset_reason_dict[reset_reason] - return [(ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER)] + return ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER From 65011c60acc74ff7d01322603339fd0a654c4dce Mon Sep 17 00:00:00 2001 From: Sridhar Ravindran Date: Tue, 25 Jun 2019 19:58:28 -0700 Subject: [PATCH 6/9] Reverting back to returning tuple --- .../s6100/sonic_platform/chassis.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py index e030556bc0c..b34777f2238 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py @@ -25,16 +25,16 @@ class Chassis(ChassisBase): MAILBOX_DIR = HWMON_DIR + HWMON_NODE reset_reason_dict = {} - reset_reason_dict[11] = ChassisBase.REBOOT_CAUSE_POWER_LOSS - reset_reason_dict[33] = ChassisBase.REBOOT_CAUSE_WATCHDOG - reset_reason_dict[44] = ChassisBase.REBOOT_CAUSE_NON_HARDWARE - reset_reason_dict[55] = ChassisBase.REBOOT_CAUSE_NON_HARDWARE + reset_reason_dict[11] = [(ChassisBase.REBOOT_CAUSE_POWER_LOSS)] + reset_reason_dict[33] = [(ChassisBase.REBOOT_CAUSE_WATCHDOG)] + reset_reason_dict[44] = [(ChassisBase.REBOOT_CAUSE_NON_HARDWARE)] + reset_reason_dict[55] = [(ChassisBase.REBOOT_CAUSE_NON_HARDWARE)] power_reason_dict = {} - power_reason_dict[11] = ChassisBase.REBOOT_CAUSE_POWER_LOSS - power_reason_dict[22] = ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_CPU - power_reason_dict[33] = ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_ASIC - power_reason_dict[44] = ChassisBase.REBOOT_CAUSE_INSUFFICIENT_FAN + power_reason_dict[11] = [(ChassisBase.REBOOT_CAUSE_POWER_LOSS)] + power_reason_dict[22] = [(ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_CPU)] + power_reason_dict[33] = [(ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_ASIC)] + power_reason_dict[44] = [(ChassisBase.REBOOT_CAUSE_INSUFFICIENT_FAN)] def __init__(self): ChassisBase.__init__(self) @@ -78,5 +78,5 @@ def get_reboot_cause(self): if (reset_reason in self.reset_reason_dict): return self.reset_reason_dict[reset_reason] - return ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER + return [(ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Invalid Reason")] From 80a889b9d6479e135242fe9b90160402efb9803e Mon Sep 17 00:00:00 2001 From: Sridhar Ravindran Date: Fri, 28 Jun 2019 20:27:38 -0700 Subject: [PATCH 7/9] Address Review Comments : Return the reboot reason as tuple instead of list --- .../s6100/sonic_platform/chassis.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py index b34777f2238..70566c1874e 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py @@ -25,16 +25,16 @@ class Chassis(ChassisBase): MAILBOX_DIR = HWMON_DIR + HWMON_NODE reset_reason_dict = {} - reset_reason_dict[11] = [(ChassisBase.REBOOT_CAUSE_POWER_LOSS)] - reset_reason_dict[33] = [(ChassisBase.REBOOT_CAUSE_WATCHDOG)] - reset_reason_dict[44] = [(ChassisBase.REBOOT_CAUSE_NON_HARDWARE)] - reset_reason_dict[55] = [(ChassisBase.REBOOT_CAUSE_NON_HARDWARE)] + reset_reason_dict[11] = (ChassisBase.REBOOT_CAUSE_POWER_LOSS) + reset_reason_dict[33] = (ChassisBase.REBOOT_CAUSE_WATCHDOG) + reset_reason_dict[44] = (ChassisBase.REBOOT_CAUSE_NON_HARDWARE) + reset_reason_dict[55] = (ChassisBase.REBOOT_CAUSE_NON_HARDWARE) power_reason_dict = {} - power_reason_dict[11] = [(ChassisBase.REBOOT_CAUSE_POWER_LOSS)] - power_reason_dict[22] = [(ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_CPU)] - power_reason_dict[33] = [(ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_ASIC)] - power_reason_dict[44] = [(ChassisBase.REBOOT_CAUSE_INSUFFICIENT_FAN)] + power_reason_dict[11] = (ChassisBase.REBOOT_CAUSE_POWER_LOSS) + power_reason_dict[22] = (ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_CPU) + power_reason_dict[33] = (ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_ASIC) + power_reason_dict[44] = (ChassisBase.REBOOT_CAUSE_INSUFFICIENT_FAN) def __init__(self): ChassisBase.__init__(self) @@ -78,5 +78,5 @@ def get_reboot_cause(self): if (reset_reason in self.reset_reason_dict): return self.reset_reason_dict[reset_reason] - return [(ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Invalid Reason")] + return (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Invalid Reason") From acfc333c64fa7cee46e181d444ef717c3b53fc4f Mon Sep 17 00:00:00 2001 From: Sridhar Ravindran Date: Mon, 1 Jul 2019 18:34:45 -0700 Subject: [PATCH 8/9] Address review Comments, Removed paranthesis and returned None for tuple --- .../s6100/sonic_platform/chassis.py | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py index 70566c1874e..6914c3cf269 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py @@ -25,16 +25,16 @@ class Chassis(ChassisBase): MAILBOX_DIR = HWMON_DIR + HWMON_NODE reset_reason_dict = {} - reset_reason_dict[11] = (ChassisBase.REBOOT_CAUSE_POWER_LOSS) - reset_reason_dict[33] = (ChassisBase.REBOOT_CAUSE_WATCHDOG) - reset_reason_dict[44] = (ChassisBase.REBOOT_CAUSE_NON_HARDWARE) - reset_reason_dict[55] = (ChassisBase.REBOOT_CAUSE_NON_HARDWARE) + reset_reason_dict[11] = ChassisBase.REBOOT_CAUSE_POWER_LOSS + reset_reason_dict[33] = ChassisBase.REBOOT_CAUSE_WATCHDOG + reset_reason_dict[44] = ChassisBase.REBOOT_CAUSE_NON_HARDWARE + reset_reason_dict[55] = ChassisBase.REBOOT_CAUSE_NON_HARDWARE power_reason_dict = {} - power_reason_dict[11] = (ChassisBase.REBOOT_CAUSE_POWER_LOSS) - power_reason_dict[22] = (ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_CPU) - power_reason_dict[33] = (ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_ASIC) - power_reason_dict[44] = (ChassisBase.REBOOT_CAUSE_INSUFFICIENT_FAN) + power_reason_dict[11] = ChassisBase.REBOOT_CAUSE_POWER_LOSS + power_reason_dict[22] = ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_CPU + power_reason_dict[33] = ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_ASIC + power_reason_dict[44] = ChassisBase.REBOOT_CAUSE_INSUFFICIENT_FAN def __init__(self): ChassisBase.__init__(self) @@ -73,10 +73,10 @@ def get_reboot_cause(self): # registers returned invalid data if (reset_reason == 11): if (power_reason in self.power_reason_dict): - return self.power_reason_dict[power_reason] + return (self.power_reason_dict[power_reason], None) else: if (reset_reason in self.reset_reason_dict): - return self.reset_reason_dict[reset_reason] + return (self.reset_reason_dict[reset_reason], None) return (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Invalid Reason") From 0f7a5b010564a047c490c4ba436f5ad397ba2d98 Mon Sep 17 00:00:00 2001 From: Sridhar Ravindran Date: Tue, 2 Jul 2019 11:42:26 -0700 Subject: [PATCH 9/9] Renamed REBOOT_CAUSE_INSUFFICIENT_FAN to REBOOT_CAUSE_INSUFFICIENT_FAN_SPEED --- .../sonic-platform-modules-dell/s6100/sonic_platform/chassis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py index 6914c3cf269..6245f8efdc0 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/sonic_platform/chassis.py @@ -34,7 +34,7 @@ class Chassis(ChassisBase): power_reason_dict[11] = ChassisBase.REBOOT_CAUSE_POWER_LOSS power_reason_dict[22] = ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_CPU power_reason_dict[33] = ChassisBase.REBOOT_CAUSE_THERMAL_OVERLOAD_ASIC - power_reason_dict[44] = ChassisBase.REBOOT_CAUSE_INSUFFICIENT_FAN + power_reason_dict[44] = ChassisBase.REBOOT_CAUSE_INSUFFICIENT_FAN_SPEED def __init__(self): ChassisBase.__init__(self)