CMPI Providers in a nutshell ============================ Viktor Mihajlovski Nov 14th 2003 The Common Manageability Programming Interface (CMPI) has been integrated into Pegasus as a pluggable provider manager. CMPI must be enabled during Pegasus build. For CMPI enablement, set the following environment variables prior to make: ENABLE_PROVIDER_MANAGER2=1 ENABLE_CMPI_PROVIDER_MANAGER=1 If you plan to write your own CMPI providers you are kindly referred to the WBEMSource homepage where the draft specification document for CMPI resides. You can find at http://www.wbemsource.org/doc.tpl?CALLER=index.tpl&gdid=3712 . If you are looking for samples you should have a look at the SBLIM project. The packages prefixed by the string sblim-cmpi contain CMPI providers for various classes. See http://www-124.ibm.com/developerworks/projects/sblim . Once you have a CMPI provider library you want to register it with Pegasus. How? Well it's almost the same as for C++ providers. The only difference is that the Provider.Interface property must be set to "CMPI". Here's an excerpt from the SBLIM Linux Computer System provider registration // =================================================================== // Linux_ComputerSystem // =================================================================== instance of PG_ProviderModule { Name = "OSBase_ComputerSystemProviderModule"; //The library name on disk Location = "cmpiOSBase_ComputerSystemProvider"; Vendor = "SBLIM"; Version = "1.2.2"; InterfaceType = "CMPI"; InterfaceVersion = "0.86.0"; }; instance of PG_Provider { //The provider module as defined in PG_ProviderModule ProviderModuleName = "OSBase_ComputerSystemProviderModule"; // The provider name as referenced in the code Name = "OSBase_ComputerSystemProvider"; }; instance of PG_ProviderCapabilities { //The provider module as defined in PG_ProviderModule ProviderModuleName = "OSBase_ComputerSystemProviderModule"; //The provider name as defined in PG_Provider ProviderName = "OSBase_ComputerSystemProvider"; CapabilityID = "1"; //Name of the CIM class as defined in the mof ClassName = "Linux_ComputerSystem"; Namespaces = {"root/cimv2"}; ProviderType = { 2,5 }; // Instance, Method SupportedProperties = NULL; // All properties SupportedMethods = NULL; // All methods };