[openstack-dev] Problem with how python-neutronclient deals with Neutron exceptions

Jordan Pittier jpittier at octo.com
Wed Jul 10 10:12:34 UTC 2013

Any ideas on this one ? Maybe I should forward this email to a more
specific ML ?

On Thu, Jul 4, 2013 at 6:24 PM, Jordan Pittier <jpittier at octo.com> wrote:

> Hi guys,
> 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).
> 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.
> 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.
> 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.
> Also see this bug reports :
> https://bugs.launchpad.net/python-neutronclient/+bug/1178734
> https://bugs.launchpad.net/python-neutronclient/+bug/1187698
> What should we do about this ? :
> 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.
> 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).
> 3) You tell me :) !
> Thanks a lot
> Jordan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20130710/fea337eb/attachment.html>

More information about the OpenStack-dev mailing list