Improve default error handling on collector

More details see:
https://bugs.launchpad.net/cloudkitty/+bug/1529034

Change-Id: I20ba915175bce5dcda72fbfd449770c72b91fce0
Closes-Bug: #1529034
This commit is contained in:
Aaron-DH
2015-12-24 17:30:31 +08:00
committed by Stéphane Albert
parent 21d2f73570
commit 76db98a149
3 changed files with 12 additions and 6 deletions

View File

@@ -73,6 +73,7 @@ class NoDataCollected(Exception):
@six.add_metaclass(abc.ABCMeta)
class BaseCollector(object):
collector_name = None
dependencies = []
def __init__(self, transformers, **kwargs):
@@ -111,6 +112,8 @@ class BaseCollector(object):
trans_resource = 'get_'
trans_resource += resource.replace('.', '_')
if not hasattr(self, trans_resource):
return None
raise NotImplementedError(
"No method found in collector '%s' for resource '%s'."
% (self.collector_name, resource))
func = getattr(self, trans_resource)
return func(start, end, project_id, q_filter)

View File

@@ -82,3 +82,7 @@ class MetaCollector(collector.BaseCollector):
func = self.map_retrieve(trans_resource, res_collector)
if func is not None:
return func(start, end, project_id, q_filter)
raise NotImplementedError(
"No method found in collector '%s' for resource '%s'."
% (res_collector.collector_name if res_collector else '',
resource))

View File

@@ -156,11 +156,10 @@ class Worker(BaseWorker):
start_timestamp,
next_timestamp,
self._tenant_id)
timed_data = [{'period': {'begin': start_timestamp,
'end': next_timestamp},
'usage': raw_data}]
return timed_data
if raw_data:
return [{'period': {'begin': start_timestamp,
'end': next_timestamp},
'usage': raw_data}]
def check_state(self):
timestamp = self._storage.get_state(self._tenant_id)