As discussed at our nova meetings, reorganize the juno specs into three directories: - proposed: things proposed which weren't approved - approved: things we approved but didn't implement - implemented: things approved and implemented The first I suspect is the most controversial. I've done this because I worry about the case where a future developer wants to pick up something dropped by a previous developer, but has trouble finding previous proposed specifications on the topic. Note that the actual proposed specs for Juno are adding in a later commit. Change-Id: Idcf55ca37a83d7098dcb7c2971240c4e8fd23dc8
3.8 KiB
API v3: Add x-openstack-request-id header
https://blueprints.launchpad.net/nova/+spec/cross-service-request-id
The various OpenStack services are standardizing on a common header name to use for the request ID: x-openstack-request-id. Nova currently uses the header x-compute-request-id.
Problem description
nova sends the request ID as x-compute-request-id. Other services (cinder, glance, neutron) send x-openstack-request-id.
Proposed change
Use x-openstack-request-id when handling v3 requests for nova. There is existing middleware in oslo to generate the ID and attach the header to the response.
Alternatives
The current approach -- keeping the existing header name -- is the alternative. This will perpetuate header name discontinuity among OpenStack services.
Another alternative is to include the new header name for both v2 and v3. But the benefits of doing so is not great enough to justify altering the behavior of the existing API.
Data model impact
None.
REST API impact
This change will add a new header to HTTP responses. The new header, x-openstack-request-id, will have the same value as x-compute-request-id. After this blueprint is implemented, v2 will continue to return x-compute-request-id. For v3, only x-openstack-request-id will be returned.
Security impact
None.
Notifications impact
None.
Other end user impact
Users making requests using the v3 API will only receive the new header, x-openstack-request-id. python-novaclient uses x-compute-request-id (if present) when reporting an HTTPError; this will need to be updated to use the new header name when novaclient is using v3. Other clients moving from v2 to v3 will need to consider the header name change.
Performance Impact
None.
Other deployer impact
This change has an UpgradeImpact, since it relies on adding middleware to the pipeline in api-paste.ini. Since the middleware is taking over the task of attaching the header to the response, not updating api-paste.ini will cause responses to be returned without the x-openstack-request-id header. Additionally, when using the v2 API, the x-compute-request-id header will also be missing. The impact of this will be missing request ID information in error output by novaclient, as alluded to in a previous section.
Developer impact
None.
Implementation
Assignee(s)
chris-buccella
Work Items
- Sync request_id middleware from oslo (complete)
- Use request_id middleware to add x-openstack-request-id to both the v3 pipeline in api-paste.ini
- Write middleware to attach x-compute-request-id. Add this to the v2 pipeline only.
- Remove existing x-compute-request-id header manipulation code from api/openstack/wsgi.py
Dependencies
None.
Testing
Due to the header name change, api/compute/v3/servers/test_instance_actions will be affected, as it references the current header name. We already have a skip in place for this, and will update the test to use the new name after this blueprint is completed.
Documentation Impact
v3 responses of the API will only include x-openstack-request-id, not x-compute-request-id.
References
Discussion from the HK Summit: https://etherpad.openstack.org/p/icehouse-summit-nova-cross-project-request-ids
Refinements from the ML: http://lists.openstack.org/pipermail/openstack-dev/2013-December/020774.html
Existing change: https://review.openstack.org/#/c/66903/