[libvirt] RFC: Add a 'reason' argument for domain events ?

Daniel Veillard veillard at redhat.com
Fri Nov 14 12:30:18 UTC 2008


On Fri, Nov 14, 2008 at 11:18:48AM +0000, Daniel P. Berrange wrote:
[...]
> One option is to add alot more events
> 
>   VIR_DOMAIN_MIGRATED_IN   (migrated to another node)
>   VIR_DOMAIN_MIGRATED_OUT  (migrated from another node)
>   VIR_DOMAIN_SHUTDOWN      (graceful shutdown by host admin)
>   VIR_DOMAIN_DESTROYED     (force destroyed by host admin)
>   VIR_DOMAIN_CRASHED       (guest kernel crashed)
>   VIR_DOMAIN_HUNG          (host emulator hung)
> 
> leaving STOPPED to just be a generic stop event, with no particular
> reason.
> 
> The downside with this, is if an application just wants to know about 
> whether a domain shutdown, not why, then they have to track lots and
> lots of events.
> 
> Also, not every driver  would be able to provide all of these events,
> so would often have to fallback on a generic STOPPED event 

  yes that makes using the API way harder than it should, though
  enumerating the cases: in a switch is not that hard...

> So one alternative is to provide a generic 'char * reason' with each 
> event with provides scope on the cause of the lifecycle operation.
> So you'd get
> 
>   VIR_DOMAIN_STOPPED  ("crashed", "shutdown", "destroyed",
>                        "quit", "hung", "migrated", "saved")
>   VIR_DOMAIN_STARTED  ("booted", "migrated", "restored")
> 
> nb, we could remove the explicit SAVED and RESTORED events in this style.
> 
> With such a 'reason' arg, we could possibly avoid adding the DEFINED
> and UNDEFINED events I suggested. Instead, adding a reason for ADDED
> and REMOVED events,
> 
>    VIR_DOMAIN_ADDED    ("started", "defined")
>    VIR_DOMAIN_REMOVED  ("shutdown", "undefined")
> 
> which lets you distinguish transient from persistent domains. The downside
> of this though, is that we can't explicitly track when a configuration
> file is 're-defined', eg adding a config file for an existing running
> guest.

  I like this, I wonder if a free form part to the message might make
sense, even if we don't have currently a way to pass this say from virsh
command line.

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list