Hi,
with the increased number of version we're supporting and going to
support it's going to be time for the introduction
of protocol versioning.
The motivation for this is, that currently if VDSM is sending a message
to the guest agent which is not known, it will end up being logged as
error on the guest agent side. If the guest agent is sending a message
to VDSM which VDSM does not know about this is logged as error as well.
While one could argue, that we should remove the error level or remove
the logging all together it will not work for older versions though.
My proposed solution is as follows:
By default the guest agent supposes API version 0, which means all until
this time implemented messages are supported. The same should be
supposed from the VDSM side, by default the API version shall be 0.
Once we're adding a new message (this is the case of FQDN reporting
http://gerrit.ovirt.org/#/c/16572/ )
we're going to increase the version with a new release.
Messages which are requiring a higher API version, are not supposed to
be sent via the VIO Channels.
The negotiation of the used API version would work like this:
VDSM sends the refresh command on connect to the guest agent VIO Channel
with the apiVersion argument.
Older version of the guest agent are ignoring these additional
parameters, as they are not expected however it won't
fail either on them.
If the guest agent is retrieving an API Version it will either use it,
or if it is higher than the maximum known version it will use the guest
agent's version. This version is sent as a separate message back to VDSM
which then in turn will set the value to the value retrieved by the
guest agent. (As long it is greater than 0)
Here are the proposed patch sets:
Guest Side PatchSet:
http://gerrit.ovirt.org/#/c/16995
VDSM Side PatchSet:
http://gerrit.ovirt.org/#/c/17004/
Please let me know your thoughts about this.
In my opinion are those changes pretty safe and straight forward, and it
will allow us to avoid unnecessary messages to be sent between guest and
host
Regards,
--
Regards,
Vinzenz Feenstra | Senior Software Engineer
RedHat Engineering Virtualization R & D
Phone: +420 532 294 625
IRC: vfeenstr or evilissimo
Better technology. Faster innovation. Powered by community collaboration.
See how it works at
redhat.com