diff --git a/neutron/db/db_base_plugin_v2.py b/neutron/db/db_base_plugin_v2.py index dfcecfb03f5..982779cc65a 100644 --- a/neutron/db/db_base_plugin_v2.py +++ b/neutron/db/db_base_plugin_v2.py @@ -1273,11 +1273,16 @@ class NeutronDbPluginV2(db_base_plugin_common.DbBasePluginCommon, ip_addresses = fixed_ips.get('ip_address') subnet_ids = fixed_ips.get('subnet_id') if ip_addresses or subnet_ids: - query = query.join(Port.fixed_ips) if ip_addresses: - query = query.filter(IPAllocation.ip_address.in_(ip_addresses)) + query = query.filter( + Port.fixed_ips.any( + IPAllocation.ip_address.in_(ip_addresses) + ) + ) if subnet_ids: - query = query.filter(IPAllocation.subnet_id.in_(subnet_ids)) + query = query.filter( + Port.fixed_ips.any(IPAllocation.subnet_id.in_(subnet_ids)) + ) query = self._apply_filters_to_query(query, Port, filters, context) if sorts: