Fix exception during service update

The function objects.Service.get_by_args raises HostBinaryNotFound
exception, but in service update function, it catches ServiceNotFound
exception by mistake.

This patch is to remove HostBinaryNotFound and use ServiceNotFound to make
things simple and consistent.

Change-Id: Ic2ef79ca03393f3b1eb5bb89d4ffcf92d76460c6
Closes-bug: #1551101
This commit is contained in:
LisaLi 2016-02-29 15:12:18 +08:00
parent 687ea8dd30
commit 802c5633e0
4 changed files with 15 additions and 10 deletions

View File

@ -450,7 +450,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})

View File

@ -426,7 +426,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
@ -441,7 +442,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

View File

@ -362,7 +362,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):
@ -381,10 +388,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.")

View File

@ -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')