graph_urls.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #-*- coding:utf-8 -*-
  2. import json
  3. import copy
  4. import re
  5. from rrd import config
  6. from rrd.model.tmpgraph import TmpGraph
  7. def generate_graph_urls(graph, start, end):
  8. counters = graph.counters or []
  9. if not counters:
  10. return []
  11. endpoint_list = graph.hosts or []
  12. if not endpoint_list:
  13. return []
  14. return _generate_graph_urls(graph, counters, endpoint_list, start, end)
  15. def _generate_graph_urls(graph, counters, endpoint_list, start, end):
  16. ret_graphs = []
  17. if graph.graph_type == 'h':
  18. for c in counters:
  19. tmp_graph_id = TmpGraph.add(endpoint_list, [c,])
  20. if not tmp_graph_id:
  21. break
  22. new_g = copy.deepcopy(graph)
  23. new_g.counters = c
  24. if end:
  25. new_g.src = '''/chart/h?id=%s&start=%s&end=%s''' %(tmp_graph_id, start or (0-graph.timespan), end)
  26. else:
  27. new_g.src = '''/chart/h?id=%s&start=%s''' %(tmp_graph_id, start or (0-graph.timespan))
  28. if graph.method == 'SUM':
  29. new_g.src += "&sum=on"
  30. else:
  31. new_g.src += "&cf=%s" %graph.method
  32. ret_graphs.append(new_g)
  33. elif graph.graph_type=='k':
  34. for e in endpoint_list:
  35. tmp_graph_id = TmpGraph.add([e,], counters)
  36. if not tmp_graph_id:
  37. break
  38. new_g = copy.deepcopy(graph)
  39. new_g.hosts = e
  40. if end:
  41. new_g.src = '''/chart/k?id=%s&start=%s&end=%s''' %(tmp_graph_id, start or (0-graph.timespan), end)
  42. else:
  43. new_g.src = '''/chart/k?id=%s&start=%s''' %(tmp_graph_id, start or (0-graph.timespan))
  44. if graph.method == 'SUM':
  45. new_g.src += "&sum=on"
  46. else:
  47. new_g.src += "&cf=%s" %graph.method
  48. ret_graphs.append(new_g)
  49. else:
  50. #组合视角
  51. tmp_graph_id = TmpGraph.add(endpoint_list, counters)
  52. if not tmp_graph_id:
  53. return []
  54. new_g = copy.deepcopy(graph)
  55. if end:
  56. new_g.src = '''/chart/a?id=%s&start=%s&end=%s''' %(tmp_graph_id, start or (0-graph.timespan), end)
  57. else:
  58. new_g.src = '''/chart/a?id=%s&start=%s''' %(tmp_graph_id, start or (0-graph.timespan))
  59. if graph.method == 'SUM':
  60. new_g.src += "&sum=on"
  61. else:
  62. new_g.src += "&cf=%s" %graph.method
  63. ret_graphs.append(new_g)
  64. return ret_graphs