From b7cc3949c6313e0ff60803a66dfcd6f4137dd3f3 Mon Sep 17 00:00:00 2001 From: gengankarthik Date: Tue, 18 Jun 2019 11:34:30 -0700 Subject: [PATCH 1/4] DellEmc(Z9264f): Bug fix in show platform psustatus cli --- .../x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py b/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py index 88023d9d5a10..51789e99cff8 100644 --- a/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py +++ b/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py @@ -7,10 +7,12 @@ import os.path import logging import commands +import sys Z9264F_MAX_PSUS = 2 -IPMI_SENSOR_DATA = "docker exec -it pmon ipmitool sdr list" +IPMI_PSU_DATA = "docker exec -it pmon ipmitool sdr list" +IPMI_PSU_DATA_DOCKER = "ipmitool sdr list" PSU_PRESENCE = "PSU{0}_state" # Use this for older firmware # PSU_PRESENCE="PSU{0}_prsnt" @@ -35,8 +37,10 @@ def get_pmc_register(self, reg_name): status = 1 global ipmi_sdr_list ipmi_dev_node = "/dev/pmi0" - - ipmi_cmd = IPMI_SENSOR_DATA + ipmi_cmd = IPMI_PSU_DATA + + if os.path.exists("/.dockerenv"): + ipmi_cmd = IPMI_PSU_DATA_DOCKER status, ipmi_sdr_list = commands.getstatusoutput(ipmi_cmd) if status: From 2be46d649c3c123f29db7f673dfc73ed69ad65c3 Mon Sep 17 00:00:00 2001 From: gengankarthik Date: Sat, 22 Jun 2019 06:57:22 -0700 Subject: [PATCH 2/4] DellEmc(Z9264f): Bug fix in show platform psustatus cli --- .../x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py b/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py index 51789e99cff8..fc3bfdddc7a6 100644 --- a/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py +++ b/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py @@ -30,6 +30,10 @@ class PsuUtil(PsuBase): def __init__(self): PsuBase.__init__(self) + + def isDockerEnv(self): + num_docker = open('/proc/self/cgroup', 'r').read().count(":/docker") + return num_docker # Fetch a BMC register def get_pmc_register(self, reg_name): @@ -38,9 +42,10 @@ def get_pmc_register(self, reg_name): global ipmi_sdr_list ipmi_dev_node = "/dev/pmi0" ipmi_cmd = IPMI_PSU_DATA - - if os.path.exists("/.dockerenv"): + dockerenv = self.isDockerEnv() + if dockerenv > 0: ipmi_cmd = IPMI_PSU_DATA_DOCKER + status, ipmi_sdr_list = commands.getstatusoutput(ipmi_cmd) if status: From 092b3883ed8f51b7c0cf004be1aa9660e0da9d08 Mon Sep 17 00:00:00 2001 From: gengankarthik Date: Mon, 24 Jun 2019 20:08:50 -0700 Subject: [PATCH 3/4] DellEmc(Z9264f): Bug fix in show platform psustatus cli --- .../plugins/psuutil.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py b/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py index fc3bfdddc7a6..d2892cf3dceb 100644 --- a/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py +++ b/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py @@ -30,10 +30,13 @@ class PsuUtil(PsuBase): def __init__(self): PsuBase.__init__(self) - + def isDockerEnv(self): num_docker = open('/proc/self/cgroup', 'r').read().count(":/docker") - return num_docker + if num_docker > 0: + return True + else: + return False # Fetch a BMC register def get_pmc_register(self, reg_name): @@ -43,7 +46,7 @@ def get_pmc_register(self, reg_name): ipmi_dev_node = "/dev/pmi0" ipmi_cmd = IPMI_PSU_DATA dockerenv = self.isDockerEnv() - if dockerenv > 0: + if dockerenv == True: ipmi_cmd = IPMI_PSU_DATA_DOCKER status, ipmi_sdr_list = commands.getstatusoutput(ipmi_cmd) @@ -57,7 +60,7 @@ def get_pmc_register(self, reg_name): output = item.strip() if not output: - print('\nFailed to fetch: ' + reg_name + ' sensor ') + print('\nFailed to fetch: ' + reg_name + ' sensor ') sys.exit(0) output = output.split('|')[1] @@ -65,8 +68,6 @@ def get_pmc_register(self, reg_name): logging.basicConfig(level=logging.DEBUG) return output - - def get_num_psus(self): """ Retrieves the number of PSUs available on the device @@ -83,11 +84,10 @@ def get_psu_status(self, index): :return: Boolean, True if PSU is operating properly, False if PSU is\ faulty """ - #Until psu_status is implemented this is hardcoded temporarily + # Until psu_status is implemented this is hardcoded temporarily status = 1 return status - def get_psu_presence(self, index): """ @@ -98,9 +98,10 @@ def get_psu_presence(self, index): """ status = 0 psu_reg_name = PSU_PRESENCE.format(index) - psu_status = int(self.get_pmc_register(psu_reg_name),16) + psu_status = int(self.get_pmc_register(psu_reg_name), 16) if (psu_status != 'ERR'): # Check for PSU presence if (psu_status): status = 1 return status + From 873b4a210db5feae48ab8488f05e97984e7404a0 Mon Sep 17 00:00:00 2001 From: gengankarthik Date: Wed, 26 Jun 2019 02:38:57 -0700 Subject: [PATCH 4/4] DellEmc(Z9264f): Bug fix in show platform psustatus cli --- device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py b/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py index d2892cf3dceb..c72a2d6675b3 100644 --- a/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py +++ b/device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py @@ -84,7 +84,7 @@ def get_psu_status(self, index): :return: Boolean, True if PSU is operating properly, False if PSU is\ faulty """ - # Until psu_status is implemented this is hardcoded temporarily + # Until psu_status is implemented this is hardcoded temporarily status = 1 return status