[libvirt-users] Better error codes when stopping a VM that is already stopped
Cole Robinson
crobinso at redhat.com
Fri May 21 15:50:10 UTC 2010
On 05/21/2010 08:11 AM, Guido Winkelmann wrote:
> Hi,
>
> Sometimes when stopping a virtual domain using virDomainDestroy(), I come
> across a domain that is already stopped. (For example when someone already
> stopped the domain manually using virsh or because the guest OS issued a
> shutdown.) This is a special case that I absolutely need to catch and handle.
>
In virt-manager, we basically do:
def destroy(vm):
if vm.is_running():
vm.destroy()
return
I'd recommend doing something similar in your app: no reason to run a
command if you can check ahead of time if it will fail. You can use
virDomainIsActive to check the domain status.
> Unfortunately, when this happens, and I call virGetLastError() afterwards, I
> always just get the error code VIR_ERR_OPERATION_INVALID, which doesn't look
> very precise to me...
>
> Two questions about this:
>
> Is the domain not running at that moment the only possible condition that can
> trigger this particular error code when calling virDomainDestroy()?
>
Yes, there are other errors but none that use OPERATION_INVALID.
> Can't we have a more obvious/precise error code in that case, like
> VIR_ERR_DOMAIN_NOT_RUNNING or something like that?
>
Sounds like a reasonable idea, won't help you though if your app needs
to support older versions.
- Cole
More information about the libvirt-users
mailing list