Merge "Improve "objects.db.api.count" method"

This commit is contained in:
Zuul 2021-04-29 17:31:15 +00:00 committed by Gerrit Code Review
commit b4812af4ee
3 changed files with 13 additions and 6 deletions

View File

@ -50,7 +50,7 @@ msgpack-python==0.4.0
munch==2.1.0
netaddr==0.7.18
netifaces==0.10.4
neutron-lib==2.10.1
neutron-lib==2.11.0
openstacksdk==0.31.2
os-client-config==1.28.0
os-ken==0.3.0

View File

@ -20,11 +20,13 @@ from oslo_utils import uuidutils
# Common database operation implementations
def _get_filter_query(obj_cls, context, **kwargs):
def _get_filter_query(obj_cls, context, query_field=None, query_limit=None,
**kwargs):
with obj_cls.db_context_reader(context):
filters = _kwargs_to_filters(**kwargs)
query = model_query.get_collection_query(
context, obj_cls.db_model, filters)
context, obj_cls.db_model, filters, limit=query_limit,
field=query_field)
return query
@ -32,8 +34,13 @@ def get_object(obj_cls, context, **kwargs):
return _get_filter_query(obj_cls, context, **kwargs).first()
def count(obj_cls, context, **kwargs):
return _get_filter_query(obj_cls, context, **kwargs).count()
def count(obj_cls, context, query_field=None, query_limit=None, **kwargs):
if not query_field and obj_cls.primary_keys:
query_field = obj_cls.primary_keys[0]
if query_field in obj_cls.fields_need_translation:
query_field = obj_cls.fields_need_translation[query_field]
return _get_filter_query(obj_cls, context, query_field=query_field,
query_limit=query_limit, **kwargs).count()
def _kwargs_to_filters(**kwargs):

View File

@ -16,7 +16,7 @@ Jinja2>=2.10 # BSD License (3 clause)
keystonemiddleware>=5.1.0 # Apache-2.0
netaddr>=0.7.18 # BSD
netifaces>=0.10.4 # MIT
neutron-lib>=2.10.1 # Apache-2.0
neutron-lib>=2.11.0 # Apache-2.0
python-neutronclient>=6.7.0 # Apache-2.0
tenacity>=6.0.0 # Apache-2.0
SQLAlchemy>=1.3.23 # MIT