diff --git a/cinder/cmd/manage.py b/cinder/cmd/manage.py index 0dec106f3..5f1157da4 100644 --- a/cinder/cmd/manage.py +++ b/cinder/cmd/manage.py @@ -451,7 +451,7 @@ class ServiceCommands(object): try: svc = objects.Service.get_by_args(ctxt, host_name, binary) svc.destroy() - except exception.HostBinaryNotFound as e: + except exception.ServiceNotFound as e: print(_("Host not found. Failed to remove %(service)s" " on %(host)s.") % {'service': binary, 'host': host_name}) diff --git a/cinder/db/sqlalchemy/api.py b/cinder/db/sqlalchemy/api.py index 062c03be9..1d7815189 100644 --- a/cinder/db/sqlalchemy/api.py +++ b/cinder/db/sqlalchemy/api.py @@ -438,7 +438,8 @@ def service_get_by_host_and_topic(context, host, topic): filter_by(topic=topic).\ first() if not result: - raise exception.ServiceNotFound(service_id=None) + raise exception.ServiceNotFound(service_id=topic, + host=host) return result @@ -453,7 +454,8 @@ def service_get_by_args(context, host, binary): if host == result['host']: return result - raise exception.HostBinaryNotFound(host=host, binary=binary) + raise exception.ServiceNotFound(service_id=binary, + host=host) @require_admin_context diff --git a/cinder/exception.py b/cinder/exception.py index dad4a8b18..840140d18 100644 --- a/cinder/exception.py +++ b/cinder/exception.py @@ -368,7 +368,14 @@ class ImageNotFound(NotFound): class ServiceNotFound(NotFound): - message = _("Service %(service_id)s could not be found.") + + def __init__(self, message=None, **kwargs): + if kwargs.get('host', None): + self.message = _("Service %(service_id)s could not be " + "found on host %(host)s.") + else: + self.message = _("Service %(service_id)s could not be found.") + super(ServiceNotFound, self).__init__(None, **kwargs) class ServiceTooOld(Invalid): @@ -387,10 +394,6 @@ class SchedulerHostWeigherNotFound(NotFound): message = _("Scheduler Host Weigher %(weigher_name)s could not be found.") -class HostBinaryNotFound(NotFound): - message = _("Could not find binary %(binary)s on host %(host)s.") - - class InvalidReservationExpiration(Invalid): message = _("Invalid reservation expiration %(expire)s.") diff --git a/cinder/tests/unit/test_db_api.py b/cinder/tests/unit/test_db_api.py index 2a43dfaf8..f96ced30f 100644 --- a/cinder/tests/unit/test_db_api.py +++ b/cinder/tests/unit/test_db_api.py @@ -240,7 +240,7 @@ class DBAPIServiceTestCase(BaseTest): self._assertEqualObjects(services[1], service2) def test_service_get_by_args_not_found_exception(self): - self.assertRaises(exception.HostBinaryNotFound, + self.assertRaises(exception.ServiceNotFound, db.service_get_by_args, self.ctxt, 'non-exists-host', 'a') @@ -282,7 +282,7 @@ class DBAPIServiceTestCase(BaseTest): service2 = db.service_get_by_args(self.ctxt, 'HOST', 'a') self._assertEqualObjects(services[1], service2) - self.assertRaises(exception.HostBinaryNotFound, + self.assertRaises(exception.ServiceNotFound, db.service_get_by_args, self.ctxt, 'Host', 'a')