aboutsummaryrefslogtreecommitdiffstats
path: root/rrddb.py
diff options
context:
space:
mode:
Diffstat (limited to 'rrddb.py')
-rw-r--r--rrddb.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/rrddb.py b/rrddb.py
new file mode 100644
index 0000000..6f48913
--- /dev/null
+++ b/rrddb.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python3
+import subprocess
+import time
+import os
+from GlobalRRD import GlobalRRD
+from NodeRRD import NodeRRD
+
+class rrd:
+ def __init__( self
+ , databaseDirectory
+ , imagePath
+ , displayTimeGlobal = "7d"
+ , displayTimeNode = "1d"
+ ):
+ self.dbPath = databaseDirectory
+ self.globalDb = GlobalRRD(self.dbPath)
+ self.imagePath = imagePath
+ self.displayTimeGlobal = displayTimeGlobal
+ self.displayTimeNode = displayTimeNode
+
+ self.currentTimeInt = (int(time.time())/60)*60
+ self.currentTime = str(self.currentTimeInt)
+
+ try:
+ os.stat(self.imagePath)
+ except:
+ os.mkdir(self.imagePath)
+
+ def update_database(self,db):
+ nodes = db.get_nodes()
+ clientCount = sum(map(lambda d: d.clientcount, nodes))
+
+ self.globalDb.update(len(nodes), clientCount)
+ for node in nodes:
+ rrd = NodeRRD(
+ os.path.join(self.dbPath, str(node.id).replace(':', '') + '.rrd'),
+ node
+ )
+ rrd.update()
+
+ def update_images(self):
+ """ Creates an image for every rrd file in the database directory.
+ """
+
+ self.globalDb.graph(os.path.join(self.imagePath, "globalGraph.png"), self.displayTimeGlobal)
+
+ nodeDbFiles = os.listdir(self.dbPath)
+
+ for fileName in nodeDbFiles:
+ if not os.path.isfile(os.path.join(self.dbPath, fileName)):
+ continue
+
+ nodeName = os.path.basename(fileName).split('.')
+ if nodeName[1] == 'rrd' and not nodeName[0] == "nodes":
+ rrd = NodeRRD(os.path.join(self.dbPath, fileName))
+ rrd.graph(self.imagePath, self.displayTimeNode)