Load ceilometer credentials from controller
Sapan Bhatia [Mon, 12 Jan 2015 21:48:19 +0000 (16:48 -0500)]
planetstack/core/views/stats.py
planetstack/openstack_observer/ceilometer.py

index 421fbfe..58f33e5 100644 (file)
@@ -1,5 +1,6 @@
 from django.http import HttpResponse
 from monitor import driver
+from core.models import *
 import json
 
 def Stats(request):
@@ -8,5 +9,11 @@ def Stats(request):
     meter = request.GET['meter']
     controller_name = request.GET['controller_name']
     
-    meters = driver.get_meter(meter, model, pk)
+    controller = Controller.objects.filter(name=controller_name)[0]
+    keystone = {'username':controller.admin_user, 'password':controller.admin_password, 'tenant_name':controller.admin_tenant, 'auth_url':controller.auth_url, 'cacert':'/etc/ssl/certs/ca-certificates.crt'}
+
+    for k,v in keystone.items():
+        keystone['os_'+k] = v
+    
+    meters = driver.get_meter(meter, model, pk, keystone)
     return HttpResponse(json.dumps(meters))
index 00c1238..e34b000 100644 (file)
@@ -13,9 +13,9 @@ import pdb
 def object_to_filter(model_name, pk):
     from core.models import *
     filter_dict = {
-            'Slice':[Slice, 'tenant_id', 'project_id'],
+            'ControllerSlice':[ControllerSlice, 'tenant_id', 'project_id'],
             'Sliver':[Sliver, 'instance_id', 'resource_id'],
-            'Site':[Site, 'tenant_id', 'project_id']
+            'ControllerSite':[ControllerSite, 'tenant_id', 'project_id']
     }
 
     mod,field,tag = filter_dict[model_name]
@@ -86,20 +86,21 @@ def meters_to_stats(meters):
 
 class CeilometerDriver(MonitorDriver):
     def get_meter(self, meter, obj, pk, keystone=None):
-        keystone = {}
-        keystone['os_username']=env['OS_USERNAME']
-        keystone['os_password']=env['OS_PASSWORD']
-        keystone['os_auth_url']=env['OS_AUTH_URL']
-        keystone['os_tenant_name']=env['OS_TENANT_NAME']
-        keystone['os_cacert']=env['OS_CACERT']
-        keystone['os_region_name']=env['OS_REGION_NAME']
-
-        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['cacert']=env['OS_CACERT']
-        keystone['region_name']=env['OS_REGION_NAME']
+        if (not keystone):
+                keystone={}
+                keystone['os_username']=env['OS_USERNAME']
+                keystone['os_password']=env['OS_PASSWORD']
+                keystone['os_auth_url']=env['OS_AUTH_URL']
+                keystone['os_tenant_name']=env['OS_TENANT_NAME']
+                keystone['os_cacert']=env['OS_CACERT']
+                keystone['os_region_name']=env['OS_REGION_NAME']
+
+                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['cacert']=env['OS_CACERT']
+                keystone['region_name']=env['OS_REGION_NAME']
 
         keystone['auth_plugin']=client.AuthPlugin(**keystone)