nova-compute startup failure on Fedora 19 fresh install (no suitable emulator)

Bug #1215593 reported by Dan Prince
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Fix Released
Undecided
Dan Prince

Bug Description

Using the latest Nova havana release on Fedora 19. I see the following stack trace in Nova's compute.log file after performing a fresh install of Nova/libvirt/qemu and trying to start nova-compute:

2013-08-22 19:01:57.245 9050 ERROR nova.openstack.common.threadgroup [-] internal error Cannot find suitable emulator for x86_64
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup Traceback (most recent call last):
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/openstack/common/threadgroup.py", line 117, in wait
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup x.wait()
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/openstack/common/threadgroup.py", line 49, in wait
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup return self.thread.wait()
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/greenthread.py", line 168, in wait
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup return self._exit_event.wait()
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/event.py", line 116, in wait
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup return hubs.get_hub().switch()
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 187, in switch
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup return self.greenlet.switch()
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/greenthread.py", line 194, in main
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup result = function(*args, **kwargs)
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/openstack/common/service.py", line 65, in run_service
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup service.start()
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/service.py", line 154, in start
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup self.manager.init_host()
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 756, in init_host
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup self._report_driver_status(context)
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 4318, in _report_driver_status
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup capabilities = self.driver.get_host_stats(refresh=True)
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 3733, in get_host_stats
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup return self.host_state.get_host_stats(refresh=refresh)
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 374, in host_state
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup self._host_state = HostState(self)
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 4094, in __init__
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup self.update_status()
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 4134, in update_status
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup data["hypervisor_version"] = self.driver.get_hypervisor_version()
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 2939, in get_hypervisor_version
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup return method()
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 187, in doit
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup result = proxy_call(self._autowrap, f, *args, **kwargs)
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 147, in proxy_call
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup rv = execute(f,*args,**kwargs)
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 76, in tworker
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup rv = meth(*args,**kwargs)
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup File "/usr/lib64/python2.7/site-packages/libvirt.py", line 3550, in getVersion
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup if ret == -1: raise libvirtError ('virConnectGetVersion() failed', conn=self)
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup libvirtError: internal error Cannot find suitable emulator for x86_64
2013-08-22 19:01:57.245 9050 TRACE nova.openstack.common.threadgroup
2013-08-22 19:03:25.960 9155 WARNING nova.virt.libvirt.driver [-] URI qemu:///system does not support events

----------------

I've filed a related Bugzilla on the isolated libvirt issue here:

 https://bugzilla.redhat.com/show_bug.cgi?id=1000116

This is using libvirt 1.0.5.5-1.

A couple of things can be done to work around this error.

1) Manually call 'virsh capabilities' and then restart nova-compute.

2) In the Nova libvirt driver if we reverse the order we call getVersion and getCapabilites it also seems to fix it.

Dan Prince (dan-prince)
Changed in nova:
assignee: nobody → Dan Prince (dan-prince)
status: New → In Progress
Revision history for this message
Dan Prince (dan-prince) wrote :

This was fixed in baadaa9842ad4ff8b637466affd3c9f2213b55ac.

    Updates the Nova libvirt driver so we make a call to get
    the driver capabilities. This is clearly a work around
    but it does allow nova-compute to startup cleanly when
    performing a clean install of Fedora 19.

    See notes in: https://bugzilla.redhat.com/show_bug.cgi?id=1000116

    Fixes LP Bug #1215593.

    Change-Id: I2c74dc001032e3cc4d7d55a3fa407b96fd0d0e78

Changed in nova:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.