[libvirt] [PATCH] qemu: Do fake auto-allocation of ports when generating native command

2013-04-29 Thread Peter Krempa
When attempting to generate the native command line from an XML file
that uses graphics port auto allocation, the generated commandline
wouldn't be valid.

This patch adds fake autoallocation of ports as done when starting the
actual machine.
---
 src/qemu/qemu_driver.c | 51 ++
 1 file changed, 51 insertions(+)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 2d3b24a..cec4a7a 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -5271,6 +5271,57 @@ static char *qemuConnectDomainXMLToNative(virConnectPtr 
conn,
 if (qemuAssignDeviceAliases(def, qemuCaps)  0)
 goto cleanup;

+/* do fake auto-alloc of graphics ports, if such config is used */
+for (i = 0 ; i  vm-def-ngraphics; ++i) {
+virDomainGraphicsDefPtr graphics = vm-def-graphics[i];
+if (graphics-type == VIR_DOMAIN_GRAPHICS_TYPE_VNC 
+!graphics-data.vnc.socket  graphics-data.vnc.autoport) {
+graphics-data.vnc.port = 5900;
+} else if (graphics-type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) {
+int j;
+bool needTLSPort = false;
+bool needPort = false;
+
+if (graphics-data.spice.autoport) {
+/* check if tlsPort or port need allocation */
+for (j = 0 ; j  VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_LAST ; j++) 
{
+switch (graphics-data.spice.channels[j]) {
+case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_SECURE:
+needTLSPort = true;
+break;
+
+case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_INSECURE:
+needPort = true;
+break;
+
+case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_ANY:
+switch (defaultMode) {
+case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_SECURE:
+needTLSPort = true;
+break;
+
+case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_INSECURE:
+needPort = true;
+break;
+
+case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_ANY:
+needTLSPort = true;
+needPort = true;
+break;
+}
+break;
+}
+}
+}
+
+if (needPort || graphics-data.spice.port == -1)
+graphics-data.spice.port = 5901;
+
+if (needTLSPort || graphics-data.spice.tlsPort == -1)
+graphics-data.spice.tlsPort = 5902;
+}
+}
+
 if (!(cmd = qemuBuildCommandLine(conn, driver, def,
  monConfig, monitor_json, qemuCaps,
  NULL, -1, NULL, 
VIR_NETDEV_VPORT_PROFILE_OP_NO_OP)))
-- 
1.8.2.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


Re: [libvirt] [PATCH] qemu: Do fake auto-allocation of ports when generating native command

2013-04-29 Thread Peter Krempa

On 04/29/13 14:39, Peter Krempa wrote:

When attempting to generate the native command line from an XML file
that uses graphics port auto allocation, the generated commandline
wouldn't be valid.

This patch adds fake autoallocation of ports as done when starting the
actual machine.
---
  src/qemu/qemu_driver.c | 51 ++
  1 file changed, 51 insertions(+)


Self NACK.

I forgot to commit a few changes.

Peter

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list