<div dir="ltr">Hi,<div>Any ideas on this one ? Maybe I should forward this email to a more specific ML ?<br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jul 4, 2013 at 6:24 PM, Jordan Pittier <span dir="ltr"><<a href="mailto:jpittier@octo.com" target="_blank">jpittier@octo.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi guys,<div><br></div><div>Nova-api makes extensive use of python-neutronclient. But the only exception from neutronclient that nova-api catches is the generic QuantumClientException (defined in quantumclient/common/exceptions.py).</div>


<div><br></div><div>neutronclient has some more specific exceptions like PortInUseClient, NetworkNotFoundClient. But they are never raised because I believe there is a bug either in neutron server or in neutronclient, related to exceptions.</div>


<div><br></div><div>In neutronclient, all exceptions are handled in neutronclient/v2_0/client.py::exception_handler_v20(). The code is supposed to catch a Neutron(Server)Exception and raise the corresponding specific NeutronClientException. In order to do that, NeutronClient expects the deserialized Neutron(Server)Exception to be a dictionnary which has the keys "type","message" and "detail". But, these keys are never found in any Neutron(Server)Exceptions so, instead the generic NeutronClientException is raised.</div>


<div><br></div><div>If you look at how Neutron(Server) exceptions are defined (quantum/quantum/common/exceptions.py), indeed there's no mention of 'type' or 'detail' (though 'message' is defined). So its "logic" that neutronclient always raises the generic NeutronClientException.</div>


<div><br></div><div>Also see this bug reports : </div><div><a href="https://bugs.launchpad.net/python-neutronclient/+bug/1178734" target="_blank">https://bugs.launchpad.net/python-neutronclient/+bug/1178734</a><br></div>

<div><a href="https://bugs.launchpad.net/python-neutronclient/+bug/1187698" target="_blank">https://bugs.launchpad.net/python-neutronclient/+bug/1187698</a><br>
</div><div><br></div><div><br></div><div>What should we do about this ? :</div><div>1) Pretty much nothing. Nova-api still catches only the generic NeutronClientException, and based the further processing of the exception on the correct status_code reported by neutronclient. In that case, we should clean the code of neutronclient::exception_handler_v20() because it has a lot of dead code. </div>


<div>2) Enrich/enhance the NeutronServer exceptions with a type and detail properties. This way, when a NeutronServer exception is serialized and sent to python-neutronclient, the specific NeutronClient exception can be raised (and then sent to nova-api).</div>


<div>3) You tell me :) !</div><div><br></div><div>Thanks a lot</div><span class="HOEnZb"><font color="#888888"><div>Jordan</div><div><br></div><div><br></div><div><br></div></font></span></div>
</blockquote></div><br></div>