dashboard: Display real graphs for vms #44
Showing
... | ... | @@ -1224,3 +1224,45 @@ class TransferOwnershipConfirmView(LoginRequiredMixin, View): |
unicode(user), user.pk, new_owner, key) | ||
raise PermissionDenied() | ||
return (instance, new_owner) | ||
class VmGraphView(LoginRequiredMixin, View): | ||
def get(self, request, pk, metric, time, *args, **kwargs): | ||
from urllib import urlencode | ||
import urllib2 | ||
if metric not in ['cpu', 'memory', 'network']: | ||
raise SuspiciousOperation() | ||
try: | ||
instance = Instance.objects.get(id=pk) | ||
except Instance.DoesNotExist: | ||
raise Http404() | ||
if not instance.has_level(request.user, 'user'): | ||
raise PermissionDenied() | ||
prefix = 'vm.%s' % instance.vm_name | ||
if metric == 'cpu': | ||
target = ('cactiStyle(alias(derivative(%s.cpu.usage),' | ||
'"cpu usage (%%)"))') % prefix | ||
elif metric == 'memory': | ||
target = ('cactiStyle(alias(%s.memory.usage,' | ||
'"memory usage (%%)"))') % prefix | ||
elif metric == 'network': | ||
target = ('cactiStyle(aliasByMetric(' | ||
'derivative(%s.network.bytes_*)))') % prefix | ||
else: | ||
raise SuspiciousOperation() | ||
title = '%s (%s) - %s' % (instance.name, instance.vm_name, metric) | ||
params = urlencode({'target': target, | ||
'from': '-%s' % time, | ||
'title': title.encode('UTF-8')}) | ||
url = ('http://%s:%s/render/?width=500&height=200&%s' | ||
% (getenv("GRAPHITE_HOST"), | ||
getenv("GRAPHITE_PORT"), | ||
params)) | ||
print url | ||
response = urllib2.urlopen(urllib2.Request(url)) | ||
Please
register
or
sign in
to reply
|
||
return HttpResponse(response.read(), mimetype="image/png") | ||
print pk, metric | ||
|