Reviewed: https://review.openstack.org/34769 Committed: http://github.com/openstack/python-novaclient/commit/f50ff361e27a8ca688c0f1ba448bbc8bfb284905 Submitter: Jenkins Branch: master
commit f50ff361e27a8ca688c0f1ba448bbc8bfb284905 Author: Dirk Mueller <[email protected]> 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 -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

