Fetch statistics for any OpenCloud model
diff --git a/planetstack/openstack_observer/ceilometer.py b/planetstack/openstack_observer/ceilometer.py
index 11e9851..f93dc1a 100644
--- a/planetstack/openstack_observer/ceilometer.py
+++ b/planetstack/openstack_observer/ceilometer.py
@@ -8,7 +8,19 @@
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 @@
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)