<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Mar 19, 2014 at 5:54 PM, Christopher Yeoh <span dir="ltr"><<a href="mailto:cbkyeoh@gmail.com" target="_blank">cbkyeoh@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi,<br>
<br>
So it turns out that we have made a backwards incompatible change to<br>
the V2 API in Icehouse. Previously when creating a private flavor<br>
access was not automatically given to the tenant, now it is. The<br>
documentation has always said that it was, but we lied.<br>
<br>
<a href="https://review.openstack.org/#/c/40811/" target="_blank">https://review.openstack.org/#/c/40811/</a><br>
<br></blockquote><div><br></div><div><br></div><div>Backwards compatibility was discussed in this patch and the answer that we used at the time was:</div><div><br></div><div>"<span style="color:rgb(0,0,0);font-family:'Arial Unicode MS',Arial,sans-serif">But without this fix the flavor-access mechanism is broken as far as I can see, and the extra data returned is still compatible with the API definition I think (Its just that an optional list part that was always empty before will now have one entry from the start) - so any code that uses the API really needs to be able to cope with that part of the result."</span></div>
<div><br></div><div>In retrospect I don't think that was a strong enough answer. </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
It ends up being a semantic change rather than something that will<br>
outright break parsing of response data, but it is still a backwards<br>
incompatible change.<br>
<br>
In future I think we need to be more cautious about approving these<br>
sorts of changes. And I don't think we should be using the<br>
documentation as the canonical source of how the API should behave.<br>
Perhaps once we have better design documentation we can use that, and<br>
it should also hopefully lead to better checking that adequate unit<br>
testing is present.<br>
<br></blockquote><div><br></div><div>Agreed.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Although it does on the surface appear to be a fairly minor backwards<br>
incompatibility it does turn out that it breaks Horizon because they<br>
presumably ended up coding against what we actually do rather than what<br>
we claimed we did.<br>
<br>
<a href="https://bugs.launchpad.net/horizon/+bug/1286297" target="_blank">https://bugs.launchpad.net/horizon/+bug/1286297</a><br>
<br>
If we managed to break Horizon, its likely we've broken (or will break)<br>
other people's scripts or SDKs.<br>
<br>
The patch was merged in October (just after Icehouse opened) and so has<br>
been used in clouds that do CD for quite a while. After some discussion<br>
on IRC I think we'll end up having to leave this backwards incompatible<br>
change in there - given there are most likely users who now rely on<br>
both sets of behaviour there is no good way to get out of this<br>
situation. I've added a note to the Icehouse release notes.<br>
<br>
Anyway I think this should be a reminder to all of us that we have to<br>
be very careful with any patch that results in a stable API change.<br>
Because when we make a mistake, we have a tiny window to fix it<br>
before people start relying on the new behaviour and it becomes very<br>
difficult to fix.<br>
<br>
Chris<br>
<br>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</blockquote></div><br></div></div>