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(a)linux.vnet.ibm.com