summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lower-constraints.txt2
-rw-r--r--neutron/objects/base.py2
-rw-r--r--neutron/objects/db/api.py15
-rw-r--r--requirements.txt2
4 files changed, 14 insertions, 7 deletions
diff --git a/lower-constraints.txt b/lower-constraints.txt
index 63acbd33dd..5e019f6626 100644
--- a/lower-constraints.txt
+++ b/lower-constraints.txt
@@ -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
diff --git a/neutron/objects/base.py b/neutron/objects/base.py
index 41a24ee56b..e738b1dcea 100644
--- a/neutron/objects/base.py
+++ b/neutron/objects/base.py
@@ -933,5 +933,5 @@ class NeutronDbObject(NeutronObject, metaclass=DeclarativeObject):
cls.validate_filters(**kwargs)
# Succeed if at least a single object matches; no need to fetch more
return bool(obj_db_api.count(
- cls, context, **cls.modify_fields_to_db(kwargs))
+ cls, context, query_limit=1, **cls.modify_fields_to_db(kwargs))
)
diff --git a/neutron/objects/db/api.py b/neutron/objects/db/api.py
index 8a4003a591..96d4025c6d 100644
--- a/neutron/objects/db/api.py
+++ b/neutron/objects/db/api.py
@@ -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):
diff --git a/requirements.txt b/requirements.txt
index bf410a9387..1f732483ae 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -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.2.0 # MIT