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:
committed by
Stéphane Albert
parent
21d2f73570
commit
76db98a149
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user