An ICIM class is actually defined by describing it as an interface. This is consistent with the programming practice of information hiding, where program elements are known and fully described by their interface and not by their implementation. To accomplish this, a language is needed to establish syntactic rules for the interface itself and for programs that use the interface. For SDK, the Managed Object Definition Language (MODEL) was developed to describe ICIM classes.

The MODEL is a textual notation with a syntax that supports a common way of representing heterogeneous elements. This also allows tools, such as compilers and analysis programs, to be applied to the model. The MODEL also defines semantic constructs that support the correlation model.

The example shows a simple MODEL interface declaration.

interface MyExample : ICIM_ManagedSystemElement
“An interface to generate an event when value > threshold.”
{ 
 attribute int MyValue = 0; 
 attribute int MyThreshold = 50; 
 event MyValueOverThreshold = MyValue > MyThreshold; 
 export MyValueOverThreshold; 
}; 

The interface has a name identifier, MyExample, and inherits from a base class, ICIM_ManagedSystemElement. The interface may also include a comment that describes the interface.

Constructs that support the correlation model include:

  • Typed attributes

  • The attribute int

  • Events that are computed by and exported from the interface: event and export

    The MODEL compiler generates the C++ source code needed to access an interface’s attributes and to monitor the event conditions and generate an event notification. The generated source code is linked as an executable model library, which is loaded by a Manager whose analysis programs operate on the loaded model.

    Add your model source file to the makefile used to build the system. Executing the appropriate makefileinvokes the model compiler for your model file, producing C++ source code and header files. The C++ compiler is then called to produce an object file for linking. (The filename extension of the executable model is specific to your operating system.) Your model object file is linked with VMware Smart Assurance model libraries and produces an executable model of the domain, which includes your application.

    To execute your application, start a Manager by using sm_server. Specify the model executable to load on the sm_server command line.