From ba26f62175378cd209f55302a8ae1ea35a6dbc33 Mon Sep 17 00:00:00 2001 From: Stef Walter Date: Sat, 28 Jan 2006 22:26:30 +0000 Subject: Cleanup old tools, allow cgi to be configured from httpd.conf --- tools/rrdui-cgi.py | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 98 insertions(+), 2 deletions(-) (limited to 'tools/rrdui-cgi.py') diff --git a/tools/rrdui-cgi.py b/tools/rrdui-cgi.py index 8b376f5..0c1ad0a 100755 --- a/tools/rrdui-cgi.py +++ b/tools/rrdui-cgi.py @@ -2,10 +2,107 @@ import os, sys, time import sets, cgi, shlex +import ConfigParser import rrdtool from rrdui import * +# TODO: Temporary +if not os.environ.has_key("CONFDIR") or not os.environ.has_key("WORKDIR"): + raise "not setup properly. CONFDIR and WORKDIR env variables must be set" + +CONFDIR = os.environ["CONFDIR"] +WORKDIR = os.environ["WORKDIR"] + +class GraphDef: + filename = None + filedata = None + title = "" + height = 0 + width = 0 + options = "" + commands = "" + category = "" + name = "" + + __config = None + + def __init__(self, name): + self.filename = "%s/%s" % (CONFDIR, name) + self.filedata = "%s/%s.rrd" % (WORKDIR, name) + self.category = "All" + 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") + if cfg.has_option("general", "category"): + self.title = cfg.get("general", "category") + + # 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 file in os.listdir(CONFDIR): + if os.path.isdir(file): + continue + graphs.append(GraphDef(file)) + return graphs + + def listGraphs(): graphs = loadGraphs() @@ -42,8 +139,7 @@ def displayGraph(): raise "Required arguments not specified" name = form["name"].value - category = form["category"].value - item = GraphDef(category, name) + item = GraphDef(name) # Default to one day display end = int(time.time()) -- cgit v1.2.3