Handle missing sensors

For scenarios where device is missing inlet or
cpu sensors, more gracefuly report the result.

Change-Id: I810d7f6733a2150ee89560743503148f660caaf3
This commit is contained in:
Jarrod Johnson 2023-10-26 10:52:13 -04:00
parent 3d4c5c7811
commit 0335e90e4c
2 changed files with 17 additions and 5 deletions

View File

@ -76,10 +76,12 @@ class OEMHandler(object):
tmplreading = reading
if reading.value is not None:
readingvalues.append(float(reading.value))
avgval = sum(readingvalues) / len(readingvalues)
tmplreading.name = 'Average Processor Temperature'
tmplreading.value = avgval
tmplreading.unavailable = 0
if readingvalues:
tmplreading.value = sum(readingvalues) / len(readingvalues)
else:
tmplreading.value = None
tmplreading.unavailable = 1
return tmplreading

View File

@ -1170,6 +1170,10 @@ class Command(object):
if temp.get('ReadingCelsius', None) is None:
continue
cputemps.append(temp['ReadingCelsius'])
if not cputemps:
return SensorReading(
None, {'name': 'Average Processor Temperature'}, value=None, units='°C',
unavailable=True)
avgtemp = sum(cputemps) / len(cputemps)
return SensorReading(
None, {'name': 'Average Processor Temperature'}, value=avgtemp, units='°C')
@ -1186,9 +1190,15 @@ class Command(object):
for chassis in self.sysinfo.get('Links', {}).get('Chassis', []):
envinfo = self._get_chassis_env(chassis)
inlets.append(envinfo['inlet'])
val = sum(inlets) / len(inlets)
if inlets:
val = sum(inlets) / len(inlets)
unavail = False
else:
val = None
unavail = True
return SensorReading(
None, {'name': 'Inlet Temperature'}, value=val, units='°C')
None, {'name': 'Inlet Temperature'}, value=val, units='°C',
unavailable=unavail)
def get_sensor_descriptions(self):
for sensor in natural_sort(self._sensormap):
yield self._sensormap[sensor]