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