[Libvirt-cim] [PATCH 1 of 2] Add property filtering to RASD provider
Kaitlin Rupert
kaitlin at linux.vnet.ibm.com
Tue Feb 26 17:03:55 UTC 2008
Heidi Eckhart wrote:
> Kaitlin Rupert wrote:
>>>> +
>>>> + if (properties != NULL) {
>>>> + const char *keys[] = {"InstanceID", NULL};
>>>> + s = CMSetPropertyFilter(inst, properties, keys);
>>>> + /* FIXME - in case of an error, should we continue
>>>> on? */
>>>> + if (s.rc != CMPI_RC_OK)
>>>> + CU_DEBUG("Unable to set property filter:
>>>> %d", s.rc);
>>>> + }
>>>>
>>> That's a very good point to enable the provider interfaces for the
>>> property filtering :). I think it makes sense to move this code into
>>> get_typed_instance() of libxkutil, to avoid implementing these lines
>>> for every provider. What's then only necessary is routing the
>>> properties list through the interfaces. But you will now think ...
>>> and how about the keys ? Well, that's an interesting thing. The CMPI
>>> 2.0 spec tells the following about the keys:
>>> CMPI 2.0 Spec; "The keyList argument shall be ignored by the MB; it
>>> is here to maintain binary compatibility with previous
>>> specifications. Providers should explicitly set the key names and
>>> values via the CMPIInstanceMI.setObjectPath() function."
>>> Translated I think this means, that we can ignore the keys by setting
>>> it to NULL. Do you agree ?
>>
>> I tried using NULL for the keys based on the same line from the CMPI
>> spec, but this crashed the provider. I might be missing something
>> though.
> I've tested it with Pegasus and sfcb:
> Pegasus returns with FAILED and does not set the propertylist
> sfcb is crashing
> So my interpretation of this description seem to be wrong and the
> keyList is needed. Thanks for evaluating this.
>
Thanks for confirming this Heidi. I was confused by the behavior, and
thought that maybe I was calling the function incorrectly. =)
--
Kaitlin Rupert
IBM Linux Technology Center
kaitlin at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list