From: Daniel P. Berrange Date: Thu, 5 Nov 2015 11:56:47 +0000 (+0000) Subject: qemu: assume -vnc arg always takes a ':' X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=9cd0fe69cd067a3bcc603fb03439d21bb827bd5d;p=people%2Fliuw%2Flibxenctrl-split%2Flibvirt.git qemu: assume -vnc arg always takes a ':' As of QEMU 0.9.0 the -vnc option accepts a ':' to separate port from listen address, so the QEMU driver can assume that support for listen addresses is always available. Signed-off-by: Daniel P. Berrange --- diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index bbb9e9c5c..55c310cfc 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1229,9 +1229,6 @@ virQEMUCapsComputeCmdFlags(const char *help, strstr(help, "sockets=")) virQEMUCapsSet(qemuCaps, QEMU_CAPS_SMP_TOPOLOGY); - if (version >= 9000) - virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNC_COLON); - if (is_kvm && (version >= 10000 || kvm_version >= 74)) virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNET_HDR); @@ -3219,7 +3216,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { - virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNC_COLON); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_REBOOT); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NAME); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 18bff75a0..af30759bc 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -47,7 +47,7 @@ typedef enum { /* 0 */ X_QEMU_CAPS_KQEMU, /* Whether KQEMU is compiled in */ - QEMU_CAPS_VNC_COLON, /* VNC takes or address + display */ + X_QEMU_CAPS_VNC_COLON, /* VNC takes or address + display */ QEMU_CAPS_NO_REBOOT, /* Is the -no-reboot flag available */ QEMU_CAPS_DRIVE, /* Is the new -drive arg available */ QEMU_CAPS_DRIVE_BOOT, /* Does -drive support boot=on */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 3d96b05a1..6b6ea8bd7 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -8210,97 +8210,90 @@ qemuBuildGraphicsVNCCommandLine(virQEMUDriverConfigPtr cfg, goto error; } - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_COLON)) { - switch (virDomainGraphicsListenGetType(graphics, 0)) { - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS: - listenAddr = virDomainGraphicsListenGetAddress(graphics, 0); - break; - - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK: - listenNetwork = virDomainGraphicsListenGetNetwork(graphics, 0); - if (!listenNetwork) - break; - ret = networkGetNetworkAddress(listenNetwork, &netAddr); - if (ret <= -2) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - "%s", _("network-based listen not possible, " - "network driver not present")); - goto error; - } - if (ret < 0) - goto error; + switch (virDomainGraphicsListenGetType(graphics, 0)) { + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS: + listenAddr = virDomainGraphicsListenGetAddress(graphics, 0); + break; - listenAddr = netAddr; - /* store the address we found in the element so it - * will show up in status. */ - if (virDomainGraphicsListenSetAddress(graphics, 0, - listenAddr, -1, false) < 0) - goto error; + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK: + listenNetwork = virDomainGraphicsListenGetNetwork(graphics, 0); + if (!listenNetwork) break; + ret = networkGetNetworkAddress(listenNetwork, &netAddr); + if (ret <= -2) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + "%s", _("network-based listen not possible, " + "network driver not present")); + goto error; } + if (ret < 0) + goto error; - if (!listenAddr) - listenAddr = cfg->vncListen; + listenAddr = netAddr; + /* store the address we found in the element so it + * will show up in status. */ + if (virDomainGraphicsListenSetAddress(graphics, 0, + listenAddr, -1, false) < 0) + goto error; + break; + } - escapeAddr = strchr(listenAddr, ':') != NULL; - if (escapeAddr) - virBufferAsprintf(&opt, "[%s]", listenAddr); - else - virBufferAdd(&opt, listenAddr, -1); - virBufferAsprintf(&opt, ":%d", - graphics->data.vnc.port - 5900); + if (!listenAddr) + listenAddr = cfg->vncListen; - VIR_FREE(netAddr); - } else { - virBufferAsprintf(&opt, "%d", - graphics->data.vnc.port - 5900); - } + escapeAddr = strchr(listenAddr, ':') != NULL; + if (escapeAddr) + virBufferAsprintf(&opt, "[%s]", listenAddr); + else + virBufferAdd(&opt, listenAddr, -1); + virBufferAsprintf(&opt, ":%d", + graphics->data.vnc.port - 5900); + + VIR_FREE(netAddr); } - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_COLON)) { - if (!graphics->data.vnc.socket && - graphics->data.vnc.websocket) { - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_WEBSOCKET)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("VNC WebSockets are not supported " - "with this QEMU binary")); - goto error; - } - virBufferAsprintf(&opt, ",websocket=%d", graphics->data.vnc.websocket); - } + if (!graphics->data.vnc.socket && + graphics->data.vnc.websocket) { + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_WEBSOCKET)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("VNC WebSockets are not supported " + "with this QEMU binary")); + goto error; + } + virBufferAsprintf(&opt, ",websocket=%d", graphics->data.vnc.websocket); + } - if (graphics->data.vnc.sharePolicy) { - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_SHARE_POLICY)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("vnc display sharing policy is not " - "supported with this QEMU")); - goto error; - } + if (graphics->data.vnc.sharePolicy) { + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_SHARE_POLICY)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("vnc display sharing policy is not " + "supported with this QEMU")); + goto error; + } - virBufferAsprintf(&opt, ",share=%s", - virDomainGraphicsVNCSharePolicyTypeToString( + virBufferAsprintf(&opt, ",share=%s", + virDomainGraphicsVNCSharePolicyTypeToString( graphics->data.vnc.sharePolicy)); - } + } - if (graphics->data.vnc.auth.passwd || cfg->vncPassword) - virBufferAddLit(&opt, ",password"); + if (graphics->data.vnc.auth.passwd || cfg->vncPassword) + virBufferAddLit(&opt, ",password"); - if (cfg->vncTLS) { - virBufferAddLit(&opt, ",tls"); - if (cfg->vncTLSx509verify) - virBufferAsprintf(&opt, ",x509verify=%s", cfg->vncTLSx509certdir); - else - virBufferAsprintf(&opt, ",x509=%s", cfg->vncTLSx509certdir); - } + if (cfg->vncTLS) { + virBufferAddLit(&opt, ",tls"); + if (cfg->vncTLSx509verify) + virBufferAsprintf(&opt, ",x509verify=%s", cfg->vncTLSx509certdir); + else + virBufferAsprintf(&opt, ",x509=%s", cfg->vncTLSx509certdir); + } - if (cfg->vncSASL) { - virBufferAddLit(&opt, ",sasl"); + if (cfg->vncSASL) { + virBufferAddLit(&opt, ",sasl"); - if (cfg->vncSASLdir) - virCommandAddEnvPair(cmd, "SASL_CONF_PATH", cfg->vncSASLdir); + if (cfg->vncSASLdir) + virCommandAddEnvPair(cmd, "SASL_CONF_PATH", cfg->vncSASLdir); - /* TODO: Support ACLs later */ - } + /* TODO: Support ACLs later */ } virCommandAddArg(cmd, "-vnc"); diff --git a/tests/qemucapabilitiesdata/caps_1.2.2-1.caps b/tests/qemucapabilitiesdata/caps_1.2.2-1.caps index 5f179de06..743951b34 100644 --- a/tests/qemucapabilitiesdata/caps_1.2.2-1.caps +++ b/tests/qemucapabilitiesdata/caps_1.2.2-1.caps @@ -1,5 +1,4 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.3.1-1.caps b/tests/qemucapabilitiesdata/caps_1.3.1-1.caps index dad097a07..a3e9b4a93 100644 --- a/tests/qemucapabilitiesdata/caps_1.3.1-1.caps +++ b/tests/qemucapabilitiesdata/caps_1.3.1-1.caps @@ -1,5 +1,4 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.4.2-1.caps b/tests/qemucapabilitiesdata/caps_1.4.2-1.caps index 1f2682ee5..e1c035444 100644 --- a/tests/qemucapabilitiesdata/caps_1.4.2-1.caps +++ b/tests/qemucapabilitiesdata/caps_1.4.2-1.caps @@ -1,5 +1,4 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.5.3-1.caps b/tests/qemucapabilitiesdata/caps_1.5.3-1.caps index 95f364f36..1ba18d616 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3-1.caps +++ b/tests/qemucapabilitiesdata/caps_1.5.3-1.caps @@ -1,5 +1,4 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0-1.caps b/tests/qemucapabilitiesdata/caps_1.6.0-1.caps index 6533a6e6f..738cbae42 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0-1.caps +++ b/tests/qemucapabilitiesdata/caps_1.6.0-1.caps @@ -1,5 +1,4 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.50-1.caps b/tests/qemucapabilitiesdata/caps_1.6.50-1.caps index b2e775bb7..1c015237d 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.50-1.caps +++ b/tests/qemucapabilitiesdata/caps_1.6.50-1.caps @@ -1,5 +1,4 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1-1.caps b/tests/qemucapabilitiesdata/caps_2.1.1-1.caps index 88fe13a7c..3bf0e6c7e 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1-1.caps +++ b/tests/qemucapabilitiesdata/caps_2.1.1-1.caps @@ -1,5 +1,4 @@ - diff --git a/tests/qemucaps2xmldata/all_1.6.0-1.caps b/tests/qemucaps2xmldata/all_1.6.0-1.caps index 2d50cf98f..7a16aa7e9 100644 --- a/tests/qemucaps2xmldata/all_1.6.0-1.caps +++ b/tests/qemucaps2xmldata/all_1.6.0-1.caps @@ -1,5 +1,4 @@ - diff --git a/tests/qemucaps2xmldata/nodisksnapshot_1.6.0-1.caps b/tests/qemucaps2xmldata/nodisksnapshot_1.6.0-1.caps index 5092e4196..74399fc7a 100644 --- a/tests/qemucaps2xmldata/nodisksnapshot_1.6.0-1.caps +++ b/tests/qemucaps2xmldata/nodisksnapshot_1.6.0-1.caps @@ -1,5 +1,4 @@ - diff --git a/tests/qemuhelptest.c b/tests/qemuhelptest.c index 9f4bfea10..91be08da8 100644 --- a/tests/qemuhelptest.c +++ b/tests/qemuhelptest.c @@ -152,7 +152,6 @@ mymain(void) DO_TEST_FULL(name, version, is_kvm, kvm_version, VIR_ERR_OK, __VA_ARGS__) DO_TEST("qemu-0.12.1", 12001, 0, 0, - QEMU_CAPS_VNC_COLON, QEMU_CAPS_NO_REBOOT, QEMU_CAPS_DRIVE, QEMU_CAPS_NAME, @@ -188,7 +187,6 @@ mymain(void) QEMU_CAPS_CPU_HOST, QEMU_CAPS_VNC); DO_TEST("qemu-kvm-0.12.1.2-rhel60", 12001, 1, 0, - QEMU_CAPS_VNC_COLON, QEMU_CAPS_NO_REBOOT, QEMU_CAPS_DRIVE, QEMU_CAPS_DRIVE_BOOT, @@ -251,7 +249,6 @@ mymain(void) QEMU_CAPS_DEVICE_E1000, QEMU_CAPS_DEVICE_VIRTIO_NET); DO_TEST("qemu-kvm-0.12.3", 12003, 1, 0, - QEMU_CAPS_VNC_COLON, QEMU_CAPS_NO_REBOOT, QEMU_CAPS_DRIVE, QEMU_CAPS_DRIVE_BOOT, @@ -294,7 +291,6 @@ mymain(void) QEMU_CAPS_CPU_HOST, QEMU_CAPS_VNC); DO_TEST("qemu-kvm-0.13.0", 13000, 1, 0, - QEMU_CAPS_VNC_COLON, QEMU_CAPS_NO_REBOOT, QEMU_CAPS_DRIVE, QEMU_CAPS_DRIVE_BOOT, @@ -369,7 +365,6 @@ mymain(void) QEMU_CAPS_DEVICE_E1000, QEMU_CAPS_DEVICE_VIRTIO_NET); DO_TEST("qemu-kvm-0.12.1.2-rhel61", 12001, 1, 0, - QEMU_CAPS_VNC_COLON, QEMU_CAPS_NO_REBOOT, QEMU_CAPS_DRIVE, QEMU_CAPS_NAME, @@ -439,7 +434,6 @@ mymain(void) QEMU_CAPS_DEVICE_E1000, QEMU_CAPS_DEVICE_VIRTIO_NET); DO_TEST("qemu-kvm-0.12.1.2-rhel62-beta", 12001, 1, 0, - QEMU_CAPS_VNC_COLON, QEMU_CAPS_NO_REBOOT, QEMU_CAPS_DRIVE, QEMU_CAPS_NAME, @@ -517,7 +511,6 @@ mymain(void) QEMU_CAPS_DEVICE_E1000, QEMU_CAPS_DEVICE_VIRTIO_NET); DO_TEST("qemu-1.0", 1000000, 0, 0, - QEMU_CAPS_VNC_COLON, QEMU_CAPS_NO_REBOOT, QEMU_CAPS_DRIVE, QEMU_CAPS_NAME, @@ -610,7 +603,6 @@ mymain(void) QEMU_CAPS_DEVICE_E1000, QEMU_CAPS_DEVICE_VIRTIO_NET); DO_TEST("qemu-1.1.0", 1001000, 0, 0, - QEMU_CAPS_VNC_COLON, QEMU_CAPS_NO_REBOOT, QEMU_CAPS_DRIVE, QEMU_CAPS_NAME, diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 53580e3d6..9c92eff9e 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -292,7 +292,6 @@ static int testCompareXMLToArgvFiles(const char *xml, monitor_chr.data.nix.listen = true; virQEMUCapsSetList(extraFlags, - QEMU_CAPS_VNC_COLON, QEMU_CAPS_NO_REBOOT, QEMU_CAPS_NO_ACPI, QEMU_CAPS_LAST); diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 5a9c67df7..2583e6779 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -114,7 +114,6 @@ static const char testStatusXMLPrefix[] = " \n" " \n" " \n" -" \n" " \n" " \n" " \n" diff --git a/tests/qemuxmlnstest.c b/tests/qemuxmlnstest.c index 65bf1d30f..3e1b4aaf2 100644 --- a/tests/qemuxmlnstest.c +++ b/tests/qemuxmlnstest.c @@ -86,7 +86,6 @@ static int testCompareXMLToArgvFiles(const char *xml, goto fail; virQEMUCapsSetList(extraFlags, - QEMU_CAPS_VNC_COLON, QEMU_CAPS_NO_REBOOT, QEMU_CAPS_NO_ACPI, QEMU_CAPS_LAST);