Openstack APIs and RFC 7234 HTTP caching
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Invalid
|
Wishlist
|
Unassigned | ||
openstack-api-sig |
Fix Released
|
Medium
|
Unassigned |
Bug Description
Description
===========
I recently hit an issue where I was using Terraform through an HTTP proxy (enforced by my company IT) to provision some resources in an Openstack cloud. Since creating the resources took some time, the initial response from openstack was "still creating...". Further polling of the resource status resulted in receiving *cached* copies of "still creating..." from the proxy until time-out.
RFC7234 that describes HTTP caching states that in absence of all headers describing the lifetime/validity of the response, heuristic algorithms may be applied by caches to guesstimate an appropriate value for the validity of the response... (Who knows what is implemented out there...) See: the HTTP caching RFC section 4.2.2 <https:/
The API responses describe the current state of an object which isn't permanent, but has a limited validity. In fact very limited as the state of an object might change any moment.
Therefore it is my opinion that the Openstack API (Nova in this case, but equally valid for all other APIs) should be responsible to include proper HTTP headers in their responses to either disallow caching of the response or at least limit it's validity.
See the HTTP caching RFC section 5 <https:/
For sake of completeness; also see https:/
Expected result
===============
Openstack APIs to include header(s) from RFC7234 section 5 <https:/
Actual result
=============
No headers controlling caching present whatsoever.
I've added api-sig to this because the fact that this issue has shown up in the wild should be good motivation for us to make a guideline about how to address it. The code for adding the requisite headers to placement may be a useful starting point: https:/ /review. openstack. org/#/c/ 521640/