diff --git a/cloudkitty/collector/__init__.py b/cloudkitty/collector/__init__.py index 3b35fd11..bef54867 100644 --- a/cloudkitty/collector/__init__.py +++ b/cloudkitty/collector/__init__.py @@ -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) diff --git a/cloudkitty/collector/meta.py b/cloudkitty/collector/meta.py index 50d9f754..4a7ff44e 100644 --- a/cloudkitty/collector/meta.py +++ b/cloudkitty/collector/meta.py @@ -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)) diff --git a/cloudkitty/orchestrator.py b/cloudkitty/orchestrator.py index d5680673..fee39604 100644 --- a/cloudkitty/orchestrator.py +++ b/cloudkitty/orchestrator.py @@ -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)