+++ This bug was initially created as a clone of Bug #1043664 +++
Description of problem:
While verifying bug 893374 I've noticed that none of the ephemeral and swap disks work any more.
Booting an instance with an swap and/or ephemeral disk(s) will fail moving the instance to ERROR. This is the default if the flavor specifies an swap or ephemeral disk.
This bug was introduced in https://review.openstack.org/54767 which introduces a new argument in the fetch_image/fetch_to_raw methods to enforce the maximum size an image can have. Erroneously, this argument is also passed to the _create_ephemeral and _create_swap methods which don't recognize it and crash dramatically while trying to create the images.
Version-Release number of selected component (if applicable):
openstack-nova-2013.2-9.el6ost.noarch
How reproducible:
Always.
Steps to Reproduce:
1. nova flavor-create m1.custom auto 64 0 1 --ephemeral 1 --swap 1024
2. nova boot --image cirros --flavor m1.custom nuvol
3. instance goes to ERROR state when spawning
4. In compute.log we can encounter the tracebacks specified below.
Actual results:
Instances don't boot and are moved to the ERROR state.
Expected results:
Instance boots with the swap and/or ephemeral disks.
Additional info:
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 1037, in _build_instance
set_access_ip=set_access_ip)
File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 1420, in _spawn
LOG.exception(_('Instance failed to spawn'), instance=instance)
File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 1417, in _spawn
block_device_info)
File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 2063, in spawn
admin_pass=admin_password)
File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 2370, in _create_image
ephemeral_size=ephemeral_gb)
File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/imagebackend.py", line 174, in cache
*args, **kwargs)
File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/imagebackend.py", line 307, in
prepare_template(target=base, max_size=size, *args, **kwargs)
File "/usr/lib/python2.6/site-packages/nova/openstack/common/lockutils.py", line 246, in inner
return f(*args, **kwargs)
File "/usr/lib64/python2.6/contextlib.py", line 34, in __exit__
self.gen.throw(type, value, traceback)
File "/usr/lib/python2.6/site-packages/nova/openstack/common/lockutils.py", line 205, in lock
yield lock
File "/usr/lib/python2.6/site-packages/nova/openstack/common/lockutils.py", line 246,
return f(*args, **kwargs)
File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/imagebackend.py", line 162, in call_if_not_exists
fetch_func(target=target, *args, **kwargs)
TypeError: _create_ephemeral() got an unexpected keyword argument 'max_size'
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 1417, in _spawn
block_device_info)
File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 2063, in spawn
admin_pass=admin_password)
File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 2402, in _create_image
swap_mb=swap_mb)
File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/imagebackend.py", line 174, in cache
*args, **kwargs)
File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/imagebackend.py", line 307, in create_image
prepare_template(target=base, max_size=size, *args, **kwargs)
File "/usr/lib/python2.6/site-packages/nova/openstack/common/lockutils.py", line 246, in inner
return f(*args, **kwargs)
File "/usr/lib64/python2.6/contextlib.py", line 34, in __exit__
self.gen.throw(type, value, traceback)
File "/usr/lib/python2.6/site-packages/nova/openstack/common/lockutils.py", line 205, in lock
yield lock
File "/usr/lib/python2.6/site-packages/nova/openstack/common/lockutils.py", line 246, in inner
return f(*args, **kwargs)
File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/imagebackend.py", line 162, in call_if_not_exists
fetch_func(target=target, *args, **kwargs)
TypeError: _create_swap() got an unexpected keyword argument 'max_size'
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.
http://rhn.redhat.com/errata/RHSA-2014-0112.html