Menu

#43 Incomplete CMPI Implementation

open
nobody
Other (14)
5
2008-05-22
2008-05-22
No

The LSI MegaRAID provider has been successfully integrated with OpenPegasus and SFCB using the CMPI implementations available for those CIMOMs. Our expectations with regards to availability of features and completeness of a CMPI implementation have been set based on our experiences with those two CIMOMs. Coming from that perspective, we’ve found the OpenWBEM CMPI feature set wanting in a few areas.
1. cmpiObjectPath::refToString –we’ve made use of this function in our provider. An empty implementation (i.e. it returns “method not available”) is currently all that is available in the OpenWBEM CMPI implementation. The implementation is trivial and can be supplied by LSI. Replacing the current cmpiObjectPath.cpp file with our modified version and rebuilding the CMPI support library (libcmpisupport.so.4) fixes this problem.
2. cmpiObjectPath::refSetHostName –this function is missing from the OpenWBEM CMPI implementation. As with the above, the implementation is trivial and can be supplied by LSI. Again as above, replacing the current cmpiObjectPath.cpp file with our modified version and rebuilding the CMPI support library fixes the problem.
3. CmpiBroker::deliverIndication –the current OpenWBEM implementation throws an exception indicating that the method is not supported. LSI has made no attempt to resolve this issue.
4. CMPIIndicationMIFT.enableIndication –the method is implemented in the LSI provider. It must be called by OpenWBEM to activate the provider indication processing logic. OpenWBEM does not do so at this time (which is logical given that deliverIndication is not supported, as described in the previous item). This could be reasonably worked around in the LSI provider but if support were added for deliverIndication, this might as well be supported too.

SIGIO Support Missing
The LSI device management library (StoreLib) is notified of asynchronous events occurring on the device using SIGIO. The CIM provider, in turn, links in StoreLib and relies on StoreLib’s ability to receive these events. Receiving the events is crucial to the provider’s ability to maintain an accurate representation of the state of the device.

The OpenWBEM OW_Platform.cpp (as compiled for SLES 9, 10) sets the handler for this signal to SIG_IGN which tells the operating system not to deliver the signal. Doing so prevents StoreLib and the LSI provider from receiving the signal. The OpenWBEM code is organized so as to make this a compile time option (i.e., it is ifdef protected).

It is possible for the provider to reset the handler and thereby solve the problem. Doing so resets the handler for the whole CIMOM process, and as it was specifically turned off in OpenWBEM, we are unsure of the full impact of making this change in the provider. In limited testing it doesn’t seem to cause any problems, but we would like some history and background on the decision to turn off the signal.

Conclusion
LSI believes it is reasonable to expect the CIMOM to support customary event and indication handling. Provider-based workarounds for these issues, if possible, are very development-intensive, may involve firmware changes, and add complexity and fragility to the server management framework. The fixes are significantly more straightforward to make in the CIMOM, and LSI is willing to provide detailed support for such an effort.

Discussion


Log in to post a comment.