← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1482816] [NEW] Nova should not return a 500 on floating ip create with ipv6

 

Public bug reported:

Neutron does not support creating or using floating ips on an ipv6
network. When nova gets a create floating ip call and does the
passthrough call to neutron it will get a 400 response from neutron
saying there is not ipv4 subnet available. This goes unhandled by nova
and will cause a 500 response. Since this is an expected error, nova
should catch it and return a 400 to the user for the same reason.

For example logs with the unhandled exception see:

http://logs.openstack.org/47/210647/2/check/gate-tempest-dsvm-neutron-
full/ea565de/logs/screen-n-api.txt.gz?level=TRACE

2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack Traceback (most recent call last):
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/opt/stack/new/nova/nova/api/openstack/__init__.py", line 128, in __call__
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return req.get_response(self.application)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, in send
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     application, catch_exc_info=False)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1281, in call_application
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     app_iter = application(self.environ, start_response)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return resp(environ, start_response)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     resp = self.call_func(req, *args, **self.kwargs)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return self.func(req, *args, **kwargs)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", line 434, in __call__
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     response = req.get_response(self._app)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, in send
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     application, catch_exc_info=False)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1281, in call_application
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     app_iter = application(self.environ, start_response)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return resp(environ, start_response)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return resp(environ, start_response)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/routes/middleware.py", line 136, in __call__
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     response = self.app(environ, start_response)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return resp(environ, start_response)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     resp = self.call_func(req, *args, **self.kwargs)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return self.func(req, *args, **kwargs)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/opt/stack/new/nova/nova/api/openstack/wsgi.py", line 756, in __call__
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     content_type, body, accept)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/opt/stack/new/nova/nova/api/openstack/wsgi.py", line 821, in _process_stack
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     action_result = self.dispatch(meth, request, action_args)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/opt/stack/new/nova/nova/api/openstack/wsgi.py", line 911, in dispatch
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return method(req=request, **action_args)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/opt/stack/new/nova/nova/api/openstack/compute/contrib/floating_ips.py", line 115, in create
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     address = self.network_api.allocate_floating_ip(context, pool)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/opt/stack/new/nova/nova/network/neutronv2/api.py", line 1392, in allocate_floating_ip
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     fip = client.create_floatingip(param)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 102, in with_params
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     ret = self.function(instance, *args, **kwargs)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 701, in create_floatingip
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return self.post(self.floatingips_path, body=body)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 298, in post
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     headers=headers, params=params)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 211, in do_request
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     self._handle_fault_response(status_code, replybody)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 185, in _handle_fault_response
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     exception_handler_v20(status_code, des_error_body)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 70, in exception_handler_v20
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     status_code=status_code)
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack BadRequest: Bad floatingip request: Network c8f0e88f-ae41-47cb-be6c-d8256ba80576 does not contain any IPv4 subnet
2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack

** Affects: nova
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1482816

Title:
  Nova should not return a 500 on floating ip create with ipv6

Status in OpenStack Compute (nova):
  New

Bug description:
  Neutron does not support creating or using floating ips on an ipv6
  network. When nova gets a create floating ip call and does the
  passthrough call to neutron it will get a 400 response from neutron
  saying there is not ipv4 subnet available. This goes unhandled by nova
  and will cause a 500 response. Since this is an expected error, nova
  should catch it and return a 400 to the user for the same reason.

  For example logs with the unhandled exception see:

  http://logs.openstack.org/47/210647/2/check/gate-tempest-dsvm-neutron-
  full/ea565de/logs/screen-n-api.txt.gz?level=TRACE

  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack Traceback (most recent call last):
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/opt/stack/new/nova/nova/api/openstack/__init__.py", line 128, in __call__
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return req.get_response(self.application)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, in send
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     application, catch_exc_info=False)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1281, in call_application
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     app_iter = application(self.environ, start_response)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return resp(environ, start_response)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     resp = self.call_func(req, *args, **self.kwargs)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return self.func(req, *args, **kwargs)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", line 434, in __call__
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     response = req.get_response(self._app)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, in send
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     application, catch_exc_info=False)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1281, in call_application
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     app_iter = application(self.environ, start_response)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return resp(environ, start_response)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return resp(environ, start_response)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/routes/middleware.py", line 136, in __call__
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     response = self.app(environ, start_response)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return resp(environ, start_response)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     resp = self.call_func(req, *args, **self.kwargs)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return self.func(req, *args, **kwargs)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/opt/stack/new/nova/nova/api/openstack/wsgi.py", line 756, in __call__
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     content_type, body, accept)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/opt/stack/new/nova/nova/api/openstack/wsgi.py", line 821, in _process_stack
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     action_result = self.dispatch(meth, request, action_args)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/opt/stack/new/nova/nova/api/openstack/wsgi.py", line 911, in dispatch
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return method(req=request, **action_args)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/opt/stack/new/nova/nova/api/openstack/compute/contrib/floating_ips.py", line 115, in create
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     address = self.network_api.allocate_floating_ip(context, pool)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/opt/stack/new/nova/nova/network/neutronv2/api.py", line 1392, in allocate_floating_ip
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     fip = client.create_floatingip(param)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 102, in with_params
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     ret = self.function(instance, *args, **kwargs)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 701, in create_floatingip
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     return self.post(self.floatingips_path, body=body)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 298, in post
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     headers=headers, params=params)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 211, in do_request
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     self._handle_fault_response(status_code, replybody)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 185, in _handle_fault_response
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     exception_handler_v20(status_code, des_error_body)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/neutronclient/v2_0/client.py", line 70, in exception_handler_v20
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack     status_code=status_code)
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack BadRequest: Bad floatingip request: Network c8f0e88f-ae41-47cb-be6c-d8256ba80576 does not contain any IPv4 subnet
  2015-08-08 01:55:33.923 20521 ERROR nova.api.openstack

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1482816/+subscriptions


Follow ups