[openstack-dev] Version header for OpenStack microversion support

Sean Dague sean at dague.net
Tue Jun 21 15:27:10 UTC 2016

On 06/21/2016 10:47 AM, Monty Taylor wrote:
> 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


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).


Sean Dague

More information about the OpenStack-dev mailing list