[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