address review comments

This commit is contained in:
Stephen Sun 2019-06-26 14:17:25 +03:00
parent 71f16a9164
commit 4a37250f79
2 changed files with 35 additions and 28 deletions

View File

@ -17,12 +17,13 @@ try:
from sonic_platform.fan import FAN_PATH
from sonic_platform.sfp import SFP
from sonic_platform.watchdog import get_watchdog
from sonic_platform.eeprom import Eeprom
from eeprom import Eeprom
from os import listdir
from os.path import isfile, join
import io
import re
import subprocess
import syslog
except ImportError as e:
raise ImportError (str(e) + "- required module not found")
@ -45,19 +46,24 @@ REBOOT_CAUSE_MLNX_FIRMWARE_RESET = 'reset_fw_reset'
REBOOT_CAUSE_FILE_LENGTH = 1
REBOOT_DUE_TO_THIS_FILE = '1'
CPLD_VERSION_ROOT = HWMGMT_SYSTEM_ROOT
CPLD1_VERSION_FILE = 'cpld1_version'
CPLD2_VERSION_FILE = 'cpld2_version'
CPLD_VERSION_MAX_LENGTH = 4
FIRMWARE_VERSION_COMMAND = 'mlxfwmanager --query'
BIOS_VERSION_COMMAND = 'dmidecode -t 11'
FW_QUERY_VERSION_COMMAND = 'mlxfwmanager --query'
BIOS_QUERY_VERSION_COMMAND = 'dmidecode -t 11'
PREVIOUS_REBOOT_CAUSE_FILE = "/host/reboot-cause/previous-reboot-cause.txt"
PREVIOUS_REBOOT_CAUSE_MAX_LENGTH = 100
REBOOT_CAUSE_FILE_USER_REBOOT = "/host/reboot-cause/previous-reboot-cause.txt"
REBOOT_CAUSE_USER_REBOOT_MAX_LENGTH = 100
SYSLOG_IDENTIFIER = "mlnx-chassis"
def log_warning(msg):
syslog.openlog(SYSLOG_IDENTIFIER)
syslog.syslog(syslog.LOG_WARNING, msg)
syslog.closelog()
# magic code defnition for port number, qsfp port position of each hwsku
# port_position_tuple = (PORT_START, QSFP_PORT_START, PORT_END, PORT_IN_BLOCK, EEPROM_OFFSET)
@ -163,13 +169,14 @@ class Chassis(ChassisBase):
"""
Read a generic file, returns the contents of the file
"""
r = ''
result = ''
try:
f = io.open(filename)
r = f.read(len)
f.close()
return r
fileobj = io.open(filename)
result = fileobj.read(len)
fileobj.close()
return result
except:
log_warning("Fail to read file {}, maybe it doesn't exist".format(filename))
return ''
def _verify_reboot_cause(self, filename):
@ -204,7 +211,7 @@ class Chassis(ChassisBase):
if self._verify_reboot_cause(REBOOT_CAUSE_MLNX_FIRMWARE_RESET):
minor_cause = "Reset by ASIC firmware"
else:
reboot_by_user = self._read_generic_file(PREVIOUS_REBOOT_CAUSE_FILE, PREVIOUS_REBOOT_CAUSE_MAX_LENGTH)
reboot_by_user = self._read_generic_file(REBOOT_CAUSE_FILE_USER_REBOOT, REBOOT_CAUSE_USER_REBOOT_MAX_LENGTH)
if '' != reboot_by_user:
major_cause = self.REBOOT_CAUSE_NON_HARDWARE
minor_cause = reboot_by_user
@ -214,7 +221,7 @@ class Chassis(ChassisBase):
def _get_cpld_version(self):
cpld1_version = self._read_generic_file(join(CPLD_VERSION_ROOT, CPLD1_VERSION_FILE), CPLD_VERSION_MAX_LENGTH)
cpld2_version = self._read_generic_file(join(CPLD_VERSION_ROOT, CPLD2_VERSION_FILE), CPLD_VERSION_MAX_LENGTH)
return "cpld1 version: " + cpld1_version.rstrip('\n') + " cpld 2 version: " + cpld2_version.rstrip('\n')
return "cpld1 version: " + cpld1_version.rstrip('\n') + " cpld2 version: " + cpld2_version.rstrip('\n')
def _get_command_result(self, cmdline):
try:
@ -252,7 +259,7 @@ class Chassis(ChassisBase):
By using regular expression '(Versions:.*\n[\s]+FW[\s]+)([\S]+)',
we can extrace the version which is marked with *** in the above context
"""
fw_ver_str = self._get_command_result(FIRMWARE_VERSION_COMMAND)
fw_ver_str = self._get_command_result(FW_QUERY_VERSION_COMMAND)
try:
m = re.search('(Versions:.*\n[\s]+FW[\s]+)([\S]+)', fw_ver_str)
result = m.group(2)
@ -277,7 +284,7 @@ class Chassis(ChassisBase):
By using regular expression 'OEM[\s]*Strings\n[\s]*String[\s]*1:[\s]*([0-9a-zA-Z_\.]*)'
we can extrace the version string which is marked with * in the above context
"""
bios_ver_str = self._get_command_result(BIOS_VERSION_COMMAND)
bios_ver_str = self._get_command_result(BIOS_QUERY_VERSION_COMMAND)
try:
m = re.search('OEM[\s]*Strings\n[\s]*String[\s]*1:[\s]*([0-9a-zA-Z_\.]*)', bios_ver_str)
result = m.group(1)

View File

@ -34,7 +34,7 @@ CACHE_FILE = 'syseeprom_cache'
EEPROM_SYMLINK = "/var/run/hw-management/eeprom/vpd_info"
class Eeprom(eeprom_tlvinfo.TlvInfoDecoder):
RETRIES = 5
RETRIES = 3
EEPROM_DECODE_HEADLINES = 6
EEPROM_DECODE_MAXITEM = 3
EEPROM_DECODE_OFFSET = 0
@ -70,26 +70,26 @@ class Eeprom(eeprom_tlvinfo.TlvInfoDecoder):
except:
pass
e = self.read_eeprom()
if e is None :
eeprom = self.read_eeprom()
if eeprom is None :
return 0
try:
self.update_cache(e)
self.update_cache(eeprom)
except:
pass
self._base_mac = self.mgmtaddrstr(e)
self._base_mac = self.mgmtaddrstr(eeprom)
if self._base_mac == None:
self._base_mac = "Undefined."
self._serial_str = self.serial_number_str(e)
self._serial_str = self.serial_number_str(eeprom)
if self._serial_str == None:
self._serial_str = "Undefined."
original_stdout = sys.stdout
sys.stdout = StringIO()
self.decode_eeprom(e)
self.decode_eeprom(eeprom)
decode_output = sys.stdout.getvalue()
sys.stdout = original_stdout
@ -99,12 +99,12 @@ class Eeprom(eeprom_tlvinfo.TlvInfoDecoder):
lines = lines[self.EEPROM_DECODE_HEADLINES:]
self._eeprom_info_dict = dict()
for l in lines:
for line in lines:
try:
m = re.search('(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+)', l)
if m is not None:
idx = m.group(1)
value = m.group(3).rstrip('\0')
match = re.search('(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+)', line)
if match is not None:
idx = match.group(1)
value = match.group(3).rstrip('\0')
self._eeprom_info_dict[idx] = value
except: