[libvirt] [Xen-devel] [PATCH 4/4] xenconfig: fix spice mousemode and copypaste
Fabio Fantoni
fabio.fantoni at m2r.biz
Fri May 8 22:33:45 UTC 2015
2015-05-09 0:00 GMT+02:00 Jim Fehlig <jfehlig at 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 <jfehlig at 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 at lists.xen.org
> http://lists.xen.org/xen-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150509/1473f890/attachment-0001.htm>
More information about the libvir-list
mailing list