[Libvirt-cim] [PATCH] Fix for VirtualSystemManagementService/13_refconfig_additional_devs.py

Chip Vincent cvincent at linux.vnet.ibm.com
Wed May 18 20:33:29 UTC 2011


# HG changeset patch
# User Chip Vincent <cvincent at us.ibm.com>
# Date 1305746372 14400
# Node ID 7432d45a1fae6ef499f53a36e24b66df29bcf7f9
# Parent  90f8c9f2388e0563baa311c84024ca41a61e1890
Fix for VirtualSystemManagementService/13_refconfig_additional_devs.py

The cimtest case was failing because libvirt-cim improperly processed graphics devices present in the ReferenceClass parameter in DefineSystem. Rather than overrdiing them, it was appending them. With this patch, the test case now passes and the debug log shows the following correct messages.

Virt_VirtualSystemManagementService.c(1184): graphics = vnc
Virt_VirtualSystemManagementService.c(1326): Overriding device vnc from refconf

Signed-off-by: Chip Vincent <cvincent at us.ibm.com>

diff --git a/src/Virt_VirtualSystemManagementService.c b/src/Virt_VirtualSystemManagementService.c
--- a/src/Virt_VirtualSystemManagementService.c
+++ b/src/Virt_VirtualSystemManagementService.c
@@ -1162,17 +1162,26 @@
                          msg = "GraphicsRASD field Address not valid";
                          goto out;
                 }
-       } else { 
+        } else { 
                 CU_DEBUG("Unsupported graphics type %s", 
                         dev->dev.graphics.type);
                 msg = "Unsupported graphics type";
                 goto out;
-       }
-
-        CU_DEBUG("graphics = %s:%s:%s", 
-                dev->dev.graphics.type,
-                dev->dev.graphics.host,
-                dev->dev.graphics.port);
+        }
+
+        free(dev->id);
+        if (STREQC(dev->dev.graphics.type, "vnc"))
+                ret = asprintf(&dev->id, "%s", dev->dev.graphics.type);
+        else
+                ret = asprintf(&dev->id, "%s:%s",
+                               dev->dev.graphics.type, dev->dev.graphics.port);
+
+        if (ret == -1) {
+                msg = "Failed to create graphics is string";
+                goto out;
+        }
+
+        CU_DEBUG("graphics = %s", dev->id);
 
  out:
         return msg;
@@ -1313,9 +1322,6 @@
                                "DiskResourceAllocationSettingData in a single "
                                "guest";
 
-                if (dev->type == CIM_RES_TYPE_GRAPHICS)
-                        continue;
-
                 if (STREQC(ptr->id, dev->id)) {
                         CU_DEBUG("Overriding device %s from refconf", ptr->id);
                         cleanup_virt_device(ptr);
@@ -1425,7 +1431,7 @@
                                                        &domain->dev_net_ct);
                 } else if (type == CIM_RES_TYPE_GRAPHICS) {
                         struct virt_device dev;
-                        int ncount = count + domain->dev_graphics_ct;
+                        int gcount = count + domain->dev_graphics_ct;
 
                         memset(&dev, 0, sizeof(dev));
                         msg = rasd_to_vdev(inst,
@@ -1435,7 +1441,7 @@
                         if (msg == NULL)
                                 msg = add_device_nodup(&dev,
                                                 domain->dev_graphics,
-                                                ncount,
+                                                gcount,
                                                 &domain->dev_graphics_ct);
                 } else if (type == CIM_RES_TYPE_INPUT) {
                         domain->dev_input_ct = 1;




More information about the Libvirt-cim mailing list