Definition des Mapping-Modells

von Thomas Hütsch (thomas.huetsch@huetsch.de)


Das Mapping-Modell, wird in der Datei SCADE_Provider.conf definiert. Es bildet die Werte, Attribute und Struktur der MIB auf CIM ab. Kommentare werden mit einem '#'-Zeichen eingeleitet und gelten bis zum Ende der Zeile.

Syntax

Any         ::= [0x20-0x7e]
Alpha       ::= ['a'-'z''A'-'Z']
Digit       ::= ['0'-'9']
Alnum       ::= Alpha | Digit
Identifier  ::= (Alpha | '_') (Alnum | '_')*
Value       ::= '"' Any* '"'
NEValue     ::= '"' Any+ '"'
OidPart     ::= (Alpha+ | Digit+)
Oid         ::= OidPart ('.' OidPart)*

Definition von Werteabbildungen

Werteabbildungen sind bijektive (umkehrbar eindeutige) Funktionen. Einem Wert des linken Modells (CIM) wird ein Wert des rechten Modells (MIB) zugewiesen. Es sind keine Abbildungen auf ein leeres Element erlaubt.

Syntax

ValuePair   ::= 'value' NEValue 'is' NEValue ';'
Lookup      ::= 'lookup' Identifier '{' ValuePair* '}'

Beispiel

Definition einer Funktion, die den Wert "3" des linken Modells dem Wert "2" des rechten Modells zuordnet und umgekehrt.

lookup IfEnabledState {
  value "3" is "2";
}

Definition von Namensabbildungen

Attributabbildungen können in unäre und binäre Abbildungen eingeteilt werden. Bei einer binären Abbildung ist eine Eigenschaft in beiden Modellen definiert, jedoch mit unterschiedlichem Namen. Bei unären Abbildungen kann einer Eigenschaft des linken Modells keine entsprechende Eigenschaft des rechten Modells zugeordnet werden. Der fehlende Wert wird daher im Mapping-Modell definiert und entnommen.

Syntax

MetaAttName     ::= 'HOSTNAME' | 'ID' | 'MAPPING_CLASS' | 'CIM_CLASS'
MetaMapping     ::= '$' | MetaAttName
ConstMapping    ::= Value
SimpleMapping   ::= ['const'] ['volatile'] Oid
EnumMapping     ::= SimpleMapping 'lookup' Identifier
Mapping         ::= SimpleMapping | EnumMapping | ConstMapping | MetaMapping
MappingDef      ::= 'property' Identifier 'is' Mapping ';'

SimpleMapping (binär)

Das SimpleMapping bildet eine Eigenschaft aus dem linken Modell auf eine Eigenschaft des rechten Modells ab. Der Wert der Eigenschaft wird unverändert übernommen. Die Art der Abbildung kann durch die optionalen Attribute const und volatile spezifiziert werden. Das Attribut const legt fest, dass die Eigenschaft des rechten Modells nicht geändert werden kann (read only). Mit dem Attribut volatile kann deklariert werden, dass der Wert der Eigenschaft nicht zwischengespeichert werden darf, da er sich auf Seite des rechten Modells durch andere Einflüsse ändern kann (z.B. system.sysUpTime, Nebenläufigkeit).

Beispiel

Der Wert des MIB Eintrags system.sysUpTime wird in das Property TimeOfLastStateChange übernommen.

property TimeOfLastStateChange is const volatile system.sysUpTime;

Enumeration Mapping (binär)

Das EnumMapping basiert auf dem SimpleMapping. Der Wert der Eigenschaft wird über eine, zuvor definierte, Werteabbildung ermittelt.

Beispiel

Der Wert des MIB Eintrags interfaces.ifTable.ifEntry.ifAdminStatus wird über die Werteabbildung IfEnabledState abgebildet und der CIM Eigenschaft EnabledState zugewiesen.

property EnabledState is const volatile interfaces.ifTable.ifEntry.ifAdminStatus lookup IfEnabledState;

Meta-Attribute Mapping (unär)

Das Meta-Attribute Mapping macht Eigenschaften des Mapping-Modells für das CIM-Modell verfügbar. Es sind vier Meta-Eigenschaften definiert:

Beispiel

Der Klassenname der Metaklasse wird der CIM Eigenschaft SystemCreationClassName zugewiesen.

property SystemCreationClassName is $MAPPING_CLASS;

ConstMapping (unär)

Das ConstMapping ist die Abbildung eines Wertes auf eine CIM-Eigenschaft. Werte, die über die MIB nicht zur Verfügung gestellt werden z.B. statische Eigenschaften wie Breite und Höhe eines Geräts, können mit dieser Abbildung erzeugt werden.

Beispiel

Der CIM-Eigenschaft Height wird der Wert 255 zugewiesen.

property Height is "255";

Definition von Klassenabbildungen

Mehrere Attributabbildungen werden zu einer Metaklasse zusammengefasst. Metaklassen können von einer anderen Metaklasse erben und die geerbten Attributabbildungen können wiederum überschrieben werden. Durch Angabe eines Klassennamens für das linke Modell (CIM) wird die (abstrakte) Metaklasse zu einer Klassenabbildung.

Syntax

MetaClass ::= 'class' Identifier [':' Identifier] ['is' Identifier] '{' MappingDef* '}'

Beispiel

Die Klassenabbildung IF wird abgeleitet von der (abstakten) Metaklasse Key und soll auf die Klasse SCADE_NetworkAdapter des linken Modells (CIM) abgebildet werden. Eine Instanz der Abbildung IF bildet den Klassennamen ("IF") auf die CIM-Eigenschaft SystemName ab. Der konstante Wert "Base" der Eigenschaft OverloadMe mit wird in der abgeleiteten Klasse SCADE_NetworkAdapter durch den Wert "Derived" überschrieben.

class Key {
  property SystemName is $MAPPING_CLASS;
  property OverloadMe is "Base";
}

class IF : Key is SCADE_NetworkAdapter {
  property Name is const interfaces.ifTable.ifEntry.ifDescr;
  property OverloadMe is "Derived";
}

Definition von Strukturabbildungen

Strukturabbildungen bringen die einzelnen Abbildungsklassen in Beziehung zueinander. Die Beziehungen sind immer Aggregationsbeziehungen, da immer ein physisches Gerät, das aus mehreren logischen oder physischen Komponenten besteht, zugrunde liegt. Eine Beziehung kann jedoch auch als CIM-Assoziation abgebildet werden, sofern dies notwendig ist. Eine Aggregation darf nur auf eine von CIM_Component abgeleitete CIM-Klasse abgebildet werden. Eine Assoziation darf nur auf eine von CIM_Dependency abgeleitete CIM-Klasse abgebildet werden. Eine optionale Eigenschaft des rechten Modells (MIB) bestimmt die Kardinalzahl der Beziehung.

Syntax

Association ::= 'association' Identifier Identifier ['cardinal' Oid] 'is' Identifier ';'
Aggregation ::= 'aggregation' Identifier Identifier ['cardinal' Oid] 'is' Identifier ';'

Beispiel

Die Assoziation definiert eine 1:1 Beziehung zwischen der Metaklasse LaserjetPhys (Vater) und der Metaklasse LaserjetLog (Sohn) welche auf die CIM-Klasse CIM_Realizes abgebildet wird. Die Aggregation definiert eine 1:n Beziehung. Die Kardinalzahl wird der MIB-Eigenschaft interfaces.ifNumber entnommen.

association LaserjetPhys LaserjetLog is CIM_Realizes;
aggregation LaserjetLog IF cardinal interfaces.ifNumber is SCADE_LaserjetInterface;

Deklaration von Geräten

Ein Gerät ist die Instanz einer Strukturabbildung, die bei einer bestimmten Klassenabbildung (Wurzelelement) beginnt. Bei der Deklaration muss die Art der Sitzung sowie deren Sitzungsparameter angegeben werden.

Syntax

SNMPSession ::= 'SNMP' Hostname Value
Device      ::= 'device' Identifier SNMPSession ';'

Eine Erweiterung um eine Sitzung über den seriellen Port könnte wie folgt aussehen:

Parity      ::= 'N' | 'E' | 'O'
Stopbits    ::= '1' | '2'
COMSession  ::= 'COM' Digit+ Parity Stopbits
Device      ::= 'device' Identifier (SNMPSession | COMSession | etc.) ';'

Beispiel

Definition eines Geräts, auf das mit SNMP zugegriffen werden soll. Der Hostname des Geräts ist laserjet und die SMTP Community ist access. Die Strukturabbildung beginnt bei der Metaklasse LaserjetPhys.

device LaserjetPhys SNMP laserjet "access";


$Id: modeldef.html 68 2005-02-24 12:32:40Z thuet $