[libvirt-users] Better error codes when stopping a VM that is already stopped

Daniel P. Berrange berrange at redhat.com
Mon May 24 13:25:12 UTC 2010


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 :|




More information about the libvirt-users mailing list