You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

208 lines
5.5 KiB

  1. from django.shortcuts import render_to_response
  2. from django.http import HttpResponse, HttpResponseRedirect
  3. from django.template import RequestContext
  4. from django.utils import simplejson
  5. from main.views import *
  6. from pydash.settings import TIME_JS_REFRESH
  7. def cpuusage(request):
  8. """
  9. Return CPU Usage in %
  10. """
  11. if not request.user.is_authenticated():
  12. return HttpResponseRedirect('/login')
  13. datasets = []
  14. compute = Compute.objects.get(id=host_id)
  15. try:
  16. conn = wvmHostDetails(compute.hostname,
  17. compute.login,
  18. compute.password,
  19. compute.type)
  20. cpu_usage = conn.get_cpu_usage()
  21. conn.close()
  22. except libvirtError:
  23. cpu_usage = 0
  24. try:
  25. cookies = request._cookies['cpu_usage']
  26. except KeyError:
  27. cookies = None
  28. if not cookies:
  29. datasets.append(0)
  30. else:
  31. datasets = eval(cookies)
  32. if len(datasets) > 10:
  33. while datasets:
  34. del datasets[0]
  35. if len(datasets) == 10:
  36. break
  37. if len(datasets) <= 9:
  38. datasets.append(int(cpu_usage['usage']))
  39. if len(datasets) == 10:
  40. datasets.append(int(cpu_usage['usage']))
  41. del datasets[0]
  42. # Some fix division by 0 Chart.js
  43. if len(datasets) == 10:
  44. if sum(datasets) == 0:
  45. datasets[9] += 0.1
  46. if sum(datasets) / 10 == datasets[0]:
  47. datasets[9] += 0.1
  48. cpu = {
  49. 'labels': [""] * 10,
  50. 'datasets': [
  51. {
  52. "fillColor": "rgba(241,72,70,0.5)",
  53. "strokeColor": "rgba(241,72,70,1)",
  54. "pointColor": "rgba(241,72,70,1)",
  55. "pointStrokeColor": "#fff",
  56. "data": datasets
  57. }
  58. ]
  59. }
  60. data = simplejson.dumps(cpu)
  61. response = HttpResponse()
  62. response['Content-Type'] = "text/javascript"
  63. response.cookies['cpu_usage'] = datasets
  64. response.write(data)
  65. return response
  66. def memusage(request):
  67. """
  68. Return Memory Usage in % and numeric
  69. """
  70. if not request.user.is_authenticated():
  71. return HttpResponseRedirect('/login')
  72. datasets = []
  73. #compute = Compute.objects.get(id=host_id)
  74. try:
  75. #conn = wvmHostDetails(compute.hostname,
  76. # compute.login,
  77. # compute.password,
  78. # compute.type)
  79. mem_usage = get_mem()
  80. #conn.close()
  81. except Exception:
  82. mem_usage = 0
  83. try:
  84. cookies = request._cookies['memory_usage']
  85. except Exception:
  86. cookies = None
  87. if not cookies:
  88. datasets.append(0)
  89. else:
  90. datasets = eval(cookies)
  91. if len(datasets) > 10:
  92. while datasets:
  93. del datasets[0]
  94. if len(datasets) == 10:
  95. break
  96. if len(datasets) <= 9:
  97. datasets.append(int(mem_usage['usage']))
  98. if len(datasets) == 10:
  99. datasets.append(int(mem_usage['usage']))
  100. del datasets[0]
  101. # Some fix division by 0 Chart.js
  102. if len(datasets) == 10:
  103. if sum(datasets) == 0:
  104. datasets[9] += 0.1
  105. if sum(datasets) / 10 == datasets[0]:
  106. datasets[9] += 0.1
  107. memory = {
  108. 'labels': [""] * 10,
  109. 'datasets': [
  110. {
  111. "fillColor": "rgba(249,134,33,0.5)",
  112. "strokeColor": "rgba(249,134,33,1)",
  113. "pointColor": "rgba(249,134,33,1)",
  114. "pointStrokeColor": "#fff",
  115. "data": datasets
  116. }
  117. ]
  118. }
  119. data = simplejson.dumps(memory)
  120. response = HttpResponse()
  121. response['Content-Type'] = "text/javascript"
  122. response.cookies['memory_usage'] = datasets
  123. response.write(data)
  124. return response
  125. def loadaverage(request):
  126. """
  127. Return Load Average numeric
  128. """
  129. if not request.user.is_authenticated():
  130. return HttpResponseRedirect('/login')
  131. datasets = []
  132. #compute = Compute.objects.get(id=host_id)
  133. try:
  134. #conn = wvmHostDetails(compute.hostname,
  135. # compute.login,
  136. # compute.password,
  137. # compute.type)
  138. load_average = get_load()
  139. #conn.close()
  140. except Exception:
  141. load_average = 0
  142. try:
  143. cookies = request._cookies['load_average']
  144. except Exception:
  145. cookies = None
  146. if not cookies:
  147. datasets.append(0)
  148. else:
  149. datasets = eval(cookies)
  150. if len(datasets) > 10:
  151. while datasets:
  152. del datasets[0]
  153. if len(datasets) == 10:
  154. break
  155. if len(datasets) <= 9:
  156. datasets.append(int(load_average))
  157. if len(datasets) == 10:
  158. datasets.append(int(load_average))
  159. del datasets[0]
  160. # Some fix division by 0 Chart.js
  161. if len(datasets) == 10:
  162. if sum(datasets) == 0:
  163. datasets[9] += 0.1
  164. if sum(datasets) / 10 == datasets[0]:
  165. datasets[9] += 0.1
  166. load = {
  167. 'labels': [""] * 10,
  168. 'datasets': [
  169. {
  170. "fillColor" : "rgba(151,187,205,0.5)",
  171. "strokeColor" : "rgba(151,187,205,1)",
  172. "pointColor" : "rgba(151,187,205,1)",
  173. "pointStrokeColor": "#fff",
  174. "data": datasets
  175. }
  176. ]
  177. }
  178. data = simplejson.dumps(load)
  179. response = HttpResponse()
  180. response['Content-Type'] = "text/javascript"
  181. response.cookies['load_average'] = datasets
  182. response.write(data)
  183. return response