If you launch an instance using nova with the config drive enabled:
nova --config-drive=true
Then the instance will fail to launch if genisioimage is not installed on the compute host.
The error looks like this:
2013-04-05 16:04:54 ERROR nova.compute.manager [req-4e5709fa-92d9-4fc5-8910-367a312b1c24 8a44600ac8c6402fb781584022ceeb91 8283efb2e53d46e1a6bdbb2bdef9cb9a] [instance: 2e50ff38-3c7c-421d-900f-22584bdc331a] Build error: ['Traceback (most recent call last):\n', ' File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 496, in _run_instance\n injected_files, admin_password)\n', ' File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 749, in _spawn\n block_device_info)\n', ' File "/usr/lib/python2.7/dist-packages/nova/exception.py", line 117, in wrapped\n temp_level, payload)\n', ' File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__\n self.gen.next()\n', ' File "/usr/lib/python2.7/dist-packages/nova/exception.py", line 92, in wrapped\n return f(*args, **kw)\n', ' File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 1090, in spawn\n admin_pass=admin_password)\n', ' File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 1440, in _create_image\n cdb.make_drive(configdrive_path)\n', ' File "/usr/lib/python2.7/dist-packages/nova/virt/configdrive.py", line 131, in make_drive\n self._make_iso9660(path)\n', ' File "/usr/lib/python2.7/dist-packages/nova/virt/configdrive.py", line 89, in _make_iso9660\n run_as_root=False)\n', ' File "/usr/lib/python2.7/dist-packages/nova/utils.py", line 195, in execute\n shell=shell)\n', ' File "/usr/lib/python2.7/dist-packages/eventlet/green/subprocess.py", line 25, in __init__\n subprocess_orig.Popen.__init__(self, args, 0, *argss, **kwds)\n', ' File "/usr/lib/python2.7/subprocess.py", line 679, in __init__\n errread, errwrite)\n', ' File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child\n raise child_exception\n', 'OSError: [Errno 2] No such file or directory\n']
Sanely formatted:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 496, in _run_instance
injected_files, admin_password)
File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 749, in _spawn
block_device_info)
File "/usr/lib/python2.7/dist-packages/nova/exception.py", line 117, in wrapped
temp_level, payload)
File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
self.gen.next()
File "/usr/lib/python2.7/dist-packages/nova/exception.py", line 92, in wrapped
return f(*args, **kw)
File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 1090, in spawn
admin_pass=admin_password)
File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 1440, in _create_image
cdb.make_drive(configdrive_path)
File "/usr/lib/python2.7/dist-packages/nova/virt/configdrive.py", line 131, in make_drive
self._make_iso9660(path)
File "/usr/lib/python2.7/dist-packages/nova/virt/configdrive.py", line 89, in _make_iso9660
run_as_root=False)
File "/usr/lib/python2.7/dist-packages/nova/utils.py", line 195, in execute
shell=shell)
File "/usr/lib/python2.7/dist-packages/eventlet/green/subprocess.py", line 25, in __init__
subprocess_orig.Popen.__init__(self, args, 0, *argss, **kwds)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
The reason is that
In nova/virt/configdrive.py there's a ConfigDriveBuilder._make_iso9660 function that calls genisioimage'
Making genisioimage a dependency of nova-compute-kvm should resolve this.
Fixed in Havana packaging.