<!-- ************************************************** -->
<!-- -->
<!-- This DTD defines the schema for XML 1.0 Documents -->
<!-- representing CIM Element Declarations or Messages. -->
<!-- -->
<!-- DTD Version : 2.1.1 -->
<!-- Date: January 06, 2003 -->
<!-- Status: Final -->
<!-- ************************************************** -->
<!-- *********************************************************** -->
<!-- Copyright 2001-2003 Distributed Management Task Force, Inc. -->
<!-- All rights reserved. -->
<!-- DMTF is a not-for-profit association of industry members -->
<!-- dedicated to promoting enterprise and systems management -->
<!-- and interoperability. DMTF specifications and documents -->
<!-- may be reproduced for uses consistent with this purpose -->
<!-- by members and non-members, provided that correct -->
<!-- attribution is given. As DMTF specifications may be -->
<!-- revised from time to time, the particular version and -->
<!-- release date should always be noted. -->
<!-- Implementation of certain elements of this standard or -->
<!-- proposed standard may be subject to third party patent -->
<!-- rights, including provisional patent rights (herein -->
<!-- "patent rights"). DMTF makes no representations to users -->
<!-- of the standard as to the existence of such rights, and -->
<!-- is not responsible to recognize, disclose, or identify -->
<!-- any or all such third party patent right, owners or -->
<!-- claimants, nor for any incomplete or inaccurate -->
<!-- identification or disclosure of such rights, owners or -->
<!-- claimants. DMTF shall have no liability to any party, in -->
<!-- any manner or circumstance, under any legal theory -->
<!-- whatsoever, for failure to recognize, disclose, or -->
<!-- identify any such third party patent rights, or for such -->
<!-- party's reliance on the standard or incorporation -->
<!-- thereof in its product, protocols or testing procedures. -->
<!-- DMTF shall have no liability to any party implementing -->
<!-- such standard, whether such implementation is foreseeable -->
<!-- or not, nor to any patent owner or claimant, and shall -->
<!-- have no liability or responsibility for costs or losses -->
<!-- incurred if a standard is withdrawn or modified after -->
<!-- publication, and shall be indemnified and held harmless -->
<!-- by any party implementing the standard from any and all -->
<!-- claims of infringement by a patent owner for such -->
<!-- implementations. -->
<!-- For information about patents held by third-parties -->
<!-- which have notified the DMTF that, in their opinion, such -->
<!-- patent may relate to or impact implementations of DMTF -->
<!-- standards, visit -->
<!-- http://www.dmtf.org/about/policies/disclosures.php. -->
<!-- *********************************************************** -->
<!-- ************************************************** -->
<!-- Entity Declarations -->
<!-- ************************************************** -->
<!ENTITY % CIMName "NAME CDATA #REQUIRED">
<!ENTITY % CIMType "TYPE (boolean|string|char16|uint8|sint8|
uint16|sint16|uint32|sint32|uint64|
sint64|datetime|real32|real64)">
<!ENTITY % QualifierFlavor "OVERRIDABLE (true|false) 'true'
TOSUBCLASS (true|false) 'true'
TOINSTANCE (true|false) 'false'
TRANSLATABLE (true|false) 'false'">
<!ENTITY % ClassOrigin "CLASSORIGIN CDATA #IMPLIED">
<!ENTITY % Propagated "PROPAGATED (true|false) 'false'">
<!ENTITY % ArraySize "ARRAYSIZE CDATA #IMPLIED">
<!ENTITY % SuperClass "SUPERCLASS CDATA #IMPLIED">
<!ENTITY % ClassName "CLASSNAME CDATA #REQUIRED">
<!ENTITY % ReferenceClass "REFERENCECLASS CDATA #IMPLIED">
<!-- ************************************************** -->
<!-- Root element -->
<!-- CIMVERSION must be in the form of "M.N". Where M -->
<!-- is the major revision of the specification in -->
<!-- numeric form and N is the minor revision of the -->
<!-- specification in numeric form. For example, -->
<!-- "2.0" or "2.3". -->
<!-- DTDVERSION must be in the form of "M.N". Where M -->
<!-- is the major revision of the specification in -->
<!-- numeric form and N is the minor revision of the -->
<!-- specification in numeric form. For example, -->
<!-- "2.0" or "2.1". -->
<!-- ************************************************** -->
<!ELEMENT CIM (MESSAGE | DECLARATION)>
<!ATTLIST CIM
CIMVERSION CDATA #REQUIRED
DTDVERSION CDATA #REQUIRED
>
<!-- ************************************************** -->
<!-- Object declaration elements -->
<!-- ************************************************** -->
<!ELEMENT DECLARATION (DECLGROUP | DECLGROUP.WITHNAME |
DECLGROUP.WITHPATH)*>
<!ELEMENT DECLGROUP ((LOCALNAMESPACEPATH | NAMESPACEPATH)?,
QUALIFIER.DECLARATION*, VALUE.OBJECT*)>
<!ELEMENT DECLGROUP.WITHNAME ((LOCALNAMESPACEPATH | NAMESPACEPATH)?,
QUALIFIER.DECLARATION*,
VALUE.NAMEDOBJECT*)>
<!ELEMENT DECLGROUP.WITHPATH (VALUE.OBJECTWITHPATH |
VALUE.OBJECTWITHLOCALPATH)*>
<!ELEMENT QUALIFIER.DECLARATION (SCOPE?, (VALUE | VALUE.ARRAY)?)>
<!ATTLIST QUALIFIER.DECLARATION %CIMName;
%CIMType; #REQUIRED
ISARRAY (true|false) #IMPLIED
%ArraySize;
%QualifierFlavor;>
<!ELEMENT SCOPE EMPTY>
<!ATTLIST SCOPE
CLASS (true | false) "false"
ASSOCIATION (true | false) "false"
REFERENCE (true | false) "false"
PROPERTY (true | false) "false"
METHOD (true | false) "false"
PARAMETER (true | false) "false"
INDICATION (true | false) "false"
>
<!-- ************************************************** -->
<!-- Object Value elements -->
<!-- ************************************************** -->
<!ELEMENT VALUE (#PCDATA)>
<!ELEMENT VALUE.ARRAY (VALUE*)>
<!ELEMENT VALUE.REFERENCE (CLASSPATH | LOCALCLASSPATH |
CLASSNAME | INSTANCEPATH |
LOCALINSTANCEPATH | INSTANCENAME)>
<!ELEMENT VALUE.REFARRAY (VALUE.REFERENCE*)>
<!ELEMENT VALUE.OBJECT (CLASS | INSTANCE)>
<!ELEMENT VALUE.NAMEDINSTANCE (INSTANCENAME, INSTANCE)>
<!ELEMENT VALUE.NAMEDOBJECT (CLASS | (INSTANCENAME, INSTANCE))>
<!ELEMENT VALUE.OBJECTWITHLOCALPATH ((LOCALCLASSPATH, CLASS) |
(LOCALINSTANCEPATH, INSTANCE))>
<!ELEMENT VALUE.OBJECTWITHPATH ((CLASSPATH, CLASS) | (INSTANCEPATH,
INSTANCE))>
<!-- ************************************************** -->
<!-- Object naming and locating elements -->
<!-- ************************************************** -->
<!ELEMENT NAMESPACEPATH (HOST, LOCALNAMESPACEPATH)>
<!ELEMENT LOCALNAMESPACEPATH (NAMESPACE+)>
<!ELEMENT HOST (#PCDATA)>
<!ELEMENT NAMESPACE EMPTY>
<!ATTLIST NAMESPACE
%CIMName;
>
<!ELEMENT CLASSPATH (NAMESPACEPATH, CLASSNAME)>
<!ELEMENT LOCALCLASSPATH (LOCALNAMESPACEPATH, CLASSNAME)>
<!ELEMENT CLASSNAME EMPTY>
<!ATTLIST CLASSNAME
%CIMName;
>
<!ELEMENT INSTANCEPATH (NAMESPACEPATH, INSTANCENAME)>
<!ELEMENT LOCALINSTANCEPATH (LOCALNAMESPACEPATH, INSTANCENAME)>
<!ELEMENT INSTANCENAME (KEYBINDING* | KEYVALUE? | VALUE.REFERENCE?)>
<!ATTLIST INSTANCENAME
%ClassName;
>
<!ELEMENT OBJECTPATH (INSTANCEPATH | CLASSPATH)>
<!ELEMENT KEYBINDING (KEYVALUE | VALUE.REFERENCE)>
<!ATTLIST KEYBINDING
%CIMName;
>
<!ELEMENT KEYVALUE (#PCDATA)>
<!ATTLIST KEYVALUE
VALUETYPE (string | boolean | numeric) "string"
>
<!-- ************************************************** -->
<!-- Object definition elements -->
<!-- ************************************************** -->
<!ELEMENT CLASS (QUALIFIER*, (PROPERTY | PROPERTY.ARRAY |
PROPERTY.REFERENCE)*, METHOD*)>
<!ATTLIST CLASS
%CIMName;
%SuperClass;
>
<!ELEMENT INSTANCE (QUALIFIER*, (PROPERTY | PROPERTY.ARRAY |
PROPERTY.REFERENCE)*)>
<!ATTLIST INSTANCE
%ClassName;
>
<!ELEMENT QUALIFIER (VALUE | VALUE.ARRAY)>
<!ATTLIST QUALIFIER %CIMName;
%CIMType; #REQUIRED
%Propagated;
%QualifierFlavor;>
<!ELEMENT PROPERTY (QUALIFIER*, VALUE?)>
<!ATTLIST PROPERTY %CIMName;
%ClassOrigin;
%Propagated;
%CIMType; #REQUIRED>
<!ELEMENT PROPERTY.ARRAY (QUALIFIER*, VALUE.ARRAY?)>
<!ATTLIST PROPERTY.ARRAY %CIMName;
%CIMType; #REQUIRED
%ArraySize;
%ClassOrigin;
%Propagated;>
<!ELEMENT PROPERTY.REFERENCE (QUALIFIER*, (VALUE.REFERENCE)?)>
<!ATTLIST PROPERTY.REFERENCE
%CIMName;
%ReferenceClass;
%ClassOrigin;
%Propagated;
>
<!ELEMENT METHOD (QUALIFIER*, (PARAMETER | PARAMETER.REFERENCE |
PARAMETER.ARRAY | PARAMETER.REFARRAY)*)>
<!ATTLIST METHOD %CIMName;
%CIMType; #IMPLIED
%ClassOrigin;
%Propagated;>
<!ELEMENT PARAMETER (QUALIFIER*)>
<!ATTLIST PARAMETER %CIMName;
%CIMType; #REQUIRED>
<!ELEMENT PARAMETER.REFERENCE (QUALIFIER*)>
<!ATTLIST PARAMETER.REFERENCE
%CIMName;
%ReferenceClass;
>
<!ELEMENT PARAMETER.ARRAY (QUALIFIER*)>
<!ATTLIST PARAMETER.ARRAY %CIMName;
%CIMType; #REQUIRED
%ArraySize;>
<!ELEMENT PARAMETER.REFARRAY (QUALIFIER*)>
<!ATTLIST PARAMETER.REFARRAY
%CIMName;
%ReferenceClass;
%ArraySize;
>
<!-- ************************************************** -->
<!-- Message elements -->
<!-- ************************************************** -->
<!ELEMENT MESSAGE (SIMPLEREQ | MULTIREQ | SIMPLERSP | MULTIRSP)>
<!ATTLIST MESSAGE
ID CDATA #REQUIRED
PROTOCOLVERSION CDATA #REQUIRED
>
<!ELEMENT MULTIREQ (SIMPLEREQ, SIMPLEREQ+)>
<!ELEMENT MULTIEXPREQ (SIMPLEEXPREQ, SIMPLEEXPREQ+)>
<!ELEMENT SIMPLEREQ (IMETHODCALL | METHODCALL)>
<!ELEMENT SIMPLEEXPREQ (EXPMETHODCALL)>
<!ELEMENT IMETHODCALL (LOCALNAMESPACEPATH, IPARAMVALUE*)>
<!ATTLIST IMETHODCALL
%CIMName;
>
<!ELEMENT METHODCALL ((LOCALINSTANCEPATH | LOCALCLASSPATH),
PARAMVALUE*)>
<!ATTLIST METHODCALL
%CIMName;
>
<!ELEMENT EXPMETHODCALL (EXPPARAMVALUE*)>
<!ATTLIST EXPMETHODCALL
%CIMName;
>
<!ELEMENT PARAMVALUE (VALUE | VALUE.REFERENCE | VALUE.ARRAY |
VALUE.REFARRAY)?>
<!ATTLIST PARAMVALUE
%CIMName;
>
<!ELEMENT IPARAMVALUE (VALUE | VALUE.ARRAY | VALUE.REFERENCE |
INSTANCENAME | CLASSNAME |
QUALIFIER.DECLARATION | CLASS | INSTANCE |
VALUE.NAMEDINSTANCE)?>
<!ATTLIST IPARAMVALUE
%CIMName;
>
<!ELEMENT EXPPARAMVALUE (INSTANCE)?>
<!ATTLIST EXPPARAMVALUE
%CIMName;
>
<!ELEMENT MULTIRSP (SIMPLERSP, SIMPLERSP+)>
<!ELEMENT MULTIEXPRSP (SIMPLEEXPRSP, SIMPLEEXPRSP+)>
<!ELEMENT SIMPLERSP (METHODRESPONSE | IMETHODRESPONSE)>
<!ELEMENT SIMPLEEXPRSP (EXPMETHODRESPONSE)>
<!ELEMENT METHODRESPONSE (ERROR | (RETURNVALUE?, PARAMVALUE*))>
<!ATTLIST METHODRESPONSE
%CIMName;
>
<!ELEMENT EXPMETHODRESPONSE (ERROR | IRETURNVALUE?)>
<!ATTLIST EXPMETHODRESPONSE
%CIMName;
>
<!ELEMENT IMETHODRESPONSE (ERROR | IRETURNVALUE?)>
<!ATTLIST IMETHODRESPONSE
%CIMName;
>
<!ELEMENT ERROR EMPTY>
<!ATTLIST ERROR
CODE CDATA #REQUIRED
DESCRIPTION CDATA #IMPLIED
>
<!ELEMENT RETURNVALUE (VALUE | VALUE.ARRAY | VALUE.REFERENCE |
VALUE.REFARRAY)>
<!ELEMENT IRETURNVALUE (CLASSNAME* | INSTANCENAME* | VALUE* |
VALUE.OBJECTWITHPATH* |
VALUE.OBJECTWITHLOCALPATH* | VALUE.OBJECT* |
OBJECTPATH* | QUALIFIER.DECLARATION* |
VALUE.ARRAY? | VALUE.REFERENCE? | CLASS* |
INSTANCE* | VALUE.NAMEDINSTANCE*)>
Die folgenden CIM-Klassen wurden als Ausgangspunkt für den Entwurf des CIM-Schemas für Mailserver-Systeme verwendet. Das Mail-Schema findet sich anschließend in Anhang A.3.
Die verwendeten Klassen entstammen dem CIM core schema sowie den common schemes
// ==================================================================
// From: Core MOF Specification 2.6
// ==================================================================
// ==================================================================
// ManagedElement
// ==================================================================
[Abstract, Version ("2.6.0"), Description (
"ManagedElement is an abstract class that provides a common "
"superclass (or top of the inheritance tree) for the "
"non-association classes in the CIM Schema.") ]
class CIM_ManagedElement {
[MaxLen (64), Description (
"The Caption property is a short textual description (one-"
"line string) of the object.") ]
string Caption;
[Description (
"The Description property provides a textual description of "
"the object.") ]
string Description;
};
// ==================================================================
// Dependency
// ==================================================================
[Association, Abstract, Version ("2.6.0"), Description (
"CIM_Dependency is a generic association used to establish "
"dependency relationships between ManagedElements.") ]
class CIM_Dependency {
[Key, Description (
"Antecedent represents the independent object in this "
"association.") ]
CIM_ManagedElement REF Antecedent;
[Key, Description (
"Dependent represents the object dependent on the "
"Antecedent.") ]
CIM_ManagedElement REF Dependent;
};
// ==================================================================
// ManagedSystemElement
// ==================================================================
[Abstract, Version ("2.6.0"), Description (
"CIM_ManagedSystemElement is the base class for the System "
"Element hierarchy. Membership Criteria: Any distinguishable "
"component of a System is a candidate for inclusion in this "
"class. Examples: software components, such as files; and "
"devices, such as disk drives and controllers, and physical "
"components such as chips and cards.") ]
class CIM_ManagedSystemElement : CIM_ManagedElement {
[Description (
"A datetime value indicating when the object was installed. "
"A lack of a value does not indicate that the object is not "
"installed."),
MappingStrings {"MIF.DMTF|ComponentID|001.5"} ]
datetime InstallDate;
[MaxLen (256), Description (
"The Name property defines the label by which the object is "
"known. When subclassed, the Name property can be overridden "
"to be a Key property.") ]
string Name;
[MaxLen (10), Description (
" A string indicating the current status of the object. "
"Various operational and non-operational statuses are "
"defined. Operational statuses are \"OK\", \"Degraded\", "
"\"Stressed\" and \"Pred Fail\". \"Stressed\" indicates that "
"the Element is functioning, but needs attention. Examples "
"of \"Stressed\" states are overload, overheated, etc. The "
"condition \"Pred Fail\" (failure predicted) indicates that "
"an Element is functioning properly but predicting a failure "
"in the near future. An example is a SMART-enabled hard "
"drive. \n"
" Non-operational statuses can also be specified. These "
"are \"Error\", \"NonRecover\", \"Starting\", \"Stopping\", "
" \"Stopped\", "
"\"Service\", \"No Contact\" and \"Lost Comm\". \"NonRecover\" "
"indicates that a non-recoverable error has occurred. "
"\"Service\" describes an Element being configured, maintained, "
"cleaned, or otherwise administered. This status could apply "
"during mirror-resilvering of a disk, reload of a user "
"permissions list, or other administrative task. Not all such "
"work is on-line, yet the Element is neither \"OK\" nor in "
"one of the other states. \"No Contact\" indicates that the "
"current instance of the monitoring system has knowledge of "
"this Element but has never been able to establish "
"communications with it. \"Lost Comm\" indicates that the "
"ManagedSystemElement is known to exist and has been contacted "
"successfully in the past, but is currently unreachable. "
"\"Stopped\" indicates that the ManagedSystemElement is known "
"to exist, it is not operational (i.e. it is unable to "
"provide service to users), but it has not failed. It has "
"purposely been made non-operational. The Element "
"may have never been \"OK\", the Element may have initiated its "
"own stop, or a management system may have initiated the stop."),
ValueMap {"OK", "Error", "Degraded", "Unknown", "Pred Fail",
"Starting", "Stopping", "Service", "Stressed",
"NonRecover", "No Contact", "Lost Comm", "Stopped"} ]
string Status;
};
// ==================================================================
// Component
// ==================================================================
[Association, Abstract, Aggregation, Version ("2.6.0"),
Description (
"CIM_Component is a generic association used to establish "
"'part of' relationships between Managed System Elements. For "
"example, the SystemComponent association defines parts of "
"a System.") ]
class CIM_Component {
[Aggregate, Key, Description (
"The parent element in the association.") ]
CIM_ManagedSystemElement REF GroupComponent;
[Key, Description (
"The child element in the association.") ]
CIM_ManagedSystemElement REF PartComponent;
};
// ==================================================================
// LogicalElement
// ==================================================================
[Abstract, Version ("2.6.0"), Description (
"CIM_LogicalElement is a base class for all the components of "
"a System that represent abstract system components, such "
"as Files, Processes, or LogicalDevices.") ]
class CIM_LogicalElement : CIM_ManagedSystemElement {
};
// ==================================================================
// Synchrononized
// ==================================================================
[Association, Version ("2.6.0"), Description (
"Indicates that two LogicalElements were aligned or made to "
"be equivalent at the specified point in time. If the boolean "
"property SyncMaintained is TRUE, then synchronization "
"of the Elements is preserved. Both like and unlike objects "
"may be synchronized. For example, two WatchDog timers may be "
"aligned, or the contents of a LogicalFile may be synchronized "
"with the contents of a StorageExtent.") ]
class CIM_Synchronized {
[Key, Description (
"SystemElement represents one LogicalElement that is "
"synchronized with the entity referenced as SyncedElement.") ]
CIM_LogicalElement ref SystemElement;
[Key, Description (
"SyncedElement represents another LogicalElement that is "
"synchronized with the entity referenced as SystemElement.") ]
CIM_LogicalElement ref SyncedElement;
[Description (
"The point in time that the Elements were synchronized.") ]
datetime WhenSynced;
[Description (
"Boolean indicating whether synchronization is "
"maintained.") ]
boolean SyncMaintained;
};
// ==================================================================
// Service
// ==================================================================
[Abstract, Version ("2.6.0"), Description (
"A CIM_Service is a Logical Element that contains the "
"information necessary to represent and manage the "
"functionality provided by a Device and/or SoftwareFeature. "
"A Service is a general-purpose object to configure and "
"manage the implementation of functionality. It is not the "
"functionality itself.") ]
class CIM_Service : CIM_LogicalElement {
[Propagated ("CIM_System.CreationClassName"), Key,
MaxLen (256), Description (
"The scoping System's CreationClassName.") ]
string SystemCreationClassName;
[Propagated ("CIM_System.Name"), Key, MaxLen (256),
Description ("The scoping System's Name.") ]
string SystemName;
[Key, MaxLen (256), Description (
"CreationClassName indicates the name of the class or the "
"subclass used in the creation of an instance. When used "
"with the other key properties of this class, this property "
"allows all instances of this class and its subclasses to "
"be uniquely identified.") ]
string CreationClassName;
[Override ("Name"), Key, MaxLen (256), Description (
"The Name property uniquely identifies the Service and "
"provides an indication of the functionality that is "
"managed. This functionality is described in more detail in "
"the object's Description property.") ]
string Name;
[MaxLen (10), Description (
"StartMode is a string value indicating whether the Service "
"is automatically started by a System, Operating System, etc. "
"or only started upon request."),
ValueMap {"Automatic", "Manual"} ]
string StartMode;
[Description (
"Started is a boolean indicating whether the Service "
"has been started (TRUE), or stopped (FALSE).") ]
boolean Started;
[Description (
"The StartService method places the Service in the started "
"state. It returns an integer value of 0 if the Service was "
"successfully started, 1 if the request is not supported and "
"any other number to indicate an error. In a subclass, the "
"set of possible return codes could be specified, using a "
"ValueMap qualifier on the method. The strings to which the "
"ValueMap contents are 'translated' may also be specified in "
"the subclass as a Values array qualifier.") ]
uint32 StartService();
[Description (
"The StopService method places the Service in the stopped "
"state. It returns an integer value of 0 if the Service was "
"successfully stopped, 1 if the request is not supported and "
"any other number to indicate an error. In a subclass, the "
"set of possible return codes could be specified, using a "
"ValueMap qualifier on the method. The strings to which the "
"ValueMap contents are 'translated' may also be specified in "
"the subclass as a Values array qualifier.") ]
uint32 StopService();
};
// ==================================================================
// System
// ==================================================================
[Abstract, Version ("2.6.0"), Description (
"A CIM_System is a LogicalElement that aggregates an "
"enumerable set of Managed System Elements. The aggregation "
"operates as a functional whole. Within any particular "
"subclass of System, there is a well-defined list of "
"Managed System Element classes whose instances must be "
"aggregated.") ]
class CIM_System : CIM_LogicalElement {
[Key, MaxLen (256), Description (
"CreationClassName indicates the name of the class or the "
"subclass used in the creation of an instance. When used "
"with the other key properties of this class, this property "
"allows all instances of this class and its subclasses to "
"be uniquely identified.") ]
string CreationClassName;
[Key, MaxLen (256), Override ("Name"), Description (
"The inherited Name serves as key of a System instance in "
"an enterprise environment.") ]
string Name;
[MaxLen (64), Description (
"The System object and its derivatives are Top Level Objects "
"of CIM. They provide the scope for numerous components. "
"Having unique System keys is required. A heuristic can be "
"defined in individual System subclasses to attempt to always "
"generate the same System Name Key. The NameFormat property "
"identifies how the System name was generated, using "
"the subclass' heuristic.") ]
string NameFormat;
[MaxLen (64), Description (
"The name of the primary system owner."),
MappingStrings {"MIF.DMTF|General Information|001.3"} ]
string PrimaryOwnerName;
[MaxLen (256), Description (
"A string that provides information on how the primary system "
"owner can be reached (e.g. phone number, email address, "
"...)."),
MappingStrings {"MIF.DMTF|General Information|001.4"} ]
string PrimaryOwnerContact;
[Description (
"An array (bag) of strings that specify the roles this System "
"plays in the IT-environment. Subclasses of System may "
"override this property to define explicit Roles values. "
"Alternately, a Working Group may describe the heuristics, "
"conventions and guidelines for specifying Roles. For "
"example, for an instance of a networking system, the Roles "
"property might contain the string, 'Switch' or 'Bridge'.") ]
string Roles[];
};
// ==================================================================
// HostedService
// ==================================================================
[Association, Version ("2.6.0"), Description (
"CIM_HostedService is an association between a Service and "
"the System on which the functionality resides. The "
"cardinality of this association is 1-to-many. A System may "
"host many Services. Services are weak with respect to their "
"hosting System. Heuristic: A Service is hosted on the "
"System where the LogicalDevices or SoftwareFeatures that "
"implement the Service are located. The model does not "
"represent Services hosted across multiple systems. This is "
"modeled as an ApplicationSystem that acts as an aggregation "
"point for Services, that are each located on a single "
"host.") ]
class CIM_HostedService : CIM_Dependency {
[Override ("Antecedent"), Max (1), Min (1),
Description ("The hosting System.") ]
CIM_System REF Antecedent;
[Override ("Dependent"), Weak,
Description ("The Service hosted on the System.") ]
CIM_Service REF Dependent;
};
// ==================================================================
// SystemComponent
// ==================================================================
[Association, Aggregation, Version ("2.6.0"), Description (
"CIM_SystemComponent is a specialization of the CIM_Component "
"association that establishes 'part of' relationships between "
"a System and the Managed System Elements of which it is "
"composed.") ]
class CIM_SystemComponent : CIM_Component {
[Override ("GroupComponent"), Aggregate,
Description ("The parent System in the Association.") ]
CIM_System REF GroupComponent;
[Override ("PartComponent"), Description (
"The child element that is a component of a System.") ]
CIM_ManagedSystemElement REF PartComponent;
};
// ===================================================================
// ComputerSystem
// ===================================================================
[Abstract, Version ("2.6.0"), Description (
"A class derived from System that is a special collection of "
"ManagedSystemElements. This collection provides "
"compute capabilities and serves as aggregation point to "
"associate one or more of the following elements: FileSystem, "
"OperatingSystem, Processor and Memory (Volatile and/or "
"NonVolatile Storage).") ]
class CIM_ComputerSystem : CIM_System {
[Override ("NameFormat"), Description (
" The ComputerSystem object and its derivatives are Top "
"Level Objects of CIM. They provide the scope for numerous "
"components. Having unique System keys is required. "
"A heuristic is defined to create the ComputerSystem Name "
"to attempt to always generate the same Name, independent of "
"discovery protocol. This prevents inventory and management "
"problems where the same asset or entity is discovered "
"multiple times, but cannot be resolved to a single object. "
"Use of the heuristic is optional, but recommended. \n"
" The NameFormat property identifies how the ComputerSystem "
"Name is generated, using a heuristic. The heuristic is "
"outlined, in detail, in the CIM V2 System Model spec. "
"It assumes that the documented rules are traversed in order, "
"to determine and assign a Name. The NameFormat Values "
"list defines the precedence order for assigning the Computer"
"System Name. Several rules do map to the same Value. \n"
" Note that the ComputerSystem Name calculated using the "
"heuristic is the System's key value. Other names can be "
"assigned and used for the ComputerSystem, that better suit "
"a business, using Aliases."),
ValueMap {"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25",
"ISDN", "IPX", "DCC", "ICD", "E.164", "SNA",
"OID/OSI"} ]
string NameFormat;
[MaxLen (256), ArrayType ("Indexed"), Description (
"OtherIdentifyingInfo captures additional data, beyond "
"System Name information, that could be used to identify "
"a ComputerSystem. One example would be to hold the "
"Fibre Channel World-Wide Name (WWN) of a node. Note that "
"if only the Fibre Channel name is available and is "
"unique (able to be used as the System key), then this "
"property would be NULL and the WWN would become the "
"System key, its data placed in the Name property."),
ModelCorrespondence {
"CIM_ComputerSystem.IdentifyingDescriptions"} ]
string OtherIdentifyingInfo[];
[ArrayType ("Indexed"), Description (
"An array of free-form strings providing explanations "
"and details behind the entries in the OtherIdentifying"
"Info array. Note, each entry of this array is related "
"to the entry in OtherIdentifyingInfo that is located at "
"the same index."),
ModelCorrespondence {
"CIM_ComputerSystem.OtherIdentifyingInfo"} ]
string IdentifyingDescriptions[];
[Description (
"Enumeration indicating whether the ComputerSystem is "
"a special-purpose System (ie, dedicated to a particular "
"use), versus being 'general purpose'. For example, one "
"could specify that the System is dedicated to \"Print\" "
"(value=11) or acts as a \"Hub\" (value=8)."),
ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "11", "12", "13", "14"},
Values {"Not Dedicated", "Unknown", "Other", "Storage",
"Router", "Switch", "Layer 3 Switch",
"Central Office Switch", "Hub", "Access Server",
"Firewall", "Print", "I/O", "Web Caching", "Management"} ]
uint16 Dedicated[];
[Description (
"If enabled (value = 4), the UnitaryComputerSystem can be "
"reset via hardware (e.g. the power and reset buttons). If "
"disabled (value = 3), hardware reset is not allowed. In "
"addition to Enabled and Disabled, other Values for the "
"property are also defined - \"Not Implemented\" (5), "
"\"Other\" (1) and \"Unknown\" (2)."),
ValueMap {"1", "2", "3", "4", "5"},
Values {"Other", "Unknown", "Disabled",
"Enabled", "Not Implemented"},
MappingStrings {"MIF.DMTF|System Hardware Security|001.4"} ]
uint16 ResetCapability;
[Description(
"Indicates the specific power-related capabilities of a "
"ComputerSystem and its associated running OperatingSystem. "
"The values, 0=\"Unknown\", 1=\"Not Supported\", and "
"2=\"Disabled\" are self-explanatory. "
"The value, 3=\"Enabled\" indicates that the power management "
"features are currently enabled but the exact feature set "
"is unknown or the information is unavailable. "
"\"Power Saving Modes Entered Automatically\" (4) describes "
"that a system can change its power state based on usage or "
"other criteria. \"Power State Settable\" (5) indicates that "
"the SetPowerState method is supported. \"Power Cycling "
"Supported\" (6) indicates that the SetPowerState method "
"can be invoked with the PowerState input variable set to 5 "
"(\"Power Cycle\"). \"Timed Power On Supported\" (7) indicates "
"that the SetPowerState method can be invoked with the Power"
"State input variable set to 5 (\"Power Cycle\") and the Time "
"parameter set to a specific date and time, or interval, "
"for power-on."),
ValueMap {"0", "1", "2", "3", "4", "5", "6", "7"},
Values {"Unknown", "Not Supported", "Disabled",
"Enabled", "Power Saving Modes Entered Automatically",
"Power State Settable", "Power Cycling Supported",
"Timed Power On Supported"},
MappingStrings {"MIF.DMTF|System Power Controls|001.2"} ]
uint16 PowerManagementCapabilities[];
[Description(
"SetPowerState defines the desired power state of a "
"values: 1=\"Full Power\", 2=\"Power Save - Low Power Mode\", "
"3=\"Power Save - Standby\", 4=\"Power Save - Other\", "
"5=\"Power Cycle\", 6=\"Power Off\", 7=\"Hibernate\" and "
"8=\"Soft Off\". The Time parameter (for all state changes "
"but 5, \"Power Cycle\") indicates when the power state "
"should be set, either as a regular date-time value or as "
"an interval value (where the interval begins when the "
"method invocation is received). When the PowerState "
"parameter is equal to 5, \"Power Cycle\", the Time "
"parameter indicates when the system should power on "
"again. Power off is immediate. SetPowerState should "
"return 0 if successful, 1 if the specified State and "
"Time request is not supported, and some other value if "
"any other error occurred. In a subclass, the "
"set of possible return codes could be specified, using a "
"ValueMap qualifier on the method. The strings to which the "
"ValueMap contents are 'translated' may also be specified in "
"the subclass as a Values array qualifier.") ]
uint32 SetPowerState(
[IN, ValueMap {"1", "2", "3", "4", "5", "6", "7", "8"},
Values {"Full Power", "Power Save - Low Power Mode",
"Power Save - Standby", "Power Save - Other",
"Power Cycle", "Power Off", "Hibernate",
"Soft Off"} ]
uint32 PowerState,
[IN] datetime Time);
};
// ==================================================================
// Collection
// ==================================================================
[Abstract, Version ("2.6.0"), Description (
"Collection is an abstract class that provides a common "
"superclass for data elements that represent collections of "
"ManagedElements and its subclasses.") ]
class CIM_Collection : CIM_ManagedElement {
};
// ==================================================================
// MemberOfCollection
// ==================================================================
[Association, Aggregation, Version ("2.6.0"), Description (
"CIM_MemberOfCollection is an aggregation used to establish "
"membership of ManagedElements in a Collection." ) ]
class CIM_MemberOfCollection {
[Key, Aggregate, Description (
"The Collection that aggregates members.") ]
CIM_Collection REF Collection;
[Key, Description (
"The aggregated member of the Collection.") ]
CIM_ManagedElement REF Member;
};
// ==================================================================
// From: User-Security MOF Specification 2.6
// ==================================================================
// ==================================================================
// OrganizationalEntity
// ==================================================================
[Abstract, Version ("2.6.0"), Description (
"OrganizationalEntity is an abstract class from which classes "
"that fit into an organizational structure are derived.") ]
class CIM_OrganizationalEntity : CIM_ManagedElement {
};
// ==================================================================
// UserEntity
// ==================================================================
[Abstract, Version ("2.6.0"), Description (
"UserEntity is an abstract class that represents users.") ]
class CIM_UserEntity : CIM_OrganizationalEntity {
};
// ==================================================================
// Person
// ==================================================================
[Version ("2.6.0"), Description (
"The Person object class is used to represent people. The class "
"is defined so as to incorporate commonly-used LDAP attributes to "
"permit implementations to easily derive this information from "
"LDAP-accessible directories. This class's properties are a "
"subset of a related class, OtherPersonInformation, which "
"defines all the group properties and in array form for "
"directory compatibility.") ]
class CIM_Person : CIM_UserEntity {
[Key, MaxLen (256), Description (
"CreationClassName indicates the name of the class or the "
"subclass used in the creation of an instance. When used "
"with the other key properties of this class, this property "
"allows all instances of this class and its subclasses to "
"be uniquely identified.") ]
string CreationClassName;
[Key, MaxLen (1024),Description (
"The Name property defines the label by which the object is "
"known. In the case of an LDAP-derived instance, the Name "
"property value may be set to the distinguishedName of the "
"LDAP-accessed object instance.") ]
string Name;
[MaxLen (128), Description (
"This property describes the kind of business performed by an "
"organization.") ]
string BusinessCategory;
[Required, Description (
"A Common Name is a (possibly ambiguous) name by which the "
"role is commonly known in some limited scope (such as an "
"organization) and conforms to the naming conventions of the "
"country or culture with which it is associated.") ]
string CommonName;
[Description (
"Based on inetOrgPerson, the Employee Number property "
"specifies a numeric or an alphanumeric identifier assigned to "
"a person.") ]
string EmployeeNumber;
[Description (
"Based on inetOrgPerson, the Employee Type property is used to "
"identify the employer to employee relationship. Typical "
"values used may include 'Contractor', 'Employee', 'Intern', "
"'Temp', 'External', and 'Unknown' but any value may be "
"used.") ]
string EmployeeType;
[Description (
"The person's facsimile telephone number.") ]
string FacsimileTelephoneNumber;
[MaxLen (32), Description (
"Based on RFC1274, the Home Phone property specifies a home "
"telephone number for the person, e.g. + 44 582 10101).") ]
string HomePhone;
[Description (
"The Home Postal Address property values specify the home "
"address information required for the physical delivery of "
"postal messages by the postal authority.") ]
string HomePostalAddress[];
[Description (
"From inetOrgPerson, the JPEG Phto property values may be used "
"for one or more images of a person using the JPEG File "
"Interchange Format.") ]
string JPEGPhoto;
[Description (
"This property contains the name of a locality, such as a "
"city, county or other geographic region.") ]
string LocalityName;
[Description (
"Based on RFC1274, the mail box addresses for the person "
"as defined in RFC822.") ]
string Mail;
[Description (
"The person's manager within the organization. In the case of "
"an LDAP-derived instance, the Manager property value may "
"contain the distinguishedName of the Manager.") ]
string Manager;
[MaxLen (32), Description (
"Based on RFC1274, the Mobile Phone property specifies a "
"mobile telephone number for the person, e.g. + 44 582 10101).") ]
string Mobile;
[Description (
"The name of an organizational unit related to the person.") ]
string OU;
[MaxLen (32), Description (
"Based on RFC1274, the Pager property specifies a pager "
"telephone number for the person, e.g. + 44 582 10101).") ]
string Pager;
[Description (
"The Postal Address property values specify the address "
"information required for the physical delivery of postal "
"messages by the postal authority to the person.") ]
string PostalAddress[];
[MaxLen (40), Description (
"The Postal Code property specifies the postal code of the "
"organization. If this value is present it will be part of "
"the object's postal address.") ]
string PostalCode;
[Description (
"Based on inetOrgPerson, the person's preferred written or "
"spoken language.") ]
string PreferredLanguage;
[Description (
"Based on RFC1274, the Secretary property may be used to "
"specify a secretary for the person. In the case of an "
"LDAP-derived object instance, the value may be a "
"distinguishedName.") ]
string Secretary;
[Description (
"The State or Province Name property specifies a state or "
"province.") ]
string StateOrProvince;
[Required, Description (
"The Surname property specifies the linguistic construct that "
"normally is inherited by an individual from the individual's "
"parent or assumed by marriage, and by which the individual is "
"commonly known.") ]
string Surname;
[MaxLen (32), Description (
"The Telephone Number property specifies a telephone number of "
"the organization, e.g. + 44 582 10101).") ]
string TelephoneNumber;
[Description (
"The Title property may be used to specify the person's "
"designated position or function of the object within an "
"organization, e.g., Manager, Vice-President, etc.") ]
string Title;
};
// ==================================================================
// Account
// ==================================================================
[Version ("2.6.0"), Description (
"CIM_Account is the information held by a SecurityService "
"to track identity and privileges managed by that service. "
"Common examples of an Account are the entries in a UNIX "
"/etc/passwd file. Several kinds of security services use "
"various information from those entries - the /bin/login "
"program uses the account name ('root') and hashed password "
"to authenticate users, and the file service, for instance, "
"uses the UserID field ('0') and GroupID field ('0') to "
"record ownership and determine access control privileges "
"on files in the file system. This class is defined so as "
"to incorporate commonly-used LDAP attributes to permit "
"implementations to easily derive this information from "
"LDAP-accessible directories.") ]
class CIM_Account : CIM_LogicalElement {
[Propagated ("CIM_System.CreationClassName"), Key,
MaxLen (256), Description ("The scoping System's CCN.") ]
string SystemCreationClassName;
[Propagated ("CIM_System.Name"), Key,
MaxLen (256),Description ("The scoping System's Name.") ]
string SystemName;
[Key, MaxLen (256), Description (
"CreationClassName indicates the name of the class or the "
"subclass used in the creation of an instance. When used "
"with the other key properties of this class, this property "
"allows all instances of this class and its subclasses to "
"be uniquely identified.") ]
string CreationClassName;
[Key, Override("Name"), MaxLen (1024), Description (
"The Name property defines the label by which the object is "
"known. The value of this property may be set to be the same "
"as that of the UserID property or, in the case of an "
"LDAP-derived instance, the Name property value may be set to "
"the distinguishedName of the LDAP-accessed object instance.") ]
string Name;
[MaxLen (256), Description (
"UserID is the value used by the SecurityService to "
"represent identity. For an authentication service, the "
"UserID may be the name of the user, or for an authorization "
"service the value which serves as a handle to a mapping of "
"the identity.") ]
string UserID;
[Description (
"In the case of an LDAP-derived instance, the ObjectClass "
"property value(s) may be set to the objectClass attribute "
"values.") ]
string ObjectClass[];
[MaxLen (1024), Description (
"The Descriptions property values may contain human-readable "
"descriptions of the object. In the case of an LDAP-derived "
"instance, the description attribute may have multiple values "
"that, therefore, cannot be placed in the inherited "
"Description property.") ]
string Descriptions[];
[Description (
"Based on RFC1274, the host name of the system(s) for which "
"the account applies. The host name may be a fully-qualified "
"DNS name or it may be an unqualified host name.") ]
string Host[];
[Description (
"This property contains the name of a locality, such as a "
"city, county or other geographic region.") ]
string LocalityName[];
[Required, Description (
"The name of the organization related to the account.") ]
string OrganizationName[];
[Description (
"The name of an organizational unit related to the account.") ]
string OU[];
[Description (
"In the case of an LDAP-derived instance, the See Also "
"property specifies distinguishedName of other Directory "
"objects which may be other aspects (in some sense) of the "
"same real world object.") ]
string SeeAlso[];
[Octetstring, Description (
"Based on inetOrgPerson and for directory compatibility, the "
"User Certificate property may be used to specify a public key "
"certificate for the person.") ]
string UserCertificate[];
[Octetstring, Description (
"In the case of an LDAP-derived instance, the UserPassword "
"property may contain an encrypted password used to access "
"the person's resources in a directory.") ]
string UserPassword[];
};
// ==================================================================
// AccessControlInformation
// ==================================================================
[Version ("2.6.0"), Description (
"CIM_AccessControlInformation provides, through its properties "
"and its associations, the specification of the access rights "
"granted to a set of subject users to a set of target resources. "
"The AccessControlInformation class is weak to the system (e.g., "
"Computer System or Administrative Domain) for which the access "
"controls apply.") ]
class CIM_AccessControlInformation : CIM_LogicalElement {
[Propagated ("CIM_System.CreationClassName"), Key, MaxLen (256),
Description ("Hosting system creation class name.") ]
string SystemCreationClassName;
[Propagated ("CIM_System.Name"), Key, MaxLen (256),
Description ("Hosting system name.") ]
string SystemName;
[Key, MaxLen (256), Description (
"CreationClassName indicates the name of the class or the "
"subclass used in the creation of an instance. When used "
"with the other key properties of this class, this property "
"allows all instances of this class and its subclasses to "
"be uniquely identified.") ]
string CreationClassName;
[Key, MaxLen (256), Override ("Name"), Description (
"The Name property defines the unique label, in the context of "
"the hosting system, by which the AccessControlInformation "
"is known.") ]
string Name;
[Description (
"The SecurityClassification property specifies a named level "
"of security associated with the AccessControlInformation, "
"e.g., 'Confidential', 'Top Secret', etc.") ]
string SecurityClassification;
[Description (
"The AccessType property is an array of string values that "
"specifies the type of access for which the corresponding "
"permission applies. For example, it can be used to specify a "
"generic access such as 'Read-only', 'Read/Write', etc. for "
"file or record access control or it can be used to specifiy "
"an entry point name for service access control."),
ModelCorrespondence {
"CIM_AccessControlInformation.AccessQualifier",
"CIM_AccessControlInformation.Permission"} ]
string AccessType[];
[Description (
"The AccessQualifier property is an array of string values "
"may be used to further qualify the type of access for which "
"the corresponding permission applies. For example, it may be "
"used to specify a set of parameters that are permitted or "
"denied in conjunction with the corresponding AccessType entry "
"point name."),
ModelCorrespondence {
"CIM_AccessControlInformation.AccessType",
"CIM_AccessControlInformation.Permission"} ]
string AccessQualifier[];
[Description (
"The Permission property is an array of string values "
"indicating the permission that applies to the corrsponding "
"AccessType and AccessQualifier array values. The values "
"may be extended in subclasses to provide more specific access "
"controls."),
ValueMap {"Unknown", "Allow", "Deny", "Manage"},
ModelCorrespondence {
"CIM_AccessControlInformation.AccessType",
"CIM_AccessControlInformation.AccessQualifier"} ]
string Permission[];
};
// ===================================================================
// AccountOnSystem
// ===================================================================
[Association, Aggregation, Version ("2.6.0"), Description (
"A system (e.g., ApplicationSystem, ComputerSystem, AdminDomain) "
"aggregates Accounts and scopes the uniqueness of the Account "
"names (i.e., userids).") ]
class CIM_AccountOnSystem : CIM_SystemComponent {
[Override ("GroupComponent"), Min (1), Max (1), Aggregate,
Description (
"The aggregating system also provides name scoping "
"for the Account.") ]
CIM_System REF GroupComponent;
[Override ("PartComponent"), Weak,
Description ("The subordinate Account.") ]
CIM_Account REF PartComponent;
};
// ==================================================================
// HostedACI
// ==================================================================
[Association, Version ("2.6.0"), Description (
"CIM_HostedACI is an association used to provide the namespace "
"scoping of AccessControlInformation. The hosted ACI may or may "
"not apply to resources on the hosting system.") ]
class CIM_HostedACI : CIM_Dependency {
[Min (1), Max (1), Override ("Antecedent"),
Description ("The hosting system.") ]
CIM_System REF Antecedent;
[Override ("Dependent"), Weak,
Description ("The hosted AccessControlInformation.") ]
CIM_AccessControlInformation REF Dependent;
};
// ==================================================================
// AuthorizationSubject
// ==================================================================
[Association, Version ("2.6.0"), Description (
"CIM_AuthorizationSubject is an association used to apply "
"authorization decisions to specific subjects (i.e., users). The "
"subjects may be identified directly or they may be aggregated "
"into a collection that may, in turn, use the MemberPrincipal "
"association to provide further indirection in the specification "
"of the subject set.") ]
class CIM_AuthorizationSubject : CIM_Dependency {
[Override ("Antecedent"), Description (
"AccessControlInformation that applies to a subject set.") ]
CIM_AccessControlInformation REF Antecedent;
[Override ("Dependent"), Description (
"The subject set may be specified as a collection or as a set "
"of associations to ManagedElements that represent users.") ]
CIM_ManagedElement REF Dependent;
};
// ==================================================================
// AuthorizationTarget
// ==================================================================
[Association, Version ("2.6.0"), Description (
"CIM_AuthorizationTarget is an association used to apply "
"authorization decisions to specific target resources. The "
"target resources may be aggregated into a collection or may be "
"represented as a set of associations to ManagedElements.") ]
class CIM_AuthorizationTarget : CIM_Dependency {
[Override ("Antecedent"), Description (
"AccessControlInformation that applies to the target set.") ]
CIM_AccessControlInformation REF Antecedent;
[Override ("Dependent"), Description (
"The target set of resources may be specified as a collection "
"or as a set of associations to ManagedElements that represent "
"target resources.") ]
CIM_ManagedElement REF Dependent;
};
// ===================================================================
// From: System MOF specification 2.6
// ===================================================================
// ===================================================================
// OperatingSystem
// ===================================================================
[Version ("2.6.0"), Description (
"An OperatingSystem is software/firmware that makes a "
"ComputerSystem's hardware usable, and implements and/or "
"manages the resources, file systems, processes, user "
"interfaces, services, ... available on the ComputerSystem.") ]
class CIM_OperatingSystem : CIM_LogicalElement {
[Propagated ("CIM_ComputerSystem.CreationClassName"),
Key, MaxLen (256),
Description ("The scoping ComputerSystem's CreationClassName.") ]
string CSCreationClassName;
[Propagated ("CIM_ComputerSystem.Name"),
Key, MaxLen (256),
Description ("The scoping ComputerSystem's Name.") ]
string CSName;
[Key, MaxLen (256),
Description (
"CreationClassName indicates the name of the class or the "
"subclass used in the creation of an instance. When used "
"with the other key properties of this class, this property "
"allows all instances of this class and its subclasses to "
"be uniquely identified.") ]
string CreationClassName;
[Override ("Name"),
Key, MaxLen (256),
Description (
"The inherited Name serves as key of an OperatingSystem "
"instance within a ComputerSystem."),
MappingStrings {"MIF.DMTF|Operating System|001.2"} ]
string Name;
[Description (
"A integer indicating the type of OperatingSystem."),
ValueMap {"0", "1", "2", "3", "4",
"5", "6", "7", "8", "9",
"10", "11", "12", "13", "14",
"15", "16", "17", "18", "19",
"20", "21", "22", "23", "24",
"25", "26", "27", "28", "29",
"30", "31", "32", "33", "34",
"35", "36", "37", "38", "39",
"40", "41", "42", "43", "44",
"45", "46", "47", "48", "49",
"50", "51", "52", "53", "54",
"55", "56", "57", "58", "59",
"60", "61", "62", "63", "64", "65", "66"},
Values {"Unknown", "Other", "MACOS", "ATTUNIX", "DGUX",
"DECNT", "Digital Unix", "OpenVMS", "HPUX", "AIX",
//10
"MVS", "OS400", "OS/2", "JavaVM", "MSDOS",
"WIN3x", "WIN95", "WIN98", "WINNT", "WINCE",
//20
"NCR3000", "NetWare", "OSF", "DC/OS", "Reliant UNIX",
"SCO UnixWare", "SCO OpenServer", "Sequent",
"IRIX", "Solaris",
//30
"SunOS", "U6000", "ASERIES", "TandemNSK", "TandemNT",
"BS2000", "LINUX", "Lynx", "XENIX", "VM/ESA",
//40
"Interactive UNIX", "BSDUNIX", "FreeBSD", "NetBSD",
"GNU Hurd", "OS9", "MACH Kernel", "Inferno", "QNX",
"EPOC",
//50
"IxWorks", "VxWorks", "MiNT", "BeOS", "HP MPE",
"NextStep", "PalmPilot", "Rhapsody", "Windows 2000",
"Dedicated",
//60
"OS/390", "VSE", "TPF","Windows (R) Me",
"Caldera Open UNIX", "OpenBSD", "Not Applicable"},
ModelCorrespondence {
"CIM_OperatingSystem.OtherTypeDescription"} ]
uint16 OSType;
[Description (
"A string describing the manufacturer and OperatingSystem "
"type - used when the OperatingSystem property, OSType, is "
"set to 1 or 59 (\"Other\" or \"Dedicated\"). The format of "
"the string inserted in OtherTypeDescription should be "
"similar in format to the Values strings defined for OSType. "
"OtherTypeDescription should be set to NULL when OSType is "
"any value other than 1 or 59."),
MaxLen (64),
ModelCorrespondence {"CIM_OperatingSystem.OSType"} ]
string OtherTypeDescription;
[Description (
"A string describing the Operating System's version "
"number. The format of the version information is as follows: "
"<Major Number>.<Minor Number>.<Revision> or "
"<Major Number>.<Minor Number>.<Revision Letter>."),
MappingStrings {"MIF.DMTF|Operating System|001.3"} ]
string Version;
[Description ("Time when the OperatingSystem was last booted."),
MappingStrings {"MIF.DMTF|General Information|001.5"} ]
datetime LastBootUpTime;
[Description (
"OperatingSystem's notion of the local date and time of day."),
MappingStrings {"MIB.IETF|HOST-RESOURCES-MIB.hrSystemDate",
"MIF.DMTF|General Information|001.6"} ]
datetime LocalDateTime;
[Description (
"CurrentTimeZone indicates the number of minutes the "
"OperatingSystem is offset from Greenwich Mean Time. "
"Either the number is positive, negative or zero."),
Units ("Minutes") ]
sint16 CurrentTimeZone;
[Description (
"Number of user licenses for the OperatingSystem. "
"If unlimited, enter 0.") ]
uint32 NumberOfLicensedUsers;
[Description (
"Number of user sessions for which the OperatingSystem is "
"currently storing state information."), Gauge,
MappingStrings {"MIF.DMTF|Host System|001.4",
"MIB.IETF|HOST-RESOURCES-MIB.hrSystemNumUsers"} ]
uint32 NumberOfUsers;
[Description (
"Number of process contexts currently loaded or running on "
"the OperatingSystem."), Gauge,
MappingStrings {"MIF.DMTF|Host System|001.5",
"MIB.IETF|HOST-RESOURCES-MIB.hrSystemProcesses"} ]
uint32 NumberOfProcesses;
[Description (
"Maximum number of process contexts the OperatingSystem can "
"support. If there is no fixed maximum, the value should be 0."
"On systems that have a fixed maximum, this object can help "
"diagnose failures that occur when the maximum is reached."),
MappingStrings {"MIF.DMTF|Host System|001.6",
"MIB.IETF|HOST-RESOURCES-MIB.hrSystemMaxProcesses"} ]
uint32 MaxNumberOfProcesses;
[Description (
"Total swap space in Kbytes. This value may be "
"NULL (unspecified) if swap space is not distinguished from "
"page files. However, some Operating Systems distinguish "
"these concepts. For example, in UNIX, whole processes can "
"be 'swapped out' when the free page list falls and remains "
"below a specified amount."),
Units ("KiloBytes") ]
uint64 TotalSwapSpaceSize;
[Description (
"Number of Kbytes of virtual memory. For example, "
"this may be calculated by adding the amount of total RAM to "
"the amount of paging space (ie, adding the amount of "
"memory in/aggregated by the ComputerSystem to the property, "
"SizeStoredInPagingFiles."),
Units ("KiloBytes"),
MappingStrings {"MIF.DMTF|System Memory Settings|001.5"} ]
uint64 TotalVirtualMemorySize;
[Gauge, Description (
"Number of Kbytes of virtual memory currently unused and "
"available. For example, this may be calculated by adding "
"the amount of free RAM to the amount of free paging space "
"(ie, adding the properties, FreePhysicalMemory and FreeSpace"
"InPagingFiles)."),
Units ("KiloBytes"),
MappingStrings {"MIF.DMTF|System Memory Settings|001.6"} ]
uint64 FreeVirtualMemory;
[Gauge, Description (
"Number of Kbytes of physical memory currently unused and "
"available."),
Units ("KiloBytes"),
MappingStrings {"MIF.DMTF|System Memory Settings|001.2",
"MIF.UNIX|Host Physical Memory|6.1"} ]
uint64 FreePhysicalMemory;
[Description (
"The total amount of physical memory (in Kbytes) available "
"to the OperatingSystem. This value does not necessarily "
"indicate the true amount of physical memory, but what is "
"reported to the OperatingSystem as available to it."),
Units ("KiloBytes") ]
uint64 TotalVisibleMemorySize;
[Description (
"The total number of KBytes that can be stored in the "
"OperatingSystem's paging files. 0 indicates that there "
"are no paging files."),
Units ("KiloBytes"),
MappingStrings {"MIF.DMTF|System Memory Settings|001.3"} ]
uint64 SizeStoredInPagingFiles;
[Gauge, Description (
"The total number of KBytes that can be mapped into the "
"OperatingSystem's paging files without causing any other "
"pages to be swapped out. 0 indicates that there are no "
"paging files."),
Units ("KiloBytes"),
MappingStrings {"MIF.DMTF|System Memory Settings|001.4"} ]
uint64 FreeSpaceInPagingFiles;
[Description (
"Maximum number of Kbytes of memory that can be allocated "
"to a Process. For Operating Systems with no virtual memory, "
"this value is typically equal to the total amount of "
"physical Memory minus memory used by the BIOS and OS. For "
"some Operating Systems, this value may be infinity - in "
"which case, 0 should be entered. In other cases, this value "
"could be a constant - for example, 2G or 4G."),
Units ("KiloBytes") ]
uint64 MaxProcessMemorySize;
[Description (
"Boolean indicating whether the OperatingSystem is "
"distributed across several ComputerSystem nodes. If so, "
"these nodes should be grouped as a Cluster.") ]
boolean Distributed;
[Description (
"A value that indicates the maximum processes that a user "
"can have associate with it.") ]
uint32 MaxProcessesPerUser;
[Description (
"Requests a reboot of the OperatingSystem. The return value "
"should be 0 if the request was successfully executed, "
"1 if the request is not supported and some other value "
"if an error occurred. In a subclass, the set of possible "
"return codes could be specified, using a ValueMap qualifier "
"on the method. The strings to which the ValueMap contents "
"are 'translated' may also be specified in the subclass as "
"a Values array qualifier.") ]
uint32 Reboot();
[Description (
"Requests a shutdown of the OperatingSystem. The return "
"value should be 0 if the request was successfully executed, "
"1 if the request is not supported and some other value if "
"an error occurred. It is up to the implementation or subclass "
"of OperatingSystem to establish dependencies between "
"the Shutdown and Reboot methods, and for example, to provide "
"more sophisticated capabilities such as scheduled shutdown/"
"reboot, etc. In a subclass, the set of possible return "
"codes could be specified, using a ValueMap qualifier on "
"the method. The strings to which the ValueMap contents are "
"'translated' may also be specified in the subclass as a "
"Values array qualifier.") ]
uint32 Shutdown();
};
// ===================================================================
// InstalledOS
// ===================================================================
[Association, Aggregation, Version ("2.6.0"), Description (
"A link between the ComputerSystem and the OperatingSystem(s) "
"installed or loaded on it. An OperatingSystem is 'installed' "
"on a ComputerSystem, when placed on one of its StorageExtents "
"- for example, copied to a disk drive or downloaded to "
"Memory. Using this definition, an OperatingSystem is "
"'installed' on a NetPC when downloaded via the network.") ]
class CIM_InstalledOS : CIM_SystemComponent {
[Override ("GroupComponent"), Aggregate, Min (1), Max (1),
Description ("The ComputerSystem.") ]
CIM_ComputerSystem REF GroupComponent;
[Override ("PartComponent"), Weak,
Description (
"The OperatingSystem installed on the ComputerSystem.") ]
CIM_OperatingSystem REF PartComponent;
[Description (
"Boolean indicating that the OperatingSystem is the default "
"OS for the ComputerSystem."),
MappingStrings {"MIF.DMTF|Operating System|001.4"} ]
boolean PrimaryOS;
};
// ===================================================================
// Process
// ===================================================================
[Version ("2.6.0"), Description (
"Each instance of the CIM_Process class represents a single "
"instance of a running program. A user of the OperatingSystem "
"will typically see a Process as an application or task. Within "
"an OperatingSystem, a Process is defined by a workspace of "
"memory resources and environmental settings that are allocated "
"to it. On a multitasking System, this workspace prevents "
"intrusion of resources by other Processes. Additionally, a "
"Process can execute as multiple Threads, all which run within "
"the same workspace.") ]
class CIM_Process : CIM_LogicalElement {
[Propagated("CIM_OperatingSystem.CSCreationClassName"),
Key, MaxLen (256),
Description (
"The scoping ComputerSystem's CreationClassName.") ]
string CSCreationClassName;
[Propagated("CIM_OperatingSystem.CSName"),
Key, MaxLen (256),
Description ("The scoping ComputerSystem's Name.") ]
string CSName;
[Propagated("CIM_OperatingSystem.CreationClassName"),
Key, MaxLen (256),
Description (
"The scoping OperatingSystem's CreationClassName.") ]
string OSCreationClassName;
[Propagated("CIM_OperatingSystem.Name"),
Key, MaxLen (256),
Description ("The scoping OperatingSystem's Name.") ]
string OSName;
[Override ("Name"), Description (
"The name of the process."),
MappingStrings {"MIF.DMTF|Process Information|001.6"} ]
string Name;
[Key, MaxLen (256), Description (
"CreationClassName indicates the name of the class or the "
"subclass used in the creation of an instance. When used "
"with the other key properties of this class, this property "
"allows all instances of this class and its subclasses to "
"be uniquely identified.") ]
string CreationClassName;
[Key, MaxLen (256), Description (
"A string used to identify the Process. A Process ID is a "
"kind of Process Handle."),
MappingStrings {"MIF.DMTF|Process Information|001.1"} ]
string Handle;
[Description (
"Priority indicates the urgency or importance of execution "
"of a Process. If a priority is not defined for a Process, "
"a value of 0 should be used."),
MappingStrings {"MIF.DMTF|Process Information|001.10"} ]
uint32 Priority;
[Description (
"Indicates the current operating condition of the Process. "
"Values include ready (2), running (3), and blocked (4), "
"among others."),
ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"},
Values {"Unknown", "Other", "Ready", "Running",
"Blocked", "Suspended Blocked", "Suspended Ready",
"Terminated", "Stopped", "Growing"},
MappingStrings {"MIF.DMTF|Process Information|001.9",
"MIF.UNIX|Process Information|13.9"} ]
uint16 ExecutionState;
[Description (
"A string describing the state - used when the instance's "
"ExecutionState property is set to 1 (\"Other\"). Other"
"ExecutionDescription should be set to NULL when the Execution"
"State property is any value other than 1.") ]
string OtherExecutionDescription;
[Description ("Time that the Process began executing.") ]
datetime CreationDate;
[Description (
"Time that the Process was stopped or terminated.") ]
datetime TerminationDate;
[Description (
"Time in kernel mode, in milliseconds. If this information "
"is not available, a value of 0 should be used."),
Units ("MilliSeconds"),
MappingStrings {"MIF.DMTF|Process Information|001.13"} ]
uint64 KernelModeTime;
[Description (
"Time in user mode, in milliseconds. If this information "
"is not available, a value of 0 should be used."),
Units ("MilliSeconds"),
MappingStrings {"MIF.DMTF|Process Information|001.14"} ]
uint64 UserModeTime;
[Gauge, Description (
"The amount of memory in bytes that a Process needs to "
"execute efficiently, for an OperatingSystem that uses "
"page-based memory management. If an insufficient amount "
"of memory is available (< working set size), thrashing "
"will occur. If this information is not known, NULL or 0 "
"should be entered. If this data is provided, it could be "
"monitored to understand a Process' changing memory "
"requirements as execution proceeds."),
Units ("Bytes") ]
uint64 WorkingSetSize;
};
// ===================================================================
// OSProcess
// ===================================================================
[Association, Aggregation, Version ("2.6.0"), Description (
"A link between the OperatingSystem and Process(es) running "
"in the context of this OperatingSystem.") ]
class CIM_OSProcess : CIM_Component {
[Override ("GroupComponent"), Aggregate, Min (1), Max (1),
Description ("The OperatingSystem.") ]
CIM_OperatingSystem REF GroupComponent;
[Override ("PartComponent"), Weak,
Description (
"The Process running in the context of the "
"OperatingSystem") ]
CIM_Process REF PartComponent;
};
// ==================================================================
// ServiceProcess
// ==================================================================
[Association, Version ("2.6.0"), Description (
"CIM_ServiceProcess is an association used to establish "
"relationships between Services and Processes. "
"It is used to indicate if a Service is running in a particular "
"Process. It is also used to indicate, via the ExecutionType "
"property, if the Service started and is wholly responsible for "
"the Process, or if the Service is running in an existing "
"Process, perhaps with other unrelated Services, which is owned "
"or started by a different entity. This association relates "
"a Service with an externally visible system signature. ") ]
class CIM_ServiceProcess {
[Key, Description (
"The Service whose Process is described by this "
"association.") ]
CIM_Service REF Service;
[Key, Description (
"The Process which represents or hosts the executing "
"Service.") ]
CIM_Process REF Process;
[Description (
"Enumeration indicating how the Service runs in the context "
"of, or owns the Process. \"Unknown\" indicates that the "
"ExecutionType is not known. \"Other\" indicates that the "
"ExecutionType does not match any of the values in the "
"ExecutionType enumeration. \"Executes in Existing Process\" "
"indicates that the Service is hosted in a Process that "
"already exists in the system. The lifecycle of the "
"Service is separate from that of the Process. "
"\"Exeutes as Independent Process\" indicates that the "
"Service is responsible for the lifecycle of the Process. "
"When the Service is started, the Process is created. "
"For example, ServletEngines can run \"InProcess\" "
"within the existing Apache processes or \"OutOfProcess\" in "
"its own servlet engine process. In this case the Apache "
"process would communicate with the servlet engine process "
"based on the content of the request. The association may "
"be many to many."),
ValueMap {"0", "1", "2", "3"},
Values {"Unknown", "Other", "Executes in Existing Process",
"Executes as Independent Process" } ]
uint16 ExecutionType;
};
In diesem Anhang befindet sich das im Rahmen dieser Arbeit entworfene CIM extension schema für Mailserver-Systeme im MOF-Format. Es beruht auf den Basisklassen aus dem CIM core- und common schema 2.6 (siehe Anhang A.2).
#pragma vimverschoenerung
// ===================================================================
// Title: MOF Specification for Mail Server Systems
// Filename: Mail_Schema.mof
// Version: 0.5
// Status: Pre-Release
// Date: 11/26/2002
// ===================================================================
// Klaus Jaehne, Thinking Objects Software GmbH, Stuttgart-Korntal
// ( <Klaus.Jaehne@to.com> )
// ===================================================================
// Description: The Mail Schema aims towards a generic object oriented
// description of a piece of mail server software such as
// an IMAP-, POP- and / or MAPI service.
//
// It depends on the following CIM Schemata:
// by other working groups, are omitted.
// ==================================================================
// Date 10/07/2002 - first draft (0.1)
// - initial release, still some lack of functionality and needs
// further discussion
//
// Date 10/09/2002 - corrections (0.2)
// - corrections in cardinalities, key attibutes and
// dependencies of Mail_Folder
//
// Date 10/15/2002 - minor corrections (0.3)
// - corrections regarding slight syntax errors
// - Additional CCNs for Mailbox and Folder Class
// - new MailContainerClass for Mailboxes and Folders
// - fixed key properties completely
//
// Date 10/18/2002 - further enhancements (0.4)
// - add support for MailDomains (aka Mailnodes in OpenMail)
// (multiple instances within a MailService)
// - add support for groups of users
// - add support for references to personal data of users
// - add support for management of user aliases, distribution
// lists
// - add support for management of internet domains
// - add support for folder synchronisation between multiple
// MailServices
//
// Date 11/26/2002 - minor corrections (0.5)
// - add MailAccountOnSystem
// - add HostedMailService
// - replace CIM_UsersAccess for directory integration
// - add Mail_HostedFolderACI
// - add MailboxServer
//
// ==================================================================
// ==================================================================
// Pragmas
// ==================================================================
#pragma locale ("en_US")
// ==================================================================
// MailService
// ==================================================================
[Version("0.1"), Description (
"The MailService class is the class representing a piece of "
"mail server software such as an IMAP-, POP- and / or MAPI-"
"daemon.") ]
class Mail_MailService : CIM_Service {
[Description (
"NumUsers shows the number of users that are currently "
"logged on on the MailService") ]
uint32 NumUsers;
[Description (
"The ReloadService method causes the MailService to reload "
"its configuration data. It returns an integer value of 0 "
"if configuration data could successfully be reloaded or "
"1 if there was an error.") ]
uint32 ReloadService();
};
// ==================================================================
// HostedMailService
// ==================================================================
[Association, Version ("0.4"), Description (
"Mail_HostedMailService is the association between the "
"MailService and the Systen on which the MailService "
"resides. This is a special incarnation of CIM_HostedService "
"to ease implementation.") ]
class Mail_HostedMailService : CIM_HostedService {
[Override ("Antecedent"), Max (1), Min (1),
Description ("The hosting System.") ]
CIM_System REF Antecedent;
[Override ("Dependent"), Weak,
Description ("The MailService hosted on the System.") ]
Mail_MailService REF Dependent;
};
// ==================================================================
// MailProcess
// ==================================================================
[Version("0.1"), Description (
"A MailProcess object is a Process running on behalf of a "
"mail server daemon.") ]
class Mail_MailProcess : CIM_Process {
};
// ==================================================================
// MailServiceMailProcess
// ==================================================================
[Association, Version("0.3"), Description (
"The reference MailServiceProcess returns all processes that "
"are running on behalf of the mail server daemon.") ]
class Mail_MailServiceMailProcess : CIM_ServiceProcess {
[Key, Override ("Service"), Min (1), Max (1), Description (
"The MailService whose MailProcess is described by this "
"association.") ]
Mail_MailService REF Service;
[Key, Override ("Process"), Description (
"The MailProcess which represents or hosts the executing "
"MailService.") ]
Mail_MailProcess REF Process;
};
// ==================================================================
// MailDomain
// ==================================================================
[Version("0.5"), Description (
"A MailDomain is a part of a MailService - an account is only "
"valid for a certain MailDomain, which has a limited address "
"space (mapped to one or some internet domains). The same "
"user name can exist in different MailDomains. It is equivalent "
"to a mailnode in Contact.") ]
class Mail_MailDomain : CIM_LogicalElement {
[Propagated ("Mail_MailService.SystemCreationClassName"), Key,
MaxLen (256), Description (
"The scoping System's CreationClassName.") ]
string SystemCreationClassName;
[Propagated ("Mail_MailService.SystemName"), Key, MaxLen (256),
Description ("The scoping System's Name.") ]
string SystemName;
[Propagated ("Mail_MailService.CreationClassName"), Key,
MaxLen (256), Description (
"The scoping MailService's CreationClassName.") ]
string ServiceCreationClassName;
[Propagated ("Mail_MailService.Name"), Key, MaxLen (256),
Description (
"The scoping MailService's Name.") ]
string ServiceName;
[Override("CreationClassName"), Key, MaxLen (256), Description (
"CreationClassName indicates the name of the class or the "
"subclass used in the creation of an instance. When used "
"with the other key properties of this class, this property "
"allows all instances of this class and its subclasses to "
"be uniquely identified.") ]
string CreationClassName;
[Override("Name"), Key, MaxLen(256), Description (
"Name is the primary internet domain name used for this "
"MailDomain. It is used to identify a certain MailDomain.") ]
string Name;
[MaxLen(256), Description (
"DomainNames is a container for further alias internet "
"domains this MailDomain ist hosting. Their names must be "
"exclusive.") ]
string DomainNames[];
[Description (
"IsDefault indicated weather a MailDomain is the default "
"MailDomain of a MailService.") ]
boolean IsDefault;
[Description (
"Hack for NPI") ]
string IsDefaultStr;
};
// ==================================================================
// MailServiceForDomain
// ==================================================================
[Association, Version("0.4"), Description (
"This association describes by which mail server service a "
"MailDomain is served. This provides a mapping between a "
"MailService and a MailDomain it is hosting.") ]
class Mail_MailServiceForDomain : CIM_Dependency {
[Override("Antecedent"), Min (1), Max (1),
Description (
"The MailService that hosts the MailDomain.") ]
Mail_MailService REF Antecedent;
[Override("Dependent"), Weak, Description (
"The MailDomain that is hosted by a MailService.") ]
Mail_MailDomain REF Dependent;
};
// ==================================================================
// MailGroup
// ==================================================================
[Version ("0.4"), Description (
"A MailGroup is used to organize MailAccounts into groups of "
"Users. NB: In order to simplify the model groups can consist"
"of just one user so it is only necessary to make the "
"statement of an association between a group and i.e. an "
"ACI... any other idea?") ]
class Mail_MailGroup : CIM_Collection {
[Key, MaxLen (256), Description (
"CreationClassName indicates the name of the class or the "
"subclass used in the creation of an instance. When used "
"with the other key properties of this class, this property "
"allows all instances of this class and its subclasses to "
"be uniquely identified.") ]
string CreationClassName;
[Key, MaxLen (1024), Description (
"The Name property defines the label by which the group is "
"known. ") ]
string Name;
};
// ==================================================================
// MailAccount
// ==================================================================
[Version("0.2"), Description (
"The MailAccunt class is used for the representation of a "
"user account on a mail server.") ]
class Mail_MailAccount : CIM_Account {
[Override ("UserPassword"), Write, Description (
"Here we override the CIM_Account UserPassword because it "
"is not writable - but we want to manage passwords via "
"CIM. Yes, the security aspects are a separate issue.") ]
string UserPassword[];
};
// ===================================================================
// MailAccountOnSystem
// ===================================================================
[Association, Aggregation, Version ("0.5"), Description (
"A Mail Server Ssystem (e.g., ApplicationSystem, ComputerSystem,"
"AdminDomain) aggregates Accounts and scopes the uniqueness of "
"the Account names (i.e., userids).") ]
class Mail_MailAccountOnSystem : CIM_AccountOnSystem {
[Override ("GroupComponent"), Min (1), Max (1), Aggregate,
Description (
"The aggregating system also provides name scoping "
"for the Account.") ]
CIM_System REF GroupComponent;
[Override ("PartComponent"), Weak,
Description ("The subordinate Account.") ]
Mail_MailAccount REF PartComponent;
};
// ==================================================================
// PersonalAccountInfo
// ==================================================================
[Association, Version ("0.5"), Description (
"This accociation provides a mapping between a MailAccount and "
"a CIM_Person which hold the corresponding personal "
"information, which itself may be used for address book usage "
"etc.") ]
class Mail_PersonalAccountInfo : CIM_Dependency {
[Override ("Antecedent"), Min (1), Max (1), Description (
"The account.") ]
Mail_MailAccount REF Antecedent;
[Override ("Dependent"), Max (1), Description (
"The Person.") ]
CIM_Person REF Dependent;
};
// ==================================================================
// MailGroupMembership
// ==================================================================
[Association, Aggregation, Version ("0.4"), Description (
"The aggregation MailGroupMembership establishes the "
"membership of a MailAccount in a MailGroup." ) ]
class Mail_GroupMembership : CIM_MemberOfCollection {
[Override ("Collection"), Key, Aggregate, Description (
"The MailGroup that aggregates users.") ]
Mail_MailGroup REF Collection;
[Override ("Member"), Key, Description (
"The individual users.") ]
Mail_MailAccount REF Member;
};
// ==================================================================
// UsersMailDomain
// ==================================================================
[Association, Version("0.4"), Description (
"An association describing for which MailDomain an "
"account is valid.") ]
class Mail_UsersMailDomain {
[Key, Min (1), Max (1), Description (
"The MailDomain that is hosting the user's account.") ]
Mail_MailDomain REF MailDomain;
[Key, Description (
"The user's MailAccount that is valid for the "
"MailDomain.") ]
Mail_MailAccount REF MailAccount;
};
// ==================================================================
// UsersActiveOnMailService
// ==================================================================
[Association, Version("0.1"), Description (
"An association describing which users are currenty logged on "
"on the MailService.") ]
class Mail_UsersActiveOnMailService {
[Key, Override ("MailService"), Max (1), Description (
"The MailService that some users are logged onto.") ]
Mail_MailService REF MailService;
[Key, Override ("MailAccount"), Description (
"The user's MailAccount that is active on the "
"MailService.") ]
Mail_MailAccount REF MailAccount;
};
// ==================================================================
// MailAlias
// ==================================================================
[Version("0.4"), Description (
"A MailAlias specifies the left hand side of an internet "
"address by which a user can be reached. It has the same "
"as an entry in the file /etc/aliases in sendmail of postfix. "
"It can also be used as a representation of a Contact PDL "
"(Public Distribution List).") ]
class Mail_MailAlias : CIM_LogicalElement {
[Propagated ("Mail_MailService.SystemCreationClassName"), Key,
MaxLen (256), Description (
"The scoping System's CreationClassName.") ]
string SystemCreationClassName;
[Propagated ("Mail_MailService.SystemName"), Key, MaxLen (256),
Description ("The scoping System's Name.") ]
string SystemName;
[Propagated ("Mail_MailService.CreationClassName"), Key,
MaxLen (256), Description (
"The scoping MailService's CreationClassName.") ]
string ServiceCreationClassName;
[Propagated ("Mail_MailService.Name"), Key, MaxLen (256),
Description (
"The scoping MailService's Name.") ]
string ServiceName;
[Propagated ("Mail_MailDomain.CreationClassName"), Key, MaxLen
(256), Description (
"The scoping MailDomain's CreationClassName.") ]
string DomainCreationClassName;
[Propagated ("Mail_MailDomain.Name"), Key, MaxLen(256),
Description (
"The scopting MailDomain's Name.") ]
string DomainName;
[Override("CreationClassName"), Key, MaxLen (256), Description (
"CreationClassName indicates the name of the class or the "
"subclass used in the creation of an instance. When used "
"with the other key properties of this class, this property "
"allows all instances of this class and its subclasses to "
"be uniquely identified.") ]
string CreationClassName;
[Key, MaxLen (256), Description (
"The Alias is the left hand side of a mail address - the "
"visible user name.") ]
string Alias;
[Key, MaxLen (256), Description (
"The AccountName is the MailAccount this MailAlias maps "
"to.") ]
string AccountName;
[MaxLen (256), Description (
"AliasDomains is an optional array of internet domain "
"for which this Alias is valid. Each of these domains must "
"be listed in MailDomain.MailDomains[].") ]
string AliasDomains[];
};
// ==================================================================
// HostedAlias
// ==================================================================
[Association, Version ("0.4"), Description (
"The relationship describes on which MailDomain a MailAlias can "
"can be found. MailDomain and MailAlias are the components of an "
"internet mail address: MailAlias@MailDomain.") ]
class Mail_HostedMailAlias : CIM_Dependency {
[Override ("Antecedent"), Min (1), Max (1),
Description ("The MailDomain.") ]
Mail_MailDomain REF Antecedent;
[Override ("Dependent"), Weak,
Description ("The MailAlias") ]
Mail_MailAlias REF Dependent;
};
// ==================================================================
// AliasForAccount
// ==================================================================
[Association, Version ("0.4"), Description (
"The relationship associates an Alias with an Account for which "
"the alias address is valid. The may be multiple aliases for one "
"user, but there may also be multiple MailAccounts for one Alias "
"in order to implement distribution lists.") ]
class Mail_MailAliasForMailAccount : CIM_Dependency {
[Override ("Antecedent"),
Description ("The user's MailAccount.") ]
Mail_MailAccount REF Antecedent;
[Override ("Dependent"),
Description ("The alias") ]
Mail_MailAlias REF Dependent;
};
// ==================================================================
// MailContainer
// ==================================================================
[Abstract, Version("0.3"), Description (
"A MailContainer is a generic container for Mailboxes or "
"Folders. It avoids the problem of finding a key for a Folder "
"which part of a Mailbox, when a Mailbox is a subclass of a "
"Folder itself.") ]
class Mail_MailContainer : CIM_LogicalElement {
[Description (
"The Tag is the terse name of the container, which is "
"ususally displayed to the user, e.g. Inbox.") ]
string Tag;
[Description (
"The Description makes it possible to hold a complete "
"description of the container.") ]
string Description;
[Description (
"NumItems shows the number of Items stored in this "
"container without subfolders, this is the sum of Msgs and "
"Folders.") ]
uint32 NumItems;
[Description (
"NumMsgs shows the number of Messages stored in this "
"container without subfolders.") ]
uint32 NumMsgs;
[Description (
"NumFolders shows the number of Folders stored in this "
"container without folders of subfolders.") ]
uint32 NumFolders;
[Description ("Size of the container in bytes."),
Units ("Bytes") ]
uint64 FileSize;
[Description (
"FileSizeSub shows the total size of all messages in the "
"container, including subfolders."), Units ("Bytes") ]
uint64 FileSizeSub;
[Description ("container's creation date.") ]
datetime CreationDate;
[Description ("Time that the container was last modified.") ]
datetime LastModified;
[Description ("Time that the container was last accessed.") ]
datetime LastAccessed;
[Description (
"This is a preliminary function to export a complete "
"container including subfolders to a file. The output is "
"implementation-specific, though.") ]
uint32 Export ();
[Description (
"Check() forces the MailServer to do a consistency check "
"on the MailContainer. A return value of 0 indicates no "
"errors, any other value indicates an error.") ]
uint32 Check ();
};
// ==================================================================
// Mailbox
// ==================================================================
[Version("0.3"), Description (
"A Mailbox is an incarnation of a MailContainer. It is "
"generally used as a container for all Mail of a user, but it "
"can also be used to hold shared folders used by a defined "
"group of people.") ]
class Mail_Mailbox : Mail_MailContainer {
[Propagated ("Mail_MailService.SystemCreationClassName"), Key,
MaxLen (256), Description (
"The scoping System's CreationClassName.") ]
string SystemCreationClassName;
[Propagated ("Mail_MailService.SystemName"), Key, MaxLen (256),
Description ("The scoping System's Name.") ]
string SystemName;
[Propagated ("Mail_MailService.CreationClassName"), Key,
MaxLen (256), Description (
"The scoping MailService's CreationClassName.") ]
string ServiceCreationClassName;
[Propagated ("Mail_MailService.Name"), Key, MaxLen (256),
Description (
"The scoping MailService's Name.") ]
string ServiceName;
[Propagated ("Mail_MailDomain.CreationClassName"), Key, MaxLen
(256), Description (
"The scoping MailDomain's CreationClassName.") ]
string DomainCreationClassName;
[Propagated ("Mail_MailDomain.Name"), Key, MaxLen(256),
Description (
"The scopting MailDomain's Name.") ]
string DomainName;
[Override("CreationClassName"), Key, MaxLen (256), Description (
"CreationClassName indicates the name of the class or the "
"subclass used in the creation of an instance. When used "
"with the other key properties of this class, this property "
"allows all instances of this class and its subclasses to "
"be uniquely identified.") ]
string CreationClassName;
[Key, MaxLen (256), Description (
"The Name denotes the name of the mailbox visible to the "
"user.") ]
string Name;
};
// ==================================================================
// MailboxReplication
// ==================================================================
[Association, Version ("0.4"), Description (
"MailboxSynchronisation indicates the synchronization of two "
"Mailboxes. These Mailboxes generally reside on different "
"MailServices. This allows the representation of replicated "
"folders like PDLs (public distribution lists) in Contact.") ]
class Mail_MailboxReplication : CIM_Synchronized {
[Override ("SystemElement"), Key, Description (
"SystemElement represents a Mailbox that is "
"synchronized with the Mailbox referenced as "
"SyncedElement.") ]
Mail_Mailbox ref SystemElement;
[Override ("SyncedElement"), Key, Description (
"SyncedElement represents another Mailox that is "
"synchronized with the Mailbox referenced as "
"SystemElement.") ]
Mail_Mailbox ref SyncedElement;
};
// ==================================================================
// Folder
// ==================================================================
[Version("0.3"), Description (
"A MailFolder is a folder on a Mail Server. It contains "
"messages, other folders, or both. A MailFolder is similar to "
"a directory in a file system structure.") ]
class Mail_Folder : Mail_MailContainer {
[Propagated ("Mail_Mailbox.SystemCreationClassName"), Key,
MaxLen (256), Description (
"The scoping System's CreationClassName.") ]
string SystemCreationClassName;
[Propagated ("Mail_Mailbox.SystemName"), Key, MaxLen (256),
Description ("The scoping System's Name.") ]
string SystemName;
[Propagated ("Mail_Mailbox.ServiceCreationClassName"), Key,
MaxLen (256), Description (
"The scoping MailService's CreationClassName.") ]
string ServiceCreationClassName;
[Propagated ("Mail_Mailbox.ServiceName"), Key, MaxLen (256),
Description (
"The scoping MailService's Name.") ]
string ServiceName;
[Propagated ("Mail_Mailbox.DomainCreationClassName"), Key, MaxLen
(256), Description (
"The scoping MailDomain's CreationClassName.") ]
string DomainCreationClassName;
[Propagated ("Mail_Mailbox.DomainName"), Key, MaxLen(256),
Description (
"The scopting MailDomain's Name.") ]
string DomainName;
[Propagated ("Mail_Mailbox.CreationClassName"), Key,
MaxLen (256), Description (
"The scoping Mailbox' CCN.") ]
string MailboxCreationClassName;
[Propagated ("Mail_Mailbox.Name"), Key, MaxLen (256),
Description (
"The scoping Mailbox' name.") ]
string MailboxName;
[Override ("CreationClassName"), Key, MaxLen (256),
Description (
"CreationClassName indicates the name of the class or the "
"subclass used in the creation of an instance. When used "
"with the other key properties of this class, this property "
"allows all instances of this class and its subclasses to "
"be uniquely identified.") ]
string CreationClassName;
[Override ("Name"), Key, MaxLen (256), Description (
"The Name denotes the complete folder path within "
"the structure of the mail service.") ]
string Name;
};
// ==================================================================
// FolderParentChild
// ==================================================================
[Association, Aggregation, Version("0.2"), Description (
"This association indicatates which folder is the parent "
"folder of a MailFolder. A MailFolder can have one or no "
"folders in the level above and any amount of folders in the "
"level below. This allows the representation of a nested "
"folder hierarchy.") ]
class Mail_FolderParentChild {
[Aggregate, Key, Max (1), Description (
"In the relationship between the Super- "
"and the Subfolder SuperFolder is the folder at the upper "
"level in the hierarchy.") ]
Mail_MailContainer REF Parent;
[Key, Description ("In the relationship between the Super- "
"and the Subfolder SuperFolder is the folder at the lower "
"level in the hierarchy.") ]
Mail_Folder REF Child;
};
// ==================================================================
// PersonalMailbox
// ==================================================================
[Association, Version("0.1"), Description (
"The association PersonalMailbox is used to represent the "
"correspondence between a mailbox and a user account, so it "
"is possible to figure out which is the dedicated mailbox of "
"a user account. A user usually only has r/w access to his "
"PersonalMailbox.") ]
class Mail_PersonalMailbox : CIM_Dependency {
[Override ("Antecedent"), Key, Min (1), Max (1), Description (
"The pointer to the Mailbox.") ]
Mail_Mailbox REF Antecedent;
[Override ("Dependent"), Key, Max (1), Description (
"The user's account the mailbox belongs to.") ]
Mail_MailAccount REF Dependent;
};
// ==================================================================
// MailboxServer
// ==================================================================
[Association, Version("0.4"), Description (
"This association describes by which mail server service a "
"mailbox is hosted. We suppose a mailbox always has a special "
"format which is only readable by a specific mail server "
"service. A mailbox always has a distinct name within the "
"mail service.") ]
class Mail_MailboxServer : CIM_Dependency {
[Override("GroupComponent"), Min (1), Max (1),
Description (
"The MailDomain that contains the Mailbox.") ]
Mail_MailDomain REF Antecedent;
[Override("PartComponent"), Weak, Description (
"The Mailbox that is to be found within a MailService.") ]
Mail_Mailbox REF Dependent;
};
// ==================================================================
// FolderLocation
// ==================================================================
[Association, Aggregation, Version("0.2"), Description (
"This aggregation describes in which Mailbox a Folder"
"resides, so one can see which Folders make up a Mailbox.") ]
class Mail_FolderLocation : CIM_Component {
[Override("GroupComponent"), Aggregate, Min (1), Max (1),
Description (
"The Mailbox the Folder can be found in.") ]
Mail_Mailbox REF GroupComponent;
[Override("PartComponent"), Weak, Description (
"The Folder object that is one of the elements of the"
"Mailbox.") ]
Mail_Folder REF PartComponent;
};
// ==================================================================
// DedicatedFolder
// ==================================================================
[Abstract, Version("0.1"), Description (
"DedicatedFolders are used to implement special Folders in "
"the context of a user's mail application. These folders have "
"a dedicated function, such an Inbox or a Sent Folder.") ]
class Mail_DedicatedFolder : Mail_Folder {
};
// ==================================================================
// DedicatedFolderOf
// ==================================================================
[Abstract, Version("0.1"), Description (
"This Association shows to which Folder a DedicatedFoler is "
"bound.") ]
class Mail_DedicatedFolderOf : CIM_Dependency {
[Override ("Antecedent"), Key, Min (1), Max (1), Description (
"This is the Mailbox that is hosting the "
"DedicatedFolder.") ]
Mail_Mailbox REF Antecedent;
[Override ("Dependent"), Key, Description (
"This is the DedicatedFolder that is part of a Mailbox.") ]
Mail_DedicatedFolder REF Dependent;
};
// ==================================================================
// FolderTrash
// ==================================================================
[Version("0.1"), Description (
"This a user's trash folder.") ]
class Mail_FolderTrash : Mail_DedicatedFolder {
};
// ==================================================================
// FolderTrashOfMailbox
// ==================================================================
[Association, Version("0.1"), Description (
"Here you can see which is the FolderTrash of a Mailbox.") ]
class Mail_FolderTrashOfMailbox : Mail_DedicatedFolderOf {
[Override ("Dependent"), Key, Max (1), Description (
"This is the FolderTrash that is part of a Mailbox.") ]
Mail_FolderTrash REF Dependent;
};
// ==================================================================
// FolderInbox
// ==================================================================
[Version("0.1"), Description (
"This a user's Inbox.") ]
class Mail_FolderInbox : Mail_DedicatedFolder {
};
// ==================================================================
// FolderInboxOfMailbox
// ==================================================================
[Association, Version("0.1"), Description (
"Here you can see which is the FolderInbox of a Mailbox.") ]
class Mail_FolderInboxOfMailbox : Mail_DedicatedFolderOf {
[Override ("Dependent"), Key, Max (1), Description (
"This is the FolderInbox that is part of a Mailbox.") ]
Mail_FolderInbox REF Dependent;
};
// ==================================================================
// FolderSent
// ==================================================================
[Version("0.1"), Description (
"This a user's sent folder.") ]
class Mail_FolderSent : Mail_DedicatedFolder {
};
// ==================================================================
// FolderSentOfMailbox
// ==================================================================
[Association, Version("0.1"), Description (
"Here you can see which is the FolderSent of a Mailbox.") ]
class Mail_FolderSentOfMailbox : Mail_DedicatedFolderOf {
[Override ("Dependent"), Key, Max (1), Description (
"This is the FolderSent that is part of a Mailbox.") ]
Mail_FolderSent REF Dependent;
};
// ==================================================================
// FolderDrafts
// ==================================================================
[Version("0.1"), Description (
"This a user's drafts folder.") ]
class Mail_FolderDrafts : Mail_DedicatedFolder {
};
// ==================================================================
// FolderTrashOfMailbox
// ==================================================================
[Association, Version("0.1"), Description (
"Here you can see which is the FolderDrafts of a Mailbox.") ]
class Mail_FolderDraftsOfMailbox : Mail_DedicatedFolderOf {
[Override ("Dependent"), Key, Max (1), Description (
"This is the FolderDrafts that is part of a Mailbox.") ]
Mail_FolderDrafts REF Dependent;
};
// ==================================================================
// FolderACI
// ==================================================================
[Version("0.1"), Description (
"A FolderACI class is used to hold access control information "
"on a mail folder.") ]
class Mail_FolderACI : CIM_AccessControlInformation {
};
// ==================================================================
// HostedFolderACI
// ==================================================================
[Version("0.5"), Description (
"A class derived from CIM_HostedACI to allow identification "
"of a folder ACI.") ]
class Mail_HostedFolderACI : CIM_HostedACI {
};
// ==================================================================
// FolderACIOnFolder
// ==================================================================
[Association, Version("0.3"), Description (
"The association FolderACIOnFolder shows for which Folder a "
"FolderACI Object is valid.") ]
class Mail_FolderACIOnFolder : CIM_AuthorizationTarget {
[Override ("Antecedent"), Description (
"The pointer to the ACI") ]
Mail_FolderACI REF Antecedent;
[Override ("Dependent"), Description (
"The Folder the ACI is valid for") ]
Mail_Folder REF Dependent;
};
// ==================================================================
// FolderACIForGroup
// ==================================================================
[Association, Version("0.4"), Description (
"The association FolderACIForAccount shows for which "
"MailAccount a FolderACI Object is valid.") ]
class Mail_FolderACIForGroup : CIM_AuthorizationSubject {
[Override ("Antecedent"), Description (
"The pointer to the ACI") ]
Mail_FolderACI REF Antecedent;
[Override ("Dependent"), Description (
"The groups the ACI is valid for") ]
Mail_MailGroup REF Dependent;
};
// ==================================================================
// FolderQuota
// ==================================================================
[Version("0.4"), Description (
"FolderQuota is a class to hold quota stettings for a mail "
"folder. A FolderQuota is valid for all subfolders, too. There "
"is no proper superclass in CIM, i.e. no generic class for "
"file system quotas") ]
class Mail_FolderQuota : CIM_LogicalElement {
[Propagated ("Mail_MailService.CreationClassName"), Key,
MaxLen (256), Description (
"The scoping System's CreationClassName.") ]
string SystemCreationClassName;
[Propagated ("Mail_MailService.Name"), Key, MaxLen (256),
Description ("The scoping System's Name.") ]
string SystemName;
[Propagated ("Mail_MailService.CreationClassName"), Key,
MaxLen (256), Description (
"The scoping MailService's CreationClassName.") ]
string ServiceCreationClassName;
[Propagated ("Mail_MailService.Name"), Key, MaxLen (256),
Description (
"The scoping MailService's Name.") ]
string ServiceName;
[Key, MaxLen (256), Override ("Name"), Description (
"Some name as a unique label in the context of the hosting "
"mail server service by which this quota regulation can be "
"identified.") ]
string Name;
[Write, Description (
"Size is the maximum allowed amount of data in Bytes.") ]
uint32 Size;
};
// ==================================================================
// HostedFolderQuota
// ==================================================================
[Association, Version ("0.3"), Description (
"HostedFolderQuota is an association used to provide the "
"namespace scoping of FolderQuota.") ]
class Mail_HostedFolderQuota : CIM_Dependency {
[Min (1), Max (1), Override ("Antecedent"),
Description ("The hosting MailService.") ]
Mail_MailService REF Antecedent;
[Override ("Dependent"), Weak,
Description ("The hosted FolderQuota.") ]
Mail_FolderQuota REF Dependent;
};
// ==================================================================
// FolderQuotaOnFolder
// ==================================================================
[Association, Version("0.3"), Description (
"The association FolderQuotaOnFolder shows for which Folder a "
"FolderQuota Object is valid.") ]
class Mail_FolderQuotaOnFolder : CIM_Dependency {
[Override ("Antecedent"), Description (
"The pointer to the Quota Object") ]
Mail_FolderQuota REF Antecedent;
[Override ("Dependent"), Description (
"The Folder the Quota is valid for") ]
Mail_Folder REF Dependent;
};
// ==================================================================
// FolderQuotaForGroup
// ==================================================================
[Association, Version("0.4"), Description (
"The association FolderQuotaForAccount shows for which "
"MailAccount a Quota Object is valid.") ]
class Mail_QuotaForGroup : CIM_Dependency {
[Override ("Antecedent"), Description (
"The pointer to the Quota Object") ]
Mail_FolderQuota REF Antecedent;
[Override ("Dependent"), Description (
"The Account the Quota is valid for") ]
Mail_MailGroup REF Dependent;
};
Im folgenden findet sich noch das README-File
zum implementierten Teil dieser Arbeit. Das Paket kann
von der SBLIM-Homepage der IBM unter der URL
http://oss.software.ibm.com/sblim/ heruntergeladen werden -- der
Dateiname
lautet sblim-mail-0.1.2.tar.gz.
SBLIM Mail Service Intrumentation README
=========================================
20.11.2002
-----------------------------------------
($Id: node14.html,v 1.1 2003/12/29 08:46:15 kjaehne Exp $)
1) About
---------
These pieces of code are the result of the practical part of my diploma
thesis in medical informatics. Writing this instrumentation was
initiated by Thinking Objects Software GmbH - the company for which I'm
writing the diploma thesis.
In previous projects there was an effort towards manageability of a
large scaled farm of Linux servers using an own transport protocol,
modified versions of the services of interest and an own managment
schema.
Now CIM has shown up as an object orientated method for systems
managment. The goals of this project are:
* can we find a generic management model for completely different
implementations of a rather complex kind of server system.
* can CIM be used to perform application managment tasks?
For the first goal we chose to write a management schema for a mail
server system, where various types of software are used, which are all
configured in a different manner. The result of the schema design can be
found in the mof/ directory, with a PDF of the UML representation and
the MOF file.
For the second goal providers were written using IBM's Native Provider
Interface for a CIMOM-independant implementation. A base functionality
has been implemented for Cyrus IMAPd and for Samsung Contact. It offers
the following features:
* display mail server properties, such as numer of active users
* start, stop and reload configuration of mail server
* view virtual domains hosted my a mail server
* display, add and delete user accounts
* view membership of a user in a virtual domain
* view properties and personal membership of mailboxes
* display, add and delete mail folders
The providers can be found in the directories cyrus/ and contact/.
! DISCLAIMER !
---------------
As mentioned above this project is just a design study to evaluate if
CIM can be used for application mangement using a generic object schema.
So please keep in mind that:
* This implemetation has no base configurability, e.g. of path names!
* There is quite a lack of internal error checking and error detection!
* We can not guarantee if this software has any benefit at all for you!
2) Requirements
----------------
To use this package you need a CIMOM that has support for NPI (the
Native Provider Interface) and the Linux Base Instrumentation
(sblim-base) installed. sblim-base is needed for some associations, and
for the CimBase library. The package has been tested with OpenWBEM and
the SNIA CIMOM. Makefiles are provides for both of them.
If you are using OpenWBEM you need at least Version 2.0 with some
patches applied (see mailing list sblim-devel). Use at least sblim-base
version 0.7.
For the managed part you need either Cyrus IMAPd, which was tested with
version 2.1.9 or Samsung Contact (formely known as HP OpenMail), which
was tested with version 7.1.
3) Contacting the author
-------------------------
You may contact the author by:
e-mail: Klaus.Jaehne@to.com
mail: Klaus Jaehne
Thinking Objects Software GmbH
70825 Stuttgart-Korntal
Germany
![[*]](footnote.png)