[openstack-dev] [nova] Backwards incompatible API changes

Christopher Yeoh cbkyeoh at gmail.com
Thu Mar 20 00:54:09 UTC 2014


So it turns out that we have made a backwards incompatible change to
the V2 API in Icehouse. Previously when creating a private flavor
access was not automatically given to the tenant, now it is. The
documentation has always said that it was, but we lied. 


It ends up being a semantic change rather than something that will
outright break parsing of response data, but it is still a backwards
incompatible change.

In future I think we need to be more cautious about approving these
sorts of changes. And I don't think we should be using the
documentation as the canonical source of how the API should behave.
Perhaps once we have better design documentation we can use that, and
it should also hopefully lead to better checking that adequate unit
testing is present.

Although it does on the surface appear to be a fairly minor backwards
incompatibility it does turn out that it breaks Horizon because they
presumably ended up coding against what we actually do rather than what
we claimed we did.


If we managed to break Horizon, its likely we've broken (or will break)
other people's scripts or SDKs.

The patch was merged in October (just after Icehouse opened) and so has
been used in clouds that do CD for quite a while. After some discussion
on IRC I think we'll end up having to leave this backwards incompatible
change in there - given there are most likely users who now rely on
both sets of behaviour there is no good way to get out of this
situation. I've added a note to the Icehouse release notes.

Anyway I think this should be a reminder to all of us that we have to
be very careful with any patch that results in a stable API change. 
Because when we make a mistake, we have a tiny window to fix it
before people start relying on the new behaviour and it becomes very
difficult to fix. 


More information about the OpenStack-dev mailing list