[Libvirt-cim] [PATCH 1 of 2] [CU] Add dup_instance function to libcmpiutil

Jay Gagnon grendel at linux.vnet.ibm.com
Fri Feb 1 16:23:17 UTC 2008


# HG changeset patch
# User Jay Gagnon <grendel at linux.vnet.ibm.com>
# Date 1201795147 18000
# Node ID ec7428b062f45db8eef730c5398d061d8731ce60
# Parent  ab0e3b05a10e7b5db7eb493920f01bb402d2feae
[CU] Add dup_instance function to libcmpiutil

It appears there are some situations where we have to duplicate an instance; this seemed like the kind of thing that would belong in libcmpiutil.

Signed-off-by: Jay Gagnon <grendel at linux.vnet.ibm.com>

diff -r ab0e3b05a10e -r ec7428b062f4 instance_util.c
--- a/instance_util.c	Wed Jan 30 11:15:32 2008 -0800
+++ b/instance_util.c	Thu Jan 31 10:59:07 2008 -0500
@@ -204,6 +204,28 @@ CMPIStatus cu_copy_prop(const CMPIBroker
         return s;        
 }
 
+CMPIStatus cu_dup_instance(const CMPIBroker *broker,
+                           CMPIInstance *src,
+                           CMPIInstance **dest)
+{
+        CMPIStatus s = {CMPI_RC_OK, NULL};
+        CMPIObjectPath *ref;
+
+        ref = CMGetObjectPath(src, NULL);
+        if ((s.rc != CMPI_RC_OK) || CMIsNullObject(ref)) {
+                cu_statusf(broker, &s,
+                           CMPI_RC_ERR_FAILED,
+                           "Could not get objectpath from instance");
+                goto out;
+        }
+     
+        *dest = NULL;
+        *dest = CMNewInstance(broker, ref, &s);
+
+ out:
+        return s;
+}
+
 /*
  * Local Variables:
  * mode: C
diff -r ab0e3b05a10e -r ec7428b062f4 libcmpiutil.h
--- a/libcmpiutil.h	Wed Jan 30 11:15:32 2008 -0800
+++ b/libcmpiutil.h	Thu Jan 31 10:59:07 2008 -0500
@@ -164,6 +164,18 @@ CMPIrc cu_get_u16_path(const CMPIObjectP
 CMPIrc cu_get_u16_path(const CMPIObjectPath *reference,
                        const char *key,
                        uint16_t *target);
+
+/**
+ * Create a copy of an instance
+ *
+ * @param src Source instance
+ * @param dest Destination instance
+ * @returns {CMPI_RC_OK, NULL} if success, CMPI_RC ERR_FAILED and 
+ *          error message otherwise
+ */
+CMPIStatus cu_dup_instance(const CMPIBroker *broker,
+                           CMPIInstance *src,
+                           CMPIInstance **dest);
 
 /* Forward declaration */
 struct inst_list;




More information about the Libvirt-cim mailing list