[Libvirt-cim] [PATCH 3 of 3] Add get_resource_rasd() to return StorageVolumeRASD that represents new image

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Thu Aug 13 05:08:44 UTC 2009


# HG changeset patch
# User Kaitlin Rupert <karupert at us.ibm.com>
# Date 1250140071 25200
# Node ID 8f508c5e32df61f7b5866ec0f4dfd3bf81f6e071
# Parent  7159cbef9779e747201235c2d6495568065e10b9
Add get_resource_rasd() to return StorageVolumeRASD that represents new image

Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>

diff -r 7159cbef9779 -r 8f508c5e32df src/Virt_ResourcePoolConfigurationService.c
--- a/src/Virt_ResourcePoolConfigurationService.c	Wed Aug 12 22:07:50 2009 -0700
+++ b/src/Virt_ResourcePoolConfigurationService.c	Wed Aug 12 22:07:51 2009 -0700
@@ -771,6 +771,60 @@
         return msg;
 }
 
+static CMPIInstance *get_resource_rasd(struct virt_pool_res *res,
+                                       const CMPIObjectPath *ref,
+                                       CMPIStatus *s)
+{
+        CMPIInstance *inst = NULL;
+
+        if (res->type != CIM_RES_TYPE_IMAGE) {
+                cu_statusf(_BROKER, s,
+                           CMPI_RC_ERR_FAILED,
+                           "Only storage volume resources supported");
+
+                goto out;
+        }
+
+        inst = get_typed_instance(_BROKER,
+                                  CLASSNAME(ref),
+                                  "StorageVolumeResourceAllocationSettingData",
+                                  NAMESPACE(ref));
+        if (inst == NULL) {
+                cu_statusf(_BROKER, s,
+                           CMPI_RC_ERR_FAILED,
+                           "Unable to get resource instance");
+
+                goto out;
+        }
+
+        CMSetProperty(inst, "InstanceID",
+                      (CMPIValue *)res->res.storage_vol.path, CMPI_chars);
+
+        CMSetProperty(inst, "Path",
+                      (CMPIValue *)res->res.storage_vol.path, CMPI_chars);
+
+        CMSetProperty(inst, "ResourceType",
+                      (CMPIValue *)&(res->type), CMPI_uint16);
+
+        CMSetProperty(inst, "FormatType",
+                      (CMPIValue *)&(res->res.storage_vol.format_type),
+                      CMPI_uint16);
+
+        CMSetProperty(inst, "VolumeName",
+                      (CMPIValue *)res->res.storage_vol.vol_name, CMPI_chars);
+        CMSetProperty(inst, "AllocationQuantity",
+                      (CMPIValue *)&(res->res.storage_vol.alloc), CMPI_uint16);
+
+        CMSetProperty(inst, "Capacity",
+                      (CMPIValue *)&(res->res.storage_vol.cap), CMPI_uint16);
+
+        CMSetProperty(inst, "AllocationUnits",
+                      (CMPIValue *)res->res.storage_vol.cap_units, CMPI_chars);
+
+ out:
+        return inst;
+}
+
 static CMPIInstance *connect_and_create_res(char *xml,
                                             const CMPIObjectPath *ref,
                                             struct virt_pool_res *res,
@@ -793,7 +847,13 @@
                 goto out;
         }
 
-        /* FIXME: Get instance result here */
+        inst = get_resource_rasd(res, ref, s);
+        if (s->rc != CMPI_RC_OK) {
+                CU_DEBUG("Failed to get new resource instance");
+                cu_statusf(_BROKER, s,
+                           CMPI_RC_ERR_FAILED,
+                           "Failed to lookup resulting resource");
+        }
 
  out:
         virConnectClose(conn);




More information about the Libvirt-cim mailing list