[openstack-dev] [nova][python-novaclient] microversion implementation on client side

Jay Pipes jaypipes at gmail.com
Sun Apr 19 00:45:29 UTC 2015

Andrey, thanks for posing these important questions. My thoughts inline.

On 04/10/2015 07:30 AM, Andrey Kurilin wrote:
> Hi all!
> I working on implementation of support microversions in novaclient.
> Patches are ready for review, but there is one opened question: what we
> should do with v2.1 endpoint(computev21 service type)?
> "compute" is a default value of service type and keystone returns v2 api
> endpoint for it(at least in devstack), so version header will be ignored
> on API side.
> On the one hand, each deployment can have it's own configuration of
> service catalog and endpoints, so default value of service type should
> be strict and support as much deployments as we can. On the other hand,
> dependency of service type for microversion feature is not good and
> end-users should not take care about choice of correct service type when
> they want to execute simple command.


> Possible solutions:
>  1. leave everything as is: use "--service-type computev21" for each
>     microversioned command

It was a mistake to put any version information in *any* of the service 
types. The service type should be "compute" and only "compute". The 
version negotiation should be handled entirely separately via the 
X-OpenStack-Compute-API-Version HTTP header sent from the client.

>  2. move default value of service type to environment variables(default
>     value is hardcoded in novaclient code now)

I don't see any reason to do that, no.

>  3. add additional option --compute-api-type. Proposed etherpad by
>     Christopher Yeoh
>     https://etherpad.openstack.org/p/novaclient_microversions_design .
>     Implementation is already finished -
>     https://review.openstack.org/#/c/167577/ . This proposal still
>     requires addition cli option, but compute-api-type looks more
>     user-friendly

-1. There should be no additional option. The API microversion should be 
negotiated via the X-OpenStack-Compute-API-Version HTTP header and only 
via that.

The existing --os-compute-api-version CLI option should be made to take:

  * 2
  * \d+.\d+
  * "latest"

And nothing else.


> Current implementation uses "compute" as default value for service type.
> Patches are pass all gates, except stable branches and ready for review:
>   * https://review.openstack.org/#/c/169378/  - deprecate v1.1 and
>     remove references to v3 in code
>   * https://review.openstack.org/#/c/152569/  - Implements
>     'microversions' api type - Part 1 (usage of
>     nova.api.openstack.api_version_request:APIVersionRequest class with
>     https://review.openstack.org/#/c/169292/ )
>   * https://review.openstack.org/#/c/167408/  - Implements
>     'microversions' api type - Part 2 (adds new decorators and
>     substitution mechanism using nova.api.openstack.versioned_method )
>   * https://review.openstack.org/#/c/136458/  - Implementation of 2.2
>     microversion
> --
> Best regards,
> Andrey Kurilin.
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

More information about the OpenStack-dev mailing list