Revision 334c1b75 api/servers.py
b/api/servers.py | ||
---|---|---|
57 | 57 |
(r'^/(\d+)/ips/(.+?)(?:.json|.xml)?$', 'list_addresses_by_network'), |
58 | 58 |
(r'^/(\d+)/meta(?:.json|.xml)?$', 'metadata_demux'), |
59 | 59 |
(r'^/(\d+)/meta/(.+?)(?:.json|.xml)?$', 'metadata_item_demux'), |
60 |
(r'^/(\d+)/stats(?:.json|.xml)?$', 'server_stats'), |
|
60 | 61 |
) |
61 | 62 |
|
62 | 63 |
|
... | ... | |
460 | 461 |
meta.delete() |
461 | 462 |
vm.save() |
462 | 463 |
return HttpResponse(status=204) |
464 |
|
|
465 |
@util.api_method('GET') |
|
466 |
def server_stats(request, server_id): |
|
467 |
# Normal Response Codes: 200 |
|
468 |
# Error Response Codes: computeFault (400, 500), |
|
469 |
# serviceUnavailable (503), |
|
470 |
# unauthorized (401), |
|
471 |
# badRequest (400), |
|
472 |
# itemNotFound (404), |
|
473 |
# overLimit (413) |
|
474 |
|
|
475 |
vm = util.get_vm(server_id, request.user) |
|
476 |
secret = util.encrypt(vm.backend_id) |
|
477 |
cpu = settings.CPU_GRAPH_URL_TEMPLATE % secret |
|
478 |
net = settings.NET_GRAPH_URL_TEMPLATE % secret |
|
479 |
|
|
480 |
stats = { |
|
481 |
'serverRef': vm.id, |
|
482 |
'refresh': settings.STATS_REFRESH_PERIOD, |
|
483 |
'cpu': cpu, |
|
484 |
'net': net} |
|
485 |
|
|
486 |
if request.serialization == 'xml': |
|
487 |
data = render_to_string('server_stats.xml', stats) |
|
488 |
else: |
|
489 |
data = json.dumps({'stats': stats}) |
|
490 |
|
|
491 |
return HttpResponse(data, status=200) |
Also available in: Unified diff