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())
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)
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())
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())
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())
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())
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())
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)
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())
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)