[openstack-dev] Version header for OpenStack microversion support

Monty Taylor mordred at inaugust.com
Tue Jun 21 15:48:33 UTC 2016

On 06/21/2016 10:27 AM, Sean Dague wrote:
> On 06/21/2016 10:47 AM, Monty Taylor wrote:
> <snip>
>> I'll agree with Clint here, and give an example.
>> When I talk to Nova and get a detail record for a server, Nova talks to
>> Neutron and puts data that it receives into the addresses dict on the
>> server record. This is not the neutron data structure. In fact, it has
>> some information from the Network and some from the Port (it would be
>> helpful if it had _more_ info, but that's not the point here)
>> In any case, the data structure returned by Nova is not related in any
>> way to the version of Neutron that nova is talking to - nor should it be.
>> Here's an example (in yaml not json)
>>   addresses:
>>     - OS-EXT-IPS-MAC:mac_addr: fa:16:3e:ea:d8:0d
>>       OS-EXT-IPS:type: fixed
>>       addr:
>>       version: 4
>> If you want a neutron record, you'll talk to neutron.
> That's all well and good today, with all the things that we know about
> today. And says nothing about what the Neutron API looks like in 6 years
> time. Let's say that Neutron decides in 2020 that "fixed" is a non
> meaningful name, and stops using it.
> We just did a transition in Nova interacting with Glance where we *could
> not* guarantee the semantics of the interaction from before. We decided
> to *shrug* and just break it, because the only other option was to pin
> to Glance v1 API for eternity.
> So just because you can't imagine a situation right now where this isn't
> a problem, doesn't mean that it's not going to hit you. And the API is a
> place where we don't really get do overs without hurting users.
> ...
> And getting back to the point of the argument it's all about:
> OpenStack-API-Version: compute 2.11
> vs.
> OpenStack-API-Version: 2.11
> 8 bytes to be more explicit on our ACK, and to allow flexibility for
> composite actions in the future (which may never be used, so 8 bytes is
> our cost).

I think putting compute in the argument is a GREAT idea. Sorry, I should
have been much clearer on that.

I was mostly arguing that regardless of where Nova gets its data, if I'm
talking to Nova then it's Nova's api version I care about. I think
expecting me to need to also set a neutron microversion header when
talking to nova is a _terrible_ user experience, and if neutron were to
do something that would make it unpossible for nova to fulfill its API
contract, then we, as OpenStack, should say no.


More information about the OpenStack-dev mailing list