Nova fails to boot from volume
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Fix Released
|
Undecided
|
David Ripton | ||
python-novaclient |
Fix Released
|
Undecided
|
Unassigned |
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/
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack return req.get_
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack File "/usr/lib64/
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack application, catch_exc_
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack File "/usr/lib64/
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack app_iter = application(
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack File "/usr/lib64/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack scheduler_
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack File "/usr/lib64/
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/
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack scheduler_
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack File "/usr/lib64/
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/
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack QUOTAS.
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack File "/usr/lib64/
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/
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/
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack instance_type, image, block_device_
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack File "/usr/lib64/
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/
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/
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack return IMPL.block_
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack File "/usr/lib64/
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/
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack bdm_ref.
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack File "/usr/lib64/
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/
2013-07-10 12:54:03.089 4920 TRACE nova.api.openstack raise exception.
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-
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.
description: | updated |
tags: | added: db volumes |
Changed in nova: | |
status: | Fix Committed → Fix Released |
Changed in python-novaclient: | |
status: | Fix Committed → Fix Released |
Changed in nova: | |
milestone: | havana-2 → 2013.2 |
I'm not sure if this should be routed to Horizon to validate this or as something to validate in the API, but it is failing on bad data, so to fix, just don't use the bad data (which is one way to resolve this bug). The thing about this is I'm not sure what precedent there is for validating user input on data types in the UI (or via CLI to the APIs for that matter).