Ticket #1843 (closed defect: fixed)
LibVirtSlave fails to destroy domain on buildFinished
|Reported by:||fr4nk||Owned by:|
[root@eridu ~]# libvirtd --version libvirtd (libvirt) 0.8.8 [root@eridu ~]# qemu-kvm --version QEMU emulator version 0.14.0 (qemu-kvm-0.14.0), Copyright (c) 2003-2008 Fabrice Bellard [root@eridu ~]#
from buildbot.libvirtbuildslave import LibVirtSlave from buildbot.libvirtbuildslave import Connection connection = Connection("qemu:///system") c['slaves'] =  [...] slave = LibVirtSlave("arch32", "<password>", connection, "/data/vms/snapshots/arch32.tmp", base_image="/data/vms/arch32.img", max_builds=1, missing_timeout=30, build_wait_timeout=30) c['slaves'].append(slave)
A builder associated with this slave will cause the (qemu-kvm) virtual machine to start, from a snapshot overlay disk, just fine. The buildslave on the VM starts, connects, the build starts, and finishes, or fails.. this is not the issue here..
The problem is that after the build, it doesn't manage to stop/destroy the VM, leaving it running. Apart from taking up memory, this also de-syncs the states between libvirt and buildbot, so that you can't start the build again.
below is a stacktrace from a manually interrupted build (but the last line is the same regardless of how the build terminates:
2011-02-26 16:33:56+0100 [-] setting expectations for next time 2011-02-26 16:33:56+0100 [-] new expectations: 367.477597952 seconds 2011-02-26 16:33:56+0100 [-] Got buildFinished notification - attempting to insubstantiate 2011-02-26 16:33:56+0100 [-] Attempting to stop 'arch32' 2011-02-26 16:33:56+0100 [-] Unhandled Error Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/buildbot/process/base.py", line 478, in allStepsDone return self.buildFinished(text, self.result) File "/usr/lib/python2.7/site-packages/buildbot/process/base.py", line 511, in buildFinished self.deferred.callback(self) File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 361, in callback self._startRunCallbacks(result) File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 455, in _startRunCallbacks self._runCallbacks() --- <exception caught here> --- File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 542, in _runCallbacks current.result = callback(current.result, *args, **kw) File "/usr/lib/python2.7/site-packages/buildbot/process/base.py", line 225, in _release_slave self.slavebuilder.buildFinished() File "/usr/lib/python2.7/site-packages/buildbot/process/builder.py", line 317, in buildFinished self.slave.buildFinished(self) File "/usr/lib/python2.7/site-packages/buildbot/libvirtbuildslave.py", line 264, in buildFinished self.insubstantiate() File "/usr/lib/python2.7/site-packages/buildbot/buildslave.py", line 715, in insubstantiate d = self.stop_instance(fast) File "/usr/lib/python2.7/site-packages/buildbot/libvirtbuildslave.py", line 239, in stop_instance d = domain.destroy() exceptions.AttributeError: 'int' object has no attribute 'destroy'
- Keywords virtualization added
- Milestone changed from undecided to 0.8.+
- Status changed from new to closed
- Resolution set to fixed