// ===================================================================
// Title:       Interoperability MOF Specification 2.6
// Filename:    CIM_Interop26.mof
// Version:     2.6.0
// Status:      Final
// Date:        06/04/2002
// ===================================================================
// Copyright 2001-2002 Distributed Management Task Force, Inc. (DMTF).
// 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.
// ===================================================================
// Description: The object classes below are listed in an order that
//              avoids forward references. Required objects, defined 
//              by other working groups, are omitted.
// ==================================================================
//
// 09 May 2002 - Version 2.6 Final
//    CR831 - Add Write qualifier to applicable properties
//    CR746 - Add Version qualifier to all classes
//	CR712 - Add Required qualifier where appropriate
//	CR693 - Make ObjectManager classes more general purpose
//	CR613 - Add new Type to IdentificationFormats Field of 
//            CIM_SystemIdentification Class 
//
// 21 June 2001 - Version 2.6 Preliminary
//	CR610 - Create CIM_Namespace and associated objects 
//    CR603 - Create CIM_ObjectManager and associated objects 
// ==================================================================

// ==================================================================
// Pragmas
// ==================================================================
#pragma Locale ("en_US")

// ==================================================================
// WBEMService
// ================================================================== 
    [Abstract, Version("2.6.0"), Description ( 
        "An abstract class for WBEM services such as the "
        "ObjectManager (CIM Server), Providers, protocol adapters, "
        "or other pluggable components. A type of CIM_Service "
        "that provides associated capabilities and details about the "
        "communication capabilities, namespaces, etc. for a specific "
        "WBEMService.") ]
class CIM_WBEMService : CIM_Service { 
};


// ================================================================== 
// ObjectManager 
// ==================================================================
    [Version("2.6.0"), Description ( 
        "A type of CIM_Service that defines the capabilities of the "
        "CIM Server in which this ObjectManager class resides. Details "
        "related to communicating with the ObjectManager, and the "
        "Manager's basic capabilities, are stored in instances of the "
        "associated CommunicationMechanism class available through the "
        "CommMechanismForManager association. It is assumed that "
        "Basic Read operations must be supported by all "
        "ObjectManager's in order to retrieve any additional "
        "detail.") ] 
class CIM_ObjectManager : CIM_WBEMService { 
};


// ================================================================== 
// ObjectManagerCommunicationMechanism 
// ==================================================================
    [Version("2.6.0"), Description ( 
        "The class, ObjectManagerCommunicationMechanism, describes "
        "access to an ObjectManager. It describes a protocol and "
        "data encoding that can be used for communication. When all "
        "instances of this class are enumerated for an ObjectManager "
        "(using the CommMechanismForManager association), all possible "
        "protocol and encoding schemes will be known. Also, specific "
        "capabilities (for example, basic read or query) that are "
        "supported in the protocol/encoding are described - using the "
        "ProfilesSupported property.") ] 
class CIM_ObjectManagerCommunicationMechanism : 
 CIM_ServiceAccessPoint {

        [Required, Description ( 
	    "CommunicationMechanism describes an encoding and protocol " 
          "which can be used to communicate with the ObjectManager. "
          "At this time, only one encoding and protocol are standardized "
          "by the DMTF - \"CIM-XML\". If this is supported by an "
          "ObjectManager, the specified string should be indicated. "
          "Other 'standard' strings may be defined. In addition, a vendor "
          "specific encoding/protocol string may be used."), 
         ValueMap {"0", "1", "2"}, 
         Values {"Unknown", "Other", "CIM-XML"} ] 
    uint16 CommunicationMechanism; 

        [Description (
          "A free-form string providing a description of the "
          "supported protocols when 1, \"Other\", is specified in "
          "the CommunicationMechanism."),
         ModelCorrespondence {
          "CIM_ObjectManagerCommunicationMechanism.CommunicationMechanism"} ]
    string OtherCommunicationMechanismDescription;

        [Required, Description ( 
          "Enumerated array describing the types of operations " 
          "supported by the ObjectManager, using this encoding/protocol. "
          "The enumeration is based on the Functional Profiles defined "
          "for conformance in the DMTF document, Specification for CIM "
          "Operations over HTTP."), 
         ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, 
         Values {"Unknown", "Other", "Basic Read", "Basic Write", 
          "Schema Manipulation", "Instance Manipulation", 
          "Association Traversal", "Query Execution", 
          "Qualifier Declaration", "Indications"} ] 
    uint16 ProfilesSupported[]; 

        [Description (
          "A free-form string providing a description of the "
          "supported operations when 1, \"Other\", is specified in "
          "the ProfilesSupported array."),
	   ModelCorrespondence {
	    "CIM_ObjectManagerCommunicationMechanism.ProfilesSupported"}	]
    string OtherProfileDescription;

        [Required, Description ( 
          "Boolean indicating whether the ObjectManager supports " 
          "multiple operation requests (TRUE) or only simple requests " 
          "(FALSE).") ] 
    boolean MultipleOperationsSupported; 

        [Required, Description ( 
          "Enumerated array describing the types of authentication " 
          "supported by the ObjectManager, using this encoding/protocol. " 
          "The defined values represent the authentication defined in " 
          "the DMTF document, Specification for CIM Operations over HTTP."),
         ValueMap {"0", "1", "2", "3", "4"}, 
	   Values {"Unknown", "Other", "None", "Basic", "Digest"} ] 
    uint16 AuthenticationMechanismsSupported[]; 

        [Description (
          "A free-form string providing a description of the "
          "supported mechanism when 1, \"Other\", is specified in "
          "the AuthenticationMechanismsSupported array."),
	   ModelCorrespondence {
	    "CIM_ObjectManagerCommunicationMechanism."
          "AuthenticationMechanismsSupported"} ]
    string OtherAuthenticationDescription;
};


// ================================================================== 
// CIMXMLCommunicationMechanism 
// ==================================================================
    [Version("2.6.0"), Description ( 
        "This class specializes ObjectManagerCommunicationMechanism, "
        "adding properties specific to the CIM-XML protocol (XML "
        "encoding and CIM Operations).") ] 
class CIM_CIMXMLCommunicationMechanism : 
 CIM_ObjectManagerCommunicationMechanism {
 
        [Override ("CommunicationMechanism"), Required ]
    uint16 CommunicationMechanism = 2; 

        [Required, Description ( 
          "Enumeration describing the CIM-XML protocol version "
          "supported by the ObjectManager."), 
         ValueMap {"0", "1"}, 
         Values {"Unknown", "1.0"} ] 
    uint16 CIMXMLProtocolVersion; 

        [Required, Description ( 
          "Describes whether the CIM Server is strictly validating "
          "(validates the XML document against the DTD) or not "
          "(loosely validating).") ] 
    boolean CIMValidated;
};


// ================================================================== 
// CommMechanismForManager 
// ================================================================== 
    [Association, Version("2.6.0"), Description ( 
        "CommMechanismForManager is an association between an "
        "ObjectManager and an ObjectManagerCommunicationMechanism "
        "class. The latter describes a possible encoding/protocol/"
        "set of operations for accessing the referenced "
        "ObjectManager.") ] 
class CIM_CommMechanismForManager : CIM_ServiceAccessBySAP {
 	
	  [Override ("Antecedent"), Min (1), Max (1), Description ( 
          "The specific ObjectManager whose communication mechanism "
          "is described.") ] 
    CIM_ObjectManager REF Antecedent; 

        [Override ("Dependent"), Min (1), Description (
          "The encoding/protocol/set of operations that may be used "
          "to communicate with the referenced ObjectManager.") ] 
    CIM_ObjectManagerCommunicationMechanism REF Dependent; 
}; 


// ==================================================================
// Namespace
// ================================================================== 
    [Version("2.6.0"), Description (
	  "Namespace provides a domain (in other words, a container), "
        "in which the instances [of a class] are guaranteed to be "
        "unique per the KEY qualifier definitions.  It is named "
        "relative to the CIM_ObjectManager implementation that "
        "provides such a domain.") ]
class CIM_Namespace : CIM_ManagedElement {
	
	  [Propagated("CIM_ObjectManager.SystemCreationClassName"),
	   Key, MaxLen (256),
	   Description ("The scoping System's CreationClassName.") ]
   string SystemCreationClassName;

	  [Propagated("CIM_ObjectManager.SystemName"),
	   Key, MaxLen (256),
	   Description ("The scoping System's Name.") ]
   string SystemName;

	  [Propagated ("CIM_ObjectManager.CreationClassName"), Key,
	   MaxLen (256), Description (
          "The scoping ObjectManager's CreationClassName.") ]
   string ObjectManagerCreationClassName;

        [Propagated ("CIM_ObjectManager.Name"), Key,
	   MaxLen (256), Description (
          "The scoping ObjectManager's Name.") ]
   string ObjectManagerName;

        [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 to uniquely identify the Namespace within "
          "the ObjectManager.") ]
   string Name;

        [Required, Write, Description (
          "Enumeration indicating the organization/schema of the "
          "Namespace's objects. For example, they may be instances "
          "of classes of a specific CIM version."),
         ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "200", "201", "202"},
	   Values {"Unknown", "Other", "CIM 1.0", "CIM 2.0",	
	    "CIM 2.1", "CIM 2.2", "CIM 2.3", "CIM 2.4", "CIM 2.5",
	    "CIM 2.6", "DMI Recast", "SNMP Recast", "CMIP Recast"},
	   ModelCorrespondence {"CIM_Namespace.DescriptionOfClassInfo"} ]
   uint16 ClassInfo;

	  [Write, Description (
          "A string providing more detail (beyond the general "
          "classification in ClassInfo) for the object hierarchy of "
	    "the Namespace."),
	   ModelCorrespondence {"CIM_Namespace.ClassInfo"} ]
   string DescriptionOfClassInfo;
};

 
// ==================================================================
// SystemIdentification
// ================================================================== 
    [Version("2.6.0"), Description (
	  "A Namespace may represent data for one or many systems, "
        "that are local, remote (different than the system on which "
        "the ObjectManager is running) or aggregated. The System"
        "Identification class provides enough data to identify the "
        "system(s) represented in the Namespace. It is weak to "
        "the Namespace.") ] 
class CIM_SystemIdentification : CIM_ManagedElement {

	  [Propagated("CIM_Namespace.SystemCreationClassName"),
	   Key, MaxLen (256),
	   Description ("The scoping System's CreationClassName.") ]
   string SystemCreationClassName;

	  [Propagated("CIM_Namespace.SystemName"),
	   Key, MaxLen (256),
	   Description ("The scoping System's Name.") ]
   string SystemName;

	  [Propagated ("CIM_Namespace.ObjectManagerCreationClassName"), 
	   Key, MaxLen (256), Description (
          "The scoping ObjectManager's CreationClassName.") ]
   string ObjectManagerCreationClassName;

        [Propagated ("CIM_Namespace.ObjectManagerName"), Key,
         MaxLen (256), Description (
          "The scoping ObjectManager's Name.") ]
   string ObjectManagerName;

        [Propagated ("CIM_Namespace.CreationClassName"), 
         Key, MaxLen (256), Description (
          "The scoping Namespace's CreationClassName.") ]
   string NamespaceCreationClassName;

        [Propagated ("CIM_Namespace.Name"), Key,
         MaxLen (256), Description (
          "The scoping Namespace's Name.") ]
   string NamespaceName;

        [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 uniquely identifying the name of the system "
          "represented in the Namespace.") ]
   string Name;

        [Required, Write, Description (
          "Enumeration indicating the format of the system "
          "identification and/or addressing information."), 
         ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11"}, 
         Values {"Unknown", "Other", "Short DNS Name",
          "Fully qualified DNS Name",
          "Windows Domain Name", "NetWare Server Name",
          "Unix Hostname", "Globally Unique System Identifier",
          "IP Address", "Modem Dialup String", "MAC Address",
          "IPMI Address" },
	   ArrayType ("Indexed"),
	   ModelCorrespondence {
          "CIM_SystemIdentification.IdentificationData",
          "CIM_SystemIdentification.FormatDescription"} ]
   uint16 IdentificationFormats[];

        [Write, Description (
          "Strings further describing the format of the system "
          "identification information."),
         ArrayType ("Indexed"),
	   ModelCorrespondence {
          "CIM_SystemIdentification.IdentificationFormat",
          "CIM_SystemIdentification.IdentificationData"} ]
   string FormatDescriptions[];

	  [Description (
          "Strings containing the system identification information. "
          "The format is described by the corresponding array item in "
          "IdentificationFormats."),
	   ArrayType ("Indexed"),
	   ModelCorrespondence {
          "CIM_SystemIdentification.IdentificationFormat",
          "CIM_SystemIdentification.FormatDescription"} ]
   string IdentificationData[];  
};


// ==================================================================
// NamespaceInManager
// ==================================================================
    [Association, Version("2.6.0"), Description (
	  "NamespaceInManager is an association describing the "
        "Namespaces hosted by a CIM ObjectManager.") ]
class CIM_NamespaceInManager : CIM_Dependency {

	  [Override ("Antecedent"), Min (1), Max (1), Key, 
         Description ("The ObjectManager containing a Namespace.") ]
   CIM_ObjectManager REF Antecedent;
	
        [Override ("Dependent"), Weak,
         Description ("The Namespace in an ObjectManager.") ]
   CIM_Namespace REF Dependent;
};

 
// ==================================================================
// SystemInNamespace
// ==================================================================
    [Association, Version("2.6.0"), Description (
        "SystemInNamespace is an association that allows enumeration "
        "of the system(s) represented in a Namespace.") ]
class CIM_SystemInNamespace {	
	  [Key, Min (1), Max (1),
         Description (
	    "The Namespace containing management objects from "
          "one or more systems.") ]
   CIM_Namespace REF ManagedNamespace;
	
        [Key, Weak, Description (
          "Identification information for systems in the Namespace.") ]
   CIM_SystemIdentification REF Identification;

        [Required, Write, Description (
          "A list of enumerated values providing a high level "
          "description of the data contained and allowed in the "
          "Namespace. Additional clarification is provided in the "
          "DescriptionOfContainedData array."),
	   ArrayType ("Indexed"),
         ValueMap {"0", "1", "2", "3", "4"}, 
	   Values {"Unknown", "Other", "Local System Data",
          "Data Aggregated from Multiple Systems", "Proxied Data"},
         ModelCorrespondence {
	    "CIM_SystemInNamespace.DescriptionOfContainedData"} ]
   uint16 ScopeOfContainedData[];

        [Write, Description (
          "An array of free-form strings providing more detailed "
          "explanations for the data/objects contained in the "
          "Namespace, as described by the ContainedData array. "
          "Note, each entry of this array is related to the entry "
          "in the ContainedData array that is located at the same "
          "index."),
         ArrayType ("Indexed"),
         ModelCorrespondence {
          "CIM_SystemInNamespace.ScopeOfContainedData"} ]
   string DescriptionOfContainedData[];
};

 
// ==================================================================
// IdentificationOfManagedSystem    
// ==================================================================
    [Association, Version("2.6.0"), Description (
	  "IdentificationOfManagedSystem is an association that "	
	  "links the SystemIdentification object to the CIM_System(s) "
	  "that are being identified and represented in the "
        "Namespace.") ]
class CIM_IdentificationOfManagedSystem : CIM_Dependency {

        [Override ("Antecedent"), Max (1), 
         Description ("The System which is identified.") ]
   CIM_System REF Antecedent;

        [Override ("Dependent"), Max (1), 
         Description (
	    "The SystemIdentification information.") ]
   CIM_SystemIdentification REF Dependent;
};

// ==================================================================
// end of file
// ==================================================================
