| From the Iconic Map PM, when an operation is selected on a
entity that has variant selectors defined the Iconic Map PM
does a call_function(GETVARSELECTOR, class instance)
to retrieve those attributes that have been defined has
variant selectors.
If there are variant selectors defined for the (sub)entity,
GETVARSELECTOR first tries to retrieve the attributes
from the instance repository. If the (sub)entity is
registered the attributes would have been stored. If the
(sub)entity has not been registered then GETVARSELECTOR does a
call_access(SHOW, class instance, ALL CHAR) to get the attribute
values from the AM.
The problem reported here was caused by the
call_access(SHOW, class instance, ALL CHAR) failing, returning
an error CVR to GETVARSELECTOR which returned an error CVR to
the Iconic Map PM which displayed an error message box.
The SHOW entry point in the AM called the design
framework routine mcc_desfram_validate_callargs()
to perform call argument validation.
mcc_desfram_validate_callargs() determined that the
out_p argument passed by GETVARSELECTOR was invalid and
returned a CVR of MCC_S_INV_OUT_P. The out_p argument
was invalid because the mcc_l_dt member of the MCC_T_Descriptor
structure was not set to MCC_K_DT_ILV
This is a bug in GETVARSELECTOR, I will QAR it and fix
it for 1.2. A work around is for the SHOW entry point
to set the mcc_l_dt member of the MCC_T_Descriptor structure
of the out_p argument to MCC_K_DT_ILV before calling
mcc_desfram_validate_callargs().
|
|
Here's an example of the workaround. If your management spec
uses DEPENDS ON clauses anywhere, and your SHOW entry point uses the
design framework or otherwise validates the datatype of out_p, add
this as the first executable code of the SHOW entry point:
/*
* WORKAROUND: The config FM that shipped with V1.1 of MCC sets the
* datatype of the out_p descriptor to DT_ENUMERATION. We detect this
* here, and fix it.
*/
if (out_p->mcc_l_dt == MCC_K_DT_ENUMERATION)
out_p->mcc_l_dt = MCC_K_DT_ILV;
Thanks, Pat for the help resolving this.
|