]> git.ipfire.org Git - collecty.git/blobdiff - src/collecty/plugins/cpu.py
Allow the plugins to return the results as a tuple or list
[collecty.git] / src / collecty / plugins / cpu.py
index 1d26dcbc81339457d0d11e7b0135c53f1b4cd25e..962163f388ef93537abee5fe9c2da581d62b00ba 100644 (file)
@@ -25,8 +25,8 @@ import base
 
 from ..i18n import _
 
-class GraphTemplateCPU(base.GraphTemplate):
-       name = "cpu"
+class GraphTemplateProcessor(base.GraphTemplate):
+       name = "processor"
 
        rrd_graph = [
                "DEF:user=%(file)s:user:AVERAGE",
@@ -94,20 +94,18 @@ class GraphTemplateCPU(base.GraphTemplate):
                "GPRINT:idleavg:%12s\:" % _("Average") + " %6.2lf\\n",
        ]
 
-       rrd_graph_args = [
-               "--title", _("CPU usage"),
-               "--vertical-label", _("Jiffies"),
-
-               "--lower-limit", "0", "--rigid",
-       ]
+       lower_limit = 0
 
+       @property
+       def graph_title(self):
+               return _("CPU usage")
 
-class ProcessorPlugin(base.Plugin):
-       name = "cpu"
-       description = "CPU Usage Data Source"
+       @property
+       def graph_vertical_label(self):
+               return _("Jiffies")
 
-       templates = [GraphTemplateCPU,]
 
+class ProcessorObject(base.Object):
        rrd_schema = [
                "DS:user:DERIVE:0:U",
                "DS:nice:DERIVE:0:U",
@@ -118,12 +116,11 @@ class ProcessorPlugin(base.Plugin):
                "DS:sirq:DERIVE:0:U",
        ]
 
-       @classmethod
-       def autocreate(cls, collecty, **kwargs):
-               # Every system has got at least one CPU.
-               return cls(collecty, **kwargs)
+       @property
+       def id(self):
+               return "default"
 
-       def read(self):
+       def collect(self):
                """
                        Reads the CPU usage.
                """
@@ -140,7 +137,7 @@ class ProcessorPlugin(base.Plugin):
                                if len(columns) < 8:
                                        continue
 
-                               entry = [
+                               return (
                                        columns[1], # user
                                        columns[2], # nice
                                        columns[3], # sys
@@ -148,9 +145,20 @@ class ProcessorPlugin(base.Plugin):
                                        columns[5], # wait
                                        columns[6], # irq
                                        columns[7], # sirq
-                               ]
-
-                               return ":".join(entry)
+                               )
                finally:
                        if f:
                                f.close()
+
+
+class ProcessorPlugin(base.Plugin):
+       name = "processor"
+       description = "Processor Usage Plugin"
+
+       templates = [GraphTemplateProcessor]
+
+       interval = 30
+
+       @property
+       def objects(self):
+               yield ProcessorObject(self)