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