'VolumeNotFound' exception is not handled

Bug #1930448 reported by Stephen Finucane
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Fix Released
Medium
Stephen Finucane

Bug Description

Attempting to attach an additional volume (i.e. not boot from volume) using an invalid ID currently results in a HTTP 500 error. This error should be handled and a HTTP 4xx error returned instead.

  $ openstack server create \
     --flavor m1.tiny --image cirros-0.5.1-x86_64-disk --network private \
     --block-device source_type=volume,uuid=44d317a3-6183-4063-868b-aa0728576f5f,destination_type=volume,delete_on_termination=true \
     --wait test-server
  Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible.
  <class 'nova.exception.VolumeNotFound'> (HTTP 500) (Request-ID: req-7fe03627-c4ce-4f4b-9d5c-3abd6b88d3e3)

where '44d317a3-6183-4063-868b-aa0728576f5f' is not an UUID corresponding to a valid volume.

A full traceback from nova-compute is provided below.

  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi [None req-7fe03627-c4ce-4f4b-9d5c-3abd6b88d3e3 demo admin] Unexpected exception in API method: nova.exception.VolumeNotFound: Volume 44d317a3-6183-4063-868b-aa0728576f5f could not be found.
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi Traceback (most recent call last):
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/volume/cinder.py", line 432, in wrapper
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi res = method(self, ctx, volume_id, *args, **kwargs)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/volume/cinder.py", line 498, in get
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi item = cinderclient(
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/usr/local/lib/python3.8/dist-packages/cinderclient/v2/volumes.py", line 281, in get
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi return self._get("/volumes/%s" % volume_id, "volume")
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/usr/local/lib/python3.8/dist-packages/cinderclient/base.py", line 293, in _get
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi resp, body = self.api.client.get(url)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/usr/local/lib/python3.8/dist-packages/cinderclient/client.py", line 215, in get
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi return self._cs_request(url, 'GET', **kwargs)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/usr/local/lib/python3.8/dist-packages/cinderclient/client.py", line 206, in _cs_request
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi return self.request(url, method, **kwargs)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/usr/local/lib/python3.8/dist-packages/cinderclient/client.py", line 192, in request
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi raise exceptions.from_response(resp, body)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi cinderclient.exceptions.NotFound: Volume 44d317a3-6183-4063-868b-aa0728576f5f could not be found. (HTTP 404) (Request-ID: req-9fcc1abe-1212-45f5-ac76-60fdecd22506)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi During handling of the above exception, another exception occurred:
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi Traceback (most recent call last):
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/api/openstack/wsgi.py", line 658, in wrapped
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi return f(*args, **kwargs)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/api/validation/__init__.py", line 110, in wrapper
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi return func(*args, **kwargs)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/api/validation/__init__.py", line 110, in wrapper
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi return func(*args, **kwargs)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/api/validation/__init__.py", line 110, in wrapper
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi return func(*args, **kwargs)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi [Previous line repeated 9 more times]
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/api/openstack/compute/servers.py", line 689, in create
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi (instances, resv_id) = self.compute_api.create(context,
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/compute/api.py", line 2032, in create
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi return self._create_instance(
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/compute/api.py", line 1534, in _create_instance
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi instances_to_build = self._provision_instances(
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/compute/api.py", line 1256, in _provision_instances
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi volumes = self._get_volumes_for_bdms(context, block_device_mapping)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/compute/api.py", line 1142, in _get_volumes_for_bdms
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi volumes[bdm.volume_id] = self.volume_api.get(
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/volume/cinder.py", line 396, in wrapper
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi res = method(self, ctx, *args, **kwargs)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/volume/cinder.py", line 434, in wrapper
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi _reraise(exception.VolumeNotFound(volume_id=volume_id))
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/volume/cinder.py", line 482, in _reraise
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi raise desired_exc.with_traceback(sys.exc_info()[2])
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/volume/cinder.py", line 432, in wrapper
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi res = method(self, ctx, volume_id, *args, **kwargs)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/opt/stack/nova/nova/volume/cinder.py", line 498, in get
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi item = cinderclient(
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/usr/local/lib/python3.8/dist-packages/cinderclient/v2/volumes.py", line 281, in get
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi return self._get("/volumes/%s" % volume_id, "volume")
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/usr/local/lib/python3.8/dist-packages/cinderclient/base.py", line 293, in _get
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi resp, body = self.api.client.get(url)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/usr/local/lib/python3.8/dist-packages/cinderclient/client.py", line 215, in get
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi return self._cs_request(url, 'GET', **kwargs)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/usr/local/lib/python3.8/dist-packages/cinderclient/client.py", line 206, in _cs_request
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi return self.request(url, method, **kwargs)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi File "/usr/local/lib/python3.8/dist-packages/cinderclient/client.py", line 192, in request
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi raise exceptions.from_response(resp, body)
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi nova.exception.VolumeNotFound: Volume 44d317a3-6183-4063-868b-aa0728576f5f could not be found.
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: ERROR nova.api.openstack.wsgi
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: INFO nova.api.openstack.wsgi [None req-7fe03627-c4ce-4f4b-9d5c-3abd6b88d3e3 demo admin] HTTP exception thrown: Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible.
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: <class 'nova.exception.VolumeNotFound'>
  Jun 01 15:05:14 devstack-ubuntu2004 <email address hidden>[1658]: DEBUG nova.api.openstack.wsgi [None req-7fe03627-c4ce-4f4b-9d5c-3abd6b88d3e3 demo admin] Returning 500 to user: Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible.

Changed in nova:
status: New → Confirmed
importance: Undecided → Medium
assignee: nobody → Stephen Finucane (stephenfinucane)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to nova (master)

Fix proposed to branch: master
Review: https://review.opendev.org/c/openstack/nova/+/794006

Changed in nova:
status: Confirmed → In Progress
description: updated
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to nova (master)

Reviewed: https://review.opendev.org/c/openstack/nova/+/794006
Committed: https://opendev.org/openstack/nova/commit/9cdecc81fb8729160693c244d8adf124eed8b9b2
Submitter: "Zuul (22348)"
Branch: master

commit 9cdecc81fb8729160693c244d8adf124eed8b9b2
Author: Stephen Finucane <email address hidden>
Date: Tue Jun 1 17:21:58 2021 +0100

    api: Handle invalid volume UUIDs during spawn

    If a user requests an invalid volume UUID when creating an instance,
    a 'VolumeNotFound' exception will be raised. This is not currently
    handled. Correct this.

    Change-Id: I6137dc1b6b51321fee1c080bf4b85197b19bf223
    Signed-off-by: Stephen Finucane <email address hidden>
    Closes-Bug: #1930448

Changed in nova:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/nova 24.0.0.0rc1

This issue was fixed in the openstack/nova 24.0.0.0rc1 release candidate.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.