Avoid applying noop lambdas per object in db_api.get_objects

It's a waste of cpu time, and I hate grep catching my name in tree. ;)

TrivialFix

Change-Id: I6fad4a4413e41f1fdb434e800e135f6cbe93ffda
This commit is contained in:
Ihar Hrachyshka 2017-02-11 13:40:19 +00:00
parent 2bef2e6699
commit 19307f6edf
3 changed files with 7 additions and 5 deletions

View File

@ -272,8 +272,11 @@ class CommonDbMixin(object):
limit=limit,
marker_obj=marker_obj,
page_reverse=page_reverse)
items = [attributes.populate_project_info(dict_func(c, fields))
for c in query]
items = [
attributes.populate_project_info(
dict_func(c, fields) if dict_func else c)
for c in query
]
if limit and page_reverse:
items.reverse()
return items

View File

@ -48,8 +48,7 @@ def get_objects(context, model, _pager=None, **kwargs):
plugin = directory.get_plugin()
return plugin._get_collection(
context, model,
# TODO(ihrachys): avoid this no-op call per model found
lambda obj, fields: obj,
dict_func=None, # return all the data
filters=filters,
**(_pager.to_kwargs(context, model) if _pager else {}))

View File

@ -46,7 +46,7 @@ class GetObjectsTestCase(test_base.BaseTestCase):
api.get_objects(ctxt, model, _pager=pager)
get_object.assert_called_with(ctxt, model, id=marker)
get_collection.assert_called_with(
ctxt, model, mock.ANY,
ctxt, model, dict_func=None,
filters={},
limit=limit,
marker_obj=get_object.return_value)