def _analysisInterval(self, interval): _interval = "1day" # default if interval == "1hour": (start, end) = past1hour_epochsec() _interval = "1hour" elif interval == "12hour": (start, end) = past12hour_epochsec() _interval = "12hour" elif interval == "1day": (start, end) = past1_epochsec() _interval = "1day" elif interval == "7day": (start, end) = past7_epochsec() _interval = "7day" elif interval == "30day": (start, end) = past30_epochsec() _interval = "30day" elif interval == "365day": (start, end) = past365_epochsec() _interval = "365day" else: try: day = int(interval.replace("day", "")) _interval = "1day" (start, end) = pastany_epochsec(day) except: day = 1 _interval = "1day" (start, end) = pastany_epochsec(day) return (_interval, start, end)
def _GET(self, *param, **params): basedir = akiyoshi.config.collectd["basedir"] if 3 != len(param): # Unsure return web.notfound() # TODO if self.input.has_key("type") is False: # TODO return False type = self.input.type host = param[0] category = param[1] media = param[2] if media == "png": # rrd graph if self.input.has_key("interval"): interval = self.input.interval else: interval = "1day" if self.input.has_key("types") and 0 < len(self.input.types): types = self.input.types.split(",") else: types = None # image (start, end) = past1_epochsec() size = "normal-wide" output = rrdService.graph(akiyoshi.config.tmp, basedir, host, category, interval, type, types, size) self.download.file = output self.download.type = self.DOWNLOAD_TYPE_FILE self.download.once = True elif media == "dat": # rrd fetch targetdir = "%s/%s/%s" % (basedir, host, category) rrdfiles = nodeService.fsnodes(targetdir) fullRrdFiles = [] for rrdfile in rrdfiles: fullRrdFiles.append(str("%s/%s/%s/%s" \ % (basedir, host, category, rrdfile))) if self.input.has_key("fn"): fn = self.input.fn else: fn = "AVERAGE" if self.input.has_key("resolution"): resolution = self.input.resolution else: resolution = "300" if self.input.has_key("interval"): interval = self.input.interval else: interval = "1day" data = rrdService.fetch(fullRrdFiles, fn, resolution, interval, type) self.__template__.media = "json" self.view = data return True else: return web.notfound() # TODO