[libvirt] [PATCHv2 13/14] event: don't turn offline domain into global event

Eric Blake eblake at redhat.com
Tue Jan 7 19:08:09 UTC 2014

On 01/07/2014 10:07 AM, John Ferlan wrote:

> The intro comments to 'virObjectEventStateRegisterID()' need to be
> adjusted to remove '@name' and '@id'.

Will do.

> Same for 'virObjectEventCallbackLookup()' - sadly missed in patch 7, but
> I was looking for @name and @id now...

I actually caught that in patch 7 in time (but managed to botch the
testsuite in the process of amending that patch).

> Leaving only 'virObjectEventNew()' as the lone API that cares about 'id'
> and 'name', but doesn't utilize.  Should that be noted somewhere?  Since
> 'meta.name' and 'meta.id' aren't used anywhere, do they even need to be
> saved...  Would save an alloc/free for name.

virObjectEvent DOES care about id and name - the dispatcher function has
to reconstruct the virDomainPtr for handing to the callback function
(see virDomainEventDispatchDefaultFunc in domain_event.c).  So meta is
still important for events, just not for callbacks.  But if you found it
confusing, then it can't hurt for me to enhance the commit message :)

> Should the existing 'testDomainCreateXMLMixed()' be kept as is?  And
> then add a 'testDomainDefineXMLMixed()'?  At the very least the name
> should probably be changed since other test functions distinguish Define
> & Create in their names.

The test is covering whether an event happens when a domain is created
(whether created as transient, or changed from offline to online for
persistent); but to register an event at all, the domain already has to
exist.  When I first wrote the entire function for this patch, I used
'define' to make the domain exist, then register events, then 'create'
to see the creation event; but it turned up other bugs, which I then
rebased and fixed first, using the portions of the test that worked to
expose those problems.  But when rebasing, I had to first test create as
transient, register, then destroy, then re-create, to avoid tripping the
bug fixed in this patch.  I added more commentary in my commit message :)

> ACK in general though.

Okay, here's what I squashed in when pushing.

diff --git i/src/conf/object_event.c w/src/conf/object_event.c
index c4aedd9..b01ffe5 100644
--- i/src/conf/object_event.c
+++ w/src/conf/object_event.c
@@ -774,8 +774,6 @@ virObjectEventStateFlush(virObjectEventStatePtr state)
  * @conn: connection to associate with callback
  * @state: domain event state
  * @uuid: uuid of the object for event filtering
- * @name: name of the object for event filtering
- * @id: id of the object for event filtering, or 0
  * @klass: the base event class
  * @eventID: ID of the event type to register for
  * @cb: function to invoke when event occurs
diff --git i/src/conf/object_event_private.h
index 76bd6d1..571fc40 100644
--- i/src/conf/object_event_private.h
+++ w/src/conf/object_event_private.h
@@ -69,6 +69,8 @@ virObjectEventNew(virClassPtr klass,
                   int eventID,
                   int id,
                   const char *name,
-                  const unsigned char *uuid);
+                  const unsigned char *uuid)


Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 604 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140107/6f75226f/attachment-0001.sig>

More information about the libvir-list mailing list