⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rrd.py

📁 Network Administration Visualized 网络管理可视化源码
💻 PY
📖 第 1 页 / 共 2 页
字号:
# -*- coding: ISO8859-1 -*-# Copyright 2002-2004 Norwegian University of Science and Technology## This file is part of Network Administration Visualized (NAV)## NAV is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## NAV is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with NAV; if not, write to the Free Software# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA### Authors: Magnus Nordseth <magnun@itea.ntnu.no>#          Stian Soiland <stain@itea.ntnu.no>"""Integrate rrdBrowser into deviceBrowser...TODO:* Define y-axis, max-min* probably some moreAuthor: Magnus Nordseth <magnun@stud.ntnu.no>"""from mod_python import apache, utilimport nav.configimport osfrom nav.web.TreeSelect import TreeSelect, Option, Select, UpdateableSelectfrom nav.rrd import presenterimport forgetHTML as htmlfrom nav.web import urlbuilderfrom nav.errors import *from nav.web.templates.TreeSelectTemplate import TreeSelectTemplatefrom nav.web.templates.SearchBoxTemplate import SearchBoxTemplatefrom nav.web.SearchBox import SearchBoxfrom nav.db import navprofilesimport nav.dbconfigfile = 'rrdBrowser.conf'def process(request):    args = request['args']    query = parseQuery(request['query'])    session = request['session']    if not args:        raise RedirectError, urlbuilder.createUrl(division="rrd")    if args[0] == "":        return showIndex(request['req'], session)    if args[0] == "datasources":        return datasources(query, session)    if args[0] == "timeframe":        timeframe(session, query)        session.save()        raise RedirectError, urlbuilder.createUrl(division="rrd")    if args[0] == "add":        return treeselect(request['req'], session)    if args[0] == 'pageAction':        pageAction(request['req'])        session.save()        raise RedirectError, urlbuilder.createUrl(division="rrd")    if args[0] == "graph":        graph(request['req'], query['id'][0])    if args[0] == "join":        try:            id = query['id']        except:            return "nalle"        join(session, id)        session.save()        raise RedirectError, urlbuilder.createUrl(division="rrd")    if args[0] == "split":        try:            id = query['id']        except:            return html.Division('Noe gikk galt')        split(session, id)        raise RedirectError, urlbuilder.createUrl(division="rrd")    if args[0] == "remove":        try:            id = query['id']        except:            return html.Division('Dette gikk d錼lig')            #return showGraphs(session)        remove(session, id)        raise RedirectError, urlbuilder.createUrl(division="rrd")    if args[0] == "zoom":        try:            id = int(query['id'][0])        except Exception, e:            return html.Division("No id passed in %s, %s" % (e, query['id']))        try:            value = float(query['value'][0])        except Exception, e:            return html.Division("Invalid value, %s, %s" % (e, query['value']))        zoom(session, id, value)        raise RedirectError, urlbuilder.createUrl(division="rrd")    if args[0] == "save":        try:            name = query['name'][0]        except:            name = 'ingenting'        return save(session, name)    if args[0] == 'load':        try:            name = query['name'][0]        except:            name = 'ingenting'        load(session, name)        raise RedirectError, urlbuilder.createUrl(division="rrd")            return html.Division("args: %s, query: %s " %(str(args), str(query)))def pageAction(req):    req.form = util.FieldStorage(req)    action = req.form['action']    zoomList = req.form['zoom']    if req.form.has_key('cn_zoom'):        for i in range(len(zoomList)):            try:                value = float(zoomList[i])            except:                continue            if value != 0:                zoom(req.session, i, value)    try:        selected = req.form['selected']    except KeyError:        selected = []    if type(selected) != list:        selected = [selected]    if 'join'in action:        return join(req.session, selected)    if 'remove' in action:        return remove(req.session, selected)    if 'split' in action:        return split(req.session, selected)    return html.Division("req.form: %s action: %s zoom: %s selected: %s" %                         (str(req.form), action, zoom, selected))def join(session, list):    try:        page = session['rrd'].presentations    except Exception, e:        return html.Division("%s %s" % (str(e), str(index)))    if len(list) < 2:        return html.Division("Need at least 2 elements to join")    # we want to add to our first    first = page[int(list[0])]    toDelete = []    for i in list[1:]:        i = int(i)        toDelete.append(i)        for ds in page[i].datasources:            first.datasources.append(ds)    # remove the elements joind to another, but largest id first    toDelete.sort()    toDelete.reverse()    for i in toDelete:        del page[i]    session.save()def split(session, list):    graphs = session['rrd'].presentations    splitted = []    for index in list:        for ds in graphs[int(index)].datasources:            pres = presenter.presentation()            pres.datasources.append(ds)            splitted.append(pres)    graphs.extend(splitted)    session.save()    remove(session, list)def remove(session, list):    try:        list.sort()        list.reverse()        for i in list:            session['rrd'].presentations.pop(int(i))    except Exception, e:        return html.Division("%s %s" % (str(e), str(list)))    session.save()def zoom(session, id, value):    session['rrd'].presentations[id].setYAxis(value)    session.save()def timeframe(session, query):    tf = query['tf'][0]    try:        session['rrd'].timeframeIndex = query['tfIndex'][0]    except:        pass    session['rrd'].timeframe = tf    session.save()    for i in session['rrd'].presentations:        i.timeLast(tf, session['rrd'].timeframeIndex)def showIndex(req, session):    try:        presentations = session['rrd'].presentations    except KeyError:        # session contains no rrd info.        # poor user, but sure we can help        session['rrd'] = presenter.page()        session['rrd'].presentations = []        session.save()        presentations =  session['rrd'].presentations    if len(presentations):        return showGraphs(session)    return treeselect(req, session)def treeselect(req, session, action=None):    result = html.Division()    keep_blank_values = True    req.form = util.FieldStorage(req, keep_blank_values)    searchbox = SearchBox(req,'Type a room id, an ip or a (partial) sysname')    searchbox.addSearch('ds',                        'Datasource',                        'RrdDataSourceFile',                        {'catids': ['netbox.cat'],                         'netboxes': ['netbox'],                         'datasources' : ['rrd_datasourceid'],                         },                        where = "rrd_datasource.descr like '%%%s%%'"                        )                        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -