image-create fails on a boot from volume when no image ref is specified
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Fix Released
|
High
|
Vincent Hou |
Bug Description
If create a boot from volume like so without passing in the image argument
nova boot --flavor 1 --key-name kerrin --block-
And then I try and create an image from this instance like so, I get the following exception.
michael@
....
DEBUG (shell:768) The resource could not be found. (HTTP 404) (Request-ID: req-254dae37-
Traceback (most recent call last):
File "/opt/stack/
OpenStackCo
File "/opt/stack/
args.
File "/opt/stack/
image_uuid = cs.servers.
File "/opt/stack/
resp = self._action(
File "/opt/stack/
return self.api.
File "/opt/stack/
return self._cs_
File "/opt/stack/
**kwargs)
File "/opt/stack/
resp, body = self.request(url, method, **kwargs)
File "/opt/stack/
raise exceptions.
NotFound: The resource could not be found. (HTTP 404) (Request-ID: req-254dae37-
In the nova-api logs I get the following exception:
013-06-14 18:04:28.667 ERROR nova.api.openstack [req-9caaa082-
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack Traceback (most recent call last):
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/opt/stack/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack return req.get_
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/usr/local/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack application, catch_exc_
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/usr/local/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack app_iter = application(
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/usr/local/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack return resp(environ, start_response)
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/opt/stack/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack return self.app(env, start_response)
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/usr/local/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack return resp(environ, start_response)
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/usr/local/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack return resp(environ, start_response)
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/usr/local/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack return resp(environ, start_response)
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/usr/lib/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack response = self.app(environ, start_response)
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/usr/local/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack return resp(environ, start_response)
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/usr/local/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack resp = self.call_func(req, *args, **self.kwargs)
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/usr/local/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack return self.func(req, *args, **kwargs)
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/opt/stack/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack content_type, body, accept)
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/opt/stack/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack action_result = self.dispatch(meth, request, action_args)
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/opt/stack/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack return method(req=request, **action_args)
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/opt/stack/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack return f(*args, **kwargs)
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/opt/stack/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack src_image = self.compute_
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/opt/stack/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack _reraise_
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/opt/stack/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack image = self._client.
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/opt/stack/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack return getattr(
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/opt/stack/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack % urllib.
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/opt/stack/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack return self._http_
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack File "/opt/stack/
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack raise exc.from_
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack ImageNotFound: Image could not be found.
2013-06-14 18:04:28.667 15808 TRACE nova.api.openstack
2013-06-14 18:04:28.669 INFO nova.api.openstack [req-9caaa082-
tags: | added: api |
Changed in nova: | |
status: | New → Confirmed |
importance: | Undecided → Critical |
Changed in nova: | |
assignee: | nobody → Vincent Hou (houshengbo) |
Changed in nova: | |
importance: | Critical → High |
Changed in nova: | |
status: | In Progress → Fix Committed |
Changed in nova: | |
status: | Fix Committed → Fix Released |
no longer affects: | nova/grizzly |
What's the expected behaviour here? I don't think just creating an image out of a boot volume is safe.
Image based root disks have a flavor-defined upper limit. Boot volumes don't. Creating an image out of a large volume requires dumping all this data to the compute host filesystem before transferring to glance.