// ===================================================================
// Title:  Core Settings
// $State: Exp $
// $Date: 2004/08/15 05:55:36 $
// $Source: /cvsroot/wbemservices/open/mof/dmtf/2.9/Core_Settings.mof,v $
// $Revision: 1.1 $
// ===================================================================
//#pragma inLine ("Includes/copyright.inc")
// Copyright 1998-2004 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.
//#pragma inLine
// ===================================================================
// 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.9 Preliminary
// CR1333 - Add support for configuration "blobs" as a subclass of
//          SettingData.Also deprecate Save and Restore properties in
//          LogicalDevice
// CR1336 - Add TimeService and related classes. Deprecate CIM_TimeZone
// CR1378 - Deprecate CIM_Profile, CIM_Configuration
// 
// Change Log for v2.8 Final
// CR1128  - Addition of HostedDependency
// CR1223 - SysDev Omnibus CR - Minor MOF corrections.
// 
// 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.8.1000" ), 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. "
       "SettingData instances may be aggregated together into higher "
       "level SettingData objects using ConcreteComponent "
       "associations.")]
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;

      [Required, Override ( "ElementName" ), 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.8.0" ), Description (
       "ScopedSetting defines a setting in the context of the Managed "
       "Element which it resides.")]
class CIM_ScopedSetting : CIM_HostedDependency {

      [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.8.1000" ), 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
// ==================================================================
   [Deprecated { "CIM_SettingData", "CIM_Setting",
       "CIM_ConcreteComponent" }, Version ( "2.8.1000" ), 
    Description (
       "The use of CIM_Profile is deprecated in favor of aggregating "
       "instances of Setting or SettingData into 'higher' level "
       "Settings/SettingData objects, using the ConcreteComponent "
       "association. This simplifies the use of Settings/SettingData. "
       "With Profiles subclassing from Collection, separate "
       "associations were needed from an element to either its "
       "Profiles or Settings/ SettingData. This introduced unnecessary "
       "complexity and redundancy into the model. \n"
       "\n"
       "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 {

      [Deprecated { "CIM_SettingData.InstanceID",
          "CIM_Setting.SettingID" }, 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, Deprecated { "CIM_ElementSettingData",
       "CIM_ElementSetting" }, Version ( "2.8.1000" ), 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. \n"
       "\n"
       "The Profile class is being deprecated in lieu of using a "
       "ConcreteComponent relationship to indicate a hierarchy of "
       "Setting/SettingData instances. This allows the re-use of the "
       "element to Setting/SettingData associations, instead of "
       "defining a peer association specifically for Profiles.")]
class CIM_ElementProfile {

      [Deprecated { "CIM_ElementSettingData.ManagedElement",
          "CIM_ElementSetting.Element" }, Key, Description (
          "The managed element.")]
   CIM_ManagedElement REF ManagedElement;

      [Deprecated { "CIM_ElementSettingData.SettingData",
          "CIM_ElementSetting.Setting" }, Key, Description (
          "The Profile object associated with the element.")]
   CIM_Profile REF Profile;
};

// ===================================================================
// Setting
// ===================================================================
   [Abstract, Version ( "2.8.1000" ), 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. "
       "Setting instances may be aggregated together into higher level "
       "Setting objects using ConcreteComponent associations.")]
class CIM_Setting : CIM_ManagedElement {

      [Description (
          "The identifier by which the Setting object is known."), 
       MaxLen ( 256 )]
   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, Description (
             "The Managed SystemElement that is being verified.")]
      CIM_ManagedSystemElement REF MSE, 
         [IN, Description (
             "TimeToApply can be either a specific time or a time "
             "interval.")]
      datetime TimeToApply, 
         [IN, Description (
             "The required completion time for the method.")]
      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, Description (
             "The ManagedSystem Element to which the Setting is being "
             "applied.")]
      CIM_ManagedSystemElement REF MSE, 
         [IN, Description (
             "TimeToApply can be either a specific time or a time "
             "interval.")]
      datetime TimeToApply, 
         [IN, Description (
             "The required completion time for the method.")]
      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, Description (
             "The Collection of Managed SystemElements that is being "
             "verified.")]
      CIM_CollectionOfMSEs REF Collection, 
         [IN, Description (
             "TimeToApply can be either a specific time or a time "
             "interval.")]
      datetime TimeToApply, 
         [IN, Description (
             "The required completion time for the method.")]
      datetime MustBeCompletedBy, 
         [IN ( false ), OUT, Description (
             "A string array that lists the keys of the "
             "ManagedSystemElements to which the Setting can NOT be "
             "applied.")]
      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, Description (
             "The Collection of Managed SystemElements to be applied.")]
      CIM_CollectionOfMSEs REF Collection, 
         [IN, Description (
             "TimeToApply can be either a specific time or a time "
             "interval.")]
      datetime TimeToApply, 
         [IN, Description (
             "TRUE means to continue processing on encountering an "
             "error.")]
      boolean ContinueOnError, 
         [IN, Description (
             "The required completion time for the method.")]
      datetime MustBeCompletedBy, 
         [IN ( false ), OUT, Description (
             "A string array that lists the keys of the "
             "ManagedSystemElements to which the Setting was NOT be "
             "applied.")]
      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, Description (
             "The ManagedSystem Element for which the Setting is being "
             "verified.")]
      CIM_ManagedSystemElement REF MSE, 
         [IN, Description (
             "TimeToApply can be either a specific time or a time "
             "interval.")]
      datetime TimeToApply, 
         [IN, Description (
             "The required completion time for the method.")]
      datetime MustBeCompletedBy, 
         [IN, Description (
             "A list of the property names whose values will be "
             "verified.")]
      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, Description (
             "The ManagedSystem Element to which the Setting is being "
             "applied.")]
      CIM_ManagedSystemElement REF MSE, 
         [IN, Description (
             "TimeToApply can be either a specific time or a time "
             "interval.")]
      datetime TimeToApply, 
         [IN, Description (
             "The required completion time for the method.")]
      datetime MustBeCompletedBy, 
         [IN, Description (
             "A list of the property names whose values will be "
             "applied.")]
      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, Description (
             "The Collection of Managed SystemElements for which the "
             "setting is being verified.")]
      CIM_CollectionOfMSEs REF Collection, 
         [IN, Description (
             "TimeToApply can be either a specific time or a time "
             "interval.")]
      datetime TimeToApply, 
         [IN, Description (
             "The required completion time for the method.")]
      datetime MustBeCompletedBy, 
         [IN, Description (
             "A list of the property names whose values will be "
             "verified.")]
      string PropertiesToApply[], 
         [IN ( false ), OUT, Description (
             "A string array that lists the keys of the "
             "ManagedSystemElements to which the Setting can NOT be "
             "applied.")]
      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, Description (
             "The Collection of Elements to which the Setting is being "
             "applied.")]
      CIM_CollectionOfMSEs REF Collection, 
         [IN, Description (
             "A specific time or a time interval.")]
      datetime TimeToApply, 
         [IN, Description (
             "TRUE means to continue processing on encountering an "
             "error.")]
      boolean ContinueOnError, 
         [IN, Description (
             "This parameter indicates the required completion time "
             "for the method.")]
      datetime MustBeCompletedBy, 
         [IN, Description (
             "A list of the property names whose values will be "
             "verified.")]
      string PropertiesToApply[], 
         [IN ( false ), OUT, Description (
             "A string array that lists the keys of the "
             "ManagedSystemElements to which the Setting can NOT be "
             "applied.")]
      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 {

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

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

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

      [Key, Override ( "SettingID" ), MaxLen ( 256 )]
   string SettingID;
};


// ==================================================================
// SettingForSystem
// ==================================================================
   [Association, Version ( "2.8.0" ), Description (
       "CIM_SettingForSystem defines a Setting in the context of the "
       "System on which it resides.")]
class CIM_SettingForSystem : CIM_HostedDependency {

      [Override ( "Antecedent" ), Min ( 1 ), Max ( 1 ), Description (
          "The hosting System.")]
   CIM_System REF Antecedent;

      [Override ( "Dependent" ), Weak, Description (
          "The Setting defined for the System.")]
   CIM_SystemSetting REF Dependent;
};


// ===================================================================
// Configuration
// ===================================================================
   [Deprecated { "CIM_SettingData", "CIM_Setting" },
       Version ( "2.8.1000" ), 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. The use of CIM_Configuration is deprecated in favor "
       "of aggregating instances of Setting or SettingData into "
       "'higher' level Settings/SettingData objects, using the "
       "ConcreteComponent association. This simplifies the use of "
       "Settings/SettingData. With Configurations serving as "
       "aggregations of Settings (as defined by the Configuration "
       "Component relationship), separate associations were needed for "
       "the aggregation and to tie an element to either its "
       "Configurations or Settings/SettingData. This introduced "
       "unnecessary complexity and redundancy into the model. \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 {

      [Deprecated { "CIM_SettingData.InstanceID",
          "CIM_Setting.SettingID" }, Key, Description (
          "The label by which the Configuration object is known."), 
       MaxLen ( 256 )]
   string Name;
};


// ===================================================================
// ConfigurationComponent
// ===================================================================
   [Association, Deprecated { "CIM_ConcreteComponent" }, Aggregation,
    Version ( "2.8.1000" ), 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. \n"
       "\n"
       "The Configuration class is being deprecated in lieu of using a "
       "ConcreteComponent relationship to indicate a hierarchy of "
       "instances of Setting/SettingData.")]
class CIM_ConfigurationComponent {
      [Deprecated { "CIM_ConcreteComponent.GroupComponent" }, Key,
       Aggregate, Description (
          "The Configuration that aggregates additional "
          "Configurations.")]
   CIM_Configuration REF ConfigGroup;

      [Deprecated { "CIM_ConcreteComponent.PartComponent" }, Key, 
       Description (
          "A Configuration that is part of a 'higher-level' "
          "Configuration.")]
   CIM_Configuration REF ConfigComponent;
};


// ===================================================================
// ElementConfiguration
// ===================================================================
   [Association, Deprecated { "CIM_ElementSettingData",
       "CIM_ElementSetting" }, Version ( "2.8.1000" ), 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. \n"
       "\n"
       "The Configuration class is being deprecated in lieu of using a "
       "ConcreteComponent relationship to indicate a hierarchy of "
       "Setting/SettingData instances. This allows the re-use of the "
       "element to Setting/SettingData associations, instead of "
       "defining a peer association specifically for Configurations.")]
class CIM_ElementConfiguration {

      [Deprecated { "CIM_ElementSettingData.ManagedElement",
          "CIM_ElementSetting.Element" }, Key, Description (
          "The ManagedSystemElement.")]
   CIM_ManagedSystemElement REF Element;

      [Deprecated { "CIM_ElementSettingData.SettingData",
          "CIM_ElementSetting.Setting" }, Key, Description (
          "The Configuration object that groups the Settings and "
          "dependencies associated with the ManagedSystemElement.")]
   CIM_Configuration REF Configuration;
};


// ===================================================================
// CollectionConfiguration
// ===================================================================
   [Association, Deprecated { "CIM_ElementSettingData",
       "CIM_CollectionSetting" }, Version ( "2.8.1000" ), 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. \n"
       "\n"
       "The Configuration class is being deprecated in lieu of using a "
       "ConcreteComponent relationship to indicate a hierarchy of "
       "instances of Setting/SettingData. This allows the re-use of "
       "the collection to Setting and element to SettingData "
       "associations, instead of defining peer associations "
       "specifically for Configurations.")]
class CIM_CollectionConfiguration {

      [Deprecated { "CIM_ElementSettingData.ManagedElement",
          "CIM_CollectionSetting.Collection" }, Key, Description (
          "The CollectionOfMSEs.")]
   CIM_CollectionOfMSEs REF Collection;

      [Deprecated { "CIM_ElementSettingData.SettingData",
          "CIM_CollectionSetting.Setting" }, Key, Description (
          "The Configuration object that groups the Settings and "
          "dependencies associated with the Collection.")]
   CIM_Configuration REF Configuration;
};

// ===================================================================
// DependencyContext
// ===================================================================
   [Association, Deprecated { "No value" }, Aggregation,
       Version ( "2.8.1000" ), 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. \n"
       "\n"
       "The Configuration class is being deprecated in lieu of using a "
       "ConcreteComponent relationship to indicate a hierarchy of "
       "Setting/SettingData instances. Therefore, this association is "
       "also deprecated - but is deprecated to 'No value' since there "
       "are no equivalent relationships currently defined for the "
       "Setting or SettingData classes. This association is an anomaly "
       "because it defines what cannot be expressed for the components "
       "of the Configuration. Also, it singles out the Dependency "
       "association as opposed to allowing any relationships to be "
       "defined as 'settings'. Its use in the industry is discouraged.")]
class CIM_DependencyContext {

      [Deprecated { "No value" }, Key, Aggregate, Description (
          "The Configuration object that aggregates the Dependency.")]
   CIM_Configuration REF Context;

      [Deprecated { "No value" }, Key, Description (
          "An aggregated Dependency.")]
   CIM_Dependency REF Dependency;
};

// ===================================================================
// SettingContext
// ===================================================================
   [Association, Deprecated { "CIM_ConcreteComponent" }, Aggregation,
    Version ( "2.8.1000" ), 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. \n"
       "\n"
       "The Configuration class is being deprecated in lieu of using a "
       "ConcreteComponent relationship to indicate a hierarchy of "
       "instances of Setting/SettingData. Therefore, the aggregation "
       "of Settings into Configurations is replaced by the Concrete "
       "Component relationship between instances of Settings and "
       "SettingData.")]
class CIM_SettingContext {

      [Deprecated { "CIM_ConcreteComponent.GroupComponent" }, Key,
       Aggregate, Description (
          "The Configuration object that aggregates the Setting.")]
   CIM_Configuration REF Context;

      [Deprecated { "CIM_ConcreteComponent.PartComponent" }, 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
// ==================================================================
   [Deprecated { "CIM_ScopedSettingData", "CIM_SystemSetting" },
    Version ( "2.8.1000" ), 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. \n"
       "Similar to the deprecation of CIM_Configuration, this peer "
       "class is also deprecated in favor of aggregating instances of "
       "Setting or SettingData into 'higher' level Settings/ "
       "SettingData objects, using the ConcreteComponent association.")]
class CIM_SystemConfiguration : CIM_ManagedElement {

      [Deprecated { "CIM_SystemSetting.SystemCreationClassName" }, Key,
       Propagated ( "CIM_System.CreationClassName" ), Description (
          "The scoping System's CreationClassName."), 
       MaxLen ( 256 )]
   string SystemCreationClassName;

      [Deprecated { "CIM_SystemSetting.SystemName" }, Key,
       Propagated ( "CIM_System.Name" ), Description (
          "The scoping System's Name."), 
       MaxLen ( 256 )]
   string SystemName;

      [Deprecated { "CIM_SystemSetting.CreationClassName" },
       Key, 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."), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Deprecated { "CIM_ScopedSettingData.InstanceID",
          "CIM_SystemSetting.SettingID" }, Key, Description (
          "The label by which the Configuration object is known."), 
       MaxLen ( 256 )]
   string Name;
};

// ==================================================================
// ConfigurationForSystem
// ==================================================================
   [Association, Deprecated { "CIM_ScopedSetting",
       "CIM_SettingForSystem" }, Version ( "2.8.1000" ), Description (
       "CIM_ConfigurationForSystem defines a Configuration in the "
       "context of the System on which it resides. Since the "
       "Configuration class is deprecated, this association is "
       "similarly deprecated.")]
class CIM_ConfigurationForSystem : CIM_HostedDependency {

      [Deprecated { "CIM_ScopedSetting.Antecedent",
          "CIM_SettingForSystem.Antecedent" },
       Override ( "Antecedent" ), Min ( 1 ), Max ( 1 ), Description (
          "The hosting System.")]
   CIM_System REF Antecedent;

      [Deprecated { "CIM_ScopedSetting.Dependent",
          "CIM_SettingForSystem.Dependent" }, Override ( "Dependent" ),
       Weak, Description (
          "The Configuration defined for the System.")]
   CIM_SystemConfiguration REF Dependent;
};

// ==================================================================
// SystemSettingContext
// ==================================================================
   [Association, Deprecated { "CIM_ConcreteComponent" }, Aggregation,
    Version ( "2.8.1000" ), Description (
       "This relationship associates System-specific Configuration "
       "objects with System-specific Setting objects, similar to the "
       "SettingContext association. \n"
       "\n"
       "The Configuration and SystemConfiguration classes are "
       "deprecated in lieu of using a ConcreteComponent relationship "
       "to indicate a hierarchy of Settings/SettingData instances. "
       "Therefore, the aggregation of SystemSettings into System "
       "Configurations is replaced by the ConcreteComponent "
       "relationship between instances of Settings and SettingData.")]
class CIM_SystemSettingContext {

      [Deprecated { "CIM_ConcreteComponent.GroupComponent" }, Key,
       Aggregate, Description (
          "The Configuration object that aggregates the Setting.")]
   CIM_SystemConfiguration REF Context;

      [Deprecated { "CIM_ConcreteComponent.PartComponent" }, Key, 
       Description (
          "An aggregated Setting.")]
   CIM_SystemSetting REF Setting;
};

// ==================================================================
// ConfigurationData
// ==================================================================
   [Experimental, Version ( "2.8.1000" ), Description (
       "Captures an element's configuration information as an octet "
       "string (i.e., a 'blob'). The configuration data is "
       "element-specific and generalizes (for any element) the "
       "semantically similar 'Save/RestoreProperties' methods "
       "currently defined as part of the LogicalDevice class. \n"
       "\n"
       "Various types of configurations MAY be instantiated for an "
       "element - a currently running config, a startup config, and/or "
       "other 'possible' configurations. The configuration's type is "
       "specified in the association of the instance to a "
       "ManagedElement, using the properties of the ElementSettingData "
       "association: \n"
       "- When the configuration is currently running, then the "
       "association's IsCurrent boolean is TRUE. \n"
       "- When the configuration is the initial/startup config, then "
       "the association's IsDefault boolean is TRUE. \n"
       "- If the IsCurrent and IsDefault booleans are FALSE, then the "
       "configuration is assumed to be a 'possible' config "
       "(configuration workspace) for the element. \n"
       "\n"
       "Note that this class only has an 'apply' method with no "
       "corresponding 'extract'. This is because an application/client "
       "can query for and enumerate any existing configurations using "
       "existing CIM Operations. It is the responsibility of the "
       "client to reuse/reapply the configurations that are returned "
       "by such a request - since the configuration data itself is "
       "opaque and element-specific. \n"
       "\n"
       "Note that there exists at most one 'running' configuration, at "
       "any time. And, this may be the only configuration reported by "
       "an element. However, elements MAY also have one 'startup' "
       "configuration and MAY have multiple 'possible'/workspace "
       "configurations. The configurations MAY be identical. For "
       "example, if a 'possible' configuration is applied to an "
       "element (and therefore made the 'running/current' "
       "configuration), then the two configs would be identical upon a "
       "subsequent query or enumerate instances request.")]
class CIM_ConfigurationData : CIM_SettingData {

      [Required, Description (
          "The configuration information stored as an octet string."), 
       OctetString]
   uint8 ConfigurationInformation[];

      [Required, Description (
          "The datetime when the configuration information was "
          "obtained.")]
   datetime ConfigurationTimestamp;

      [Description (
          "This method processes the configuration data for an "
          "element. In this case, the data in the instance's "
          "ConfigurationInformation property is validated for the "
          "specified element (if the ValidateOnly parameter is TRUE), "
          "or actually set as a configuration on the element. If the "
          "method is successful, then the appropriate "
          "ElementSettingData associations are created or modified. "
          "Note that it is not necessary for the element to be "
          "associated with the ConfigurationData instance at the time "
          "that this method is called."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6..15999", "16000",
          "16001", "16002", "16003", "16004", "16005", "16006..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unknown", "Timeout",
          "Failed", "Invalid Parameter", "DMTF Reserved",
          "Validate Only Request Not Supported",
          "Configuration Data Would Not Validate",
          "Element Does Not Support Initial/Default Configs",
          "Element Does Not Support Possible Configs/Config " 
          "Workspaces",
          "Element Does Not Support Setting of the Running/Current " 
          "Config", "Element Would Not Accept Configuration",
          "Method Reserved", "Vendor Specific" }]
   uint32 ApplyConfiguration (
      
         [IN, Description (
             "Indicates that the request is to validate the format and "
             "syntax of the configuration data, but not apply it to "
             "the referenced ManagedElement.")]
      boolean ValidateOnly,
      
         [IN, Description (
             "The type of configuration information, indicating "
             "whether the ConfigurationInformation property holds an "
             "initial/default configuration, a running/current "
             "configuration, or a configuration for a 'temporary'/ "
             "possible workspace. This information affects the values "
             "of the IsDefault and IsCurrent properties of the "
             "association, ElementSettingData."), 
          ValueMap { "2", "3", "4" }, 
          Values { "Running/Current Configuration",
             "Initial/Default Configuration",
             "Possible Configuration/Config Workspace" }]
      uint16 TypeOfConfiguration,
      
         [Required, IN, Description (
             "A reference to the ManagedElement whose configuration "
             "data is validated or applied. This reference is "
             "necessary since a configuration could apply to multiple "
             "elements simultaneously, but this processing request is "
             "more restrictive.")]
      CIM_ManagedElement REF ManagedElement); 
};

// ===================================================================
// CIM_TimeZoneSettingData
// ===================================================================
   [Experimental, Version ( "2.8.1000" ), Description (
       "The TimeZone class is a set of properties defining a "
       "particular time zone. These properties include the concept of "
       "daylight saving time. \n"
       "If time zone is implemented, then there MUST be a current "
       "zone, as indicated using the IsCurrent property of the "
       "inherited ElementSettingData association. This class allows an "
       "application/client to pick the time zone that will be used for "
       "any related ManagedElements. The latter are defined by the "
       "Element SettingData association, based on the association's "
       "IsCurrent/ IsDefault properties. There SHOULD be an instance "
       "of TimeZoneSettingData for each zone supported by an element. "
       "\n\n"
       "If this class is implemented, then TimeService MUST also be "
       "implemented and available for a particular ManagedElement. "
       "Both together define the date and time. If the "
       "ElementSettingData instance associating the ManagedElement has "
       "the IsCurrent property set to TRUE, then the TimeData "
       "parameter returned by the ManageTime method MUST reflect this "
       "zone when time data is requested.")]
class CIM_TimeZoneSettingData : CIM_SettingData {

      [Description (
          "Full name of the 'standard' time zone (e.g., \"U.S. Eastern "
          "Standard Time\"), suitable for presentation to the user in "
          "the default locale.")]
   string StandardName;

      [Description (
          "Short name of the 'standard' time zone (e.g., \"EST\"), "
          "suitable for presentation to the user in the default "
          "locale. Note that a specific StandardCaption property is "
          "defined, instead of using the inherited Caption. This is "
          "done to force consistent property naming for the "
          "StandardXXX and DaylightXXX properties.")]
   string StandardCaption;

      [Description (
          "The number of minutes by which this 'standard' time differs "
          "from UTC. For example, U.S. EST differs from UTC by -5.0 "
          "hours or -300 minutes, whereas Australia Adelaide Standard "
          "Time differs by 9.5 hours or 570 minutes."), 
       Units ( "Minutes" )]
   sint32 StandardOffset;

      [Description (
          "The month in which daylight saving time ends (and "
          "'standard' time begins). Specify 0 for January, 1 for "
          "February, and so on."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11" }, 
       Values { "January", "February", "March", "April", "May", "June",
          "July", "August", "September", "October", "November",
          "December" }]
   uint8 StandardMonth;

      [Description (
          "There are two different interpretations for this property, "
          "depending on the value of StandardDayOfWeek. In one case, "
          "StandardDay defines the day-in-month on which daylight "
          "saving time ends. This interpretation is used when the "
          "StandardDayOfWeek is 0. A positive or negative integer is "
          "specified to indicate whether the StandardDay is calculated "
          "from the beginning or the end of the month. For example, 5 "
          "indicates the fifth day in the StandardMonth and -1 "
          "indicates the last day in the StandardMonth. \n"
          "\n"
          "When StandardDayOfWeek is not 0, StandardDay is the day- "
          "in-month on which daylight saving time ends, defined in "
          "conjunction with StandardDayOfWeek. For example, if "
          "StandardDay is 15 and StandardDayOfWeek is Saturday, then "
          "daylight saving time ends on the first Saturday on or after "
          "the 15th day in the StandardMonth (i.e., the third Saturday "
          "in the month). If StandardDay is 20 and StandardDayOfWeek "
          "is -Saturday, then this indicates the first Saturday on or "
          "before the 20th day in the StandardMonth. If StandardDay is "
          "-1 and StandardDayOfWeek is -Sunday, then this indicates "
          "the last Sunday in the StandardMonth."), 
       MinValue ( -31 ), MaxValue ( 31 )]
   sint8 StandardDay;

      [Description (
          "Positive or negative integer used in conjunction with "
          "StandardDay to indicate the day of the week on which "
          "daylight saving time ends (and 'standard' time begins). "
          "StandardDayOfWeek is set to 0 to indicate an exact day of "
          "the month, such as March 1. A positive integer "
          "(representing Sunday, Monday, ..., Saturday) means that the "
          "day of week is found on or after the specified StandardDay. "
          "A negative integer (representing -Sunday, -Monday, ..., "
          "-Saturday) means that the day of week is found on or before "
          "the StandardDay."), 
       ValueMap { "-7", "-6", "-5", "-4", "-3", "-2", "-1", "0", "1",
          "2", "3", "4", "5", "6", "7" }, 
       Values { "-Saturday", "-Friday", "-Thursday", "-Wednesday",
          "-Tuesday", "-Monday", "-Sunday", "ExactDayOfMonth",
          "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
          "Friday", "Saturday" }]
   sint8 StandardDayOfWeek;

      [Description (
          "The time interval after midnight when daylight saving time "
          "ends. For example, \n"
          "00000000020000.000000:000 \n"
          "indicates that daylight saving time ends at two o'clock, "
          "local time (usually, daylight saving time).")]
   datetime StandardStartInterval;

      [Description (
          "Full name of the 'daylight' time zone (e.g., \"U.S. Eastern "
          "Daylight Saving Time\"), suitable for presentation to the "
          "user in the default locale.")]
   string DaylightName;

      [Description (
          "Short name of the 'daylight' time zone (e.g., \"EDT\"), "
          "suitable for presentation to the user in the default "
          "locale. Note that a specific DaylightCaption property is "
          "defined, instead of using the inherited Caption. This is "
          "done to force consistent property naming for the "
          "StandardXXX and DaylightXXX properties.")]
   string DaylightCaption;

      [Description (
          "The number of minutes by which this daylight saving time "
          "differs from UTC. For example, U.S. EDT differs from UTC by "
          "-4.0 hours or -240 minutes, whereas Australia Adelaide "
          "Daylight Time differs by 10.5 hours or 630 minutes."), 
       Units ( "Minutes" )]
   sint32 DaylightOffset;

      [Description (
          "The month in which daylight saving time starts. Specify 0 "
          "for January, 1 for February, and so on."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11" }, 
       Values { "January", "February", "March", "April", "May", "June",
          "July", "August", "September", "October", "November",
          "December" }]
   uint8 DaylightMonth;

      [Description (
          "There are two different interpretations for this property, "
          "depending on the value of DaylightDayOfWeek. In one case, "
          "DaylightDay defines the day-in-month on which daylight "
          "saving time starts. This interpretation is used when the "
          "DaylightDayOfWeek is 0. A positive or negative integer is "
          "specified to indicate whether the DaylightDay is calculated "
          "from the beginning or the end of the month. For example, 5 "
          "indicates the fifth day in the DaylightMonth and -1 "
          "indicates the last day in the DaylightMonth. \n"
          "\n"
          "When DaylightDayOfWeek is not 0, DaylightDay is the day- "
          "in-month on which daylight saving time starts, defined in "
          "conjunction with DaylightDayOfWeek. For example, if "
          "DaylightDay is 15 and DaylightDayOfWeek is Saturday, then "
          "daylight saving time starts on the first Saturday on or "
          "after the 15th day in the DaylightMonth (i.e., the third "
          "Saturday in the month). If DaylightDay is 20 and "
          "DaylightDayOfWeek is -Saturday, then this indicates the "
          "first Saturday on or before the 20th day in the "
          "DaylightMonth. If DaylightDay is -1 and DaylightDayOfWeek "
          "is -Sunday, then this indicates the last Sunday in the "
          "month."), 
       MinValue ( -31 ), MaxValue ( 31 )]
   sint8 DaylightDay;

      [Description (
          "Positive or negative integer used in conjunction with "
          "DaylightDay to indicate the day of the week on which "
          "daylight saving time starts. Set DaylightDayOfWeek to 0 to "
          "indicate an exact day of month, such as March 1. Positive "
          "integer (Sunday, Monday, ..., Saturday) means that the day "
          "of week is found on or after DaylightDay. Negative integer "
          "(-Sunday, -Monday, ..., -Saturday) means that the day of "
          "week is found on or before DaylightDay."), 
       ValueMap { "-7", "-6", "-5", "-4", "-3", "-2", "-1", "0", "1",
          "2", "3", "4", "5", "6", "7" }, 
       Values { "-Saturday", "-Friday", "-Thursday", "-Wednesday",
          "-Tuesday", "-Monday", "-Sunday", "ExactDayOfMonth",
          "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
          "Friday", "Saturday" }]
   sint8 DaylightDayOfWeek;

      [Description (
          "The time interval after midnight when daylight saving time "
          "starts. For example, \n"
          "00000000020000.000000:000 \n"
          "indicates that daylight saving time starts at two o'clock, "
          "local time (usually, standard time).")]
   datetime DaylightStartInterval;

};

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