]> git.ipfire.org Git - oddments/collecty.git/commitdiff
plugins: Add a simple helper function to read integers from files
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 20 Sep 2020 15:07:13 +0000 (15:07 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 20 Sep 2020 15:07:13 +0000 (15:07 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/collecty/plugins/base.py
src/collecty/plugins/cpufreq.py
src/collecty/plugins/interface.py

index ec128b87649249fd08775cfdb9a3fe7c5dd967fc..8f9cb7893ed6e3f617ee3123768d01fc365e8550 100644 (file)
@@ -469,6 +469,34 @@ class Object(object):
                # Write everything to disk that is in the write queue
                self.collecty.write_queue.commit_file(self.file)
 
+       # Convenience functions for plugin authors
+
+       def read_file(self, *args, strip=True):
+               """
+                       Reads the content of the given file
+               """
+               filename = os.path.join(*args)
+
+               with open(filename) as f:
+                       value = f.read()
+
+               # Strip any excess whitespace
+               if strip:
+                       value = value.strip()
+
+               return value
+
+       def read_file_integer(self, filename):
+               """
+                       Reads the content from a file and returns it as an integer
+               """
+               value = self.read_file(filename)
+
+               try:
+                       return int(value)
+               except ValueError:
+                       return None
+
 
 class GraphTemplate(object):
        # A unique name to identify this graph template.
index c2ce9b4816553edcd2646422c04a78ad5bab9f0c..7b126c62b05db8adc506e191bbeb174046fe5f05 100644 (file)
@@ -91,7 +91,7 @@ class CPUFreqObject(base.Object):
 
        @property
        def core_id(self):
-               return self.read_file("topology/core_id")
+               return self.read_file(self.sys_path, "topology/core_id")
 
        def is_cpufreq_supported(self):
                path = os.path.join(self.sys_path, "cpufreq")
@@ -105,14 +105,8 @@ class CPUFreqObject(base.Object):
                        self.read_frequency("cpufreq/cpuinfo_max_freq"),
                )
 
-       def read_file(self, filename):
-               file = os.path.join(self.sys_path, filename)
-
-               with open(file, "r") as f:
-                       return f.read().strip()
-
        def read_frequency(self, filename):
-               val = self.read_file(filename)
+               val = self.read_file(self.sys_path, filename)
 
                # Convert from kHz to Hz
                return int(val) * 1000
index e63f06c6f337174213b3c94aef834e391c2bb3ee..4b4ecab6ee1a5f5f1772ff04717f86a8c9e29a26 100644 (file)
@@ -232,11 +232,9 @@ class InterfaceObject(base.Object):
                for file in files:
                        path = os.path.join(interface_path, "statistics", file)
 
-                       # Open file and read it's content.
-                       with open(path) as f:
-                               line = f.readline()
-                               line = line.strip()
-                               ret.append(line)
+                       ret.append(
+                               self.read_file_integer(path),
+                       )
 
                return ret