
Heidi Eckhart wrote: Sorry for revisiting this patch. I failed to test references yesterday, so I didn't catch this problem then.
static struct std_assoc * std_assoc_get_handler(const struct std_assoc_ctx *ctx, + struct std_assoc_info *info, const CMPIObjectPath *ref) {
+ + if (info->assoc_class) { + CU_DEBUG("Check client's assocClass: '%s'", + info->assoc_class); + + rc = match_class(ctx->brkr, + NAMESPACE(ref), + info->assoc_class, + ptr->assoc_class); + + if (!rc) { + CU_DEBUG("AssocClass not valid."); + goto out; + } + CU_DEBUG("AssocClass valid."); + } + + if (info->result_class) { + CU_DEBUG("Check client's resultClass: '%s'", + info->result_class); + + rc = match_class(ctx->brkr, + NAMESPACE(ref), + info->result_class, + ptr->target_class); + + if (!rc) { + CU_DEBUG("ResultClass not valid."); + goto out; + } + CU_DEBUG("ResultClass valid."); + } This works for associations. But for references, the result class is
<snip> the association class name. So, when you call std_assoc_get_handler() from do_ref(), you end up checking the client's result class (which is the association name) against the result class list instead of the association list. Here's some sample debug: std_association.c(152): Calling Provider: 'associationVirt_HostedDependencyProvider' std_association.c(182): Check client's resultClass: 'Xen_HostedDependency' std_association.c(78): provider accepts Xen_ComputerSystem resultclass std_association.c(78): provider accepts KVM_ComputerSystem resultclass std_association.c(190): ResultClass not valid. std_association.c(302): No handler found. You could add flag argument to std_assoc_get_handler() that indicates whether the call is asking for references or an associators. Although, I'm not sure that's the most elegant way. Also, adding the debug messages that print which values the provider is checking the result class / assoc class / etc might be useful - that is, print out what classes the provider accepts. Someone else can chime in as to whether this would be useful. -- Kaitlin Rupert IBM Linux Technology Center karupert@us.ibm.com