<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Apr 30, 2014 at 11:30 PM, Ken'ichi Ohmichi <span dir="ltr"><<a href="mailto:ken1ohmichi@gmail.com" target="_blank">ken1ohmichi@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
After huge discussion related to v3 API[1], we started to implement v2.1 API.<br>
I'd like to share the current status and get feedback before the summit.<br>
<br>
Now we are implementing for two items:<br>
1. Add response checks to Tempest for Nova API<br>
2. Implement v2.1 API<br>
<br>
* Add response checks to Tempest for Nova API *<br>
On the first item, we are adding checks against responses which Nova<br>
API returns. Through v3 API discussion, we recognized the importance<br>
of the backward compatibility again, but unfortunately Tempest did not<br>
contain enough checks which block backward incompatible changes at the<br>
time because API tests of Tempest did not check all API parameters of<br>
Nova API responses. To improve this situation, we started to implement<br>
response validations which check status codes(HTTP200 etc.) and response<br>
bodies ({"server": {...}}, etc.)for whole Nova API.<br>
Now most checks of whole Nova API are implemented, and the remainders are<br>
reviewed on [2].<br>
<br></blockquote><div><br></div><div>Awesome, no matter what the future of new APIs are, I see a lot of value in this work.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
* Implement v2.1 API *<br>
The main concern about v3 API was that v3 API is v2 incompatible and we<br>
need to maintain both implementations of both v2 and v3 APIs in long term.<br>
To solve this issue, we are implementing v2.1 API which translates v2<br>
format requests to v3 ones and operates v3 operation. After that, it<br>
translates v3 responses to v2 format ones again and returns them to clients.<br>
The diagram of [3] would be easy to get the design. We will be able to<br>
use both APIs with single API implementation if v2.1 is available. </blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
We picked some APIs as PoC targets and tests them on Tempest of the gate[4].<br>
Before these tests, we have already added the above response checks to API<br>
tests of PoC targets in Tempest and made PoC strict.<br>
As the result, all PoC target tests were passed so they keep v2 backward<br>
compatibility.<br>
<br>
We have done everything we expected.<br>
Any thoughts?<br>
<br>
<br>
Thanks<br>
Ken'ichi Ohmichi<br>
<br>
---<br>
[1]: <a href="http://lists.openstack.org/pipermail/openstack-dev/2014-March/028724.html" target="_blank">http://lists.openstack.org/pipermail/openstack-dev/2014-March/028724.html</a><br>
<a href="http://lists.openstack.org/pipermail/openstack-dev/2014-February/027896.html" target="_blank">http://lists.openstack.org/pipermail/openstack-dev/2014-February/027896.html</a><br>
[2]: <a href="https://review.openstack.org/#/q/status:open+project:openstack/tempest+branch:master+topic:bp/nova-api-attribute-test,n,z" target="_blank">https://review.openstack.org/#/q/status:open+project:openstack/tempest+branch:master+topic:bp/nova-api-attribute-test,n,z</a><br>
[3]: <a href="https://wiki.openstack.org/wiki/NovaApiValidationFramework#Combination_of_v2.1_and_v3_APIs" target="_blank">https://wiki.openstack.org/wiki/NovaApiValidationFramework#Combination_of_v2.1_and_v3_APIs</a><br>
[4]: <a href="https://review.openstack.org/#/c/83256/" target="_blank">https://review.openstack.org/#/c/83256/</a><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>