Fix NoneType error in service_get_all

When calling service_get_all without filters,
it raises NoneType error which is imported by
this patch I21775106693176ca128dbfd9db0d43cfc58de00a.

Change-Id: I473a9bbd2caea21c6fcd82b483bece1337ab6535
Closes-Bug: 1549563
This commit is contained in:
lisali 2016-02-25 02:19:13 +00:00
parent 72c4aae81c
commit bd1f6c9125
2 changed files with 10 additions and 8 deletions

View File

@ -379,15 +379,16 @@ def service_get_all(context, filters=None):
query = model_query(context, models.Service)
try:
host = filters.pop('host')
host_attr = models.Service.host
conditions = or_(host_attr == host, host_attr.op('LIKE')(host + '@%'))
query = query.filter(conditions)
except KeyError:
pass
if filters:
try:
host = filters.pop('host')
host_attr = models.Service.host
conditions = or_(host_attr ==
host, host_attr.op('LIKE')(host + '@%'))
query = query.filter(conditions)
except KeyError:
pass
query = query.filter_by(**filters)
return query.all()

View File

@ -191,6 +191,7 @@ class DBAPIServiceTestCase(BaseTest):
expected_bin = services[1:3]
compares = [
(services, db.service_get_all(self.ctxt, {})),
(services, db.service_get_all(self.ctxt)),
(expected, db.service_get_all(self.ctxt, {'host': 'host1'})),
(expected_bin, db.service_get_all(self.ctxt, {'binary': 'b2'})),
(disabled_services, db.service_get_all(self.ctxt,