summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2023-05-17 19:23:02 +0000
committerGerrit Code Review <review@openstack.org>2023-05-17 19:23:02 +0000
commita26e957d346c79ce96680b437460c9a9c4b80447 (patch)
tree9361b664a68799140af834ed24b4cb7d72ed827c
parent99e309797bca3cea7053055ad63bfc3cce0fef35 (diff)
parentf23d7af8d7e36b9d52a8c8ccf64355e22f3adb9c (diff)
downloadneutron-master.tar.gz
Merge "Use explicit inner join for networks in port query"HEADmaster
-rw-r--r--neutron/db/db_base_plugin_v2.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/neutron/db/db_base_plugin_v2.py b/neutron/db/db_base_plugin_v2.py
index b5fe6e34cb..8b68a84cc2 100644
--- a/neutron/db/db_base_plugin_v2.py
+++ b/neutron/db/db_base_plugin_v2.py
@@ -114,11 +114,18 @@ def _update_subnetpool_dict(orig_pool, new_pool):
return updated
+def _port_query_hook(context, original_model, query):
+ # Apply the port query only in non-admin and non-advsvc context
+ if ndb_utils.model_query_scope_is_project(context, original_model):
+ query = query.join(models_v2.Network,
+ models_v2.Network.id == models_v2.Port.network_id)
+ return query
+
+
def _port_filter_hook(context, original_model, conditions):
# Apply the port filter only in non-admin and non-advsvc context
if ndb_utils.model_query_scope_is_project(context, original_model):
conditions |= and_(
- models_v2.Port.network_id == models_v2.Network.id,
models_v2.Network.project_id == context.project_id)
return conditions
@@ -154,7 +161,7 @@ class NeutronDbPluginV2(db_base_plugin_common.DbBasePluginCommon,
model_query.register_hook(
models_v2.Port,
"port",
- query_hook=None,
+ query_hook=_port_query_hook,
filter_hook=_port_filter_hook,
result_filters=None)
return super(NeutronDbPluginV2, cls).__new__(cls, *args, **kwargs)