From a7455a8bf7a4ca2d2c0b061d31de610428c4d130 Mon Sep 17 00:00:00 2001 From: Taylor Peoples Date: Tue, 19 Jan 2016 04:55:14 +0100 Subject: [PATCH] Remove shadow BaseException class The BaseException class defined in exceptions.py is shadowing the built-in BaseException class of the Python exception hierarchy, which could potentially cause confusion. This removes the BaseException definition and replaces it with the existing WatcherException object. Instantiations of the IllegalArgumentException are also changed to use the message kwarg. Change-Id: I20abf135805c7a354924de8a5194b59fc040460a Closes-Bug: #1535504 --- .../primitives/change_nova_service_state.py | 2 +- watcher/common/exception.py | 47 +++---------------- watcher/decision_engine/model/model_root.py | 4 +- 3 files changed, 9 insertions(+), 44 deletions(-) diff --git a/watcher/applier/primitives/change_nova_service_state.py b/watcher/applier/primitives/change_nova_service_state.py index c82a828f6..ec8e673e1 100644 --- a/watcher/applier/primitives/change_nova_service_state.py +++ b/watcher/applier/primitives/change_nova_service_state.py @@ -63,7 +63,7 @@ class ChangeNovaServiceState(base.BasePrimitive): def nova_manage_service(self, state): if state is None: raise exception.IllegalArgumentException( - _("The target state is not defined")) + message=_("The target state is not defined")) keystone = kclient.KeystoneClient() wrapper = nclient.NovaClient(keystone.get_credentials(), diff --git a/watcher/common/exception.py b/watcher/common/exception.py index b31fe5b67..6df955a3c 100644 --- a/watcher/common/exception.py +++ b/watcher/common/exception.py @@ -220,51 +220,16 @@ class PatchError(Invalid): # decision engine -class BaseException(Exception): - - def __init__(self, desc=""): - if (not isinstance(desc, six.string_types)): - raise ValueError(_("Description must be an instance of str")) - - desc = desc.strip() - - self._desc = desc - - def get_description(self): - return self._desc - - def get_message(self): - return _("An exception occurred without a description") - - def __str__(self): - return self.get_message() +class IllegalArgumentException(WatcherException): + msg_fmt = _('Illegal argument') -class IllegalArgumentException(BaseException): - def __init__(self, desc): - desc = desc or _("Description cannot be empty") - super(IllegalArgumentException, self).__init__(desc) - - def get_message(self): - return self._desc +class NoSuchMetric(WatcherException): + msg_fmt = _('No such metric') -class NoSuchMetric(BaseException): - def __init__(self, desc): - desc = desc or _("No such metric") - super(NoSuchMetric, self).__init__(desc) - - def get_message(self): - return self._desc - - -class NoDataFound(BaseException): - def __init__(self, desc): - desc = desc or _("No rows were returned") - super(NoDataFound, self).__init__(desc) - - def get_message(self): - return self._desc +class NoDataFound(WatcherException): + msg_fmt = _('No rows were returned') class KeystoneFailure(WatcherException): diff --git a/watcher/decision_engine/model/model_root.py b/watcher/decision_engine/model/model_root.py index 7ae764328..eb5cda841 100644 --- a/watcher/decision_engine/model/model_root.py +++ b/watcher/decision_engine/model/model_root.py @@ -34,12 +34,12 @@ class ModelRoot(object): def assert_hypervisor(self, obj): if not isinstance(obj, hypervisor.Hypervisor): raise exception.IllegalArgumentException( - _("'obj' argument type is not valid")) + message=_("'obj' argument type is not valid")) def assert_vm(self, obj): if not isinstance(obj, vm.VM): raise exception.IllegalArgumentException( - _("'obj' argument type is not valid")) + message=_("'obj' argument type is not valid")) def add_hypervisor(self, hypervisor): self.assert_hypervisor(hypervisor)