CHAPTER 2. OPENIPMI
Note that data about an object (like the device id data, whether the MC is active, or the entity is present, or whatever) will not change while the object is in use. This data is held until the object is no longer in use and then installed (and in the case of activity or presence, the callbacks are then called).
In OpenIPMI, the user deals with six basic objects: connections, domains, entities, sensors, controls, and events.
A connection provides the low-level interface to the system. It is usually a connection to a BMC in a system. It handles getting IPMI messages to the proper elements in the system.
The domain is the container for the system, the entities in the system are attached to it. You create a domain with a connection to a system; the domain handles the job of discovery of the things in the system.
Entities are things that are monitored. They may be physical things such as a power supply or processor, or more abstract things such as the set of all power supplies or the ambient air in a chassis. Sensors monitor entities, and controls are attached to entities.
Entities may be grouped inside other entities, thus an entity may have a parent (if it is grouped inside another entity) and children (if it contains other entities). A raw system with no SDR data will not have any relationships defined. Relationships are stored in the SDR repository. You may change them and store them back, if you like and if the system supports that, but changing SDR data is not recommended.
FRU information about the entity is sometimes available. You can register with an entity to see if/when
it becomes available using:
i n t i p m i _ e n t i t y _ a d d _ f r u _ u p d a t e _ h a n d l e r ( i p m i _ e n t i *ent, t y _ t i p m i _ e n t i t y _ f r u _ c b h a n d l e r ,
* c b _ d a t a ) ;
Once it is available, you can fetch the FRU data using the commands defined in the IPMI include file.
Device-Relative vs System-Relative Entities In IPMI, entities may be either in a fixed place in the system, or they may be moved about the system. Fixed entities, are, well, in a fixed location in the system. These are called system relative entities. They have an entity instance less than 60h.
Other entities may not reside in a fixed location. For instance, a power supply or CompactPCI board may be plugged in to one of many locations in a chassis; it doesn’t know ahead of time which one. These types of entities are generally device-relative and thus have an entity instance of 60h or larger. For these types of entities, the management controller on which they reside becomes part of the entity. In OpenIPMI, the IPMB channel number and IPMB address are part of the entity. In ipmi_ui and ipmish, these are printed and entered as “r<channel>.<ipmb>.<entity id>.<entity instance>”.