From 4742a033de115a947d709165fa592b78a5696ebb Mon Sep 17 00:00:00 2001 From: Andrew Melton Date: Mon, 4 Feb 2013 13:11:14 -0500 Subject: [PATCH] Adding stacky api for usage --- stacktach/dbapi.py | 2 +- stacktach/stacky_server.py | 80 +++++++++++++++++++++++++++++++++++++- stacktach/urls.py | 6 +++ 3 files changed, 86 insertions(+), 2 deletions(-) diff --git a/stacktach/dbapi.py b/stacktach/dbapi.py index 6d5f0ab..6f01a1a 100644 --- a/stacktach/dbapi.py +++ b/stacktach/dbapi.py @@ -9,7 +9,7 @@ import models def rsp(data): - return HttpResponse(json.dumps(data)) + return HttpResponse(json.dumps(data), content_type="application/json") def list_usage_launches(request): diff --git a/stacktach/stacky_server.py b/stacktach/stacky_server.py index 327bb25..994729c 100644 --- a/stacktach/stacky_server.py +++ b/stacktach/stacky_server.py @@ -72,7 +72,7 @@ def sec_to_time(diff): def rsp(data): - return HttpResponse(json.dumps(data)) + return HttpResponse(json.dumps(data), content_type="application/json") def do_deployments(request): @@ -297,3 +297,81 @@ def do_kpi(request, tenant_id=None): results.append([event, sec_to_time(track.duration), uuid, end_event.deployment.name]) return rsp(results) + + +def do_list_usage_launches(request): + + filter_args = {} + if 'instance' in request.GET: + filter_args['instance'] = request.GET['instance'] + + if len(filter_args) > 0: + launches = models.InstanceUsage.objects.filter(**filter_args) + else: + launches = models.InstanceUsage.objects.all() + + results = [] + results.append(["UUID", "Launched At", "Instance Type Id"]) + + for launch in launches: + launched = None + if launch.launched_at: + launched = str(dt.dt_from_decimal(launch.launched_at)) + results.append([launch.instance, launched, launch.instance_type_id]) + + return rsp(results) + + +def do_list_usage_deletes(request): + + filter_args = {} + if 'instance' in request.GET: + filter_args['instance'] = request.GET['instance'] + + if len(filter_args) > 0: + deletes = models.InstanceDeletes.objects.filter(**filter_args) + else: + deletes = models.InstanceDeletes.objects.all() + + results = [] + results.append(["UUID", "Launched At", "Deleted At"]) + + for delete in deletes: + launched = None + if delete.launched_at: + launched = str(dt.dt_from_decimal(delete.launched_at)) + deleted = None + if delete.deleted_at: + deleted = str(dt.dt_from_decimal(delete.deleted_at)) + results.append([delete.instance, launched, deleted]) + + return rsp(results) + + +def do_list_usage_exists(request): + + filter_args = {} + if 'instance' in request.GET: + filter_args['instance'] = request.GET['instance'] + + if len(filter_args) > 0: + exists = models.InstanceExists.objects.filter(**filter_args) + else: + exists = models.InstanceExists.objects.all() + + results = [] + results.append(["UUID", "Launched At", "Deleted At", "Instance Type Id", + "Message ID", "Status"]) + + for exist in exists: + launched = None + if exist.launched_at: + launched = str(dt.dt_from_decimal(exist.launched_at)) + deleted = None + if exist.deleted_at: + deleted = str(dt.dt_from_decimal(exist.deleted_at)) + results.append([exist.instance, launched, deleted, + exist.instance_type_id, exist.message_id, + exist.status]) + + return rsp(results) diff --git a/stacktach/urls.py b/stacktach/urls.py index ea86157..59c6098 100644 --- a/stacktach/urls.py +++ b/stacktach/urls.py @@ -18,6 +18,12 @@ urlpatterns = patterns('', 'stacktach.stacky_server.do_watch'), url(r'stacky/kpi/$', 'stacktach.stacky_server.do_kpi'), url(r'stacky/kpi/(?P\d+)/$', 'stacktach.stacky_server.do_kpi'), + url(r'stacky/usage/launches/$', + 'stacktach.stacky_server.do_list_usage_launches'), + url(r'stacky/usage/deletes/$', + 'stacktach.stacky_server.do_list_usage_deletes'), + url(r'stacky/usage/exists/$', + 'stacktach.stacky_server.do_list_usage_exists'), url(r'db/usage/launches/$', 'stacktach.dbapi.list_usage_launches'),