[openstack-dev] [Nova] Some ideas for micro-version implementation

Ken'ichi Ohmichi ken1ohmichi at gmail.com
Thu Oct 2 11:04:45 UTC 2014


Hi Brant,

2014-09-23 5:27 GMT+09:00 Brant Knudson <blk at acm.org>:
>> Close to Kilo, it is time to think about what's next for nova API. In
>> Kilo, we
>> will continue develop the important feature micro-version.
>>
>> In previous v2 on v3 propose, it's include some implementations can be
>> used for micro-version.
>> (https://review.openstack.org/#/c/84695/19/specs/juno/v2-on-v3-api.rst)
>> But finally, those implementations was considered too complex.
>>
>> So I'm try to find out more simple implementation and solution for
>> micro-version.
>>
>> I wrote down some ideas as blog post at:
>> http://soulxu.github.io/blog/2014/09/12/one-option-for-nova-api/
>>
>> And for those ideas also already done some POC, you can find out in the
>> blog post.
>>
>> As discussion in the Nova API meeting, we want to bring it up to mail-list
>> to
>> discussion. Hope we can get more idea and option from all developers.
>>
>> We will appreciate for any comment and suggestion!
>
> Did you consider JSON Home[1] for this? For Juno we've got JSON Home support
> in Keystone for Identity v3 (Zaqar was using it already). We weren't
> planning to use it for microversioning since we weren't planning on doing
> microversioning, but I think JSON Home could be used for this purpose.
>
> Using JSON Home, you'd have relationships that include the version, then the
> client can check the JSON Home document to see if the server has support for
> the relationship the client wants to use.

Thanks for your advice, that is very useful input for me.
I read both keystone-specs and ietf draft-spec for JSON-Home.
I have a question.

JSON-Home is useful for advertising API URL paths to clients, I guess
but it cannot advertise the supported attributes of a request body.
Is that right?

For example, we can create a user "nobody" by passing the following
request body to Keystone /v2.0/users with POST method:

  '{"user": {"email": null, "password": null, "enabled": true, "name":
"nobody", "tenantId": null}}'

In this case, I hope Keystone can advertise the above
attributes("email", "name", etc).
but JSON-Home doesn't cover it as its scope, I guess.

On current Nova v2 API, we need to add dummy extension when adding new
attributes to the existing request/response body because of
advertising something
changed to clients. I'm glad if we can use more standard way for doing it.

Thanks
Ken'ichi Ohmichi



More information about the OpenStack-dev mailing list