diff --git a/neutron/db/_model_query.py b/neutron/db/_model_query.py index 2f195fa2e2c..b74e658dca3 100644 --- a/neutron/db/_model_query.py +++ b/neutron/db/_model_query.py @@ -191,11 +191,6 @@ def apply_filters(query, model, filters, context=None): # do multiple equals matches query = query.filter( or_(*[column == v for v in value])) - elif None in value: - # in_() operator does not support NULL element so we have - # to do multiple equals matches - query = query.filter( - or_(*[column == v for v in value])) elif isinstance(value, obj_utils.StringMatchingFilterObj): if value.is_contains: query = query.filter( @@ -206,6 +201,11 @@ def apply_filters(query, model, filters, context=None): elif value.is_ends: query = query.filter( column.endswith(value.ends)) + elif None in value: + # in_() operator does not support NULL element so we have + # to do multiple equals matches + query = query.filter( + or_(*[column == v for v in value])) else: query = query.filter(column.in_(value)) elif key == 'shared' and hasattr(model, 'rbac_entries'): diff --git a/neutron/tests/unit/objects/db/test_api.py b/neutron/tests/unit/objects/db/test_api.py index 62007027770..7130bcdf69c 100644 --- a/neutron/tests/unit/objects/db/test_api.py +++ b/neutron/tests/unit/objects/db/test_api.py @@ -86,13 +86,13 @@ class CRUDScenarioTestCase(testlib_api.SqlTestCase): self.model = models_v2.Network self.ctxt = context.get_admin_context() - def test_get_object_with_none_value_in_filters(self): + def test_get_object_with_None_value_in_filters(self): obj = api.create_object(self.ctxt, self.model, {'name': 'foo'}) new_obj = api.get_object( self.ctxt, self.model, name='foo', status=None) self.assertEqual(obj, new_obj) - def test_get_objects_with_none_value_in_filters(self): + def test_get_objects_with_None_value_in_filters(self): obj = api.create_object(self.ctxt, self.model, {'name': 'foo'}) new_objs = api.get_objects( self.ctxt, self.model, name='foo', status=None)