[openstack-dev] [nova] how to handle vendor-specific API microversions?

Ken'ichi Ohmichi ken1ohmichi at gmail.com
Tue Mar 31 05:52:19 UTC 2015

2015-03-28 4:03 GMT+09:00 Chris Friesen <chris.friesen at windriver.com>:
> On 03/27/2015 12:44 PM, Dan Smith wrote:
>>> To quote John from an earlier email in this thread:
>>> Its worth noting, we do have the "experimental" flag:
>>> "
>>> The first header specifies the version number of the API which was
>>> executed. Experimental is only returned if the operator has made a
>>> modification to the API behaviour that is non standard. This is only
>>> intended to be a transitional mechanism while some functionality used
>>> by cloud operators is upstreamed and it will be removed within a small
>>> number of releases.
>>> "
>>> So if you have an extension that gets accepted upstream you can use the
>>> experimental flag until you migrate to the upstream version of the
>>> extension.
>> Yes, but please note the last sentence in the quoted bit. This is to
>> help people clean their dirty laundry. Going forward, you shouldn't
>> expect to deliver features to your customers via this path.
>>> That is *not* what I would call interoperability, this is exactly what
>>> we do not want.
>> +1.
> So for the case where a customer really wants some functionality, and wants
> it *soon* rather than waiting for it to get merged upstream, what is the
> recommended implementation path for a vendor?
> And what about stuff that's never going to get merged upstream because it's
> too specialized or too messy or depends on proprietary stuff?
> I ask this as an employee of a vendor that provides some modifications that
> customers seem to find useful (using the existing extensions mechanism to
> control them) and we want to do the right thing here.  Some of the
> modifications could make sense upstream and we are currently working on
> pushing those, but it's not at all clear how we're supposed to handle the
> above scenarios once the existing extension code gets removed.

Nova is just code, it is possible to extend APIs as vendors want.
However, I'm not sure why community/upstream needs to provide the
vendor customization way as the standard one.
If your use case is private cloud, interoperability is not so
important and you can customize APIs without concerns related to

Now we are trying to deny unexpected attributes (including vendor
specific attributes) on Tempest[1], so refstack which is using Tempest
will deny these customized APIs.

Ken Ohmichi

[1]: http://lists.openstack.org/pipermail/openstack-dev/2015-February/057613.html

More information about the OpenStack-dev mailing list