[Libvirt-cim] [PATCH 7/7] Changes to 3 of 3 from code review

John Ferlan jferlan at redhat.com
Thu Mar 13 22:27:06 UTC 2014


Signed-off-by: John Ferlan <jferlan at redhat.com>
---
 src/Virt_VirtualSystemManagementService.c | 38 ++++++++++++++++++++++++++-----
 1 file changed, 32 insertions(+), 6 deletions(-)

diff --git a/src/Virt_VirtualSystemManagementService.c b/src/Virt_VirtualSystemManagementService.c
index 9634481..b478d41 100644
--- a/src/Virt_VirtualSystemManagementService.c
+++ b/src/Virt_VirtualSystemManagementService.c
@@ -1841,23 +1841,42 @@ static const char *input_rasd_to_vdev(CMPIInstance *inst,
 static const char *controller_rasd_to_vdev(CMPIInstance *inst,
                                            struct virt_device *dev)
 {
-        const char *val;
+        const char *val = NULL;
+        const char *msg = NULL;
+        int ret;
 
-        if (cu_get_str_prop(inst, "Type", &val) != CMPI_RC_OK) {
-                CU_DEBUG("ControllerRASD Type field not valid");
+        if (cu_get_str_prop(inst, "ResourceSubType", &val) != CMPI_RC_OK) {
+                CU_DEBUG("ControllerRASD ResourceSubType field not valid");
                 goto out;
         }
         dev->dev.controller.type = strdup(val);
 
+        if (cu_get_u32_prop(inst, "Index",
+                            &dev->dev.controller.index) != CMPI_RC_OK) {
+                CU_DEBUG("ControllerRASD Index field not valid");
+                goto out;
+        }
+
         if (cu_get_str_prop(inst, "Model", &val) != CMPI_RC_OK) {
                 CU_DEBUG("Invalid value for Model in ControllerRASD");
                 goto out;
         }
         dev->dev.controller.model = strdup(val);
 
+        ret = asprintf(&dev->id, "controller:%s:%s",
+                       dev->dev.controller.type,
+                       dev->dev.controller.index);
+        if (ret == -1) {
+                msg = "Failed to create controller string";
+                goto out;
+        }
+
+        msg = rasd_to_device_address(inst, &dev->dev.controller.address);
+                                     
+
  out:
 
-        return NULL;
+        return ;
 }
 
 static const char *_sysvirt_rasd_to_vdev(CMPIInstance *inst,
@@ -2131,13 +2150,20 @@ static const char *classify_resources(CMPIArray *resources,
                                            ns,
                                            p_error);
                 } else if (type == CIM_RES_TYPE_CONTROLLER) {
+                        struct virt_device dev;
+                        int dcount = count + domain->dev_controller_ct;
+
+                        memset(&dev, 0, sizeof(dev));
                         msg = rasd_to_vdev(inst,
                                            domain,
-                                           &domain->dev_controller[domain->dev_controller_ct],
+                                           &dev,
                                            ns,
                                            p_error);
                         if (msg == NULL)
-                                domain->dev_controller_ct += 1;
+                                msg = add_device_nodup(&dev,
+                                                 domain->dev_controller,
+                                                 dcount,
+                                                 &domain->dev_controller_ct);
                 }
 
                 if (msg != NULL)
-- 
1.8.5.3




More information about the Libvirt-cim mailing list