summaryrefslogtreecommitdiff
path: root/tools/rrdui.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/rrdui.py')
-rw-r--r--tools/rrdui.py96
1 files changed, 96 insertions, 0 deletions
diff --git a/tools/rrdui.py b/tools/rrdui.py
new file mode 100644
index 0000000..ee10eae
--- /dev/null
+++ b/tools/rrdui.py
@@ -0,0 +1,96 @@
+import os, sys, time
+import ConfigParser
+
+# TODO: Temporary
+CONFDIR = "/data/projects/rrdui/conf"
+WORKDIR = "/data/projects/rrdui/work"
+
+class GraphDef:
+ filename = None
+ filedata = None
+ title = ""
+ height = 0
+ width = 0
+ options = ""
+ commands = ""
+ category = ""
+ name = ""
+
+ __config = None
+
+ def __init__(self, category, name):
+ self.filename = "%s/%s/%s" % (CONFDIR, category, name)
+ self.filedata = "%s/%s-%s.rrd" % (WORKDIR, category, name)
+ self.category = category
+ self.name = name
+
+ cfg = self.__config = ConfigParser.RawConfigParser()
+ cfg.read(self.filename)
+
+ # Loading general stuff
+ if cfg.has_option("general", "title"):
+ self.title = cfg.get("general", "title")
+
+ # Loading graph stuff
+ if cfg.has_option("graph", "width"):
+ self.width = int(cfg.get("graph", "width"))
+ if cfg.has_option("graph", "height"):
+ self.height = int(cfg.get("graph", "height"))
+ if cfg.has_option("graph", "options"):
+ self.options = cfg.get("graph", "options")
+ if not cfg.has_option("graph", "commands"):
+ raise "Missing commands attribute in: %s" % self.filename
+ self.commands = cfg.get("graph", "commands")
+
+
+ def getCreateInfo(self):
+ cfg = self.__config
+ rra = None
+ fields = {}
+
+ # The RRA info
+ if cfg.has_option("create", "rra"):
+ rra = cfg.get("create", "rra").split()
+
+ # The various fields
+ for field in cfg.options("create"):
+ if not field.startswith("field."):
+ continue
+ fieldname = field[6:]
+ fields[fieldname] = cfg.get("create", field)
+
+ return (fields, rra)
+
+
+ def getPollingInfo(self):
+ cfg = self.__config
+ interval = 300
+ fields = {}
+
+ # The interval
+ if cfg.has_option("poll", "interval"):
+ interval = int(cfg.get("poll", "interval"))
+
+ # The various fields
+ for field in cfg.options("poll"):
+ if not field.startswith("field."):
+ continue
+ fieldname = field[6:]
+ fields[fieldname] = cfg.get("poll", field)
+
+ return (fields, interval)
+
+
+def loadGraphs():
+
+ # List files and add appropriate paths
+ graphs = []
+ for category in os.listdir(CONFDIR):
+ dir = "%s/%s" % (CONFDIR, category)
+ if not os.path.isdir(dir):
+ continue
+ for f in os.listdir(dir):
+ graphs.append(GraphDef(category, f))
+ return graphs
+
+