← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1199539] Re: Nova fails to boot from volume

 

Reviewed:  https://review.openstack.org/34769
Committed: http://github.com/openstack/python-novaclient/commit/f50ff361e27a8ca688c0f1ba448bbc8bfb284905
Submitter: Jenkins
Branch:    master

commit f50ff361e27a8ca688c0f1ba448bbc8bfb284905
Author: Dirk Mueller <dirk@xxxxxxxx>
Date:   Thu Jun 27 19:13:01 2013 +0200

    Skip setting volume_size if not given
    
    When the block-device parameters skip volume_size,
    don't set it. Setting to an empty volume_size
    would be invalid as it has to be an integer,
    and Nova API will reject the request if api validation
    is implemented. (proposed e.g. at
    https://review.openstack.org/#/c/34749/)
    
    Fixes bug LP #1199539
    
    Change-Id: I7ab518886abf8d449caf1c70563a79a990d7765e


** Changed in: python-novaclient
       Status: Invalid => Fix Committed

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

Title:
  Nova fails to boot from volume

Status in OpenStack Compute (Nova):
  Fix Released
Status in Python client library for Nova:
  Fix Committed

Bug description:
  When booting from volume via Horizon webui, the block device mapping
  that is passed down to nova contains "volume_size": "", which causes a
  DB integrity error later:

  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack Traceback (most recent call last):
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/api/openstack/__init__.py", line 81, in __call__
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     return req.get_response(self.application)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/webob/request.py", line 1296, in send
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     application, catch_exc_info=False)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/webob/request.py", line 1260, in call_application
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     app_iter = application(self.environ, start_response)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/webob/dec.py", line 144, in __call__
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     return resp(environ, start_response)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/keystoneclient/middleware/auth_token.py", line 457, in __call__
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     return self.app(env, start_response)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/webob/dec.py", line 144, in __call__
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     return resp(environ, start_response)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/webob/dec.py", line 144, in __call__
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     return resp(environ, start_response)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/routes/middleware.py", line 131, in __call__
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     response = self.app(environ, start_response)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/webob/dec.py", line 144, in __call__
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     return resp(environ, start_response)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/webob/dec.py", line 130, in __call__
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     resp = self.call_func(req, *args, **self.kwargs)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/webob/dec.py", line 195, in call_func
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     return self.func(req, *args, **kwargs)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/api/openstack/wsgi.py", line 890, in __call__
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     content_type, body, accept)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/api/openstack/wsgi.py", line 942, in _process_stack
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     action_result = self.dispatch(meth, request, action_args)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/api/openstack/wsgi.py", line 1022, in dispatch
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     return method(req=request, **action_args)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/api/openstack/compute/servers.py", line 898, in create
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     scheduler_hints=scheduler_hints)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/hooks.py", line 85, in inner
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     rv = f(*args, **kwargs)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/compute/api.py", line 961, in create
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     scheduler_hints=scheduler_hints)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/compute/api.py", line 675, in _create_instance
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     reservation_id, scheduler_hints)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/compute/api.py", line 633, in _validate_and_provision_instance
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     QUOTAS.rollback(context, quota_reservations)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/contextlib.py", line 23, in __exit__
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     self.gen.next()
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/compute/api.py", line 615, in _validate_and_provision_instance
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     num_instances, i)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/compute/api.py", line 910, in create_db_entry_for_new_instance
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     instance_type, image, block_device_mapping)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/compute/api.py", line 806, in _populate_instance_for_bdm
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     instance_type, instance_uuid, mapping)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/compute/api.py", line 772, in _update_block_device_mapping
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     values)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/db/api.py", line 1032, in block_device_mapping_update_or_create
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     return IMPL.block_device_mapping_update_or_create(context, values)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/db/sqlalchemy/api.py", line 113, in wrapper
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     return f(*args, **kwargs)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/db/sqlalchemy/api.py", line 2962, in block_device_mapping_update_or_create
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     bdm_ref.save(session=session)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/openstack/common/db/sqlalchemy/models.py", line 54, in save
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     session.flush()
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack   File "/usr/lib64/python2.6/site-packages/nova/openstack/common/db/sqlalchemy/session.py", line 437, in _wrap
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack     raise exception.DBError(e)
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack DBError: (DataError) invalid input syntax for integer: ""
  2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack LINE 1: ...LL, NULL, '6d6ad4f0-2ce9-49ab-a94f-71fc1b74ec7f', '', NULL, ...


  the volume_size parameter should be validated to be usefol. for
  compatibility, the empty volume_size parameter should be ignored, as
  in the case of boot from volume it is not used anyway.

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