Merge branch 'master' of git://git.planet-lab.org/plstackapi
authorSapan Bhatia <sapanb@cs.princeton.edu>
Wed, 7 Jan 2015 06:11:47 +0000 (01:11 -0500)
committerSapan Bhatia <sapanb@cs.princeton.edu>
Wed, 7 Jan 2015 06:11:47 +0000 (01:11 -0500)
planetstack/core/views/stats.py [new file with mode: 0644]
planetstack/monitor/monitordriver.py
planetstack/openstack_observer/ceilometer.py

diff --git a/planetstack/core/views/stats.py b/planetstack/core/views/stats.py
new file mode 100644 (file)
index 0000000..46ebe2e
--- /dev/null
@@ -0,0 +1,11 @@
+from django.http import HttpResponse
+from monitor import driver
+import json
+
+def Stats(request):
+    model = request.GET['model_name']
+    pk = int(request.GET['pk'])
+    meter = int(request.GET['meter'])
+    
+    meters = monitor.get_meters(meter, model, pk)
+    return json.dumps(meters)
index f7eb1b9..77e8bfd 100644 (file)
@@ -15,5 +15,5 @@ class MonitorDriver:
     def __init__(self):
         pass
 
-    def get_meter(self, meter_name, credentials):
+    def get_meter(self, meter_name, obj, pk, credentials=None):
         pass
index 11e9851..f93dc1a 100644 (file)
@@ -8,7 +8,19 @@ import re
 import datetime
 import time
 from monitor.monitordriver import *
-
+from core.models import *
+
+def object_to_filter(model_name, pk):
+       filter_dict = {
+               'Slice':[Slice, 'tenant_id', 'project_id'],
+               'Sliver':[Sliver, 'instance_id', 'resource_id'],
+               'Site':[Site, 'tenant_id', 'project_id']
+       }
+       
+       mod,field,tag = filter_dict[model_name]
+       obj = mod.objects.get(pk=pk)
+       return '%s=%s'%(tag,mod[field])
+       
 
 def cli_to_array(cli_query):
     '''This converts from the cli list of queries to what is required
@@ -70,24 +82,27 @@ def meters_to_stats(meters):
                 
 
 class CeilometerDriver(MonitorDriver):
-    def get_meter(self, meter, object_filter, keystone):
+    def get_meter(self, meter, obj, pk, keystone=None):
         if (not keystone):
             keystone = {}
             keystone['username']=env['OS_USERNAME']
             keystone['password']=env['OS_PASSWORD']
             keystone['auth_url']=env['OS_AUTH_URL']
             keystone['tenant_name']=env['OS_TENANT_NAME']
+            keystone['os_cacert']=env['OS_CACERT']
 
         ceilometer_client = client._get_ksclient(**keystone)
         token = ceilometer_client.auth_token
 
         ceilo_endpoint = client._get_endpoint(ceilometer_client, **keystone)
+       #ceilometer = client.get_client(2, username=keystone['username'], password=keystone['password'], tenant_name=keystone['tenant_name'], auth_url=keystone['auth_url'])
 
         ceilometer = client.Client('2',endpoint = ceilo_endpoint, token = lambda: token)
 
         cur_ts = datetime.datetime.fromtimestamp(time.time()-86400)
         str_ts = cur_ts.strftime('%Y-%m-%dT%H:%M:%S')
         
+               object_filter = object_to_filter(obj, pk)
         filter=';'.join([object_filter,'timestamp>%s'%str_ts])
         #query = cli_to_array("project_id=124de34266b24f57957345cdb43cc9ff;timestamp>2014-12-11T00:00:00")
         query = cli_to_array(filter)