Public bug reported:

If you pass an invalid snapshot while creating the instance then it's returning 
500 InternalServerError. 
Ideally it should return 400 HTTPBadRequest as snapshot doesn't exists.

Steps to reproduce:

Command:

nova boot --snapshot <invalid-snapshot-id> --flavor 1 new2

Output:

ERROR (ClientException): Unexpected API Error. Please report this at 
http://bugs.launchpad.net/nova/ and attach the Nova API log if possible.
<class 'nova.exception.SnapshotNotFound'> (HTTP 500) (Request-ID: 
req-ead10ac5-5b57-4497-b772-66cd40b5e2eb)


n-api logs:

2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/api/openstack/compute/servers.py", line 576, in create
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     **create_kwargs)
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/hooks.py", line 154, in inner
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     rv = f(*args, 
**kwargs)
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/compute/api.py", line 1511, in create
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     
check_server_group_quota=check_server_group_quota)
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/compute/api.py", line 1101, in _create_instance
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     context, 
block_device_mapping, legacy_bdm)
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/compute/api.py", line 1036, in _get_bdm_image_metadata
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     snapshot = 
self.volume_api.get_snapshot(context, snapshot_id)
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/volume/cinder.py", line 188, in wrapper
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     res = 
method(self, ctx, *args, **kwargs)
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/volume/cinder.py", line 227, in wrapper
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     
_reraise(exception.SnapshotNotFound(snapshot_id=snapshot_id))
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/volume/cinder.py", line 246, in _reraise
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     
six.reraise(type(desired_exc), desired_exc, sys.exc_info()[2])
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/volume/cinder.py", line 225, in wrapper
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     res = 
method(self, ctx, snapshot_id, *args, **kwargs)
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/volume/cinder.py", line 463, in get_snapshot
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     item = 
cinderclient(context).volume_snapshots.get(snapshot_id)
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/usr/local/lib/python2.7/dist-packages/cinderclient/v3/volume_snapshots.py", 
line 107, in get
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     return 
self._get("/snapshots/%s" % snapshot_id, "snapshot")
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/usr/local/lib/python2.7/dist-packages/cinderclient/base.py", line 303, in _get
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     resp, body = 
self.api.client.get(url)
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/usr/local/lib/python2.7/dist-packages/cinderclient/client.py", line 143, in 
get
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     return 
self._cs_request(url, 'GET', **kwargs)
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/usr/local/lib/python2.7/dist-packages/cinderclient/client.py", line 134, in 
_cs_request
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     return 
self.request(url, method, **kwargs)
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/usr/local/lib/python2.7/dist-packages/cinderclient/client.py", line 123, in 
request
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     raise 
exceptions.from_response(resp, body)
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions SnapshotNotFound: 
Snapshot cfa5f789-6771-4fb0-abe3-b82301bbab86 could not be found.
2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions

** Affects: nova
     Importance: Undecided
     Assignee: Dinesh Bhor (dinesh-bhor)
         Status: New

** Changed in: nova
     Assignee: (unassigned) => Dinesh Bhor (dinesh-bhor)

-- 
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/1614097

Title:
  nova boot fails with 500 InternalServerError for invalid snapshot id

Status in OpenStack Compute (nova):
  New

Bug description:
  If you pass an invalid snapshot while creating the instance then it's 
returning 500 InternalServerError. 
  Ideally it should return 400 HTTPBadRequest as snapshot doesn't exists.

  Steps to reproduce:

  Command:

  nova boot --snapshot <invalid-snapshot-id> --flavor 1 new2

  Output:

  ERROR (ClientException): Unexpected API Error. Please report this at 
http://bugs.launchpad.net/nova/ and attach the Nova API log if possible.
  <class 'nova.exception.SnapshotNotFound'> (HTTP 500) (Request-ID: 
req-ead10ac5-5b57-4497-b772-66cd40b5e2eb)

  
  n-api logs:

  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/api/openstack/compute/servers.py", line 576, in create
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     
**create_kwargs)
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/hooks.py", line 154, in inner
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     rv = f(*args, 
**kwargs)
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/compute/api.py", line 1511, in create
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     
check_server_group_quota=check_server_group_quota)
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/compute/api.py", line 1101, in _create_instance
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     context, 
block_device_mapping, legacy_bdm)
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/compute/api.py", line 1036, in _get_bdm_image_metadata
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     snapshot = 
self.volume_api.get_snapshot(context, snapshot_id)
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/volume/cinder.py", line 188, in wrapper
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     res = 
method(self, ctx, *args, **kwargs)
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/volume/cinder.py", line 227, in wrapper
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     
_reraise(exception.SnapshotNotFound(snapshot_id=snapshot_id))
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/volume/cinder.py", line 246, in _reraise
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     
six.reraise(type(desired_exc), desired_exc, sys.exc_info()[2])
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/volume/cinder.py", line 225, in wrapper
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     res = 
method(self, ctx, snapshot_id, *args, **kwargs)
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/opt/stack/nova/nova/volume/cinder.py", line 463, in get_snapshot
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     item = 
cinderclient(context).volume_snapshots.get(snapshot_id)
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/usr/local/lib/python2.7/dist-packages/cinderclient/v3/volume_snapshots.py", 
line 107, in get
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     return 
self._get("/snapshots/%s" % snapshot_id, "snapshot")
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/usr/local/lib/python2.7/dist-packages/cinderclient/base.py", line 303, in _get
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     resp, body = 
self.api.client.get(url)
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/usr/local/lib/python2.7/dist-packages/cinderclient/client.py", line 143, in 
get
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     return 
self._cs_request(url, 'GET', **kwargs)
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/usr/local/lib/python2.7/dist-packages/cinderclient/client.py", line 134, in 
_cs_request
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     return 
self.request(url, method, **kwargs)
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions   File 
"/usr/local/lib/python2.7/dist-packages/cinderclient/client.py", line 123, in 
request
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions     raise 
exceptions.from_response(resp, body)
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions SnapshotNotFound: 
Snapshot cfa5f789-6771-4fb0-abe3-b82301bbab86 could not be found.
  2016-08-17 17:05:48.033 TRACE nova.api.openstack.extensions

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

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to