Alexandr
2013-Aug-21 06:46 UTC
Re: [libvirt-users] virConnectDomainEventRegisterAny problem
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 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 . -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.21 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBAgAGBQJSFGI9AAoJEH3ap8veG8EHl6QH/iHtRzwc/WRUTiPjvWTIVcKR wsTMByOqUE82A1pWScJJDF/C8+HTVb5dgF4sXH61TJT8mMu/h721oSv/mh3jMjwJ KUO5X/7h75RPVizLvUW6PofI4DWzSyJec73UG+4QIYyMs8en9D4C46QqVdXnnlVd yXGAAIV5y4BPPHV+QYaPp09oEqf+DnVhTrf14LjHOhUZF+6rO56n7fP9heOAXe5Z vhifJ0y8NiiAl1uGeEm4ty7rdw2geTZaSIo1EFVc7/j4Ejlb4+Bosg67aFlW+PmU gN5A08/l/9FnDk1qZL7twwc3+38CQr9n88hhZLaVs8sgm9R7VhQum8qMpSRS3oE=Xrdk -----END PGP SIGNATURE-----
Alexandr
2013-Aug-21 09:36 UTC
Re: [libvirt-users] virConnectDomainEventRegisterAny problem
-----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 . > > _______________________________________________ libvirt-users > mailing list libvirt-users@redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-users >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 ? -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.21 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBAgAGBQJSFIoGAAoJEH3ap8veG8EHD3kIALAivHCNxKX6WN99MRbQQcUb wLuZL1DALOrRr0YEI5fm+rWGb2nYJjMrkRGTmD1/sW7oGLfYz9hzEj3f6vnOOkH+ DlfNU8Td7ssPicIBhNrKXqDF/1OebImCcYivEVEyhNigwoSIjJ8Y3KkON9TO7jc1 pu8POIoxG/7nBuxaNBlaBioLx8QwGtFG0fWU2UhTK63dVVTjCqTwI5STHugAAQhf ws3xJxkeLKbtDajaIvgzh5oZ/4zHNEeViviR2qW4VqHq1MWiOkj1T8Q4sGzSzpLe 5ALXdVjnUfPxMI3szrz80XuqEyRR0CrHEfoz8dnWaR2s84B7gfwu7oV/TdJnIts=lJBr -----END PGP SIGNATURE-----
Daniel P. Berrange
2013-Aug-21 09:39 UTC
Re: [libvirt-users] virConnectDomainEventRegisterAny problem
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 :|