2015-05-09 0:00 GMT+02:00 Jim Fehlig <jfeh...@suse.com>: > From xl.cfg950 man page: > > spiceagent_mouse=BOOLEAN > Whether SPICE agent is used for client mouse mode. The default is > true (1) (turn on) > > spicevdagent=BOOLEAN > Enables spice vdagent. The Spice vdagent is an optional component for > enhancing user experience and performing guest-oriented management > tasks. Its features includes: client mouse mode (no need to grab > mouse by client, no mouse lag), automatic adjustment of screen > resolution, copy and paste (text and image) between client and domU. > It also requires vdagent service installed on domU o.s. to work. > The default is 0. > > spice_clipboard_sharing=BOOLEAN > Enables Spice clipboard sharing (copy/paste). It requires spicevdagent > enabled. The default is false (0). > > So if spiceagent_mouse is enabled (client mouse mode) or > spice_clipboard_sharing is enabled, spicevdagent must be enabled. > Along with this change, s/spicedvagent/spicevdagent, set > spiceagent_mouse correctly, and add a test for these spice > features. >
Thanks for your work in libvirt about improve/fix support for xen with spice. >From a fast look to code seems there is spice usbredirection support missed, a feature that I think very useful: http://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=f5414ee57a17500e650ea11766474b11da940da2 There are also other spice settings added for xen 4.6 (image compression and streaming video): http://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=bd71555985efc423b1a119b6a3177de855763453 http://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=296c7f3284efe655d95a8ae045a5dc1a20d6fff0 And also another important that you already know and accepted today: http://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=161212ef02312c0681d2d809c8ff1e1f0ea6f6f9 Latest version have also LIBXL_HAVE_QXL useful for libvirt. I think is good add also qxl and usbredir to spice-features test or create a new one "full features". > > Signed-off-by: Jim Fehlig <jfeh...@suse.com> > --- > src/xenconfig/xen_xl.c | 56 > ++++++++++++++++++++++-------- > tests/xlconfigdata/test-spice-features.cfg | 32 +++++++++++++++++ > tests/xlconfigdata/test-spice-features.xml | 48 +++++++++++++++++++++++++ > tests/xlconfigdata/test-spice.xml | 2 ++ > tests/xlconfigtest.c | 1 + > 5 files changed, 124 insertions(+), 15 deletions(-) > > diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c > index 2e9294c..b54d5b0 100644 > --- a/src/xenconfig/xen_xl.c > +++ b/src/xenconfig/xen_xl.c > @@ -199,17 +199,23 @@ xenParseXLSpice(virConfPtr conf, virDomainDefPtr def) > } > > if (xenConfigGetBool(conf, "spiceagent_mouse", > - &graphics->data.spice.mousemode, 0) < 0) > - goto cleanup; > - if (xenConfigGetBool(conf, "spicedvagent", &val, 0) < 0) > + &val, 0) < 0) > goto cleanup; > if (val) { > - if (xenConfigGetBool(conf, "spice_clipboard_sharing", > - &graphics->data.spice.copypaste, > - 0) < 0) > - goto cleanup; > + graphics->data.spice.mousemode = > + VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_CLIENT; > + } else { > + graphics->data.spice.mousemode = > + VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_SERVER; > } > > + if (xenConfigGetBool(conf, "spice_clipboard_sharing", &val, > 0) < 0) > + goto cleanup; > + if (val) > + graphics->data.spice.copypaste = VIR_TRISTATE_BOOL_YES; > + else > + graphics->data.spice.copypaste = VIR_TRISTATE_BOOL_NO; > + > if (VIR_ALLOC_N(def->graphics, 1) < 0) > goto cleanup; > def->graphics[0] = graphics; > @@ -708,16 +714,36 @@ xenFormatXLSpice(virConfPtr conf, virDomainDefPtr > def) > return -1; > } > > - if (xenConfigSetInt(conf, "spiceagent_mouse", > - graphics->data.spice.mousemode) < 0) > - return -1; > + if (graphics->data.spice.mousemode) { > + switch (graphics->data.spice.mousemode) { > + case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_SERVER: > + if (xenConfigSetInt(conf, "spiceagent_mouse", 0) < 0) > + return -1; > + break; > + case VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_CLIENT: > + if (xenConfigSetInt(conf, "spiceagent_mouse", 1) < 0) > + return -1; > + /* > + * spicevdagent must be enabled if using client > + * mode mouse > + */ > + if (xenConfigSetInt(conf, "spicevdagent", 1) < 0) > + return -1; > + break; > + default: > + break; > + } > + } > > - if (graphics->data.spice.copypaste) { > - if (xenConfigSetInt(conf, "spicedvagent", 1) < 0) > + if (graphics->data.spice.copypaste == VIR_TRISTATE_BOOL_YES) { > + if (xenConfigSetInt(conf, "spice_clipboard_sharing", 1) < > 0) > + return -1; > + /* > + * spicevdagent must be enabled if spice_clipboard_sharing > + * is enabled > + */ > + if (xenConfigSetInt(conf, "spicevdagent", 1) < 0) > return -1; > - if (xenConfigSetInt(conf, "spice_clipboard_sharing", > - graphics->data.spice.copypaste) < 0) > - return -1; > } > } > } > diff --git a/tests/xlconfigdata/test-spice-features.cfg > b/tests/xlconfigdata/test-spice-features.cfg > new file mode 100644 > index 0000000..c3e7111 > --- /dev/null > +++ b/tests/xlconfigdata/test-spice-features.cfg > @@ -0,0 +1,32 @@ > +name = "XenGuest2" > +uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809" > +maxmem = 579 > +memory = 394 > +vcpus = 1 > +pae = 1 > +acpi = 1 > +apic = 1 > +hap = 0 > +viridian = 0 > +localtime = 0 > +on_poweroff = "destroy" > +on_reboot = "restart" > +on_crash = "restart" > +device_model = "/usr/lib/xen/bin/qemu-dm" > +vif = [ > "mac=00:16:3e:66:92:9c,bridge=xenbr1,script=vif-bridge,model=e1000,type=ioemu" > ] > +parallel = "none" > +serial = "none" > +builder = "hvm" > +boot = "d" > +disk = [ "/dev/HostVG/XenGuest2,raw,hda,w,backendtype=phy", > "/root/boot.iso,raw,hdc,r,backendtype=qdisk,devtype=cdrom" ] > +sdl = 0 > +vnc = 0 > +spice = 1 > +spicehost = "127.0.0.1" > +spiceport = 590 > +spicetls_port = 500 > +spicedisable_ticketing = 0 > +spicepasswd = "thebeast" > +spiceagent_mouse = 1 > +spicevdagent = 1 > +spice_clipboard_sharing = 1 > diff --git a/tests/xlconfigdata/test-spice-features.xml > b/tests/xlconfigdata/test-spice-features.xml > new file mode 100644 > index 0000000..8f3fcf5 > --- /dev/null > +++ b/tests/xlconfigdata/test-spice-features.xml > @@ -0,0 +1,48 @@ > +<domain type='xen'> > + <name>XenGuest2</name> > + <uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid> > + <memory unit='KiB'>592896</memory> > + <currentMemory unit='KiB'>403456</currentMemory> > + <vcpu placement='static'>1</vcpu> > + <os> > + <type arch='x86_64' machine='xenfv'>hvm</type> > + <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader> > + <boot dev='cdrom'/> > + </os> > + <features> > + <acpi/> > + <apic/> > + <pae/> > + </features> > + <clock offset='utc' adjustment='reset'/> > + <on_poweroff>destroy</on_poweroff> > + <on_reboot>restart</on_reboot> > + <on_crash>restart</on_crash> > + <devices> > + <emulator>/usr/lib/xen/bin/qemu-dm</emulator> > + <disk type='block' device='disk'> > + <driver name='phy' type='raw'/> > + <source dev='/dev/HostVG/XenGuest2'/> > + <target dev='hda' bus='ide'/> > + </disk> > + <disk type='file' device='cdrom'> > + <driver name='qemu' type='raw'/> > + <source file='/root/boot.iso'/> > + <target dev='hdc' bus='ide'/> > + <readonly/> > + </disk> > + <interface type='bridge'> > + <mac address='00:16:3e:66:92:9c'/> > + <source bridge='xenbr1'/> > + <script path='vif-bridge'/> > + <model type='e1000'/> > + </interface> > + <input type='mouse' bus='ps2'/> > + <input type='keyboard' bus='ps2'/> > + <graphics type='spice' port='590' tlsPort='500' autoport='no' > listen='127.0.0.1' passwd='thebeast'> > + <listen type='address' address='127.0.0.1'/> > + <mouse mode='client'/> > + <clipboard copypaste='yes'/> > + </graphics> > + </devices> > +</domain> > diff --git a/tests/xlconfigdata/test-spice.xml > b/tests/xlconfigdata/test-spice.xml > index bd004fc..e5b43d9 100644 > --- a/tests/xlconfigdata/test-spice.xml > +++ b/tests/xlconfigdata/test-spice.xml > @@ -41,6 +41,8 @@ > <input type='keyboard' bus='ps2'/> > <graphics type='spice' port='590' tlsPort='500' autoport='no' > listen='127.0.0.1' passwd='thebeast'> > <listen type='address' address='127.0.0.1'/> > + <mouse mode='server'/> > + <clipboard copypaste='no'/> > </graphics> > </devices> > </domain> > diff --git a/tests/xlconfigtest.c b/tests/xlconfigtest.c > index 0b47fbb..952b504 100644 > --- a/tests/xlconfigtest.c > +++ b/tests/xlconfigtest.c > @@ -195,6 +195,7 @@ mymain(void) > > DO_TEST("new-disk", 3); > DO_TEST("spice", 3); > + DO_TEST("spice-features", 3); > > #ifdef LIBXL_HAVE_BUILDINFO_USBDEVICE_LIST > DO_TEST("fullvirt-multiusb", 3); > -- > 1.8.4.5 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel >
_______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel