Microversions do not protect new clients talking to old servers well enough

Bug #1488624 reported by Ben Swartzlander
6
This bug affects 1 person
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
Revision history for this message
Clinton Knight (clintonk) wrote :

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?

Revision history for this message
Ben Swartzlander (bswartz) wrote :

Sounds like you covered it all. Personally, I would love to have removed the extensions before this change, but too much work would be required to achieve that. Extensions will need to be removed in some later microversion 2.X.

Changed in manila:
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to manila (master)

Fix proposed to branch: master
Review: https://review.openstack.org/220221

Changed in manila:
assignee: Clinton Knight (clintonk) → Andrew Kerr (andrew-kerr)
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)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to manila (master)

Reviewed: https://review.openstack.org/220221
Committed: https://git.openstack.org/cgit/openstack/manila/commit/?id=dddc0688796c764888f98a3e3e6ba7ea3cbf1c98
Submitter: Jenkins
Branch: master

commit dddc0688796c764888f98a3e3e6ba7ea3cbf1c98
Author: Clinton Knight <email address hidden>
Date: Thu Aug 27 15:00:23 2015 -0400

    Add v2 Manila API path as base for microversions

    To prevent a microversioned client from managing a non-microversioned
    Manila server, Manila must update its REST endpoints by adding /v2 for
    all microversioned APIs.

    This commit does the following:

    * Add /v2 to the URL map, connected to all the same /v1 API methods
    * Renumber the microversion sequence starting from 2.0
    * Update the versions API to reflect v2
    * Publish the new endpoint to Keystone in the DevStack plug-in
    * Update relevant documentation
    * Update Tempest tests for microversions
    APIImpact
    Co-Authored-By: Andrew Kerr <email address hidden>
    Closes-Bug: 1488624
    Change-Id: I56a516b5f81914557dd2465746629431cfd6deac

Changed in manila:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in manila:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in manila:
milestone: liberty-rc1 → 1.0.0
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.