Exemplo n.º 1
0
def dash_graph_edit(gid):
    log.debug("dash_graph_edit:{}".format(gid))
    error = ""
    graph = DashboardGraph.get(gid)
    log.debug("dash_graph_1111--graph:{}".format(graph))
    if not graph:
        abort(404, "no graph")

    all_screens = DashboardScreen.gets_all()
    top_screens = [x for x in all_screens if x.pid == '0']
    children = []
    for t in top_screens:
        children.append([x for x in all_screens if x.pid == t.id])

    screen = DashboardScreen.get(graph.screen_id)
    if not screen:
        abort(404, "no screen")
    pscreen = DashboardScreen.get(screen.pid)

    if request.method == "POST":
        log.debug("Postcalled")
        ajax = request.form.get("ajax", "")
        screen_id = request.form.get("screen_id")
        title = request.form.get("title", "").strip()

        hosts = request.form.get("hosts", "").strip()
        hosts = hosts and hosts.split("\n") or []
        hosts = [x.strip() for x in hosts]

        counters = request.form.get("counters", "").strip()
        counters = counters and counters.split("\n") or []
        counters = [x.strip() for x in counters]

        timespan = request.form.get("timespan", 3600)
        graph_type = request.form.get("graph_type", 'h')
        method = request.form.get("method", '').upper()
        position = request.form.get("position", 0)
        log.debug("Postcalledupdate %s %s %s %s %s %s %s %s " %
                  (title, hosts, counters, screen_id, timespan, graph_type,
                   method, position))
        graph = graph.update(title, hosts, counters, screen_id, timespan,
                             graph_type, method, position)
        log.debug("dash_graph_edit got graph.update {} {}".format(graph, ajax))
        error = gettext("edit successful")
        if not ajax:

            log.debug("render_template---")
            return render_template("screen/graph_edit.html",
                                   config=config,
                                   **locals())
        else:
            return "ok"

    else:
        ajax = request.args.get("ajax", "")
        return render_template("screen/graph_edit.html", **locals())
Exemplo n.º 2
0
def dash_graph_delete(gid):
    token = request.args.get("token", None)
    if token is None or token != config.AUTH_TOKEN:
        abort(403, "auth failed, can not be deleted")

    graph = DashboardGraph.get(gid)
    if not graph:
        abort(404, "no such graph")
    DashboardGraph.remove(gid)
    return redirect("/screen/" + graph.screen_id)
Exemplo n.º 3
0
def dash_graph_edit(gid):
    error = ""
    graph = DashboardGraph.get(gid)
    if not graph:
        abort(404, "no graph")

    all_screens = DashboardScreen.gets()
    top_screens = [x for x in all_screens if x.pid == '0']
    children = []
    for t in top_screens:
        children.append([x for x in all_screens if x.pid == t.id])

    screen = DashboardScreen.get(graph.screen_id)
    if not screen:
        abort(404, "no screen")
    pscreen = DashboardScreen.get(screen.pid)

    if request.method == "POST":
        ajax = request.form.get("ajax", "")
        screen_id = request.form.get("screen_id")
        title = request.form.get("title", "").strip()

        hosts = request.form.get("hosts", "").strip()
        hosts = hosts and hosts.split("\n") or []
        hosts = [x.strip() for x in hosts]

        counters = request.form.get("counters", "").strip()
        counters = counters and counters.split("\n") or []
        counters = [x.strip() for x in counters]

        timespan = request.form.get("timespan", 3600)
        graph_type = request.form.get("graph_type", 'h')
        method = request.form.get("method", '').upper()
        position = request.form.get("position", 0)

        graph = graph.update(title, hosts, counters, screen_id, timespan,
                             graph_type, method, position)

        error = u"修改成功了"
        if not ajax:
            return render_template("screen/graph_edit.html",
                                   config=config,
                                   **locals())
        else:
            return "ok"

    else:
        ajax = request.args.get("ajax", "")
        return render_template("screen/graph_edit.html",
                               config=config,
                               **locals())
Exemplo n.º 4
0
def dash_graph_edit(gid):
    error = ""
    graph = DashboardGraph.get(gid)
    if not graph:
        abort(404, "no graph")

    all_screens = DashboardScreen.gets_all()
    top_screens = [x for x in all_screens if x.pid == '0']
    children = []
    for t in top_screens:
        children.append([x for x in all_screens if x.pid == t.id])

    screen = DashboardScreen.get(graph.screen_id)
    if not screen:
        abort(404, "no screen")
    pscreen = DashboardScreen.get(screen.pid)

    if request.method == "POST":
        ajax = request.form.get("ajax", "")
        screen_id = request.form.get("screen_id")
        title = request.form.get("title", "").strip()

        hosts = request.form.get("hosts", "").strip()
        hosts = hosts and hosts.split("\n") or []
        hosts = [x.strip() for x in hosts]

        counters = request.form.get("counters", "").strip()
        counters = counters and counters.split("\n") or []
        counters = [x.strip() for x in counters]

        timespan = request.form.get("timespan", 3600)
        graph_type = request.form.get("graph_type", 'h')
        method = request.form.get("method", '').upper()
        position = request.form.get("position", 0)

        graph = graph.update(title, hosts, counters, screen_id,
                timespan, graph_type, method, position)

        error = gettext("edit successful")
        if not ajax:
            return render_template("screen/graph_edit.html", config=config, **locals())
        else:
            return "ok"

    else:
        ajax = request.args.get("ajax", "")
        return render_template("screen/graph_edit.html", **locals())
Exemplo n.º 5
0
def dash_graph_add(sid):
    all_screens = DashboardScreen.gets_all()
    top_screens = [x for x in all_screens if x.pid == '0']
    children = []
    for t in top_screens:
        children.append([x for x in all_screens if x.pid == t.id])

    screen = DashboardScreen.get(sid)
    if not screen:
        abort(404, "no screen")
    pscreen = DashboardScreen.get(screen.pid)

    if request.method == "POST":
        title = request.form.get("title")

        hosts = request.form.get("hosts", "").strip()
        hosts = hosts and hosts.split("\n") or []
        hosts = [x.strip() for x in hosts]

        counters = request.form.get("counters", "").strip()
        counters = counters and counters.split("\n") or []
        counters = [x.strip() for x in counters]

        timespan = int(request.form.get("timespan", 3600))
        graph_type = request.form.get("graph_type", 'h')
        method = request.form.get("method", '').upper()
        position = int(request.form.get("position", 0))

        graph = DashboardGraph.add(title, hosts, counters, sid, timespan,
                                   graph_type, method, position)
        return redirect("/screen/%s" % sid)

    else:
        limit = 10000
        gid = request.args.get("gid")
        graph = gid and DashboardGraph.get(gid)
        options = {}
        options['hosts'] = Endpoint.search(''.split(), limit=limit)
        ids = []
        for ep in options['hosts']:
            ids.append(ep.id)
        options['counters'] = EndpointCounter.gets_by_endpoint_ids(ids[0:1],
                                                                   limit=limit)
        return render_template("screen/graph_add.html",
                               config=config,
                               **locals())
Exemplo n.º 6
0
def dash_graph_add(sid):
    all_screens = DashboardScreen.gets_all()
    top_screens = [x for x in all_screens if x.pid == '0']
    children = []
    for t in top_screens:
        children.append([x for x in all_screens if x.pid == t.id])

    screen = DashboardScreen.get(sid)
    if not screen:
        abort(404, "no screen")
    pscreen = DashboardScreen.get(screen.pid)

    if request.method == "POST":
        title = request.form.get("title")

        hosts = request.form.get("hosts", "").strip()
        hosts = hosts and hosts.split("\n") or []
        hosts = [x.strip() for x in hosts]

        counters = request.form.get("counters", "").strip()
        counters = counters and counters.split("\n") or []
        counters = [x.strip() for x in counters]

        relativeday = int(request.form.get("relativeday", 7))
        timespan = int(request.form.get("timespan", 3600))
        graph_type = request.form.get("graph_type", 'h')
        method = request.form.get("method", '').upper()
        position = int(request.form.get("position", 0))

        graph = DashboardGraph.add(title, hosts, counters, sid, timespan,
                                   relativeday, graph_type, method, position)
        return redirect("/screen/%s" % sid)

    else:
        gid = request.args.get("gid")
        graph = gid and DashboardGraph.get(gid)
        return render_template("screen/graph_add.html",
                               config=config,
                               **locals())
Exemplo n.º 7
0
def dash_graph_add(sid):
    all_screens = DashboardScreen.gets()
    top_screens = [x for x in all_screens if x.pid == '0']
    children = []
    for t in top_screens:
        children.append([x for x in all_screens if x.pid == t.id])

    screen = DashboardScreen.get(sid)
    if not screen:
        abort(404, "no screen")
    pscreen = DashboardScreen.get(screen.pid)

    if request.method == "POST":
        title = request.form.get("title")

        hosts = request.form.get("hosts", "").strip()
        hosts = hosts and hosts.split("\n") or []
        hosts = [x.strip() for x in hosts]

        counters = request.form.get("counters", "").strip()
        counters = counters and counters.split("\n") or []
        counters = [x.strip() for x in counters]

        timespan = request.form.get("timespan", 3600)
        graph_type = request.form.get("graph_type", 'h')
        method = request.form.get("method", '').upper()
        position = request.form.get("position", 0)

        graph = DashboardGraph.add(title, hosts, counters, sid,
                                   timespan, graph_type, method, position)
        return redirect("/screen/%s" % sid)

    else:
        gid = request.args.get("gid")
        graph = gid and DashboardGraph.get(gid)
        options = qryOptions()
        return render_template("screen/graph_add.html", config=config, **locals())
Exemplo n.º 8
0
def dash_graph_delete(gid):
    graph = DashboardGraph.get(gid)
    if not graph:
        abort(404, "no such graph")
    DashboardGraph.remove(gid)
    return redirect("/screen/" + graph.screen_id)
Exemplo n.º 9
0
def dash_graph_delete(gid):
    graph = DashboardGraph.get(gid)
    if not graph:
        abort(404, "no such graph")
    DashboardGraph.remove(gid)
    return redirect("/screen/" + graph.screen_id)
Exemplo n.º 10
0
def dash_graph_edit(gid):
    error = ""
    is_tmp_graph = False
    graph = DashboardGraph.get(gid)

    all_screens = DashboardScreen.gets()
    top_screens = [x for x in all_screens if x.pid == '0']
    children = []
    for t in top_screens:
        children.append([x for x in all_screens if x.pid == t.id])

    if not graph:
        # 编辑临时 graph
        graph = TmpGraph.get(gid)
        graph = DashboardGraph.add('graph', graph.endpoints, graph.counters, 0)

        if not graph:
            abort(404, "no graph")
        is_tmp_graph = True

    if not is_tmp_graph:
        screen = DashboardScreen.get(graph.screen_id)
        if not screen:
            abort(404, "no screen")
    # pscreen = DashboardScreen.get(screen.pid)

    if request.method == "POST":
        ajax = request.form.get("ajax", "")
        screen_id = request.form.get("screen_id")
        title = request.form.get("title", "").strip()

        hosts = request.form.get("hosts", "").strip()
        hosts = hosts and hosts.split("\n") or []
        hosts = [x.strip() for x in hosts]

        counters = request.form.get("counters", "").strip()
        counters = counters and counters.split("\n") or []
        counters = [x.strip() for x in counters]

        timespan = request.form.get("timespan", 3600)
        graph_type = request.form.get("graph_type", 'h')
        method = request.form.get("method", '').upper()
        position = request.form.get("position", 0)

        if is_tmp_graph:  # 如果是临时graph修改之后就添加进去
            graph = DashboardGraph.add(title, hosts, counters, screen_id,
                                       timespan, graph_type, method, position)
        else:
            graph = graph.update(title, hosts, counters, screen_id,
                                 timespan, graph_type, method, position)

        error = u"修改成功了"
        if not ajax:
            options = qryOptions()
            return redirect('/screen/' + graph.screen_id)  # 重定向到对应的screen
            # return render_template("screen/graph_edit.html", config=config, **locals())
        else:
            return "ok"

    else:
        ajax = request.args.get("ajax", "")
        options = qryOptions()
        return render_template("screen/graph_edit.html", **locals())
Exemplo n.º 11
0
def multi_endpoints_chart_data():
    if not g.id:
        abort(400, "no graph id given")

    j = TmpGraph.get(g.id)
    if not j:
        abort(400, "no such tmp_graph where id=%s" % g.id)

    counters = j.counters
    if not counters:
        abort(400, "no counters of %s" % g.id)
    counters = sorted(set(counters))

    endpoints = j.endpoints
    if not endpoints:
        abort(400, "no endpoints of %s" % (g.id,))
    endpoints = sorted(set(endpoints))

    ret = {
        "units": "",
        "title": "",
        "series": []
    }

    c = counters[0]
    ret['title'] = c
    query_result = graph_history(endpoints, counters[:1], g.cf, g.start, g.end)

    series = []
    for i in range(0, len(query_result)):
        x = query_result[i]
        try:
            xv = [(v["timestamp"] * 1000, v["value"]) for v in x["Values"]]
            serie = {
                "data": xv,
                "name": query_result[i]["endpoint"],
                "cf": g.cf,
                "endpoint": query_result[i]["endpoint"],
                "counter": query_result[i]["counter"],
            }
            series.append(serie)
        except:
            pass

    # 通过查看dashboard_grap判断是否存在环比看图
    if g.dgid:
        dg = DashboardGraph.get(g.dgid)
        if dg.relativeday > 0:
            query_result = graph_history(endpoints[:1], counters, g.cf, g.start - dg.relativeday * 24 * 3600,
                                         g.end - dg.relativeday * 24 * 3600)
            for i in range(0, len(query_result)):
                x = query_result[i]
                try:
                    xv = [((v["timestamp"] + dg.relativeday * 24 * 3600)* 1000, v["value"]) for v in x["Values"]]
                    serie = {
                        "data": xv,
                        "name": u"[环比:" + str(dg.relativeday) + u"天]" + query_result[i]["endpoint"],
                        "cf": g.cf,
                        "endpoint": query_result[i]["endpoint"],
                        "counter": query_result[i]["counter"],
                    }
                    series.append(serie)
                except:
                    print(traceback.format_exc())
                    pass

    sum_serie = {
        "data": [],
        "name": "sum",
        "cf": g.cf,
        "endpoint": "sum",
        "counter": c,
    }
    if g.sum == "on" or g.sumonly == "on":
        sum = []
        tmp_ts = []
        max_size = 0
        for serie in series:
            serie_vs = [x[1] for x in serie["data"]]
            if len(serie_vs) > max_size:
                max_size = len(serie_vs)
                tmp_ts = [x[0] for x in serie["data"]]
            sum = merge_list(sum, serie_vs)
        sum_serie_data = []
        for i in range(0, max_size):
            sum_serie_data.append((tmp_ts[i], sum[i]))
        sum_serie['data'] = sum_serie_data

        series.append(sum_serie)

    if g.sumonly == "on":
        ret['series'] = [sum_serie, ]
    else:
        ret['series'] = series

    return json.dumps(ret)