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:
parent
3d4c5c7811
commit
0335e90e4c
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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]
|
||||
|
|
Loading…
Reference in New Issue