Tempest logs shows that project_id field was not included in the payload while tenant_id is there. Code inspection for ml2 suggests that it should have been included by virtue of resource_fields calling to attributes.populate_project_info.
In theory, API layer could have filtered that out because of policy checks. The client in question is not admin, but neither get_network:project_id policy exists in policy.json deployed, so the field should not have been filtered by:
But maybe the field is marked as non-visible in resource map? But then the previous POST request would also not return project_id attribute, but it did. So it's apparently some one-off failure for the specific request.
Of note is, we switched to pecan lately, which may have some lingering bug.
Tempest logs shows that project_id field was not included in the payload while tenant_id is there. Code inspection for ml2 suggests that it should have been included by virtue of resource_fields calling to attributes. populate_ project_ info.
In theory, API layer could have filtered that out because of policy checks. The client in question is not admin, but neither get_network: project_ id policy exists in policy.json deployed, so the field should not have been filtered by:
https:/ /github. com/openstack/ neutron/ blob/master/ neutron/ pecan_wsgi/ hooks/policy_ enforcement. py#L228
But maybe the field is marked as non-visible in resource map? But then the previous POST request would also not return project_id attribute, but it did. So it's apparently some one-off failure for the specific request.
Of note is, we switched to pecan lately, which may have some lingering bug.