Fixed tenant_id and device_id filtering
Changes made after the network sharing busted tenant_id based filtering. Also noticed that the model_query call was making an explicit filtering choice on Ports for device_id, so that particular filter was moved into the port_find method.
This commit is contained in:
@@ -96,9 +96,6 @@ def _model_query(context, model, filters, fields=None):
|
||||
else:
|
||||
model_filters.append(model._deallocated != 1)
|
||||
|
||||
if filters.get("device_id"):
|
||||
model_filters.append(models.Port.device_id.in_(filters["device_id"]))
|
||||
|
||||
if filters.get("address"):
|
||||
model_filters.append(model.address == filters["address"])
|
||||
|
||||
@@ -119,7 +116,7 @@ def _model_query(context, model, filters, fields=None):
|
||||
# This works even when a non-shared, other-tenant owned network is passed
|
||||
# in because the authZ checks that happen in Neutron above us yank it back
|
||||
# out of the result set.
|
||||
if "tenant_id" in filters or not context.is_admin:
|
||||
if "tenant_id" not in filters and not context.is_admin:
|
||||
filters["tenant_id"] = [context.tenant_id]
|
||||
|
||||
if filters.get("tenant_id"):
|
||||
@@ -165,6 +162,9 @@ def port_find(context, **filters):
|
||||
model_filters.append(models.Port.ip_addresses.any(
|
||||
models.IPAddress.id.in_(filters["ip_address_id"])))
|
||||
|
||||
if filters.get("device_id"):
|
||||
model_filters.append(models.Port.device_id.in_(filters["device_id"]))
|
||||
|
||||
return query.filter(*model_filters)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user