From 94adfd8f36fbe58c0af25d021319f8e2795e02e1 Mon Sep 17 00:00:00 2001 From: Sapan Bhatia Date: Wed, 7 Jan 2015 01:09:58 -0500 Subject: [PATCH] Fetch statistics for any OpenCloud model --- planetstack/openstack_observer/ceilometer.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) 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 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) -- 2.43.0