[libvirt] [libvirt-glib] Ensure 'domain-added' signal on transient domain creation
Daniel P. Berrange
berrange at redhat.com
Tue Nov 29 13:36:34 UTC 2011
On Mon, Nov 28, 2011 at 07:37:16PM +0200, Zeeshan Ali (Khattak) wrote:
> From: "Zeeshan Ali (Khattak)" <zeeshanak at gnome.org>
>
> ---
> libvirt-gobject/libvirt-gobject-connection.c | 10 ++++++++--
> 1 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/libvirt-gobject/libvirt-gobject-connection.c b/libvirt-gobject/libvirt-gobject-connection.c
> index a258847..02b54a1 100644
> --- a/libvirt-gobject/libvirt-gobject-connection.c
> +++ b/libvirt-gobject/libvirt-gobject-connection.c
> @@ -264,6 +264,7 @@ static int domain_event_cb(virConnectPtr conn G_GNUC_UNUSED,
> GVirConnection *gconn = opaque;
> GVirDomain *gdom;
> GVirConnectionPrivate *priv = gconn->priv;
> + gboolean was_unknown = FALSE;
>
> if (virDomainGetUUIDString(dom, uuid) < 0) {
> g_warning("Failed to get domain UUID on %p", dom);
> @@ -282,6 +283,8 @@ static int domain_event_cb(virConnectPtr conn G_GNUC_UNUSED,
> g_mutex_lock(priv->lock);
> g_hash_table_insert(priv->domains, (gpointer)gvir_domain_get_uuid(gdom), gdom);
> g_mutex_unlock(priv->lock);
> +
> + was_unknown = TRUE;
> }
>
> switch (event) {
> @@ -307,9 +310,12 @@ static int domain_event_cb(virConnectPtr conn G_GNUC_UNUSED,
> break;
>
> case VIR_DOMAIN_EVENT_STARTED:
> - if (detail == VIR_DOMAIN_EVENT_STARTED_BOOTED)
> + if (detail == VIR_DOMAIN_EVENT_STARTED_BOOTED) {
> + if (was_unknown)
> + /* Most probably a transient domain */
> + g_signal_emit(gconn, signals[VIR_DOMAIN_ADDED], 0, gdom);
> g_signal_emit_by_name(gdom, "started::booted");
> - else if (detail == VIR_DOMAIN_EVENT_STARTED_MIGRATED)
> + } else if (detail == VIR_DOMAIN_EVENT_STARTED_MIGRATED)
> g_signal_emit_by_name(gdom, "started::migrated");
> else if (detail == VIR_DOMAIN_EVENT_STARTED_RESTORED)
> g_signal_emit_by_name(gdom, "started::restored");
> --
ACK
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list