Signed-off-by: Zhou Peng <zhoupeng@xxxxxxxxxxxxxxx> spice agent-mouse support diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 6fcca94..d6d2f36 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -2742,7 +2742,10 @@ qemu-kvm -net nic,model=? /dev/null while <code>tlsPort</code> gives an alternative secure port number. The <code>autoport</code> attribute is the new preferred syntax for indicating autoallocation of - both port numbers. The <code>listen</code> attribute is + both port numbers. The <code>agentmouse</code> attribute + is used to specify whether spice agent is used for client + mouse mode(default is on). + The <code>listen</code> attribute is an IP address for the server to listen on. The <code>passwd</code> attribute provides a SPICE password in clear text. The <code>keymap</code> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 3908733..97b40d7 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -1650,6 +1650,14 @@ </attribute> </optional> <optional> + <attribute name="agentmouse"> + <choice> + <value>on</value> + <value>off</value> + </choice> + </attribute> + </optional> + <optional> <attribute name="listen"> <ref name="addrIPorName"/> </attribute> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index f9654f1..a5f88ec 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -460,6 +460,12 @@ VIR_ENUM_IMPL(virDomainGraphicsSpicePlaybackCompression, "on", "off"); +VIR_ENUM_IMPL(virDomainGraphicsSpiceAgentMouse, + VIR_DOMAIN_GRAPHICS_SPICE_AGENT_MOUSE_LAST, + "default", + "on", + "off"); + VIR_ENUM_IMPL(virDomainGraphicsSpiceStreamingMode, VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_LAST, "default", @@ -5288,6 +5294,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, int nListens; xmlNodePtr *listenNodes = NULL; char *listenAddr = NULL; + char *agentmouse = NULL; xmlNodePtr save = ctxt->node; if (VIR_ALLOC(def) < 0) { @@ -5543,6 +5550,20 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, VIR_FREE(autoport); } + if ((agentmouse = virXMLPropString(node, "agentmouse")) != NULL) { + int am; + if ((am = virDomainGraphicsSpiceAgentMouseTypeFromString( + agentmouse)) <= 0) { + virDomainReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unknown spice agentmouse mode '%s'"), + agentmouse); + VIR_FREE(agentmouse); + goto error; + } + VIR_FREE(agentmouse); + def->data.spice.agentmouse = am; + } + def->data.spice.keymap = virXMLPropString(node, "keymap"); if (virDomainGraphicsAuthDefParseXML(node, &def->data.spice.auth, @@ -11255,6 +11276,8 @@ virDomainGraphicsDefFormat(virBufferPtr buf, { const char *type = virDomainGraphicsTypeToString(def->type); const char *listenAddr = NULL; + const char *agentmouse = virDomainGraphicsSpiceAgentMouseTypeToString( + def->data.spice.agentmouse); int children = 0; int i; @@ -11364,6 +11387,9 @@ virDomainGraphicsDefFormat(virBufferPtr buf, if (listenAddr) virBufferAsprintf(buf, " listen='%s'", listenAddr); + if (def->data.spice.agentmouse) + virBufferEscapeString(buf, " agentmouse='%s'", agentmouse); + if (def->data.spice.keymap) virBufferEscapeString(buf, " keymap='%s'", def->data.spice.keymap); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 596be4d..bdc9a45 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1003,6 +1003,14 @@ enum virDomainGraphicsSpicePlaybackCompression { VIR_DOMAIN_GRAPHICS_SPICE_PLAYBACK_COMPRESSION_LAST }; +enum virDomainGraphicsSpiceAgentMouse { + VIR_DOMAIN_GRAPHICS_SPICE_AGENT_MOUSE_DEFAULT = 0, + VIR_DOMAIN_GRAPHICS_SPICE_AGENT_MOUSE_ON, + VIR_DOMAIN_GRAPHICS_SPICE_AGENT_MOUSE_OFF, + + VIR_DOMAIN_GRAPHICS_SPICE_AGENT_MOUSE_LAST +}; + enum virDomainGraphicsSpiceStreamingMode { VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_DEFAULT = 0, VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_FILTER, @@ -1072,6 +1080,7 @@ struct _virDomainGraphicsDef { struct { int port; int tlsPort; + int agentmouse; char *keymap; virDomainGraphicsAuthDef auth; unsigned int autoport :1; @@ -2061,6 +2070,7 @@ VIR_ENUM_DECL(virDomainGraphicsSpiceZlibCompression) VIR_ENUM_DECL(virDomainGraphicsSpicePlaybackCompression) VIR_ENUM_DECL(virDomainGraphicsSpiceStreamingMode) VIR_ENUM_DECL(virDomainGraphicsSpiceClipboardCopypaste) +VIR_ENUM_DECL(virDomainGraphicsSpiceAgentMouse) VIR_ENUM_DECL(virDomainNumatuneMemMode) VIR_ENUM_DECL(virDomainSnapshotState) /* from libvirt.h */ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index b9baf9a..ba8523a 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -252,6 +252,8 @@ virDomainChrDefFree; virDomainChrDefNew; virDomainChrSourceDefCopy; virDomainChrSourceDefFree; +virDomainGraphicsSpiceAgentMouseTypeFromString; +virDomainGraphicsSpiceAgentMouseTypeToString; virDomainChrSpicevmcTypeFromString; virDomainChrSpicevmcTypeToString; virDomainChrTcpProtocolTypeFromString; diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 64a4546..2bbc077 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -154,6 +154,7 @@ VIR_ENUM_IMPL(qemuCaps, QEMU_CAPS_LAST, "drive-iotune", /* 85 */ "system_wakeup", "scsi-disk.channel", + "spice-agent-mouse", ); struct qemu_feature_flags { @@ -1049,8 +1050,13 @@ qemuCapsComputeCmdFlags(const char *help, if ((p = strstr(p, "|none")) && p < nl) qemuCapsSet(flags, QEMU_CAPS_VGA_NONE); } - if (strstr(help, "-spice")) + if (strstr(help, "-spice")) { qemuCapsSet(flags, QEMU_CAPS_SPICE); + + /* If SPICE is avail, agent-mouse option will be avail for qemu, + * although 'qemu --help' doesn't show it. */ + qemuCapsSet(flags, QEMU_CAPS_SPICE_AGENTMOUSE); + } if (strstr(help, "boot=on")) qemuCapsSet(flags, QEMU_CAPS_DRIVE_BOOT); if (strstr(help, "serial=s")) diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index db584ce..2e9faba 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -122,6 +122,7 @@ enum qemuCapsFlags { QEMU_CAPS_DRIVE_IOTUNE = 85, /* -drive bps= and friends */ QEMU_CAPS_WAKEUP = 86, /* system_wakeup monitor command */ QEMU_CAPS_SCSI_DISK_CHANNEL = 87, /* Is scsi-disk.channel available? */ + QEMU_CAPS_SPICE_AGENTMOUSE = 88, /* -spice agent-mouse=on|off */ QEMU_CAPS_LAST, /* this must always be the last item */ }; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 01adf0d..9d5a9ad 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5391,6 +5391,18 @@ qemuBuildCommandLine(virConnectPtr conn, VIR_FREE(netAddr); + const char *agentmouse = virDomainGraphicsSpiceAgentMouseTypeToString( + def->graphics[0]->data.spice.agentmouse); + if (def->graphics[0]->data.spice.agentmouse) { + if (qemuCapsGet(qemuCaps, QEMU_CAPS_SPICE_AGENTMOUSE)) + virBufferAsprintf(&opt, ",agent-mouse=%s", agentmouse); + else { + qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("spice agent-mouse is not supported with this QEMU")); + goto error; + } + } + /* In the password case we set it via monitor command, to avoid * making it visible on CLI, so there's no use of password=XXX * in this bit of the code */ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-spice-agentmouse.args b/tests/qemuxml2argvdata/qemuxml2argv-spice-agentmouse.args new file mode 100644 index 0000000..46be6d8 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-spice-agentmouse.args @@ -0,0 +1,19 @@ +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=spice \ +/usr/bin/qemu -S -M pc -m 214 -smp 1 -nodefconfig -nodefaults \ +-monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -device \ +virtio-serial-pci,id=virtio-serial1,bus=pci.0,addr=0xa -hda \ +/dev/HostVG/QEMUGuest1 -chardev spicevmc,id=charchannel0,name=vdagent -device \ +virtserialport,bus=virtio-serial1.0,nr=3,chardev=charchannel0,id=channel0\ +,name=com.redhat.spice.0 -usb -spice port=5903,tls-port=5904,addr=127.0.0.1,\ +agent-mouse=off,x509-dir=/etc/pki/libvirt-spice,tls-channel=main -device \ +virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 + +#LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=spice \ +/usr/bin/qemu -S -M pc -m 214 -smp 1 -nodefconfig -nodefaults \ +-monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -device \ +virtio-serial-pci,id=virtio-serial1,bus=pci.0,addr=0xa -hda \ +/dev/HostVG/QEMUGuest1 -chardev spicevmc,id=charchannel0,name=vdagent -device \ +virtserialport,bus=virtio-serial1.0,nr=3,chardev=charchannel0,id=channel0\ +,name=com.redhat.spice.0 -usb -spice port=5903,tls-port=5904,addr=127.0.0.1,\ +agent-mouse=on,x509-dir=/etc/pki/libvirt-spice,tls-channel=main -device \ +virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-spice-agentmouse.xml b/tests/qemuxml2argvdata/qemuxml2argv-spice-agentmouse.xml new file mode 100644 index 0000000..4b36c2c --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-spice-agentmouse.xml @@ -0,0 +1,38 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory>219136</memory> + <vcpu cpuset='1-4,8-20,525'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu</emulator> + <disk type='block' device='disk'> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='ide'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + </disk> + <controller type='usb' index='0'/> + <controller type='ide' index='0'/> + <controller type='virtio-serial' index='1'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/> + </controller> +<!-- + <graphics type='spice' port='5903' tlsPort='5904' autoport='no' listen='127.0.0.1' agentmouse='on'> +--> + <graphics type='spice' port='5903' tlsPort='5904' autoport='no' listen='127.0.0.1' agentmouse='off'> + <channel name='main' mode='secure'/> + </graphics> + <channel type='spicevmc'> + <target type='virtio' name='com.redhat.spice.0'/> + <address type='virtio-serial' controller='1' bus='0' port='3'/> + </channel> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index fcffc27..9a27333 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -514,6 +514,10 @@ mymain(void) DO_TEST("graphics-spice-compression", false, QEMU_CAPS_VGA, QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE, QEMU_CAPS_SPICE); + DO_TEST("graphics-spice-agentmouse", false, + QEMU_CAPS_VGA, QEMU_CAPS_VGA_QXL, + QEMU_CAPS_DEVICE, QEMU_CAPS_SPICE, + QEMU_CAPS_SPICE_AGENTMOUSE); DO_TEST("graphics-spice-timeout", false, QEMU_CAPS_DRIVE, QEMU_CAPS_VGA, QEMU_CAPS_VGA_QXL, -- Zhou Peng
Signed-off-by: Zhou Peng <zhoupeng@xxxxxxxxxxxxxxx> spice agent-mouse support diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 6fcca94..d6d2f36 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -2742,7 +2742,10 @@ qemu-kvm -net nic,model=? /dev/null while <code>tlsPort</code> gives an alternative secure port number. The <code>autoport</code> attribute is the new preferred syntax for indicating autoallocation of - both port numbers. The <code>listen</code> attribute is + both port numbers. The <code>agentmouse</code> attribute + is used to specify whether spice agent is used for client + mouse mode(default is on). + The <code>listen</code> attribute is an IP address for the server to listen on. The <code>passwd</code> attribute provides a SPICE password in clear text. The <code>keymap</code> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 3908733..97b40d7 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -1650,6 +1650,14 @@ </attribute> </optional> <optional> + <attribute name="agentmouse"> + <choice> + <value>on</value> + <value>off</value> + </choice> + </attribute> + </optional> + <optional> <attribute name="listen"> <ref name="addrIPorName"/> </attribute> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index f9654f1..a5f88ec 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -460,6 +460,12 @@ VIR_ENUM_IMPL(virDomainGraphicsSpicePlaybackCompression, "on", "off"); +VIR_ENUM_IMPL(virDomainGraphicsSpiceAgentMouse, + VIR_DOMAIN_GRAPHICS_SPICE_AGENT_MOUSE_LAST, + "default", + "on", + "off"); + VIR_ENUM_IMPL(virDomainGraphicsSpiceStreamingMode, VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_LAST, "default", @@ -5288,6 +5294,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, int nListens; xmlNodePtr *listenNodes = NULL; char *listenAddr = NULL; + char *agentmouse = NULL; xmlNodePtr save = ctxt->node; if (VIR_ALLOC(def) < 0) { @@ -5543,6 +5550,20 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, VIR_FREE(autoport); } + if ((agentmouse = virXMLPropString(node, "agentmouse")) != NULL) { + int am; + if ((am = virDomainGraphicsSpiceAgentMouseTypeFromString( + agentmouse)) <= 0) { + virDomainReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unknown spice agentmouse mode '%s'"), + agentmouse); + VIR_FREE(agentmouse); + goto error; + } + VIR_FREE(agentmouse); + def->data.spice.agentmouse = am; + } + def->data.spice.keymap = virXMLPropString(node, "keymap"); if (virDomainGraphicsAuthDefParseXML(node, &def->data.spice.auth, @@ -11255,6 +11276,8 @@ virDomainGraphicsDefFormat(virBufferPtr buf, { const char *type = virDomainGraphicsTypeToString(def->type); const char *listenAddr = NULL; + const char *agentmouse = virDomainGraphicsSpiceAgentMouseTypeToString( + def->data.spice.agentmouse); int children = 0; int i; @@ -11364,6 +11387,9 @@ virDomainGraphicsDefFormat(virBufferPtr buf, if (listenAddr) virBufferAsprintf(buf, " listen='%s'", listenAddr); + if (def->data.spice.agentmouse) + virBufferEscapeString(buf, " agentmouse='%s'", agentmouse); + if (def->data.spice.keymap) virBufferEscapeString(buf, " keymap='%s'", def->data.spice.keymap); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 596be4d..bdc9a45 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1003,6 +1003,14 @@ enum virDomainGraphicsSpicePlaybackCompression { VIR_DOMAIN_GRAPHICS_SPICE_PLAYBACK_COMPRESSION_LAST }; +enum virDomainGraphicsSpiceAgentMouse { + VIR_DOMAIN_GRAPHICS_SPICE_AGENT_MOUSE_DEFAULT = 0, + VIR_DOMAIN_GRAPHICS_SPICE_AGENT_MOUSE_ON, + VIR_DOMAIN_GRAPHICS_SPICE_AGENT_MOUSE_OFF, + + VIR_DOMAIN_GRAPHICS_SPICE_AGENT_MOUSE_LAST +}; + enum virDomainGraphicsSpiceStreamingMode { VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_DEFAULT = 0, VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_FILTER, @@ -1072,6 +1080,7 @@ struct _virDomainGraphicsDef { struct { int port; int tlsPort; + int agentmouse; char *keymap; virDomainGraphicsAuthDef auth; unsigned int autoport :1; @@ -2061,6 +2070,7 @@ VIR_ENUM_DECL(virDomainGraphicsSpiceZlibCompression) VIR_ENUM_DECL(virDomainGraphicsSpicePlaybackCompression) VIR_ENUM_DECL(virDomainGraphicsSpiceStreamingMode) VIR_ENUM_DECL(virDomainGraphicsSpiceClipboardCopypaste) +VIR_ENUM_DECL(virDomainGraphicsSpiceAgentMouse) VIR_ENUM_DECL(virDomainNumatuneMemMode) VIR_ENUM_DECL(virDomainSnapshotState) /* from libvirt.h */ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index b9baf9a..ba8523a 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -252,6 +252,8 @@ virDomainChrDefFree; virDomainChrDefNew; virDomainChrSourceDefCopy; virDomainChrSourceDefFree; +virDomainGraphicsSpiceAgentMouseTypeFromString; +virDomainGraphicsSpiceAgentMouseTypeToString; virDomainChrSpicevmcTypeFromString; virDomainChrSpicevmcTypeToString; virDomainChrTcpProtocolTypeFromString; diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 64a4546..2bbc077 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -154,6 +154,7 @@ VIR_ENUM_IMPL(qemuCaps, QEMU_CAPS_LAST, "drive-iotune", /* 85 */ "system_wakeup", "scsi-disk.channel", + "spice-agent-mouse", ); struct qemu_feature_flags { @@ -1049,8 +1050,13 @@ qemuCapsComputeCmdFlags(const char *help, if ((p = strstr(p, "|none")) && p < nl) qemuCapsSet(flags, QEMU_CAPS_VGA_NONE); } - if (strstr(help, "-spice")) + if (strstr(help, "-spice")) { qemuCapsSet(flags, QEMU_CAPS_SPICE); + + /* If SPICE is avail, agent-mouse option will be avail for qemu, + * although 'qemu --help' doesn't show it. */ + qemuCapsSet(flags, QEMU_CAPS_SPICE_AGENTMOUSE); + } if (strstr(help, "boot=on")) qemuCapsSet(flags, QEMU_CAPS_DRIVE_BOOT); if (strstr(help, "serial=s")) diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index db584ce..2e9faba 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -122,6 +122,7 @@ enum qemuCapsFlags { QEMU_CAPS_DRIVE_IOTUNE = 85, /* -drive bps= and friends */ QEMU_CAPS_WAKEUP = 86, /* system_wakeup monitor command */ QEMU_CAPS_SCSI_DISK_CHANNEL = 87, /* Is scsi-disk.channel available? */ + QEMU_CAPS_SPICE_AGENTMOUSE = 88, /* -spice agent-mouse=on|off */ QEMU_CAPS_LAST, /* this must always be the last item */ }; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 01adf0d..9d5a9ad 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5391,6 +5391,18 @@ qemuBuildCommandLine(virConnectPtr conn, VIR_FREE(netAddr); + const char *agentmouse = virDomainGraphicsSpiceAgentMouseTypeToString( + def->graphics[0]->data.spice.agentmouse); + if (def->graphics[0]->data.spice.agentmouse) { + if (qemuCapsGet(qemuCaps, QEMU_CAPS_SPICE_AGENTMOUSE)) + virBufferAsprintf(&opt, ",agent-mouse=%s", agentmouse); + else { + qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("spice agent-mouse is not supported with this QEMU")); + goto error; + } + } + /* In the password case we set it via monitor command, to avoid * making it visible on CLI, so there's no use of password=XXX * in this bit of the code */ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-spice-agentmouse.args b/tests/qemuxml2argvdata/qemuxml2argv-spice-agentmouse.args new file mode 100644 index 0000000..46be6d8 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-spice-agentmouse.args @@ -0,0 +1,19 @@ +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=spice \ +/usr/bin/qemu -S -M pc -m 214 -smp 1 -nodefconfig -nodefaults \ +-monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -device \ +virtio-serial-pci,id=virtio-serial1,bus=pci.0,addr=0xa -hda \ +/dev/HostVG/QEMUGuest1 -chardev spicevmc,id=charchannel0,name=vdagent -device \ +virtserialport,bus=virtio-serial1.0,nr=3,chardev=charchannel0,id=channel0\ +,name=com.redhat.spice.0 -usb -spice port=5903,tls-port=5904,addr=127.0.0.1,\ +agent-mouse=off,x509-dir=/etc/pki/libvirt-spice,tls-channel=main -device \ +virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 + +#LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=spice \ +/usr/bin/qemu -S -M pc -m 214 -smp 1 -nodefconfig -nodefaults \ +-monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -device \ +virtio-serial-pci,id=virtio-serial1,bus=pci.0,addr=0xa -hda \ +/dev/HostVG/QEMUGuest1 -chardev spicevmc,id=charchannel0,name=vdagent -device \ +virtserialport,bus=virtio-serial1.0,nr=3,chardev=charchannel0,id=channel0\ +,name=com.redhat.spice.0 -usb -spice port=5903,tls-port=5904,addr=127.0.0.1,\ +agent-mouse=on,x509-dir=/etc/pki/libvirt-spice,tls-channel=main -device \ +virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-spice-agentmouse.xml b/tests/qemuxml2argvdata/qemuxml2argv-spice-agentmouse.xml new file mode 100644 index 0000000..4b36c2c --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-spice-agentmouse.xml @@ -0,0 +1,38 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory>219136</memory> + <vcpu cpuset='1-4,8-20,525'>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu</emulator> + <disk type='block' device='disk'> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='ide'/> + <address type='drive' controller='0' bus='0' target='0' unit='0'/> + </disk> + <controller type='usb' index='0'/> + <controller type='ide' index='0'/> + <controller type='virtio-serial' index='1'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/> + </controller> +<!-- + <graphics type='spice' port='5903' tlsPort='5904' autoport='no' listen='127.0.0.1' agentmouse='on'> +--> + <graphics type='spice' port='5903' tlsPort='5904' autoport='no' listen='127.0.0.1' agentmouse='off'> + <channel name='main' mode='secure'/> + </graphics> + <channel type='spicevmc'> + <target type='virtio' name='com.redhat.spice.0'/> + <address type='virtio-serial' controller='1' bus='0' port='3'/> + </channel> + <memballoon model='virtio'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index fcffc27..9a27333 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -514,6 +514,10 @@ mymain(void) DO_TEST("graphics-spice-compression", false, QEMU_CAPS_VGA, QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE, QEMU_CAPS_SPICE); + DO_TEST("graphics-spice-agentmouse", false, + QEMU_CAPS_VGA, QEMU_CAPS_VGA_QXL, + QEMU_CAPS_DEVICE, QEMU_CAPS_SPICE, + QEMU_CAPS_SPICE_AGENTMOUSE); DO_TEST("graphics-spice-timeout", false, QEMU_CAPS_DRIVE, QEMU_CAPS_VGA, QEMU_CAPS_VGA_QXL,
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list