On Mon, May 24, 2010 at 09:07:24AM -0400, Brian K. White wrote: > On 5/24/2010 6:24 AM, Daniel P. Berrange wrote: > >On Fri, May 21, 2010 at 02:11:47PM +0200, 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. > >> > >>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()? > >> > >The VIR_ERR_OPERATION_INVALID is a precise code that says the request > >operation is not valid wrt the current state of the guest. So for the > >virDomainDestroy() method, the only cause of this message is requesting > >destroy of a guest that is not running. > > > > You are saying there is, and can only ever be, one possible way that the > operation could ever be considered invalid? You are debating the semantics of the word 'invalid'. The error code VIR_ERR_OPERATION_INVALID is associated with just one specific sceanario, regardless of how many different semantics you can attach to the word. > Even within the limited scope of virDomainDestroy() and the particular > values it was called with, I find that hard to believe on general principle. A guest VM has a set of lifecycle states (shutoff, running, paused). An operation on a VM can optional have a pre-requisite lifecycle state that the VM must be in. If that pre-requisite lifecycle state is not satisfied, the error code VIR_ERR_OPERATION_INVALID is raised. This error code is not used for any other reason. Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|