]> arthur.barton.de Git - netdata.git/blobdiff - python.d/sensors.chart.py
dns_query_time plugin: added
[netdata.git] / python.d / sensors.chart.py
index f2960958a67158066c85f2056ff429063dc3e283..e83aacfd81c9db1a87ce1f6fb831a6f355a2bf9d 100644 (file)
@@ -77,6 +77,9 @@ class Service(SimpleService):
         SimpleService.__init__(self, configuration=configuration, name=name)
         self.order = []
         self.definitions = {}
+        self.celsius = ('Celsius', lambda x: x)
+        self.fahrenheit = ('Fahrenheit', lambda x: x * 9 / 5 + 32)  if self.configuration.get('fahrenheit') else False
+        self.choice = (choice for choice in [self.fahrenheit, self.celsius] if choice)
         self.chips = []
 
     def _get_data(self):
@@ -94,7 +97,10 @@ class Service(SimpleService):
                         limit = LIMITS[typeName];
                         if val < limit[0] or val > limit[1]:
                             continue
-                    data[prefix + "_" + str(feature.name.decode())] = int(val * 1000)
+                    if 'temp' in str(feature.name.decode()):
+                        data[prefix + "_" + str(feature.name.decode())] = int(self.calc(val) * 1000)
+                    else:
+                        data[prefix + "_" + str(feature.name.decode())] = int(val * 1000)
         except Exception as e:
             self.error(e)
             return None
@@ -104,7 +110,6 @@ class Service(SimpleService):
         return data
 
     def _create_definitions(self):
-        prev_chip = ""
         for type in ORDER:
             for chip in sensors.ChipIterator():
                 chip_name = sensors.chip_snprintf_name(chip)
@@ -117,19 +122,19 @@ class Service(SimpleService):
                         continue
                     if TYPE_MAP[feature.type] == type:
                         # create chart
-                        if chip_name != prev_chip:
-                            name = chip_name + "_" + TYPE_MAP[feature.type]
-                            if name not in self.order:
-                                self.order.append(name)
-                                chart_def = list(CHARTS[type]['options'])
-                                chart_def[1] = chip_name + chart_def[1]
-                                self.definitions[name] = {'options': chart_def}
-                                self.definitions[name]['lines'] = []
+                        name = chip_name + "_" + TYPE_MAP[feature.type]
+                        if name not in self.order:
+                            self.order.append(name)
+                            chart_def = list(CHARTS[type]['options'])
+                            chart_def[1] = chip_name + chart_def[1]
+                            if chart_def[2] == 'Celsius':
+                                chart_def[2] = self.choice[0]
+                            self.definitions[name] = {'options': chart_def}
+                            self.definitions[name]['lines'] = []
                         line = list(CHARTS[type]['lines'][0])
                         line[0] = chip_name + "_" + str(feature.name.decode())
                         line[1] = sensors.get_label(chip, feature)
                         self.definitions[name]['lines'].append(line)
-                prev_chip = chip_name
 
     def check(self):
         try:
@@ -137,10 +142,20 @@ class Service(SimpleService):
         except Exception as e:
             self.error(e)
             return False
+        
+        try:
+            self.choice = next(self.choice)
+        except StopIteration:
+            # That can not happen but..
+            self.choice = ('Celsius', lambda x: x)
+            self.calc = self.choice[1]
+        else:
+            self.calc = self.choice[1]
 
         try:
             self._create_definitions()
         except Exception as e:
             self.error(e)
             return False
+
         return True