// ===================================================================
// Title:       Core Settings 2.7
// Filename:    Core27_Settings.mof
// Version:     2.7.0
// Release:     Final
// Date:        03/31/03
// ===================================================================
// Copyright 1999-2003 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 Core Model defines basic management concepts. 
//              This file defines Settings/SettingData and their  
//              groupings, Profiles and Configurations.
//
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined 
//              by other working groups, are omitted.
// ==================================================================
// Change Log for v2.7 Final
// CR927 - Relax cardinality for the ManagedElement side of ElementProfile
//       - Update the description of Profile to reflect this change.
// CR968 - Remove the Experimental qualifier
// CR994 - Update description of InstanceID
//
// Change Log for v2.7
// CR723 - Introduce SettingData, ScopedSetttingData, ScopedSetting,
//         and ElementSettingData.
//       - Clarify the description of Setting to reconcile with 
//         SettingData.
// CR642 - Add Profile and ElementProfile
// ==================================================================

#pragma locale ("en_US")


// ===================================================================
// SettingData
// ===================================================================
[Abstract, Version ("2.7.0"), Description (
    "  The SettingData class represents configuration-related and "
    "operational parameters for one or more ManagedElement(s). A "
    "ManagedElement may have multiple SettingData objects associated "
    "with it. The current operational values for an Element's "
    "parameters are reflected by properties in the Element itself or "
    "by properties in its associations. These properties do not have "
    "to be the same values present in the SettingData object. For "
    "example, a modem may have a SettingData baud rate of 56Kb/sec "
    "but be operating at 19.2Kb/sec. \n"
    "  Note that the CIM_SettingData class is very similar to "
    "CIM_Setting, yet both classes are present in the model.  This is "
    "because many implementations have successfully used CIM_Setting. "
    "However, issues have arisen that could not be resolved without "
    "defining a new class.  Therefore, until a new major release "
    "occurs, both classes will exist in the model.  Refer to the Core "
    "White Paper for additional information.") ]
class CIM_SettingData : CIM_ManagedElement {
    
    [Key, Description (
        "Within the scope of the instantiating Namespace, InstanceID "
        "opaquely and uniquely identifies an instance of this class. "
        "In order to ensure uniqueness within the NameSpace, the "
        "value of InstanceID SHOULD be constructed using the "
        "following 'preferred' algorithm: \n"
        "   <OrgID>:<LocalID> \n"
        "Where <OrgID> and <LocalID> are separated by a colon ':', "
        "and where <OrgID> MUST include a copyrighted, trademarked "
        "or otherwise unique name that is owned by the business entity "
        "creating/defining the InstanceID, or is a registered ID that is "
        "assigned to the business entity by a recognized global "
        "authority (This is similar to the <Schema Name>_<Class Name> "
        "structure of Schema class names.) In addition, to ensure "
        "uniqueness <OrgID> MUST NOT contain a colon (':'). When using "
        "this algorithm, the first colon to appear in "
        "InstanceID MUST appear between <OrgID> and <LocalID>.  \n"
        "   <LocalID> is chosen by the business entity and SHOULD not be "
        "re-used to identify different underlying (real-world) elements. "
        "If the above 'preferred' algorithm is not used, the defining "
        "entity MUST assure that the resultant InstanceID is not "
        "re-used across any InstanceIDs produced by this or other "
        "providers for this instance's NameSpace. \n"
        "For DMTF defined instances, the 'preferred' algorithm MUST be "
        "used with the <OrgID> set to 'CIM'.") ]        
    string InstanceID;

    [Override ("ElementName"), Required, Description (
        "The user friendly name for this instance of SettingData. "
        "In addition, the user friendly name can be used as a "
        "index property for a search of query.  (Note:  Name "
        "does not have to be unique within a namespace.)") ]
    string ElementName;
};


// ===================================================================
// ScopedSettingData
// ===================================================================
[Abstract, Version ("2.7.0"), Description (
    "The ScopedSettingData class represents the general concept of "
    "SettingData which is scoped/contained by a ManagedElement "
    "(i.e. settings that are specifically defined for a system, "
    "device, etc). ScopedSettingData is tied to a ManagedElement using "
    "the ScopedSetting association.  Note that the cardinality of the "
    "ManagedElement reference is Min(1), Max(1). This cardinality "
    "mandates the instantiation of the ScopedSetting association for "
    "the referenced instance of ScopedSettingData.  ScopedSetting "
    "describes the existence requirements and context for the "
    "referenced instance of ManagedElement.  Specifically, the "
    "ManagedElement MUST exist and provides the context for the "
    "ScopedSettingData.") ]
class CIM_ScopedSettingData : CIM_SettingData {
};


// ===================================================================
// ScopedSetting
// ===================================================================
[Association, Version ("2.7.0"), Description (
    "ScopedSetting defines a setting in the context of the Managed"
    "Element which it resides.") ]
class CIM_ScopedSetting : CIM_Dependency {
    
    [Override ("Antecedent"), Min(1), Max (1), 
        Description ("The scoping ManagedElement.") ]
    CIM_ManagedElement REF Antecedent;
    
    [Override ("Dependent"), 
        Description ("The setting defined for the ManagedElement.") ]
    CIM_ScopedSettingData REF Dependent;
};


// ===================================================================
// ElementSettingData
// ===================================================================
[Association, Version ("2.7.0"), Description (
    "ElementSettingData represents the association between "
    "ManagedElements and applicable setting data. This "
    "association also describes whether this is a default "
    "or current setting.") ]
class CIM_ElementSettingData {
    
    [Key, Description (
        "The managed element.") ]
    CIM_ManagedElement REF ManagedElement;
    
    [Key, Description (
        "The SettingData object associated with the element.") ]
    CIM_SettingData REF SettingData;
    
    [Description (
        "An enumerated integer indicating that the referenced "
        "setting is a default setting for the element, or that "
        "this information is unknown."),
        ValueMap {"0", "1", "2"}, 
        Values {"Unknown", "Is Default", "Is Not Default"} ]
    uint16 IsDefault;
   
   [Description (
        "An enumerated integer indicating that the referenced "
        "setting is currently being used in the operation "
        "of the element, or that this information is unknown."),
    ValueMap {"0", "1", "2"}, 
    Values {"Unknown", "Is Current", "Is Not Current"} ]
    uint16 IsCurrent;
};


// ==================================================================
// Profile
// ================================================================== 
[Version ("2.7.0"), Description (   
    "   Profile specifies a general collection of Settings/SettingData "
    "that are logically grouped together. Note that the CIM_Profile "
    "class uses simplified naming/identity and collection algorithms, "
    "as compared to CIM_Configuration.  The settings are 'collected' "
    "into the Profile using the MemberOfCollection association. Note "
    "that a Profile obtains its setting data and other necessary "
    "information from collected Setting/SettingData instances, and "
    "by the definition of additional properties in subclasses. "
    "One example of a Profile is to define the collection of "
    "settings for a particular person. Another is to define the "
    "collection of settings appropriate when initializing a system. \n"
    "\n"
    "   Profile is tied to a ManagedElement using the ElementProfile "
    "association.  The ManagedElement provides context for the "
    "Profile, and the settings collected by Profile SHOULD be "
    "settings of the associated ManagedElement.  Note that a "
    "ManagedElement MAY NOT exist when the Profile is "
    "instantiated.  This is true when the Profile is used in the "
    "creation of the real world entity represented by (and then "
    "instantiated in) the ManagedElement.") ]
class CIM_Profile : CIM_Collection {

    [Key, Description (
        "Within the scope of the instantiating Namespace, InstanceID "
        "opaquely and uniquely identifies an instance of this class. "
        "In order to ensure uniqueness within the NameSpace, the "
        "value of InstanceID SHOULD be constructed using the "
        "following 'preferred' algorithm: \n"
        "   <OrgID>:<LocalID> \n"
        "Where <OrgID> and <LocalID> are separated by a colon ':', "
        "and where <OrgID> MUST include a copyrighted, trademarked "
        "or otherwise unique name that is owned by the business entity "
        "creating/defining the InstanceID, or is a registered ID that is "
        "assigned to the business entity by a recognized global "
        "authority (This is similar to the <Schema Name>_<Class Name> "
        "structure of Schema class names.) In addition, to ensure "
        "uniqueness <OrgID> MUST NOT contain a colon (':'). When using "
        "this algorithm, the first colon to appear in "
        "InstanceID MUST appear between <OrgID> and <LocalID>.  \n"
        "   <LocalID> is chosen by the business entity and SHOULD not be "
        "re-used to identify different underlying (real-world) elements. "
        "If the above 'preferred' algorithm is not used, the defining "
        "entity MUST assure that the resultant InstanceID is not "
        "re-used across any InstanceIDs produced by this or other "
        "providers for this instance's NameSpace. \n"
        "For DMTF defined instances, the 'preferred' algorithm MUST be "
        "used with the <OrgID> set to 'CIM'.") ]        
    string InstanceID;
};

 
// ===================================================================
// ElementProfile
// ===================================================================
[Association, Version ("2.7.0"), Description (
    "ElementProfile represents the association between "
    "ManagedElements and the Profiles (collection of "
    "settings) defined for them.  This association describes that "
    "the settings collected by the Profile apply to the "
    "associated ManagedElement.") ]
class CIM_ElementProfile {

   [Key, Description (
       "The managed element.") ]
   CIM_ManagedElement REF ManagedElement;

   [Key, Description (
       "The Profile object associated with the element.") ]
    CIM_Profile REF Profile;
};


// ===================================================================
// Setting
// ===================================================================
[Abstract, Version ("2.7.0"), Description (
    "  The Setting class represents configuration-related and "
    "operational parameters for one or more ManagedSystemElement(s). "
    "An Element may have multiple Setting objects associated with it. "
    "The current operational values for an Element's parameters are "
    "reflected by properties in the Element itself or by properties in "
    "its associations. These properties do not have to be the same "
    "values present in the Setting object. For example, a modem may "
    "have a Setting baud rate of 56Kb/sec but be operating at "
    "19.2Kb/sec. \n"
    "  Note that the CIM_SettingData class is very similar to "
    "CIM_Setting, yet both classes are present in the model.  This is "
    "because many implementations have successfully used CIM_Setting. "
    "However, issues have arisen that could not be resolved without "
    "defining a new class.  Therefore, until a new major release "
    "occurs, both classes will exist in the model.  Refer to the Core "
    "White Paper for additional information.") ]
class CIM_Setting : CIM_ManagedElement {
      
    [MaxLen (256), Description (
        "The identifier by which the Setting object is known.") ]
    string SettingID;
    
    [Description (
        "The VerifyOKToApplyToMSE method is used to verify that "
        "this Setting can be 'applied' to the referenced Managed"
        "SystemElement, at the given time or time interval. This "
        "method takes three input parameters: MSE (the Managed"
        "SystemElement that is being verified), TimeToApply (which, "
        "being a datetime, can be either a specific time or a time "
        "interval), and MustBeCompletedBy (which indicates the "
        "required completion time for the method). The return "
        "value should be 0 if it is OK to apply the Setting, 1 if "
        "the method is not supported, 2 if the Setting cannot be "
        "applied within the specified times, and any other number "
        "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 VerifyOKToApplyToMSE(
        [IN] CIM_ManagedSystemElement REF MSE, 
        [IN] datetime TimeToApply, 
        [IN] datetime MustBeCompletedBy);
      
    [Description (
        "  The ApplyToMSE method performs the actual application of "
        "the Setting to the referenced ManagedSystemElement. It "
        "takes three input parameters: MSE (the ManagedSystem"
        "Element to which the Setting is being applied), "
        "TimeToApply (which, being a datetime, can be either a "
        "specific time or a time interval), and MustBeCompletedBy "
        "(which indicates the required completion time for the "
        "method). Note that the semantics of this method are that "
        "individual Settings are either wholly applied or not "
        "applied at all to their target ManagedSystemElement. The "
        "return value should be 0 if the Setting is successfully "
        "applied to the referenced ManagedSystemElement, 1 if the "
        "method is not supported, 2 if the Setting was not applied "
        "within the specified times, and any other number 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. \n"
        "  Note: If an error occurs in applying the Setting to a "
        "ManagedSystemElement, the Element must be configured as "
        "when the 'Apply' attempt began. That is, the Element "
        "should NOT be left in an indeterminate state.") ]
    uint32 ApplyToMSE(
        [IN] CIM_ManagedSystemElement REF MSE, 
        [IN] datetime TimeToApply, 
        [IN] datetime MustBeCompletedBy);
      
    [Description (
        "  The VerifyOKToApplyToCollection method is used to verify "
        "that this Setting can be 'applied' to the referenced "
        "Collection of ManagedSystemElements, at the given time "
        "or time interval, without causing adverse effects to "
        "either the Collection itself or its surrounding "
        "environment. The net effect is to execute the "
        "VerifyOKToApply method against each of the Elements "
        "aggregated by the Collection. This method takes three "
        "input parameters: Collection (the Collection of Managed"
        "SystemElements that is being verified), TimeToApply (which, "
        "being a datetime, can be either a specific time or a time "
        "interval), and MustBeCompletedBy (which indicates the "
        "required completion time for the method). The return "
        "value should be 0 if it is OK to apply the Setting, 1 if "
        "the method is not supported, 2 if the Setting cannot be "
        "applied within the specified times, and any other number if "
        "an error occurred. One output parameter is defined - "
        "CanNotApply - which is a string array that lists the keys "
        "of the ManagedSystemElements to which the Setting can NOT be "
        "applied. This enables those Elements to be revisited and "
        "either fixed, or other corrective action taken. \n"
        "  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 VerifyOKToApplyToCollection (
        [IN] CIM_CollectionOfMSEs REF Collection,
        [IN] datetime TimeToApply, 
        [IN] datetime MustBeCompletedBy,
        [IN (false), OUT] string CanNotApply[]);
    
    [Description (
        "  The ApplyToCollection method performs the application of "
        "the Setting to the referenced Collection of ManagedSystem"
        "Elements. The net effect is to execute the ApplyToMSE "
        "method against each of the Elements aggregated by the "
        "Collection. If the input value ContinueOnError is FALSE, "
        "this method applies the Setting to all Elements in the "
        "Collection until it encounters an error, in which case it "
        "stops execution, logs the key of the Element that caused "
        "the error in the CanNotApply array, and issues a return code "
        "of 2. If the input value ContinueOnError is TRUE, then this "
        "method applies the Setting to all the ManagedSystemElements "
        "in the Collection, and reports the failed Elements in the "
        "array, CanNotApply. For the latter, processing will continue "
        "until the method is applied to all Elements in the "
        "Collection, regardless of any errors encountered. The key of "
        "each ManagedSystemElement to which the Setting could not be "
        "applied is logged into the CanNotApply array. This method "
        "takes four input parameters: Collection (the Collection of "
        "Elements to which the Setting is being applied), TimeToApply "
        "(which, being a datetime, can be either a specific time or a "
        "time interval), ContinueOnError (TRUE means to continue "
        "processing on encountering an error), and MustBeCompletedBy "
        "(which indicates the required completion time for the "
        "method). The return value should be 0 if the Setting is "
        "successfully applied to the referenced Collection, 1 if the "
        "method is not supported, 2 if the Setting was not applied "
        "within the specified times, 3 if the Setting cannot be "
        "applied using the input value for ContinueOnError, and any "
        "other number if an error occurred. One output parameter is "
        "defined, CanNotApplystring, which is an array that lists "
        "the keys of the ManagedSystemElements to which the Setting "
        "was NOT able to be applied. This output parameter has "
        "meaning only when the ContinueOnError parameter is TRUE. \n"
        "  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. \n"
        "Note: if an error occurs in applying the Setting to a "
        "ManagedSystemElement in the Collection, the Element must be "
        "configured as when the 'Apply' attempt began. That is, the "
        "Element should NOT be left in an indeterminate state.") ]
    uint32 ApplyToCollection(
        [IN] CIM_CollectionOfMSEs REF Collection, 
        [IN] datetime TimeToApply, 
        [IN] boolean ContinueOnError,
        [IN] datetime MustBeCompletedBy, 
        [IN (false), OUT] string CanNotApply[]);
    
    [Description ( 
        "The VerifyOKToApplyIncrementalChangeToMSE method " 
        "is used to verify that a subset of the properties in " 
        "this Setting can be 'applied' to the referenced Managed" 
        "SystemElement, at the given time or time interval. This " 
        "method takes four input parameters: MSE (the Managed" 
        "SystemElement that is being verified), TimeToApply (which, " 
        "being a datetime, can be either a specific time or a time " 
        "interval), MustBeCompletedBy (which indicates the " 
        "required completion time for the method), and a " 
        "PropertiesToApply array (which contains a list of the " 
        "property names whose values will be verified.) " 
        "If the array is null, empty or contains the string \"ALL\" " 
        "as a property name, then all Settings properties shall be " 
        "verified.  If it is set to \"NONE\", then no Settings " 
        "properties will be verified. The return " 
        "value should be 0 if it is OK to apply the Setting, 1 if " 
        "the method is not supported, 2 if the Setting cannot be " 
        "applied within the specified times, and any other number " 
        "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 VerifyOKToApplyIncrementalChangeToMSE( 
        [IN] CIM_ManagedSystemElement REF MSE, 
        [IN] datetime TimeToApply, 
        [IN] datetime MustBeCompletedBy, 
        [IN] string PropertiesToApply[]); 
    
    [Description ( 
        "  The ApplyIncrementalChangeToMSE method performs the " 
        "actual application of a subset of the properties in " 
        "the Setting to the referenced ManagedSystemElement. It " 
        "takes four input parameters: MSE (the ManagedSystem" 
        "Element to which the Setting is being applied), " 
        "TimeToApply (which, being a datetime, can be either a " 
        "specific time or a time interval), MustBeCompletedBy " 
        "(which indicates the required completion time for the " 
        "method), and a PropertiesToApply array (which contains a "
        "list of the property names whose values will be applied.) If a " 
        "property is not in this list, it will be ignored by the Apply. " 
        "If the array is null, empty or contains the string \"ALL\" " 
        "as a property name, then all Settings properties shall be " 
        "applied.  If it is set to \"NONE\", then no Settings " 
        "properties will be applied. \n" 
        "  Note that the semantics of this method are that " 
        "individual Settings are either wholly applied or not " 
        "applied at all to their target ManagedSystemElement. The " 
        "return value should be 0 if the Setting is successfully " 
        "applied to the referenced ManagedSystemElement, 1 if the " 
        "method is not supported, 2 if the Setting was not applied " 
        "within the specified times, and any other number 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. \n" 
        "  Note: If an error occurs in applying the Setting to a " 
        "ManagedSystemElement, the Element must be configured as " 
        "when the 'Apply' attempt began. That is, the Element " 
        "should NOT be left in an indeterminate state.") ] 
    uint32 ApplyIncrementalChangeToMSE( 
        [IN] CIM_ManagedSystemElement REF MSE, 
        [IN] datetime TimeToApply, 
        [IN] datetime MustBeCompletedBy, 
        [IN] string PropertiesToApply[]); 
    
    [Description ( 
        "  The VerifyOKToApplyIncrementalChangeToCollection method " 
        "is used to verify that a subset of the properties in " 
        "this Setting can be 'applied' to the referenced " 
        "Collection of ManagedSystemElements, at the given time " 
        "or time interval, without causing adverse effects to " 
        "either the Collection itself or its surrounding " 
        "environment. The net effect is to execute the " 
        "VerifyOKToApplyIncrementalChangeToMSE method " 
        "against each of the Elements " 
        "aggregated by the Collection. This method takes three " 
        "input parameters: Collection (the Collection of Managed" 
        "SystemElements that is being verified), TimeToApply (which, " 
        "being a datetime, can be either a specific time or a time " 
        "interval), MustBeCompletedBy (which indicates the " 
        "required completion time for the method), and a " 
        "PropertiesToApply array (which contains a list of the " 
        "property names whose values will be verified. " 
        "If they array is null or empty or constains the string \"all\" " 
        "as a property name then all Settings properties shall be " 
        "verified.  If it is set to \"none\" then no Settings properties " 
        "will be verified). The return " 
        "value should be 0 if it is OK to apply the Setting, 1 if " 
        "the method is not supported, 2 if the Setting cannot be " 
        "applied within the specified times, and any other number if " 
        "an error occurred. One output parameter is defined - " 
        "CanNotApply - which is a string array that lists the keys of " 
        "the ManagedSystemElements to which the Setting can NOT be " 
        "applied. This enables those Elements to be revisited and " 
        "either fixed, or other corrective action taken. \n" 
        "  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 VerifyOKToApplyIncrementalChangeToCollection ( 
        [IN] CIM_CollectionOfMSEs REF Collection, 
        [IN] datetime TimeToApply, 
        [IN] datetime MustBeCompletedBy, 
        [IN] string PropertiesToApply[], 
        [IN (false), OUT] string CanNotApply[]); 
    
    [Description ( 
        "  The ApplyIncrementalChangeToCollection method performs " 
        "the application of a subset of the properties in this " 
        "Setting to the referenced Collection of ManagedSystem" 
        "Elements. The net effect is to execute the " 
        "ApplyIncrementalChangeToMSE " 
        "method against each of the Elements aggregated by the " 
        "Collection. If the input value ContinueOnError is FALSE, " 
        "this method applies the Setting to all Elements in the " 
        "Collection until it encounters an error, in which case it " 
        "stops execution, logs the key of the Element that caused " 
        "the error in the CanNotApply array, and issues a return code " 
        "of 2. If the input value ContinueOnError is TRUE, then this " 
        "method applies the Setting to all the ManagedSystemElements " 
        "in the Collection, and reports the failed Elements in the " 
        "array, CanNotApply. For the latter, processing will continue " 
        "until the method is applied to all Elements in the " 
        "Collection, regardless of any errors encountered. The key of " 
        "each ManagedSystemElement to which the Setting could not be " 
        "applied is logged into the CanNotApply array. This method " 
        "takes four input parameters: Collection (the Collection of " 
        "Elements to which the Setting is being applied), TimeToApply " 
        "(which, being a datetime, can be either a specific time or a " 
        "time interval), ContinueOnError (TRUE means to continue " 
        "processing on encountering an error), and MustBeCompletedBy " 
        "(which indicates the required completion time for the " 
        "method), and a PropertiesToApply array (which contains a list " 
        "of the property names whose values will be applied.) If a " 
        "property is not in this list, it will be ignored by the Apply. " 
        "If the array is null or empty or contains the string \"ALL\" " 
        "as a property name, then all Settings properties shall be " 
        "applied. If it is set to \"NONE\", then no Settings properties " 
        "will be applied. \n"
        "  The return value should be 0 if the Setting is " 
        "successfully applied to the referenced Collection, 1 if the " 
        "method is not supported, 2 if the Setting was not applied " 
        "within the specified time, 3 if the Setting cannot be " 
        "applied using the input value for ContinueOnError, and any " 
        "other number if an error occurred. One output parameter is " 
        "defined, CanNotApplystring, which is an array that lists " 
        "the keys of the ManagedSystemElements to which the Setting " 
        "was NOT able to be applied. This output parameter has " 
        "meaning only when the ContinueOnError parameter is TRUE. \n" 
        "  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. \n" 
        "  Note: if an error occurs in applying the Setting to a " 
        "ManagedSystemElement in the Collection, the Element must be " 
        "configured as when the 'Apply' attempt began. That is, the " 
        "Element should NOT be left in an indeterminate state.") ] 
    uint32 ApplyIncrementalChangeToCollection( 
        [IN] CIM_CollectionOfMSEs REF Collection, 
        [IN] datetime TimeToApply, 
        [IN] boolean ContinueOnError, 
        [IN] datetime MustBeCompletedBy, 
        [IN] string PropertiesToApply[], 
        [IN (false), OUT] string CanNotApply[]); 
};


// ===================================================================
// ElementSetting
// ===================================================================
[Association, Version ("2.6.0"), Description (
    "ElementSetting represents the association between Managed"
    "SystemElements and the Setting class(es) defined for them.") ]
class CIM_ElementSetting {
    
    [Key, Description (
        "The ManagedSystemElement.") ]
    CIM_ManagedSystemElement REF Element;
    
    [Key, Description (
        "The Setting object associated with the ManagedSystem"
        "Element.") ]
    CIM_Setting REF Setting;
};


// ===================================================================
// DefaultSetting
// ===================================================================
[Association, Version ("2.6.0"), Description (
    "DefaultSetting represents the association between a Managed"
    "SystemElement and the single Setting class that is defined "
    "to be the default setting for this Element.") ]
class CIM_DefaultSetting : CIM_ElementSetting {
    
    [Override ("Setting"), Max (1), Description (
        "The Setting object which is the default.") ]
    CIM_Setting REF Setting;
};


// ==================================================================
// CIM_SystemSetting
// ==================================================================
[Abstract, Version ("2.6.0"), Description (
    "CIM_SystemSetting represents the general concept of a "
    "CIM_Setting which is scoped by/weak to a System.") ]
class CIM_SystemSetting : CIM_Setting {

    [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 ("SettingID"), Key, 
        MaxLen (256) ]
    string SettingID;
};


// ==================================================================
// SettingForSystem
// ==================================================================
[Association, Version ("2.6.0"), Description (
    "CIM_SettingForSystem defines a Setting in the context "
    "of the System on which it resides.") ]
class CIM_SettingForSystem : CIM_Dependency {
    
    [Override ("Antecedent"), Max (1), Min (1),
        Description ("The hosting System.") ] 
    CIM_System REF Antecedent;
    
    [Override ("Dependent"), Weak,
        Description ("The Setting defined for the System.") ] 
    CIM_SystemSetting REF Dependent;
};


// ===================================================================
// Configuration
// ===================================================================
[Version ("2.6.0"), Description (
     "   The Configuration object allows the grouping of sets of "
     "parameters (defined in Setting objects) and dependencies for "
     "one or more ManagedSystemElements. It represents a certain "
     "behavior, or a desired functional state for the ManagedSystem"
     "Elements. Note that the CIM_Profile class uses simplified "
     "naming/identity and collection algorithms as compared to "
     "CIM_Configuration. \n"
     "   The desired functional state of the Configuration is "
     "typically driven by external requirements such as time or "
     "location. For example, to connect to a Mail System from "
     "'home', a dependency on a modem exists, but a dependency on "
     "a network adapter exists at 'work'. Settings for the "
     "pertinent LogicalDevices (in this example, POTSModem and "
     "NetworkAdapter) can be defined and aggregated by the "
     "Configuration. Therefore, two 'Connect to Mail' "
     "Configurations may be defined grouping the relevant "
     "dependencies and Setting objects.") ]
class CIM_Configuration : CIM_ManagedElement {
      [Key, MaxLen (256), Description (
        "The label by which the Configuration object is known.") ]
   string Name;
};


// ===================================================================
// ConfigurationComponent
// ===================================================================
[Association, Aggregation, Version ("2.6.0"), Description (
    "ConfigurationComponent aggregates 'lower-level' "
    "Configuration objects into a 'high-level' Configuration. "
    "This enables the assembly of complex Configurations by "
    "grouping together simpler ones. For example, a logon policy "
    "for the United States could consist of two Configuration "
    "groups, one for the east coast and one for the west coast. "
    "Each of these could in turn consist of multiple "
    "Configurations to handle different aspects of the logon "
    "process.") ]
class CIM_ConfigurationComponent {
    [Aggregate, Key, Description (
        "The Configuration that aggregates additional "
        "Configurations." ) ]
    CIM_Configuration REF ConfigGroup;
    
    [Key, Description (
        "A Configuration that is part of a 'higher-level' "
        "Configuration.") ]
    CIM_Configuration REF ConfigComponent;
};


// ===================================================================
// ElementConfiguration
// ===================================================================
[Association, Version ("2.6.0"), Description (
    "This association relates a Configuration object to one or "
    "more ManagedSystemElements. The Configuration object "
    "represents a certain behavior, or a desired functional state "
    "for the associated ManagedSystemElements.") ]
class CIM_ElementConfiguration {
    [Key, Description (
        "The ManagedSystemElement.") ]
    CIM_ManagedSystemElement REF Element;
    
    [Key, Description (
        "The Configuration object that groups the Settings and "
        "dependencies associated with the ManagedSystemElement.") ] 
    CIM_Configuration REF Configuration;
};


// ===================================================================
// CollectionConfiguration
// ===================================================================
[Association, Version ("2.6.0"), Description (
    "This association relates a Configuration object to one or "
    "more CollectionOfMSEs objects. The Configuration object "
    "represents a certain behavior, or a desired functional state "
    "for the associated Collection.") ]
class CIM_CollectionConfiguration {
    
    [Key, Description (
        "The CollectionOfMSEs.") ]
    CIM_CollectionOfMSEs REF Collection;
    
    [Key, Description (
        "The Configuration object that groups the Settings and "
        "dependencies associated with the Collection.") ]
    CIM_Configuration REF Configuration;
};


// ===================================================================
// DependencyContext
// ===================================================================
[Association, Aggregation, Version ("2.6.0"), Description (
    "This relationship associates a Dependency with one or more "
    "Configuration objects. For example, a ComputerSystem's "
    "dependencies could change based on the site/network to which "
    "the System is attached.") ]
class CIM_DependencyContext {

    [Aggregate, Key, Description (
        "The Configuration object that aggregates the Dependency.") ]
    CIM_Configuration REF Context;
    
    [Key, Description (
        "An aggregated Dependency.") ]
    CIM_Dependency REF Dependency;
};

     
// ===================================================================
// SettingContext
// ===================================================================
[Association, Aggregation, Version ("2.6.0"), Description (
    "This relationship associates Configuration objects with "
    "Setting objects. For example, a NetworkAdapter's Settings "
    "could change based on the site/network to which its hosting "
    "ComputerSystem is attached. In this case, the ComputerSystem "
    "would have two different Configuration objects, corresponding "
    "to the differences in network configuration for the two network "
    "segments. Configuration A would aggregate a Setting object for "
    "the NetworkAdapter when operating on segment \"ANet\", whereas "
    "Configuration B would aggregate a different NetworkAdapter "
    "Setting object, specific to segment \"BNet\". Note that many "
    "Settings of the computer are independent of the network "
    "Configuration. For example, both Configurations A and B would "
    "aggregate the same Setting object for the ComputerSystem's "
    "MonitorResolution.") ]
class CIM_SettingContext {
    [Aggregate, Key, Description (
        "The Configuration object that aggregates the Setting.") ]
    CIM_Configuration REF Context;
    
    [Key, Description (
        "An aggregated Setting.") ]
    CIM_Setting REF Setting;
};


// ===================================================================
// CollectionSetting
// ===================================================================
[Association, Version ("2.6.0"), Description (
    "CollectionSetting represents the association between a "
    "CollectionOfMSEs class and the Setting class(es) defined for "
    "them.") ]
class CIM_CollectionSetting {
    [Key, Description (
        "The CollectionOfMSEs.") ]
    CIM_CollectionOfMSEs REF Collection;
      
    [Key, Description (
        "The Setting object associated with the Collection.") ]
    CIM_Setting REF Setting;
};


// ==================================================================
// SystemConfiguration
// ==================================================================
[Version ("2.6.0"), Description (
    "CIM_SystemConfiguration represents the general concept "
    "of a CIM_Configuration which is scoped by/weak to a "
    "System. This class is a peer of CIM_Configuration since "
    "the key structure of Configuration is currently "
    "defined and cannot be modified with additional "
    "properties.") ]
class CIM_SystemConfiguration : CIM_ManagedElement {
    
    [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;
    
    [Key, MaxLen (256), Description (
        "The label by which the Configuration object is known.") ]
    string Name;
};
 

// ==================================================================
// ConfigurationForSystem
// ==================================================================
[Association, Version ("2.6.0"), Description (
    "CIM_ConfigurationForSystem defines a Configuration "
    "in the context of the System on which it resides.") ]
class CIM_ConfigurationForSystem : CIM_Dependency {
    [Override ("Antecedent"), Max (1), Min (1),
        Description ("The hosting System.") ] 
    CIM_System REF Antecedent;
    
    [Override ("Dependent"), Weak,
        Description ("The Configuration defined for the System.") ] 
    CIM_SystemConfiguration REF Dependent;
};


// ==================================================================
// SystemSettingContext
// ==================================================================
[Association, Aggregation, Version ("2.6.0"), Description (
    "This relationship associates System-specific Configuration "
    "objects with System-specific Setting objects, similar to the "
    "SettingContext association.") ]
class CIM_SystemSettingContext {
    
    [Aggregate, Key, Description (
        "The Configuration object that aggregates the Setting.") ]
    CIM_SystemConfiguration REF Context;
    
    [Key, Description (
        "An aggregated Setting.") ]
    CIM_SystemSetting REF Setting;
};


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