A few notes on what doesn't work quite right: * attaching to a console (via nova console-log). This does not work (for now) due to https://bugzilla.redhat.com/show_bug.cgi?id=1170743 * terminating an instance (via nova delete). It throws an exception within nova: 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher File "/opt/stack/nova/nova/compute/manager.py", line 2379, in _shutdown_instance 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher block_device_info) 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 1096, in destroy 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher destroy_disks, migrate_data) 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 1222, in cleanup 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher self._undefine_domain(instance) 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 1127, in _undefine_domain 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher {'errcode': errcode, 'e': e}, instance=instance) 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher File "/usr/local/lib/python2.7/dist-packages/oslo/utils/excutils.py", line 82, in __exit__ 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher six.reraise(self.type_, self.value, self.tb) 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 1111, in _undefine_domain 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher virt_dom.undefine() 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 183, in doit 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher result = proxy_call(self._autowrap, f, *args, **kwargs) 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 141, in proxy_call 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher rv = execute(f, *args, **kwargs) 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 122, in execute 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher six.reraise(c, e, tb) 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 80, in tworker 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher rv = meth(*args, **kwargs) 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher File "/usr/lib/python2.7/dist-packages/libvirt.py", line 2396, in undefine 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher if ret == -1: raise libvirtError ('virDomainUndefine() failed', dom=self) 2014-12-05 10:15:12.958 TRACE oslo.messaging.rpc.dispatcher libvirtError: internal error: client socket is closed The domain _is_ terminated, though. Calling 'nova delete' again removes it from the list. * Using qcow images (or overlays) -- must configure nova/libvirt to use 'raw'