コード例 #1
0
ファイル: rrd.py プロジェクト: fkei/akiyoshi
    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)
コード例 #2
0
ファイル: graph.py プロジェクト: fkei/akiyoshi
    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