sonic-buildimage/device/cig/x86_64-cig_cs6436_56p-r0/plugins/psuutil.py

93 lines
2.5 KiB
Python
Raw Normal View History

[Devices] Add new device CIG CS6436-56P (#2587) * Add new device CIG CS6436-56P * Delete minigraph.xml It isn't necessary in the current system, just delete it * Update qos.json.j2 * Update port_config.ini Add the speed column. The cmd to show interface status as: root@switch1:~# show interface status Interface Lanes Speed MTU Alias Oper Admin Type Asym PFC ----------- --------------- ------- ----- ------------ ------ ------- ------ ---------- Ethernet0 8 25G 9100 Ethernet1/1 up up SFP N/A Ethernet1 9 25G 9100 Ethernet2/1 up up SFP N/A Ethernet2 10 25G 9100 Ethernet3/1 down down N/A N/A Ethernet3 11 25G 9100 Ethernet4/1 down down N/A N/A Ethernet4 12 25G 9100 Ethernet5/1 down down N/A N/A Ethernet5 13 25G 9100 Ethernet6/1 down down N/A N/A Ethernet6 14 25G 9100 Ethernet7/1 down down N/A N/A Ethernet7 15 25G 9100 Ethernet8/1 down down N/A N/A Ethernet8 16 25G 9100 Ethernet9/1 down down N/A N/A Ethernet9 17 25G 9100 Ethernet10/1 down down N/A N/A Ethernet10 18 25G 9100 Ethernet11/1 down down N/A N/A Ethernet11 19 25G 9100 Ethernet12/1 down down N/A N/A Ethernet12 20 25G 9100 Ethernet13/1 down down N/A N/A Ethernet13 21 25G 9100 Ethernet14/1 down down N/A N/A Ethernet14 22 25G 9100 Ethernet15/1 down down N/A N/A Ethernet15 23 25G 9100 Ethernet16/1 down down N/A N/A Ethernet16 32 25G 9100 Ethernet17/1 down down N/A N/A Ethernet17 33 25G 9100 Ethernet18/1 down down N/A N/A Ethernet18 34 25G 9100 Ethernet19/1 down down N/A N/A Ethernet19 35 25G 9100 Ethernet20/1 down down N/A N/A Ethernet20 40 25G 9100 Ethernet21/1 down down N/A N/A Ethernet21 41 25G 9100 Ethernet22/1 down down N/A N/A Ethernet22 42 25G 9100 Ethernet23/1 down down N/A N/A Ethernet23 43 25G 9100 Ethernet24/1 down down N/A N/A Ethernet24 48 25G 9100 Ethernet25/1 down down N/A N/A Ethernet25 49 25G 9100 Ethernet26/1 down down N/A N/A Ethernet26 50 25G 9100 Ethernet27/1 down down N/A N/A Ethernet27 51 25G 9100 Ethernet28/1 down down N/A N/A Ethernet28 56 25G 9100 Ethernet29/1 down down N/A N/A Ethernet29 57 25G 9100 Ethernet30/1 down down N/A N/A Ethernet30 58 25G 9100 Ethernet31/1 down down N/A N/A Ethernet31 59 25G 9100 Ethernet32/1 down down N/A N/A Ethernet32 64 25G 9100 Ethernet33/1 down down N/A N/A Ethernet33 65 25G 9100 Ethernet34/1 down down N/A N/A Ethernet34 66 25G 9100 Ethernet35/1 down down N/A N/A Ethernet35 67 25G 9100 Ethernet36/1 down down N/A N/A Ethernet36 68 25G 9100 Ethernet37/1 down down N/A N/A Ethernet37 69 25G 9100 Ethernet38/1 down down N/A N/A Ethernet38 70 25G 9100 Ethernet39/1 down down N/A N/A Ethernet39 71 25G 9100 Ethernet40/1 down down N/A N/A Ethernet40 72 25G 9100 Ethernet41/1 down down N/A N/A Ethernet41 73 25G 9100 Ethernet42/1 down down N/A N/A Ethernet42 74 25G 9100 Ethernet43/1 down down N/A N/A Ethernet43 75 25G 9100 Ethernet44/1 down down N/A N/A Ethernet44 76 25G 9100 Ethernet45/1 down down N/A N/A Ethernet45 77 25G 9100 Ethernet46/1 down down N/A N/A Ethernet46 78 25G 9100 Ethernet47/1 down down N/A N/A Ethernet47 79 25G 9100 Ethernet48/1 down down N/A N/A Ethernet48 84,85,86,87 100G 9100 Ethernet49/1 up up QSFP28 N/A Ethernet49 80,81,82,83 100G 9100 Ethernet50/1 up up QSFP28 N/A Ethernet50 92,93,94,95 100G 9100 Ethernet51/1 down down N/A N/A Ethernet51 88,89,90,91 100G 9100 Ethernet52/1 down down N/A N/A Ethernet52 108,109,110,111 100G 9100 Ethernet53/1 down down N/A N/A Ethernet53 104,105,106,107 100G 9100 Ethernet54/1 down down N/A N/A Ethernet54 116,117,118,119 100G 9100 Ethernet55/1 down down N/A N/A Ethernet55 112,113,114,115 100G 9100 Ethernet56/1 down down N/A N/A root@switch1:~#
2019-04-18 04:27:39 -05:00
#
# psuutil.py
# Platform-specific PSU status interface for SONiC
#
import os.path
try:
from sonic_psu.psu_base import PsuBase
except ImportError as e:
raise ImportError(str(e) + "- required module not found")
class PsuUtil(PsuBase):
"""Platform-specific PSUutil class"""
SYSFS_PSU_DIR = ["/sys/bus/i2c/devices/5-005a",
"/sys/bus/i2c/devices/5-005b"]
def __init__(self):
PsuBase.__init__(self)
# Get sysfs attribute
def get_attr_value(self, attr_path):
retval = 'ERR'
if (not os.path.isfile(attr_path)):
return retval
try:
with open(attr_path, 'r') as fd:
retval = fd.read()
except Exception as error:
logging.error("Unable to open ", attr_path, " file !")
retval = retval.rstrip('\r\n')
return retval
def get_num_psus(self):
"""
Retrieves the number of PSUs available on the device
:return: An integer, the number of PSUs available on the device
"""
MAX_PSUS = 2
return MAX_PSUS
def get_psu_status(self, index):
"""
Retrieves the oprational status of power supply unit (PSU) defined
by index <index>
:param index: An integer, index of the PSU of which to query status
:return: Boolean, True if PSU is operating properly, False if PSU is\
faulty
"""
status = 0
attr_file = 'psu_power_good'
attr_path = self.SYSFS_PSU_DIR[index-1] +'/' + attr_file
attr_value = self.get_attr_value(attr_path)
if (attr_value != 'ERR'):
attr_value = int(attr_value, 16)
# Check for PSU status
if (attr_value == 1):
status = 1
return status
def get_psu_presence(self, index):
"""
Retrieves the presence status of power supply unit (PSU) defined
by index <index>
:param index: An integer, index of the PSU of which to query status
:return: Boolean, True if PSU is plugged, False if not
"""
status = 0
psu_absent = 0
attr_file ='psu_present'
attr_path = self.SYSFS_PSU_DIR[index-1] +'/' + attr_file
attr_value = self.get_attr_value(attr_path)
if (attr_value != 'ERR'):
attr_value = int(attr_value, 16)
# Check for PSU presence
if (attr_value == 1):
status = 1
return status