8514a484cd
What I did it Add new platform x86_64-ragile_ra-b6910-64c-r0 (Tomahawk 3) ASIC Vendor: Broadcom Switch ASIC: Tomahawk 3 Port Config: 64x100G -How I did it Provide device and platform related files. -How to verify it show platform fan show platform ssdhealth show platform psustatus show platform summary show platform syseeprom show platform temperature show interface status
76 lines
2.6 KiB
Python
Executable File
76 lines
2.6 KiB
Python
Executable File
import os.path
|
|
import sys
|
|
import json
|
|
sys.path.append('/usr/share/sonic/platform/plugins')
|
|
import pddfparse
|
|
|
|
|
|
class ThermalUtil:
|
|
def __init__(self):
|
|
global pddf_obj
|
|
global plugin_data
|
|
with open(os.path.join(os.path.dirname(os.path.realpath(__file__)) + '/../pddf/pd-plugin.json')) as pd:
|
|
plugin_data = json.load(pd)
|
|
|
|
pddf_obj = pddfparse.PddfParse()
|
|
self.platform = pddf_obj.get_platform()
|
|
self.num_thermals = self.platform['num_temps']
|
|
self.info = []
|
|
|
|
def get_num_thermals(self):
|
|
return (self.num_thermals)
|
|
|
|
def get_thermal_info(self):
|
|
list = []
|
|
pddf_obj.get_device_list(list, "TEMP_SENSOR")
|
|
list.sort()
|
|
for dev in list:
|
|
data = {}
|
|
device_name = dev['dev_info']['device_name']
|
|
topo_info = dev['i2c']['topo_info']
|
|
label = "%s-i2c-%d-%x" % (topo_info['dev_type'],
|
|
int(topo_info['parent_bus'], 0), int(topo_info['dev_addr'], 0))
|
|
attr_list = dev['i2c']['attr_list']
|
|
data['device_name'] = device_name
|
|
data['label'] = label
|
|
for attr in attr_list:
|
|
attr_name = attr['attr_name']
|
|
node = pddf_obj.get_path(device_name, attr_name)
|
|
if node is None:
|
|
return False
|
|
try:
|
|
with open(node, 'r') as f:
|
|
attr_value = int(f.read())
|
|
except IOError:
|
|
return False
|
|
data[attr_name] = attr_value/float(1000)
|
|
self.info.append(data)
|
|
|
|
def show_thermal_temp_values(self, idx):
|
|
if idx < 1 or idx > self.num_thermals:
|
|
print("Invalid temperature sensor idx %d" % idx)
|
|
return None
|
|
self.get_thermal_info()
|
|
thermal_name = "TEMP"+"%d" % idx
|
|
label = ""
|
|
value = ""
|
|
for temp in self.info:
|
|
if thermal_name == temp['device_name']:
|
|
label = temp['label']
|
|
value = "temp1\t %+.1f C (high = %+.1f C, hyst = %+.1f C)" % (
|
|
temp['temp1_input'], temp['temp1_max'], temp['temp1_max_hyst'])
|
|
else:
|
|
continue
|
|
|
|
return (label, value)
|
|
|
|
def show_temp_values(self):
|
|
self.get_thermal_info()
|
|
for temp in self.info:
|
|
print(temp['label'])
|
|
print("temp1\t %+.1f C (high = %+.1f C, hyst = %+.1f C)" %
|
|
(temp['temp1_input'], temp['temp1_max'], temp['temp1_max_hyst']))
|
|
|
|
def dump_sysfs(self):
|
|
return pddf_obj.cli_dump_dsysfs('temp-sensors')
|