Microversions do not protect new clients talking to old servers well enough
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Shared File Systems Service (Manila) |
Fix Released
|
Critical
|
Andrew Kerr |
Bug Description
One of primary purposes of microversions is to allow clients that understand microversions to determine if the server they are talking to understands the microversion that they speak. Clients should _expect_ REST APIs to fail if the server is too old to understand them.
Unfortunately existing old versions (such as Kilo) will simply ignore the microversion header and process the API as if it was a 1.0 request, even when the client explicitly asks for a higher version. This is because the URL didn't change from pre-microversions to post-microversions. We need to change the URL for microversioned requests to something that will definitely fail on older/existing versions of Manila, while continuing to support the old URL on the new server versions for backwards compatibility reasons (at least until we make the decision to complete the deprecation process for 1.0 and remove it altogether).
Changed in manila: | |
milestone: | none → liberty-rc1 |
importance: | Undecided → Critical |
status: | New → Triaged |
Changed in manila: | |
assignee: | nobody → Clinton Knight (clintonk) |
description: | updated |
Changed in manila: | |
status: | Triaged → In Progress |
Changed in manila: | |
assignee: | Andrew Kerr (andrew-kerr) → Clinton Knight (clintonk) |
Changed in manila: | |
assignee: | Clinton Knight (clintonk) → Alex Meade (alex-meade) |
Changed in manila: | |
assignee: | Alex Meade (alex-meade) → Andrew Kerr (andrew-kerr) |
Changed in manila: | |
status: | Fix Committed → Fix Released |
Changed in manila: | |
milestone: | liberty-rc1 → 1.0.0 |
Nova solved this problem by introducing /v2.1 in their URL path. But Ben doesn't want /v1.1 in the Manila URL path.
So what Ben wants is to introduce Manila v2 as the start of the microversions regime. This would require:
* Add /v2 to the URL map, connected to all the same /v1 API methods.
* Renumber the microversion sequence starting from 2.0.
* Update manilaclient to use v2.
* Update the versions API to reflect v2.
* Update tempest to use v2.
* Publish the new endpoint to Keystone.
What else?