<div dir="ltr"><div>I would like to propose to use this thread to gather and discuss software requirements that our clients should meet.<br></div><div>Later we'll summarize all the requirements and use them during our work of improving the clients.<br>
</div><div>By reaching listed requirements we'll be able to <span id="result_box" class="" lang="en"><span class="">evaluate the success of our refactoring.<br></span></span></div><div><br></div><div>To start this discussion:<br>
</div><div>* API versioning should be encapsulated inside of the client.<br><br></div><div>From the end user perspective using the code should look something like:<br><br></div><div>import openstack.nova<br><br></div><div>
nova = openstack.nova.create_client(...params TBD...)<br></div><div>nova.start_server(...)<br><br></div><div>Reasoning for this requirement:<br></div><div>If user would have to specify version explicitly his code will only work with specific version of client/api or user would have to write several code paths for different api versions.<br>
<br></div><div>Implementation:<br></div><div>We will have an interface (abstact class) that would contain all the methods available in latest API. <br>Different versions of the API would implement this methods. In case method cannot be implemented with existing API it should raise "UnsupportedOperation" exception.<br>
<br></div><div>Glossary:<br></div><div>user - developer who uses the client/openstack API<br></div><div><br></div><div>Please share your <span id="result_box" class="" lang="en"><span class="">thoughts about this requirement/other requirements.<br>
<br></span></span></div><div><span id="result_box" class="" lang="en"><span class="">Looking forward for your replies,<br></span></span></div><div><span id="result_box" class="" lang="en"><span class="">Alexei Kornienko<br>
</span></span></div><br></div>