[Libvirt-cim] [PATCH] Patch to fix missing DiskPool type

Sharad Mishra snmishra at us.ibm.com
Tue Dec 28 00:34:53 UTC 2010


# HG changeset patch
# User Sharad Mishra <snmishra at us.ibm.com>
# Date 1293496322 28800
# Node ID 28f3d6f46a06aa5be6aba8bcfeda55bd0ddc5468
# Parent  35396e5b805193c024b6d4f065136d7b57a0b03d
Patch to fix missing DiskPool type.

DiskPool type was not being populated.

Signed-off-by: Sharad Mishra <snmishra at us.ibm.com>

diff -r 35396e5b8051 -r 28f3d6f46a06 libxkutil/pool_parsing.c
--- a/libxkutil/pool_parsing.c	Tue Dec 14 13:59:51 2010 -0800
+++ b/libxkutil/pool_parsing.c	Mon Dec 27 16:32:02 2010 -0800
@@ -166,6 +166,30 @@
         return 1;
 }
 
+char *get_disk_pool_type(uint16_t type)
+{
+
+        switch (type) {
+        case DISK_POOL_DIR:
+                return "dir";
+        case DISK_POOL_FS:
+                return "fs";
+        case DISK_POOL_NETFS:
+                return "netfs";
+        case DISK_POOL_DISK:
+                return "disk";
+        case DISK_POOL_ISCSI:
+                return "iscsi";
+        case DISK_POOL_LOGICAL:
+                return "logical";
+        case DISK_POOL_SCSI:
+                return "scsi";
+        default:
+                return NULL;
+        }
+
+}
+
 static const char *parse_disk_pool(xmlNodeSet *nsv, struct disk_pool *pool)
 {
         xmlNode **nodes = nsv->nodeTab;
diff -r 35396e5b8051 -r 28f3d6f46a06 libxkutil/pool_parsing.h
--- a/libxkutil/pool_parsing.h	Tue Dec 14 13:59:51 2010 -0800
+++ b/libxkutil/pool_parsing.h	Mon Dec 27 16:32:02 2010 -0800
@@ -86,6 +86,7 @@
 void cleanup_virt_pool_res(struct virt_pool_res **res);
 
 int get_pool_from_xml(const char *xml, struct virt_pool *pool, int type);
+char *get_disk_pool_type(uint16_t type);
 
 int define_pool(virConnectPtr conn, const char *xml, int res_type);
 int destroy_pool(virConnectPtr conn, const char *name, int res_type);
diff -r 35396e5b8051 -r 28f3d6f46a06 src/Virt_DevicePool.c
--- a/src/Virt_DevicePool.c	Tue Dec 14 13:59:51 2010 -0800
+++ b/src/Virt_DevicePool.c	Mon Dec 27 16:32:02 2010 -0800
@@ -172,6 +172,7 @@
         virStoragePoolInfo info;
         uint64_t cap;
         uint64_t res;
+        uint16_t type;
         struct virt_pool *pool_vals = NULL;
         const char *pool_str = NULL;
 
@@ -204,6 +205,10 @@
                         CMSetProperty(inst, "Path",
                                       (CMPIValue *)pool_str, CMPI_chars);
                 }
+                type = pool_vals->pool_info.disk.pool_type;
+                CMSetProperty(inst, "OtherResourceType", 
+                              (CMPIValue *)get_disk_pool_type(type), 
+                              CMPI_chars);
         }
 
         result = true;
@@ -957,11 +962,19 @@
                                         const char *refcn,
                                         const CMPIBroker *broker)
 {
+        CMPIStatus s = {CMPI_RC_OK, NULL};
         CMPIInstance *inst;
         char *poolid = NULL;
 
         inst = get_typed_instance(broker, refcn, "DiskPool", ns);
 
+        if (inst == NULL) {
+                cu_statusf(broker, &s,
+                           CMPI_RC_ERR_FAILED,
+                           "Unable to init DiskPool instance");
+                goto out;
+        }
+
         if (asprintf(&poolid, "DiskPool/%s", pool->tag) == -1)
                 return NULL;
 
@@ -976,6 +989,7 @@
                 CU_DEBUG("Failed to set capacity for disk pool: %s",
                          pool->tag);
 
+out:
         free(poolid);
 
         return inst;




More information about the Libvirt-cim mailing list