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

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


Dan Smith wrote:
> JG> +CMPIStatus cu_dup_instance(const CMPIBroker *broker,
> JG> +                           CMPIInstance *src,
> JG> +                           CMPIInstance **dest)
> JG> +{
> JG> +        CMPIStatus s = {CMPI_RC_OK, NULL};
> JG> +        CMPIObjectPath *ref;
> JG> +
> JG> +        ref = CMGetObjectPath(src, NULL);
> JG> +        if ((s.rc != CMPI_RC_OK) || CMIsNullObject(ref)) {
> JG> +                cu_statusf(broker, &s,
> JG> +                           CMPI_RC_ERR_FAILED,
> JG> +                           "Could not get objectpath from instance");
> JG> +                goto out;
> JG> +        }
> JG> +     
> JG> +        *dest = NULL;
>
> Why set it to NULL and then set it to the instance right after this?
>   
I think I was going with "not sure what *dest becomes if NewInstance"
fails, and so I figured better safe than sorry.  I'd rather have it NULL
than undefined.
> JG> +        *dest = CMNewInstance(broker, ref, &s);
> JG> +
> JG> + out:
> JG> +        return s;
> JG> +}
>
> What about all the properties of the instance?  This gets a new
> instance structure, yes, but all it has is an object path.  Maybe that
> is all you need at the moment, but I don't think this does what other
> consumers of the library would think by the name :)
>
> It should be easy to loop through all the properties and copy them
> over.  It will look similar to the array copy/filter code in Kaitlin's
> libcmpiutil CO patch.
>   
I'm pleading CIM ignorance on this one.  I thought the ObjectPath
encompassed the properties, and thought that my testing showed it
happening (I don't manually move the JobState over but it is est), but I
could have been wrong.


-- 

-Jay




More information about the Libvirt-cim mailing list