From: Michael Tremer Date: Sun, 20 Sep 2020 15:07:13 +0000 (+0000) Subject: plugins: Add a simple helper function to read integers from files X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6f79bea5a643010cd5b6de392362b30874f1e405;p=telemetry.git plugins: Add a simple helper function to read integers from files Signed-off-by: Michael Tremer --- diff --git a/src/collecty/plugins/base.py b/src/collecty/plugins/base.py index ec128b8..8f9cb78 100644 --- a/src/collecty/plugins/base.py +++ b/src/collecty/plugins/base.py @@ -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. diff --git a/src/collecty/plugins/cpufreq.py b/src/collecty/plugins/cpufreq.py index c2ce9b4..7b126c6 100644 --- a/src/collecty/plugins/cpufreq.py +++ b/src/collecty/plugins/cpufreq.py @@ -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 diff --git a/src/collecty/plugins/interface.py b/src/collecty/plugins/interface.py index e63f06c..4b4ecab 100644 --- a/src/collecty/plugins/interface.py +++ b/src/collecty/plugins/interface.py @@ -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