diff --git a/watcher/datasource/ceilometer.py b/watcher/datasource/ceilometer.py index 424011bd5..a53b6943b 100644 --- a/watcher/datasource/ceilometer.py +++ b/watcher/datasource/ceilometer.py @@ -19,6 +19,7 @@ import datetime from ceilometerclient import exc +from oslo_log import log from oslo_utils import timeutils from watcher._i18n import _ @@ -26,6 +27,8 @@ from watcher.common import clients from watcher.common import exception from watcher.datasource import base +LOG = log.getLogger(__name__) + class CeilometerHelper(base.DataSourceBase): @@ -112,15 +115,15 @@ class CeilometerHelper(base.DataSourceBase): self.osc.reset_clients() self.ceilometer = self.osc.ceilometer() return f(*args, **kargs) - except Exception: - raise + except Exception as e: + LOG.exception(e) def check_availability(self): - try: - self.query_retry(self.ceilometer.resources.list) - except Exception: + status = self.query_retry(self.ceilometer.resources.list) + if status: + return 'available' + else: return 'not available' - return 'available' def query_sample(self, meter_name, query, limit=1): return self.query_retry(f=self.ceilometer.samples.list, @@ -138,9 +141,8 @@ class CeilometerHelper(base.DataSourceBase): def list_metrics(self): """List the user's meters.""" - try: - meters = self.query_retry(f=self.ceilometer.meters.list) - except Exception: + meters = self.query_retry(f=self.ceilometer.meters.list) + if not meters: return set() else: return meters diff --git a/watcher/datasource/gnocchi.py b/watcher/datasource/gnocchi.py index fd4658f86..ad651a8c5 100644 --- a/watcher/datasource/gnocchi.py +++ b/watcher/datasource/gnocchi.py @@ -24,7 +24,6 @@ from oslo_config import cfg from oslo_log import log from watcher.common import clients -from watcher.common import exception from watcher.common import utils as common_utils from watcher.datasource import base @@ -49,20 +48,18 @@ class GnocchiHelper(base.DataSourceBase): except Exception as e: LOG.exception(e) time.sleep(CONF.gnocchi_client.query_timeout) - raise exception.DataSourceNotAvailable(datasource='gnocchi') def check_availability(self): - try: - self.query_retry(self.gnocchi.status.get) - except Exception: + status = self.query_retry(self.gnocchi.status.get) + if status: + return 'available' + else: return 'not available' - return 'available' def list_metrics(self): """List the user's meters.""" - try: - response = self.query_retry(f=self.gnocchi.metric.list) - except Exception: + response = self.query_retry(f=self.gnocchi.metric.list) + if not response: return set() else: return set([metric['name'] for metric in response]) @@ -95,8 +92,9 @@ class GnocchiHelper(base.DataSourceBase): f=self.gnocchi.resource.search, **kwargs) if not resources: - raise exception.ResourceNotFound(name='gnocchi', - id=resource_id) + LOG.warning("The {0} resource {1} could not be " + "found".format(self.NAME, resource_id)) + return resource_id = resources[0]['id'] diff --git a/watcher/datasource/monasca.py b/watcher/datasource/monasca.py index 4c948af3f..577b7b55a 100644 --- a/watcher/datasource/monasca.py +++ b/watcher/datasource/monasca.py @@ -19,11 +19,14 @@ import datetime from monascaclient import exc +from oslo_log import log from watcher.common import clients from watcher.common import exception from watcher.datasource import base +LOG = log.getLogger(__name__) + class MonascaHelper(base.DataSourceBase): @@ -42,8 +45,8 @@ class MonascaHelper(base.DataSourceBase): self.osc.reset_clients() self.monasca = self.osc.monasca() return f(*args, **kwargs) - except Exception: - raise + except Exception as e: + LOG.exception(e) def _format_time_params(self, start_time, end_time, period): """Format time-related params to the correct Monasca format @@ -67,11 +70,11 @@ class MonascaHelper(base.DataSourceBase): return start_timestamp, end_timestamp, period def check_availability(self): - try: - self.query_retry(self.monasca.metrics.list) - except Exception: + status = self.query_retry(self.monasca.metrics.list) + if status: + return 'available' + else: return 'not available' - return 'available' def list_metrics(self): # TODO(alexchadin): this method should be implemented in accordance to