[libvirt-users] virConnectDomainEventRegisterAny problem

Daniel P. Berrange berrange at redhat.com
Wed Aug 21 09:39:35 UTC 2013


On Wed, Aug 21, 2013 at 12:36:06PM +0300, Alexandr wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> 21.08.2013 09:46, Alexandr пишет:
> > 21.08.2013 09:32, Martin Kletzander пишет:
> >> On Wed 21 Aug 2013 01:03:37 AM CEST, Alexandr wrote:
> >>> 
> >>> good day. i trying to make callback function for 
> >>> VIR_DOMAIN_EVENT_ID_LIFECYCLE, i have successfully registering 
> >>> callback, but it never called, i need to know when domain 
> >>> started, stopped or crashed, i have write following code
> >>> 
> >>> static int    domain_event_handler(virConnectPtr conn, 
> >>> virDomainPtr dom, int event, int detail, void * opaque) { 
> >>> switch(event) { } return 0; }
> >>> 
> >>> ..... int callback = 
> >>> virConnectDomainEventRegisterAny(libvirt_connection, NULL, 
> >>> VIR_DOMAIN_EVENT_ID_LIFECYCLE, 
> >>> VIR_DOMAIN_EVENT_CALLBACK(domain_event_handler), NULL, NULL); 
> >>> if(callback == -1) { std::cout<<"Error: failed to register
> >>> domain event handle callback\n"; return -1; } .....
> >>> 
> >>> 
> >>> but "domain_event_handler" is never called, what is wrong here
> >>> ?
> > 
> >> Are you running an event loop?  You can have a look at our
> >> examples [1] and see what's being done there.  Especially note
> >> the virEventRunDefaultImpl() [2] there.
> > 
> >> Martin
> > 
> >> [1] 
> >> http://libvirt.org/git/?p=libvirt.git;a=blob;f=examples/domain-events/events-c/event-test.c;h=52aa3d08d7326e422c12a8521717c3d55b2d8afd;hb=HEAD
> >
> >> 
> > 
> > [2]
> >> http://libvirt.org/git/?p=libvirt.git;a=blob;f=examples/domain-events/events-c/event-test.c;h=52aa3d08d7326e422c12a8521717c3d55b2d8afd;hb=HEAD#l611
> >
> >> 
> > 
> > oh..., i missed it, thx for hint and sorry for stupid questions .
> 
> now it's working except for events from other connections, for example
> i want to handle domain started by virt-manager, now i do not have
> event when it's started, is exists any api to handle this events, or i
> need to implement internal polling of domains state in my application ?

The events system reports all lifecycle events, regardless of which
connection triggered them.

If you're not seeing events from domains started by virt-manager then
your almost certainly connecting to a different libvirt URI than
virt-manager is using.

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 libvirt-users mailing list