[PATCH] Add method to merge RASDs

# HG changeset patch # User Sharad Mishra <snmishra@us.ibm.com> # Date 1291841067 28800 # Node ID 531f151df659f030fe4fab1f6663572af356935f # Parent f967d9432f317685981a5b8552f049a9b644a33f Add method to merge RASDs. This method will take two RASDs, src and dest, and merge the two into dest. Signed-off-by: Sharad Mishra <snmishra@us.ibm.com> diff -r f967d9432f31 -r 531f151df659 instance_util.c --- a/instance_util.c Wed Oct 06 09:31:05 2010 -0700 +++ b/instance_util.c Wed Dec 08 12:44:27 2010 -0800 @@ -253,6 +253,46 @@ return dest; } + +CMPIStatus cu_merge_instances(CMPIInstance *src, + CMPIInstance *dest) +{ + + int i; + int prop_count; + CMPIData data; + CMPIStatus s = {CMPI_RC_OK, NULL}; + + CU_DEBUG("Merging instances"); + prop_count = CMGetPropertyCount(src, &s); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Could not get property count for merge"); + goto out; + } + + CU_DEBUG("Property count is %d", prop_count); + for (i = 0; i < prop_count; i++) { + CMPIString *prop; + const char *prop_name; + + data = CMGetPropertyAt(src, i, &prop, &s); + if (s.rc != CMPI_RC_OK) { + goto out; + } + + prop_name = CMGetCharPtr(prop); + + if(data.state == 0 ) { + CU_DEBUG("setting prop %s", prop_name); + CMSetProperty(dest, prop_name, + &(data.value), data.type); + } + } + + out: + return s; +} + const char *cu_classname_from_inst(CMPIInstance *inst) { const char *ret = NULL; diff -r f967d9432f31 -r 531f151df659 libcmpiutil.h --- a/libcmpiutil.h Wed Oct 06 09:31:05 2010 -0700 +++ b/libcmpiutil.h Wed Dec 08 12:44:27 2010 -0800 @@ -167,6 +167,17 @@ uint16_t *target); /** + * Merge src and dest instances to dest. + * + * @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_merge_instances(CMPIInstance *src, + CMPIInstance *dest); + +/** * Create a copy of an instance * * @param src Source instance

+1 and pushed. Sharad Mishra wrote:
# HG changeset patch # User Sharad Mishra <snmishra@us.ibm.com> # Date 1291841067 28800 # Node ID 531f151df659f030fe4fab1f6663572af356935f # Parent f967d9432f317685981a5b8552f049a9b644a33f Add method to merge RASDs.
This method will take two RASDs, src and dest, and merge the two into dest.
Signed-off-by: Sharad Mishra <snmishra@us.ibm.com>
diff -r f967d9432f31 -r 531f151df659 instance_util.c --- a/instance_util.c Wed Oct 06 09:31:05 2010 -0700 +++ b/instance_util.c Wed Dec 08 12:44:27 2010 -0800 @@ -253,6 +253,46 @@ return dest; }
+ +CMPIStatus cu_merge_instances(CMPIInstance *src, + CMPIInstance *dest) +{ + + int i; + int prop_count; + CMPIData data; + CMPIStatus s = {CMPI_RC_OK, NULL}; + + CU_DEBUG("Merging instances"); + prop_count = CMGetPropertyCount(src, &s); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Could not get property count for merge"); + goto out; + } + + CU_DEBUG("Property count is %d", prop_count); + for (i = 0; i < prop_count; i++) { + CMPIString *prop; + const char *prop_name; + + data = CMGetPropertyAt(src, i, &prop, &s); + if (s.rc != CMPI_RC_OK) { + goto out; + } + + prop_name = CMGetCharPtr(prop); + + if(data.state == 0 ) { + CU_DEBUG("setting prop %s", prop_name); + CMSetProperty(dest, prop_name, + &(data.value), data.type); + } + } + + out: + return s; +} + const char *cu_classname_from_inst(CMPIInstance *inst) { const char *ret = NULL; diff -r f967d9432f31 -r 531f151df659 libcmpiutil.h --- a/libcmpiutil.h Wed Oct 06 09:31:05 2010 -0700 +++ b/libcmpiutil.h Wed Dec 08 12:44:27 2010 -0800 @@ -167,6 +167,17 @@ uint16_t *target);
/** + * Merge src and dest instances to dest. + * + * @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_merge_instances(CMPIInstance *src, + CMPIInstance *dest); + +/** * Create a copy of an instance * * @param src Source instance
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim
-- Chip Vincent Open Virtualization, Linux Technology Center IBM Systems & Technology Group phone: 919-254-4482, T/L 444-4482 email: cvincent@us.ibm.com
participants (2)
-
Chip Vincent
-
Sharad Mishra