Bug 1748175
| Summary: | Websocket should be true when using connect qemu with vnc websocket client | |||
|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux Advanced Virtualization | Reporter: | Guo, Zhiyi <zhguo> | |
| Component: | qemu-kvm | Assignee: | Gerd Hoffmann <kraxel> | |
| qemu-kvm sub component: | Graphics | QA Contact: | Guo, Zhiyi <zhguo> | |
| Status: | CLOSED ERRATA | Docs Contact: | ||
| Severity: | low | |||
| Priority: | low | CC: | coli, ddepaula, juzhang, knoel, kraxel, virt-maint, yafu | |
| Version: | 8.1 | Flags: | knoel:
mirror+
|
|
| Target Milestone: | rc | |||
| Target Release: | --- | |||
| Hardware: | x86_64 | |||
| OS: | All | |||
| Whiteboard: | ||||
| Fixed In Version: | qemu-kvm-4.2.0-1.module+el8.2.0+4793+b09dd2fb | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 1748177 (view as bug list) | Environment: | ||
| Last Closed: | 2020-05-05 09:49:41 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
| Bug Depends On: | ||||
| Bug Blocks: | 1748177 | |||
This is not a regression and not a blocker I think. It can be reproduced on old qemu version qemu-kvm-rhev-2.9.0-16.el7_4.3.x86_64 (In reply to Guo, Zhiyi from comment #0) > Description of problem: > Websocket should be true when using connect qemu with vnc websocket client > > Version-Release number of selected component (if applicable): > qemu-kvm-4.1.0-5.module+el8.1.0+4076+b5e41ebc.x86_64 > > How reproducible: > 100% > > Steps to Reproduce: > 1.start qeumu with cli: > # /usr/libexec/qemu-kvm -vnc 0.0.0.0:66,websocket=5766 -qmp > tcp:0.0.0.0:8888,server,nowait > 2.launch a qmp connection: > # telnet 0.0.0.0 8888 > Trying 0.0.0.0... > Connected to 0.0.0.0. > Escape character is '^]'. > {"QMP": {"version": {"qemu": {"micro": 0, "minor": 1, "major": 4}, > "package": "qemu-kvm-4.1.0-5.module+el8.1.0+4076+b5e41ebc"}, "capabilities": > ["oob"]}} > { "execute": "qmp_capabilities" } > {"return": {}} > 3.Connect vnc websocket client(onVNC) to qemu > 4.query vnc status from qmp: > { "execute": "query-vnc" } > > > Actual results: > After step 3, qmp event generated: > {"timestamp": {"seconds": 1567488791, "microseconds": 769737}, "event": > "VNC_CONNECTED", "data": {"server": {"auth": "none", "family": "ipv4", > "service": "5966", "host": "0.0.0.0", "websocket": false}, "client": > {"family": "ipv4", "service": "54279", "host": "10.66.8.137", "websocket": > false}}} > {"timestamp": {"seconds": 1567488791, "microseconds": 778450}, "event": > "VNC_INITIALIZED", "data": {"server": {"auth": "none", "family": "ipv4", > "service": "5966", "host": "0.0.0.0", "websocket": false}, "client": > {"family": "ipv4", "service": "54279", "host": "10.66.8.137", "websocket": > false}}} > > It prompts websocket is not enabled and vnc client is not using websocket > > After step 4, vnc status: > {"return": {"enabled": true, "auth": "none", "family": "ipv4", "clients": > [{"family": "ipv4", "service": "54279", "host": "10.66.8.137", "websocket": > true}], "service": "5966", "host": "0.0.0.0"}} > > It prompts vnc client is a websocket client > > Expected results: > Websocket should be true in qmp event I couldn't find out if this problem is exposed via libvirt, but hopefully it's a low-hanging fruit, simple to fix. (if it's not exposed through libvirt and is not trivial to fix, then consider it a candidate for WONTFIX). (In reply to Ademar Reis from comment #3) > (In reply to Guo, Zhiyi from comment #0) > > I couldn't find out if this problem is exposed via libvirt, but hopefully > it's a low-hanging fruit, simple to fix. > > (if it's not exposed through libvirt and is not trivial to fix, then > consider it a candidate for WONTFIX). FYI, this issue is very easy to be observed from libvirt side by listening to the events: # virsh qemu-monitor-event bochs-uefi --pretty --loop event VNC_CONNECTED at 1567561972.454853 for domain bochs-uefi: { "server": { "auth": "none", "family": "ipv4", "service": "5900", "host": "0.0.0.0", "websocket": false }, "client": { "family": "ipv4", "service": "64831", "host": "10.66.8.137", "websocket": false } } event VNC_INITIALIZED at 1567561972.477009 for domain bochs-uefi: { "server": { "auth": "none", "family": "ipv4", "service": "5900", "host": "0.0.0.0", "websocket": false }, "client": { "family": "ipv4", "service": "64831", "host": "10.66.8.137", "websocket": false } } > I couldn't find out if this problem is exposed via libvirt, but hopefully
> it's a low-hanging fruit, simple to fix.
Looks like it is indeed ...
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -278,6 +278,7 @@ static void vnc_client_cache_addr(VncState *client)
vnc_init_basic_info_from_remote_addr(client->sioc,
qapi_VncClientInfo_base(client->info),
&err);
+ client->info->websocket = client->websocket;
if (err) {
qapi_free_VncClientInfo(client->info);
client->info = NULL;
QEMU has been recently split into sub-components and as a one-time operation to avoid breakage of tools, we are setting the QEMU sub-component of this BZ to "General". Please review and change the sub-component if necessary the next time you review this BZ. Thanks Verify this issue against qemu-kvm-4.2.0-8.module+el8.2.0+5607+dc756904.x86_64
steps:
1. Boot vm with
...
<graphics type='vnc' port='5900' autoport='yes' websocket='5700' listen='0.0.0.0'>
...
2. listen to qmp events:
virsh qemu-monitor-event rhel82-virtio-vga-vnc --pretty --loop
3. connect vm through websocket
Result:
After step 3, client info has websocket enabled:
event VNC_CONNECTED at 1581471931.940828 for domain rhel82-virtio-vga-vnc: {
"server": {
"auth": "none",
"family": "ipv4",
"service": "5900",
"host": "0.0.0.0",
"websocket": false
},
"client": {
"family": "ipv4",
"service": "52024",
"host": "10.72.12.24",
"websocket": true
}
}
event VNC_INITIALIZED at 1581471931.967591 for domain rhel82-virtio-vga-vnc: {
"server": {
"auth": "none",
"family": "ipv4",
"service": "5900",
"host": "0.0.0.0",
"websocket": false
},
"client": {
"family": "ipv4",
"service": "52024",
"host": "10.72.12.24",
"websocket": true
}
}
Verified per comment 9 Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2020:2017 |
Description of problem: Websocket should be true when using connect qemu with vnc websocket client Version-Release number of selected component (if applicable): qemu-kvm-4.1.0-5.module+el8.1.0+4076+b5e41ebc.x86_64 How reproducible: 100% Steps to Reproduce: 1.start qeumu with cli: # /usr/libexec/qemu-kvm -vnc 0.0.0.0:66,websocket=5766 -qmp tcp:0.0.0.0:8888,server,nowait 2.launch a qmp connection: # telnet 0.0.0.0 8888 Trying 0.0.0.0... Connected to 0.0.0.0. Escape character is '^]'. {"QMP": {"version": {"qemu": {"micro": 0, "minor": 1, "major": 4}, "package": "qemu-kvm-4.1.0-5.module+el8.1.0+4076+b5e41ebc"}, "capabilities": ["oob"]}} { "execute": "qmp_capabilities" } {"return": {}} 3.Connect vnc websocket client(onVNC) to qemu 4.query vnc status from qmp: { "execute": "query-vnc" } Actual results: After step 3, qmp event generated: {"timestamp": {"seconds": 1567488791, "microseconds": 769737}, "event": "VNC_CONNECTED", "data": {"server": {"auth": "none", "family": "ipv4", "service": "5966", "host": "0.0.0.0", "websocket": false}, "client": {"family": "ipv4", "service": "54279", "host": "10.66.8.137", "websocket": false}}} {"timestamp": {"seconds": 1567488791, "microseconds": 778450}, "event": "VNC_INITIALIZED", "data": {"server": {"auth": "none", "family": "ipv4", "service": "5966", "host": "0.0.0.0", "websocket": false}, "client": {"family": "ipv4", "service": "54279", "host": "10.66.8.137", "websocket": false}}} It prompts websocket is not enabled and vnc client is not using websocket After step 4, vnc status: {"return": {"enabled": true, "auth": "none", "family": "ipv4", "clients": [{"family": "ipv4", "service": "54279", "host": "10.66.8.137", "websocket": true}], "service": "5966", "host": "0.0.0.0"}} It prompts vnc client is a websocket client Expected results: Websocket should be true in qmp event Additional info: