123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #-*- coding:utf-8 -*-
- import json
- from flask import request, abort, g
- from rrd import app, config
- from rrd import corelib
- from rrd.view.utils import require_login_json
- #done, TODO:query by tags
- @app.route("/api/endpoints")
- @require_login_json()
- def api_endpoints():
- ret = {
- "ok": False,
- "msg": "",
- "data": [],
- }
- q = request.args.get("q") or ""
- raw_tag = request.args.get("tags") or ""
- tags = raw_tag and [x.strip() for x in raw_tag.split(",")] or []
- limit = int(request.args.get("limit") or 100)
- if not q and not tags:
- ret["msg"] = "no query params given"
- return json.dumps(ret)
- h = {"Content-type": "application/json"}
- r = corelib.auth_requests("GET", config.API_ADDR + "/graph/endpoint?q=%s&limit=%s&tags=%s" %(q, limit, tags), headers=h)
- if r.status_code != 200:
- abort(400, r.text)
- j = sorted(r.json(), key=lambda x:x["endpoint"])
- endpoints = [x["endpoint"] for x in j]
- ret['data'] = j
- ret['ok'] = True
- return json.dumps(ret)
- #done
- @app.route("/api/counters", methods=["POST"])
- @require_login_json()
- def api_get_counters():
- ret = {
- "ok": False,
- "msg": "",
- "data": [],
- }
- q = request.form.get("q") or ""
- limit = int(request.form.get("limit") or 100)
- eids = request.form.get("eids") or ""
- eids = eids and json.loads(eids) or []
- if not (eids or q):
- ret['msg'] = "no endpoints or counter given"
- return json.dumps(ret)
- h = {"Content-type": "application/json"}
- r = corelib.auth_requests("GET", config.API_ADDR + "/graph/endpoint_counter?eid=%s&metricQuery=%s&limit=%s" %(",".join(eids), q, limit), headers=h)
- if r.status_code != 200:
- abort(400, r.text)
- j = r.json()
- counters_map = {}
- for x in j:
- counters_map[x['counter']] = [x['counter'], x['type'], x['step']]
- sorted_counters = sorted(counters_map.keys())
- sorted_values = [counters_map[x] for x in sorted_counters]
- ret['data'] = sorted_values
- ret['ok'] = True
- return json.dumps(ret)
|