rrdgraph.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #-*- coding:utf-8 -*-
  2. from rrd.config import API_ADDR
  3. import json
  4. from rrd import corelib
  5. def graph_history(endpoints, counters, cf, start, end):
  6. #TODO:step
  7. params = {
  8. "start_time": start,
  9. "end_time": end,
  10. "consol_fun": cf,
  11. "hostnames": endpoints,
  12. "counters": counters,
  13. }
  14. h = {"Content-type": "application/json"}
  15. r = corelib.auth_requests("POST", "%s/graph/history" %API_ADDR, headers=h, data=json.dumps(params))
  16. if r.status_code != 200:
  17. raise Exception("{} : {}".format(r.status_code, r.text))
  18. return r.json()
  19. def merge_list(a, b):
  20. sum = []
  21. a_len = len(a)
  22. b_len = len(b)
  23. l1 = min(a_len, b_len)
  24. l2 = max(a_len, b_len)
  25. if a_len < b_len:
  26. a, b = b, a
  27. for i in range(0, l1):
  28. if a[i] is None and b[i] is None:
  29. sum.append(None)
  30. elif a[i] is None:
  31. sum.append(b[i])
  32. elif b[i] is None:
  33. sum.append(a[i])
  34. else:
  35. sum.append(a[i] + b[i])
  36. for i in range(l1, l2):
  37. sum.append(a[i])
  38. return sum
  39. def CF(cf, values):
  40. if cf == 'AVERAGE':
  41. return float(sum(values))/len(values)
  42. elif cf == 'MAX':
  43. return max(values)
  44. elif cf == 'MIN':
  45. return min(values)
  46. elif cf == 'LAST':
  47. return values[-1]