On 02/11/2015 04:40 AM, Laine Stump wrote:
On 02/10/2015 04:35 AM, Luyao Huang wrote:
>
https://bugzilla.redhat.com/show_bug.cgi?id=1191016
>
> We try to get the IP address in /domain/devices/graphics/@listen, howerver
> for the network type listen address donnot have this parameter, it will
> show the address in the /domain/devices/graphics/listen/@address, running
> XML like this:
>
> <graphics type='spice' port='5901' autoport='yes'
keymap='en-us'>
> <listen type='network' address='192.168.122.1'
network='default'/>
> </graphics>
>
> This patch will try to get the IP address in this path
> /domain/devices/graphics/listen/@address
That will work when the libvirtd being connected to is 0.9.4 or later,
but earlier versions of libvirt don't have the <listen> subelement;
instead they just have a 'listen' attribute directly inside <graphics>
that contains the address. All newer versions of libvirt are supposed to
populate that from <listen>[0] for backward compatibility.
Oh, right, thanks for your catch, i forgot this thing when i wrote this
patch, my patch will cause a issue without the patch you attached when
use new virsh client to connect to old libvirtd(older than 0.9.4).
The real bug here is that the listen attribute in <graphics>
isn't being
filled in in the case of type='network' when the domain is active. On
the other hand, fixing the problem there would leave it unfixed for
cases where the client is a new libvirt but the server is running
libvirt between 0.9.4 and 1.2.12. So I think what is needed is for your
patch to check @listen, and if nothing is found there, *then* check
listen/@address. I attached a patch to this mail that I propose
squashing into your patch before pushing. Let me know if it behaves
properly and looks correct.
I test with the patch you attached, it works well when use new virsh
client connect to new libvirtd and also works well with the old libvirtd
(older than 0.9.4 or later ).
Thanks for your patch.
Beyond that, the server side should still be fixed. I just sent a
patch
that does that:
https://www.redhat.com/archives/libvir-list/2015-February/msg00332.html
Yes, if the server have been fixed, old virsh client command will work
well with new libvirtd.
Between the two patches, we will have fixed the problem for all
versions
of server, as long as the client is new enough.
Thanks for your review and i found you have wrote a patch for the client
side, so seems no need write a new version for this patch :)
Luyao