
Qualifier Implemented : Boolean = false,
    Scope(method);

// ==================================================================
//  CIM_Error
// ==================================================================
   [Indication, Experimental, Exception,  Version ( "2.22.1" ), 
    Description (
       "CIM_Error is a specialized class that contains information "
       "about the severity, cause, recommended actions and other data "
       "related to the failure of a CIM Operation. Instances of this "
       "type MAY be included as part of the response to a CIM "
       "Operation. \n"
       "\n"
       "CIM_Errors like CIM_Indications do not persist, and therefore "
       "do not have keys. Currently, this is only allowed by defining "
       "a concrete class with the Indication qualifier. Until the CIM "
       "Specification is modified to allow other concrete classes "
       "without keys, the CIM_Error class MUST be qualified by both "
       "Indication and Exception. After this, the Indication qualifier "
       "can be removed.")]
class CIM_Error {

      [Description ( 
          "Primary classification of the error. The following "
          "values are defined: \n"
          "2 - Communications Error. Errors of this type are "
          "principally associated with the procedures and/or "
          "processes required to convey information from one point "
          "to another. \n"
          "3 - Quality of Service Error. Errors of this type are "
          "principally associated with failures that result in "
          "reduced functionality or performance. \n"
          "4 - Software Error. Error of this type are principally "
          "associated with a software or processing fault. \n"
          "5 - Hardware Error. Errors of this type are principally "
          "associated with an equipment or hardware failure. \n"
          "6 - Environmental Error. Errors of this type are "
          "principally associated with a failure condition relating "
          "the to facility, or other environmental considerations. \n"
          "7 - Security Error. Errors of this type are associated "
          "with security violations, detection of viruses, and "
          "similar issues. \n"
          "8 - Oversubscription Error. Errors of this type are "
          "principally associated with the failure to allocate "
          "sufficient resources to complete the operation. \n"
          "9 - Unavailable Resource Error. Errors of this type are "
          "principally associated with the failure to access a "
          "required resource. \n"
          "10 -Unsupported Operation Error. Errors of this type are "
          "principally associated with requests that are not "
          "supported." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", ".." }, 
       Values { "Unknown", "Other", "Communications Error", 
          "Quality of Service Error", "Software Error", 
          "Hardware Error", "Environmental Error", "Security Error", 
          "Oversubscription Error", "Unavailable Resource Error", 
          "Unsupported Operation Error", "DMTF Reserved" }, 
       ModelCorrespondence { "CIM_Error.OtherErrorType" }]
   uint16 ErrorType;

      [Description ( 
          "A free-form string describing the ErrorType when 1, "
          "\"Other\", is specified as the ErrorType." ), 
       ModelCorrespondence { "CIM_Error.ErrorType" }]
   string OtherErrorType;

      [Description ( 
          "A string that uniquely identifies the entity that owns "
          "the definition of the format of the Message described in "
          "this instance. OwningEntity MUST include a copyrighted, "
          "trademarked or otherwise unique name that is owned by "
          "the business entity or standards body defining the "
          "format." )]
   string OwningEntity;

      [Required, Description ( 
          "An opaque string that uniquely identifies, within the "
          "scope of the OwningEntity, the format of the Message." ), 
       ModelCorrespondence { "CIM_Error.Message", 
          "CIM_Error.MessageArguments" }]
   string MessageID;

      [Required, Description ( 
          "The formatted message. This message is constructed by "
          "combining some or all of the dynamic elements specified "
          "in the MessageArguments property with the static "
          "elements uniquely identified by the MessageID in a "
          "message registry or other catalog associated with the "
          "OwningEntity." ), 
       ModelCorrespondence { "CIM_Error.MessageID", 
          "CIM_Error.MessageArguments" }]
   string Message;

      [Description ( 
          "An array containing the dynamic content of the message." ), 
       ModelCorrespondence { "CIM_Error.MessageID", 
          "CIM_Error.Message" }]
   string MessageArguments[];

      [Required, Description ( 
          "An enumerated value that describes the severity of the "
          "Indication from the notifier\'s point of view: \n"
          "0 - the Perceived Severity of the indication is unknown "
          "or indeterminate. \n"
          "1 - Other, by CIM convention, is used to indicate that "
          "the Severity\'s value can be found in the OtherSeverity "
          "property. \n"
          "2 - Information should be used when providing an "
          "informative response. \n"
          "3 - Degraded/Warning should be used when its appropriate "
          "to let the user decide if action is needed. \n"
          "4 - Minor should be used to indicate action is needed, "
          "but the situation is not serious at this time. \n"
          "5 - Major should be used to indicate action is needed "
          "NOW. \n"
          "6 - Critical should be used to indicate action is needed "
          "NOW and the scope is broad (perhaps an imminent outage "
          "to a critical resource will result). \n"
          "7 - Fatal/NonRecoverable should be used to indicate an "
          "error occurred, but it\'s too late to take remedial "
          "action. \n"
          "2 and 0 - Information and Unknown (respectively) follow "
          "common usage. Literally, the Error is purely "
          "informational or its severity is simply unknown." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", ".." }, 
       Values { "Unknown", "Other", "Information", 
          "Degraded/Warning", "Minor", "Major", "Critical", 
          "Fatal/NonRecoverable", "DMTF Reserved" }, 
       MappingStrings { "Recommendation.ITU|X733.Perceived severity" }]
   uint16 PerceivedSeverity;

      [Required, Description ( 
          "An enumerated value that describes the probable cause of "
          "the error." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "13", "14", "15", "16", "17", "18", 
          "19", "20", "21", "22", "23", "24", "25", "26", "27", 
          "28", "29", "30", "31", "32", "33", "34", "35", "36", 
          "37", "38", "39", "40", "41", "42", "43", "44", "45", 
          "46", "47", "48", "49", "50", "51", "52", "53", "54", 
          "55", "56", "57", "58", "59", "60", "61", "62", "63", 
          "64", "65", "66", "67", "68", "69", "70", "71", "72", 
          "73", "74", "75", "76", "77", "78", "79", "80", "81", 
          "82", "83", "84", "85", "86", "87", "88", "89", "90", 
          "91", "92", "93", "94", "95", "96", "97", "98", "99", 
          "100", "101", "102", "103", "104", "105", "106", "107", 
          "108", "109", "110", "111", "112", "113", "114", "115", 
          "116", "117", "118", "119", "120", "121", "122", "123", 
          "124", "125", "126", "127", "128", "129", "130", ".." }, 
       Values { "Unknown", "Other", "Adapter/Card Error", 
          "Application Subsystem Failure", "Bandwidth Reduced", 
          "Connection Establishment Error", 
          "Communications Protocol Error", 
          "Communications Subsystem Failure", 
          "Configuration/Customization Error", "Congestion", 
          "Corrupt Data", "CPU Cycles Limit Exceeded", 
          "Dataset/Modem Error", "Degraded Signal", 
          "DTE-DCE Interface Error", "Enclosure Door Open", 
          "Equipment Malfunction", "Excessive Vibration", 
          "File Format Error", "Fire Detected", "Flood Detected", 
          "Framing Error", "HVAC Problem", "Humidity Unacceptable", 
          "I/O Device Error", "Input Device Error", "LAN Error", 
          "Non-Toxic Leak Detected", 
          "Local Node Transmission Error", "Loss of Frame", 
          "Loss of Signal", 
          //31 
          "Material Supply Exhausted", 
          "Multiplexer Problem", "Out of Memory", 
          "Output Device Error", "Performance Degraded", 
          "Power Problem", "Pressure Unacceptable", 
          "Processor Problem (Internal Machine Error)", 
          "Pump Failure", "Queue Size Exceeded", "Receive Failure", 
          "Receiver Failure", "Remote Node Transmission Error", 
          "Resource at or Nearing Capacity", 
          "Response Time Excessive", 
          "Retransmission Rate Excessive", "Software Error", 
          "Software Program Abnormally Terminated", 
          "Software Program Error (Incorrect Results)", 
          "Storage Capacity Problem", "Temperature Unacceptable", 
          "Threshold Crossed", "Timing Problem", 
          "Toxic Leak Detected", "Transmit Failure", 
          "Transmitter Failure", "Underlying Resource Unavailable", 
          "Version Mismatch", "Previous Alert Cleared", 
          //60 
          "Login Attempts Failed", 
          "Software Virus Detected", "Hardware Security Breached", 
          "Denial of Service Detected", 
          "Security Credential Mismatch", "Unauthorized Access", 
          "Alarm Received", "Loss of Pointer", "Payload Mismatch", 
          "Transmission Error", "Excessive Error Rate", 
          "Trace Problem", "Element Unavailable", "Element Missing", 
          "Loss of Multi Frame", "Broadcast Channel Failure", 
          "Invalid Message Received", "Routing Failure", 
          "Backplane Failure", "Identifier Duplication", 
          "Protection Path Failure", "Sync Loss or Mismatch", 
          "Terminal Problem", "Real Time Clock Failure", 
          "Antenna Failure", "Battery Charging Failure", 
          "Disk Failure", "Frequency Hopping Failure", 
          "Loss of Redundancy", "Power Supply Failure", 
          "Signal Quality Problem", 
          //91 
          "Battery Discharging", "Battery Failure", 
          "Commercial Power Problem", "Fan Failure", 
          "Engine Failure", "Sensor Failure", "Fuse Failure", 
          "Generator Failure", "Low Battery", "Low Fuel", 
          "Low Water", "Explosive Gas", "High Winds", "Ice Buildup", 
          "Smoke", "Memory Mismatch", "Out of CPU Cycles", 
          "Software Environment Problem", 
          "Software Download Failure", "Element Reinitialized", 
          "Timeout", "Logging Problems", "Leak Detected", 
          "Protection Mechanism Failure", 
          //115 
          "Protecting Resource Failure", 
          "Database Inconsistency", "Authentication Failure", 
          "Breach of Confidentiality", "Cable Tamper", 
          "Delayed Information", "Duplicate Information", 
          "Information Missing", "Information Modification", 
          "Information Out of Sequence", "Key Expired", 
          "Non-Repudiation Failure", "Out of Hours Activity", 
          "Out of Service", "Procedural Error", 
          "Unexpected Information", "DMTF Reserved" }, 
       MappingStrings { "Recommendation.ITU|X733.Probable cause", 
          "Recommendation.ITU|M3100.probableCause", 
          "ITU-IANA-ALARM-TC" }, 
       ModelCorrespondence { "CIM_Error.ProbableCauseDescription" }]
   uint16 ProbableCause;

      [Description ( 
          "A free-form string describing the probable cause of the error."
           ), 
       ModelCorrespondence { "CIM_Error.ProbableCause" }]
   string ProbableCauseDescription;

      [Description ( 
          "A free-form string describing recommended actions to "
          "take to resolve the error." )]
   string RecommendedActions[];

      [Description ( 
          "The identifying information of the entity (i.e., the "
          "instance) generating the error. If this entity is "
          "modeled in the CIM Schema, this property contains the "
          "path of the instance encoded as a string parameter. If "
          "not modeled, the property contains some identifying "
          "string that names the entity that generated the error. "
          "The path or identifying string is formatted per the "
          "ErrorSourceFormat property." ), 
       ModelCorrespondence { "CIM_Error.ErrorSourceFormat" }]
   string ErrorSource;

      [Description ( 
          "The format of the ErrorSource property is interpretable "
          "based on the value of this property. Values are defined "
          "as: \n"
          "0 - Unknown. The format is unknown or not meaningfully "
          "interpretable by a CIM client application. \n"
          "1 - Other. The format is defined by the value of the "
          "OtherErrorSourceFormat property.2 - CIMObjectPath. A CIM "
          "Object Path as defined in the CIM Infrastructure "
          "specification. Note: CIM 2.5 and earlier used the term "
          "object names." ), 
       ValueMap { "0", "1", "2", ".." }, 
       Values { "Unknown", "Other", "CIMObjectPath", "DMTF Reserved" }, 
       ModelCorrespondence { "CIM_Error.ErrorSource", 
          "CIM_Error.OtherErrorSourceFormat" }]
   uint16 ErrorSourceFormat = 0;

      [Description ( 
          "A string defining \"Other\" values for "
          "ErrorSourceFormat. This value MUST be set to a non NULL "
          "value when ErrorSourceFormat is set to a value of 1 "
          "(\"Other\"). For all other values of ErrorSourceFormat, "
          "the value of this string must be set to NULL." ), 
       ModelCorrespondence { "CIM_Error.ErrorSourceFormat" }]
   string OtherErrorSourceFormat;

      [Required, Description ( 
          "The CIM status code that characterizes this instance. \n"
          "This property defines the status codes that MAY be "
          "return by a conforming CIM Server or Listener. Note that "
          "not all status codes are valid for each operation. The "
          "specification for each operation SHOULD define the "
          "status codes that may be returned by that operation. \n"
          "The following values for CIM status code are defined: \n"
          "1 - CIM_ERR_FAILED. A general error occurred that is not "
          "covered by a more specific error code. \n"
          "2 - CIM_ERR_ACCESS_DENIED. Access to a CIM resource was "
          "not available to the client. \n"
          "3 - CIM_ERR_INVALID_NAMESPACE. The target namespace does "
          "not exist. \n"
          "4 - CIM_ERR_INVALID_PARAMETER. One or more parameter "
          "values passed to the method were invalid. \n"
          "5 - CIM_ERR_INVALID_CLASS. The specified Class does not "
          "exist. \n"
          "6 - CIM_ERR_NOT_FOUND. The requested object could not be "
          "found. \n"
          "7 - CIM_ERR_NOT_SUPPORTED. The requested operation is "
          "not supported. \n"
          "8 - CIM_ERR_CLASS_HAS_CHILDREN. Operation cannot be "
          "carried out on this class since it has instances. \n"
          "9 - CIM_ERR_CLASS_HAS_INSTANCES. Operation cannot be "
          "carried out on this class since it has instances. \n"
          "10 - CIM_ERR_INVALID_SUPERCLASS. Operation cannot be "
          "carried out since the specified superclass does not "
          "exist. \n"
          "11 - CIM_ERR_ALREADY_EXISTS. Operation cannot be carried "
          "out because an object already exists. \n"
          "12 - CIM_ERR_NO_SUCH_PROPERTY. The specified Property "
          "does not exist. \n"
          "13 - CIM_ERR_TYPE_MISMATCH. The value supplied is "
          "incompatible with the type. \n"
          "14 - CIM_ERR_QUERY_LANGUAGE_NOT_SUPPORTED. The query "
          "language is not recognized or supported. \n"
          "15 - CIM_ERR_INVALID_QUERY. The query is not valid for "
          "the specified query language. \n"
          "16 - CIM_ERR_METHOD_NOT_AVAILABLE. The extrinsic Method "
          "could not be executed. \n"
          "17 - CIM_ERR_METHOD_NOT_FOUND. The specified extrinsic "
          "Method does not exist. \n"
          "18 - CIM_ERR_UNEXPECTED_RESPONSE. The returned response "
          "to the asynchronous operation was not expected. \n"
          "19 - CIM_ERR_INVALID_RESPONSE_DESTINATION. The specified "
          "destination for the asynchronous response is not valid. \n"
          "20 - CIM_ERR_NAMESPACE_NOT_EMPTY. The specified "
          "Namespace is not empty.\n"
          "21 - CIM_ERR_INVALID_ENUMERATION_CONTEXT. The "
          "enumeration context supplied is not valid.\n"
          "22 - CIM_ERR_INVALID_OPERATION_TIMEOUT. The specified "
          "Namespace is not empty.\n"
          "23 - CIM_ERR_PULL_HAS_BEEN_ABANDONED. The specified "
          "Namespace is not empty.\n"
          "24 - CIM_ERR_PULL_CANNOT_BE_ABANDONED. The attempt to "
          "abandon a pull operation has failed.\n"
          "25 - CIM_ERR_FILTERED_ENUMERATION_NOT_SUPPORTED. "
          "Filtered Enumeratrions are not supported.\n"
          "26 - CIM_ERR_CONTINUATION_ON_ERROR_NOT_SUPPORTED. "
          "Continue on error is not supported.\n"
          "27 - CIM_ERR_SERVER_LIMITS_EXCEEDED. The WBEM Server "
          "limits have been exceeded (e.g. memory, connections, ...).\n"
          "28 - CIM_ERR_SERVER_IS_SHUTTING_DOWN. The WBEM Server is "
          "shutting down.\n"
          "29 - CIM_ERR_QUERY_FEATURE_NOT_SUPPORTED. The specified "
          "Query Feature is not supported." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "14", "15", "16", "17", "18", "19", 
          "20", "21", "22", "23", "24", "25", "26", "27", "28", 
          "29", ".." }, 
       Values { "CIM_ERR_FAILED", "CIM_ERR_ACCESS_DENIED", 
          "CIM_ERR_INVALID_NAMESPACE", "CIM_ERR_INVALID_PARAMETER", 
          "CIM_ERR_INVALID_CLASS", "CIM_ERR_NOT_FOUND", 
          "CIM_ERR_NOT_SUPPORTED", "CIM_ERR_CLASS_HAS_CHILDREN", 
          "CIM_ERR_CLASS_HAS_INSTANCES", 
          "CIM_ERR_INVALID_SUPERCLASS", "CIM_ERR_ALREADY_EXISTS", 
          "CIM_ERR_NO_SUCH_PROPERTY", "CIM_ERR_TYPE_MISMATCH", 
          "CIM_ERR_QUERY_LANGUAGE_NOT_SUPPORTED", 
          "CIM_ERR_INVALID_QUERY", "CIM_ERR_METHOD_NOT_AVAILABLE", 
          "CIM_ERR_METHOD_NOT_FOUND", "CIM_ERR_UNEXPECTED_RESPONSE", 
          "CIM_ERR_INVALID_RESPONSE_DESTINATION", 
          "CIM_ERR_NAMESPACE_NOT_EMPTY", 
          "CIM_ERR_INVALID_ENUMERATION_CONTEXT", 
          "CIM_ERR_INVALID_OPERATION_TIMEOUT", 
          "CIM_ERR_PULL_HAS_BEEN_ABANDONED", 
          "CIM_ERR_PULL_CANNOT_BE_ABANDONED", 
          "CIM_ERR_FILTERED_ENUMERATION_NOT_SUPPORTED", 
          "CIM_ERR_CONTINUATION_ON_ERROR_NOT_SUPPORTED", 
          "CIM_ERR_SERVER_LIMITS_EXCEEDED", 
          "CIM_ERR_SERVER_IS_SHUTTING_DOWN", 
          "CIM_ERR_QUERY_FEATURE_NOT_SUPPORTED", "DMTF Reserved" }, 
       MappingStrings { "DSP0201.DMTF|ERROR.CODE|2.3", 
          "DSP0200.DMTF|CIMError|1.3" }, 
       ModelCorrespondence { "CIM_Error.CIMStatusCodeDescription" }]
   uint32 CIMStatusCode;

      [Description ( 
          "A free-form string containing a human-readable "
          "description of CIMStatusCode. This description MAY "
          "extend, but MUST be consistent with, the definition of "
          "CIMStatusCode." ), 
       MappingStrings { "DSP0201.DMTF|ERROR.DESCRIPTION|2.3", 
          "DSP0200.DMTF|CIMError|1.3" }, 
       ModelCorrespondence { "CIM_Error.CIMStatusCode" }]
   string CIMStatusCodeDescription;
};

// ==================================================================
//  CIM_ManagedElement
// ==================================================================
   [Abstract,  Version ( "2.19.0" ), Description (
       "ManagedElement is an abstract class that provides a common "
       "superclass (or top of the inheritance tree) for the "
       "non-association classes in the CIM Schema.")]
class CIM_ManagedElement {

      [Description ( 
          "InstanceID is an optional property that may be used to "
          "opaquely and uniquely identify an instance of this class "
          "within the scope of the instantiating Namespace. Various "
          "subclasses of this class may override this property to "
          "make it required, or a key. Such subclasses may also "
          "modify the preferred algorithms for ensuring uniqueness "
          "that are defined below.\n"
          "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 that is creating or defining the "
          "InstanceID or that is a registered ID assigned to the "
          "business entity by a recognized global authority. (This "
          "requirement 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 reused to identify different underlying "
          "(real-world) elements. If not null and the above "
          "\"preferred\" algorithm is not used, the defining entity "
          "must assure that the resulting InstanceID is not reused "
          "across any InstanceIDs produced by this or other "
          "providers for the NameSpace of this instance. \n"
          "If not set to null for DMTF-defined instances, the "
          "\"preferred\" algorithm must be used with the <OrgID> "
          "set to CIM." )]
   string InstanceID;

      [Description ( 
          "The Caption property is a short textual description "
          "(one- line string) of the object." ), 
       MaxLen ( 64 )]
   string Caption;

      [Description ( 
          "The Description property provides a textual description "
          "of the object." )]
   string Description;

      [Description ( 
          "A user-friendly name for the object. This property "
          "allows each instance to define a user-friendly name in "
          "addition to its key properties, identity data, and "
          "description information. \n"
          "Note that the Name property of ManagedSystemElement is "
          "also defined as a user-friendly name. But, it is often "
          "subclassed to be a Key. It is not reasonable that the "
          "same property can convey both identity and a "
          "user-friendly name, without inconsistencies. Where Name "
          "exists and is not a Key (such as for instances of "
          "LogicalDevice), the same information can be present in "
          "both the Name and ElementName properties. Note that if "
          "there is an associated instance of "
          "CIM_EnabledLogicalElementCapabilities, restrictions on "
          "this properties may exist as defined in ElementNameMask "
          "and MaxElementNameLen properties defined in that class." )]
   string ElementName;

      [Experimental, Description ( 
          "Generation is an optional, monotonically increasing "
          "property that may be used to identify a particular "
          "generation of the resource represented by this class.\n"
          "If Generation is supported by the implementation, its "
          "value shall not be null. \n"
          "Except as otherwise specified, a value (including null) "
          "of Generation specified at creation time shall be "
          "replaced by null if Generation is not supported by the "
          "implementation or shall be a, (possibly different), "
          "non-null value if the implementation does support Generation.\n"
          "After creation and if supported, Generation shall be "
          "updated, at least once per access, whenever the "
          "represented resource is modified, regardless of the "
          "source of the modification.\n"
          "Note: the Generation value only needs to be updated once "
          "between references, even if the resource is updated many "
          "times. The key point is to assure that it will be "
          "different if there have been updates, not to count each update.\n"
          "Note: unless otherwise specified, the value of "
          "Generation within one instance is not required to be "
          "coordinated with the value of Generation in any other instance.\n"
          "Note:the semantics of the instance, (as defined by its "
          "creation class), define the underlying resource. That "
          "underlying resource may be a collection or aggregation "
          "of resources. And, in that case, the semantics of the "
          "instance further define when updates to constituent "
          "resources also require updates to the Generation of the "
          "collective resource. Default behavior of composite "
          "aggregations should be to update the Generation of the "
          "composite whenever the Generation of a component is updated.\n"
          "Subclasses may define additional requirements for "
          "updates on some or all of related instances.\n"
          "For a particular instance, the value of Generation may "
          "wrap through zero, but the elapsed time between wraps "
          "shall be greater than 10\'s of years.\n"
          "This class does not require Generation to be unique "
          "across instances of other classes nor across instances "
          "of the same class that have different keys. Generation "
          "shall be different across power cycles, resets, or "
          "reboots if any of those actions results in an update. "
          "Generation may be different across power cycles, resets, "
          "or reboots if those actions do not result in an update. "
          "If the Generation property of an instance is non-null, "
          "and if any attempt to update the instance includes the "
          "Generation property, then if it doesn\'t match the "
          "current value, the update shall fail.\n"
          "The usage of this property is intended to be further "
          "specified by applicable management profiles. \n"
          "Typically, a client will read the value of this property "
          "and then supply that value as input to an operation that "
          "modifies the instance in some means. This may be via an "
          "explicit parameter in an extrinsic method or via an "
          "embedded value in an extrinsic method or intrinsic operation.\n"
          "For example: a profile may require that an intrinsic "
          "instance modification supply the Generation property and "
          "that it must match for the modification to succeed." )]
   uint64 Generation;
};

// ==================================================================
//  CIM_ManagedSystemElement
// ==================================================================
   [Abstract,  Version ( "2.22.0" ), Description (
       "CIM_ManagedSystemElement is the base class for the System "
       "Element hierarchy. Any distinguishable component of a System "
       "is a candidate for inclusion in this class. Examples of system "
       "components include: \n"
       "- software components such as application servers, databases, "
       "and applications \n"
       "- operating system components such as files, processes, and "
       "threads \n"
       "- device components such as disk drives, controllers, "
       "processors, and printers \n"
       "- physical components such as chips and cards.")]
class CIM_ManagedSystemElement : CIM_ManagedElement {

      [Description ( 
          "A datetime value that indicates when the object was "
          "installed. Lack of a value does not indicate that the "
          "object is not installed." ), 
       MappingStrings { "MIF.DMTF|ComponentID|001.5" }]
   datetime InstallDate;

      [Description ( 
          "The Name property defines the label by which the object "
          "is known. When subclassed, the Name property can be "
          "overridden to be a Key property." ), 
       MaxLen ( 1024 )]
   string Name;

      [Description ( 
          "Indicates the current statuses of the element. Various "
          "operational statuses are defined. Many of the "
          "enumeration\'s values are self-explanatory. However, a "
          "few are not and are described here in more detail. \n"
          "\"Stressed\" indicates that the element is functioning, "
          "but needs attention. Examples of \"Stressed\" states are "
          "overload, overheated, and so on. \n"
          "\"Predictive Failure\" indicates that an element is "
          "functioning nominally but predicting a failure in the "
          "near future. \n"
          "\"In Service\" describes an element being configured, "
          "maintained, cleaned, or otherwise administered. \n"
          "\"No Contact\" indicates that the monitoring system has "
          "knowledge of this element, but has never been able to "
          "establish communications with it. \n"
          "\"Lost Communication\" indicates that the ManagedSystem "
          "Element is known to exist and has been contacted "
          "successfully in the past, but is currently unreachable. \n"
          "\"Stopped\" and \"Aborted\" are similar, although the "
          "former implies a clean and orderly stop, while the "
          "latter implies an abrupt stop where the state and "
          "configuration of the element might need to be updated. \n"
          "\"Dormant\" indicates that the element is inactive or "
          "quiesced. \n"
          "\"Supporting Entity in Error\" indicates that this "
          "element might be \"OK\" but that another element, on "
          "which it is dependent, is in error. An example is a "
          "network service or endpoint that cannot function due to "
          "lower-layer networking problems. \n"
          "\"Completed\" indicates that the element has completed "
          "its operation. This value should be combined with either "
          "OK, Error, or Degraded so that a client can tell if the "
          "complete operation Completed with OK (passed), Completed "
          "with Error (failed), or Completed with Degraded (the "
          "operation finished, but it did not complete OK or did "
          "not report an error). \n"
          "\"Power Mode\" indicates that the element has additional "
          "power model information contained in the Associated "
          "PowerManagementService association. \n"
          "OperationalStatus replaces the Status property on "
          "ManagedSystemElement to provide a consistent approach to "
          "enumerations, to address implementation needs for an "
          "array property, and to provide a migration path from "
          "today\'s environment to the future. This change was not "
          "made earlier because it required the deprecated "
          "qualifier. Due to the widespread use of the existing "
          "Status property in management applications, it is "
          "strongly recommended that providers or instrumentation "
          "provide both the Status and OperationalStatus "
          "properties. Further, the first value of "
          "OperationalStatus should contain the primary status for "
          "the element. When instrumented, Status (because it is "
          "single-valued) should also provide the primary status of "
          "the element." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "13", "14", "15", "16", "17", "18", 
          "..", "0x8000.." }, 
       Values { "Unknown", "Other", "OK", "Degraded", "Stressed", 
          "Predictive Failure", "Error", "Non-Recoverable Error", 
          "Starting", "Stopping", "Stopped", "In Service", 
          "No Contact", "Lost Communication", "Aborted", "Dormant", 
          "Supporting Entity in Error", "Completed", "Power Mode", 
          "DMTF Reserved", "Vendor Reserved" }, 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ManagedSystemElement.StatusDescriptions" }]
   uint16 OperationalStatus[];

      [Description ( 
          "Strings describing the various OperationalStatus array "
          "values. For example, if \"Stopping\" is the value "
          "assigned to OperationalStatus, then this property may "
          "contain an explanation as to why an object is being "
          "stopped. Note that entries in this array are correlated "
          "with those at the same array index in OperationalStatus." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ManagedSystemElement.OperationalStatus" }]
   string StatusDescriptions[];

      [Deprecated { "CIM_ManagedSystemElement.OperationalStatus" }, 
       Description ( 
          "A string indicating the current status of the object. "
          "Various operational and non-operational statuses are "
          "defined. This property is deprecated in lieu of "
          "OperationalStatus, which includes the same semantics in "
          "its enumeration. This change is made for 3 reasons: \n"
          "1) Status is more correctly defined as an array. This "
          "definition overcomes the limitation of describing status "
          "using a single value, when it is really a multi-valued "
          "property (for example, an element might be OK AND "
          "Stopped. \n"
          "2) A MaxLen of 10 is too restrictive and leads to "
          "unclear enumerated values. \n"
          "3) The change to a uint16 data type was discussed when "
          "CIM V2.0 was defined. However, existing V1.0 "
          "implementations used the string property and did not "
          "want to modify their code. Therefore, Status was "
          "grandfathered into the Schema. Use of the deprecated "
          "qualifier allows the maintenance of the existing "
          "property, but also permits an improved definition using "
          "OperationalStatus." ), 
       ValueMap { "OK", "Error", "Degraded", "Unknown", "Pred Fail", 
          "Starting", "Stopping", "Service", "Stressed", 
          "NonRecover", "No Contact", "Lost Comm", "Stopped" }, 
       MaxLen ( 10 )]
   string Status;

      [Description ( 
          "Indicates the current health of the element. This "
          "attribute expresses the health of this element but not "
          "necessarily that of its subcomponents. The possible "
          "values are 0 to 30, where 5 means the element is "
          "entirely healthy and 30 means the element is completely "
          "non-functional. The following continuum is defined: \n"
          "\"Non-recoverable Error\" (30) - The element has "
          "completely failed, and recovery is not possible. All "
          "functionality provided by this element has been lost. \n"
          "\"Critical Failure\" (25) - The element is "
          "non-functional and recovery might not be possible. \n"
          "\"Major Failure\" (20) - The element is failing. It is "
          "possible that some or all of the functionality of this "
          "component is degraded or not working. \n"
          "\"Minor Failure\" (15) - All functionality is available "
          "but some might be degraded. \n"
          "\"Degraded/Warning\" (10) - The element is in working "
          "order and all functionality is provided. However, the "
          "element is not working to the best of its abilities. For "
          "example, the element might not be operating at optimal "
          "performance or it might be reporting recoverable errors. \n"
          "\"OK\" (5) - The element is fully functional and is "
          "operating within normal operational parameters and "
          "without error. \n"
          "\"Unknown\" (0) - The implementation cannot report on "
          "HealthState at this time. \n"
          "DMTF has reserved the unused portion of the continuum "
          "for additional HealthStates in the future." ), 
       ValueMap { "0", "5", "10", "15", "20", "25", "30", ".." }, 
       Values { "Unknown", "OK", "Degraded/Warning", 
          "Minor failure", "Major failure", "Critical failure", 
          "Non-recoverable error", "DMTF Reserved" }]
   uint16 HealthState;

      [Description ( 
          "CommunicationStatus indicates the ability of the "
          "instrumentation to communicate with the underlying "
          "ManagedElement. CommunicationStatus consists of one of "
          "the following values: Unknown, None, Communication OK, "
          "Lost Communication, or No Contact. \n"
          "A Null return indicates the implementation (provider) "
          "does not implement this property. \n"
          "\"Unknown\" indicates the implementation is in general "
          "capable of returning this property, but is unable to do "
          "so at this time. \n"
          "\"Not Available\" indicates that the implementation "
          "(provider) is capable of returning a value for this "
          "property, but not ever for this particular piece of "
          "hardware/software or the property is intentionally not "
          "used because it adds no meaningful information (as in "
          "the case of a property that is intended to add "
          "additional info to another property). \n"
          "\"Communication OK \" indicates communication is "
          "established with the element, but does not convey any "
          "quality of service. \n"
          "\"No Contact\" indicates that the monitoring system has "
          "knowledge of this element, but has never been able to "
          "establish communications with it. \n"
          "\"Lost Communication\" indicates that the Managed "
          "Element is known to exist and has been contacted "
          "successfully in the past, but is currently unreachable." ), 
       ValueMap { "0", "1", "2", "3", "4", "..", "0x8000.." }, 
       Values { "Unknown", "Not Available", "Communication OK", 
          "Lost Communication", "No Contact", "DMTF Reserved", 
          "Vendor Reserved" }]
   uint16 CommunicationStatus;

      [Description ( 
          "DetailedStatus compliments PrimaryStatus with additional "
          "status detail. It consists of one of the following "
          "values: Not Available, No Additional Information, "
          "Stressed, Predictive Failure, Error, Non-Recoverable "
          "Error, SupportingEntityInError. Detailed status is used "
          "to expand upon the PrimaryStatus of the element. \n"
          "A Null return indicates the implementation (provider) "
          "does not implement this property. \n"
          "\"Not Available\" indicates that the implementation "
          "(provider) is capable of returning a value for this "
          "property, but not ever for this particular piece of "
          "hardware/software or the property is intentionally not "
          "used because it adds no meaningful information (as in "
          "the case of a property that is intended to add "
          "additional info to another property). \n"
          "\"No Additional Information\" indicates that the element "
          "is functioning normally as indicated by PrimaryStatus = "
          "\"OK\". \n"
          "\"Stressed\" indicates that the element is functioning, "
          "but needs attention. Examples of \"Stressed\" states are "
          "overload, overheated, and so on. \n"
          "\"Predictive Failure\" indicates that an element is "
          "functioning normally but a failure is predicted in the "
          "near future. \n"
          "\"Non-Recoverable Error \" indicates that this element "
          "is in an error condition that requires human "
          "intervention. \n"
          "\"Supporting Entity in Error\" indicates that this "
          "element might be \"OK\" but that another element, on "
          "which it is dependent, is in error. An example is a "
          "network service or endpoint that cannot function due to "
          "lower-layer networking problems." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "0x8000.." }, 
       Values { "Not Available", "No Additional Information", 
          "Stressed", "Predictive Failure", "Non-Recoverable Error", 
          "Supporting Entity in Error", "DMTF Reserved", 
          "Vendor Reserved" }, 
       ModelCorrespondence { 
          "CIM_EnabledLogicalElement.PrimaryStatus", 
          "CIM_ManagedSystemElement.HealthState" }]
   uint16 DetailedStatus;

      [Description ( 
          "OperatingStatus provides a current status value for the "
          "operational condition of the element and can be used for "
          "providing more detail with respect to the value of "
          "EnabledState. It can also provide the transitional "
          "states when an element is transitioning from one state "
          "to another, such as when an element is transitioning "
          "between EnabledState and RequestedState, as well as "
          "other transitional conditions.\n"
          "OperatingStatus consists of one of the following values: "
          "Unknown, Not Available, In Service, Starting, Stopping, "
          "Stopped, Aborted, Dormant, Completed, Migrating, "
          "Emmigrating, Immigrating, Snapshotting. Shutting Down, "
          "In Test \n"
          "A Null return indicates the implementation (provider) "
          "does not implement this property. \n"
          "\"Unknown\" indicates the implementation is in general "
          "capable of returning this property, but is unable to do "
          "so at this time. \n"
          "\"None\" indicates that the implementation (provider) is "
          "capable of returning a value for this property, but not "
          "ever for this particular piece of hardware/software or "
          "the property is intentionally not used because it adds "
          "no meaningful information (as in the case of a property "
          "that is intended to add additional info to another "
          "property). \n"
          "\"Servicing\" describes an element being configured, "
          "maintained, cleaned, or otherwise administered. \n"
          "\"Starting\" describes an element being initialized. \n"
          "\"Stopping\" describes an element being brought to an "
          "orderly stop. \n"
          "\"Stopped\" and \"Aborted\" are similar, although the "
          "former implies a clean and orderly stop, while the "
          "latter implies an abrupt stop where the state and "
          "configuration of the element might need to be updated. \n"
          "\"Dormant\" indicates that the element is inactive or "
          "quiesced. \n"
          "\"Completed\" indicates that the element has completed "
          "its operation. This value should be combined with either "
          "OK, Error, or Degraded in the PrimaryStatus so that a "
          "client can tell if the complete operation Completed with "
          "OK (passed), Completed with Error (failed), or Completed "
          "with Degraded (the operation finished, but it did not "
          "complete OK or did not report an error). \n"
          "\"Migrating\" element is being moved between host "
          "elements. \n"
          "\"Immigrating\" element is being moved to new host "
          "element. \n"
          "\"Emigrating\" element is being moved away from host "
          "element. \n"
          "\"Shutting Down\" describes an element being brought to "
          "an abrupt stop. \n"
          "\"In Test\" element is performing test functions. \n"
          "\"Transitioning\" describes an element that is between "
          "states, that is, it is not fully available in either its "
          "previous state or its next state. This value should be "
          "used if other values indicating a transition to a "
          "specific state are not applicable.\n"
          "\"In Service\" describes an element that is in service "
          "and operational." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "13", "14", "15", "16", "..", "0x8000.." }, 
       Values { "Unknown", "Not Available", "Servicing", "Starting", 
          "Stopping", "Stopped", "Aborted", "Dormant", "Completed", 
          "Migrating", "Emigrating", "Immigrating", "Snapshotting", 
          "Shutting Down", "In Test", "Transitioning", "In Service", 
          "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_EnabledLogicalElement.EnabledState" }]
   uint16 OperatingStatus;

      [Description ( 
          "PrimaryStatus provides a high level status value, "
          "intended to align with Red-Yellow-Green type "
          "representation of status. It should be used in "
          "conjunction with DetailedStatus to provide high level "
          "and detailed health status of the ManagedElement and its "
          "subcomponents. \n"
          "PrimaryStatus consists of one of the following values: "
          "Unknown, OK, Degraded or Error. \"Unknown\" indicates "
          "the implementation is in general capable of returning "
          "this property, but is unable to do so at this time. \n"
          "\"OK\" indicates the ManagedElement is functioning "
          "normally. \n"
          "\"Degraded\" indicates the ManagedElement is functioning "
          "below normal. \n"
          "\"Error\" indicates the ManagedElement is in an Error "
          "condition." ), 
       ValueMap { "0", "1", "2", "3", "..", "0x8000.." }, 
       Values { "Unknown", "OK", "Degraded", "Error", 
          "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { 
          "CIM_ManagedSystemElement.DetailedStatus", 
          "CIM_ManagedSystemElement.HealthState" }]
   uint16 PrimaryStatus;
};

// ==================================================================
//  CIM_LogicalElement
// ==================================================================
   [Abstract,  Version ( "2.6.0" ), Description (
       "CIM_LogicalElement is a base class for all the components of a "
       "System that represent abstract system components, such as "
       "Files, Processes, or LogicalDevices.")]
class CIM_LogicalElement : CIM_ManagedSystemElement {
};

// ==================================================================
//  CIM_Job
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "A Job is a LogicalElement that represents an executing unit of "
       "work, such as a script or a print job. A Job is distinct from "
       "a Process in that a Job can be scheduled or queued, and its "
       "execution is not limited to a single system.")]
class CIM_Job : CIM_LogicalElement {

      [Description (
          "A free-form string that represents the status of the job. "
          "The primary status is reflected in the inherited "
          "OperationalStatus property. JobStatus provides additional, "
          "implementation-specific details."), 
       ModelCorrespondence { 
          "CIM_ManagedSystemElement.OperationalStatus" }]
   string JobStatus;

      [Description (
          "The time that the Job was submitted to execute. A value of "
          "all zeroes indicates that the owning element is not capable "
          "of reporting a date and time. Therefore, the "
          "ScheduledStartTime and StartTime are reported as intervals "
          "relative to the time their values are requested.")]
   datetime TimeSubmitted;

      [Deprecated { "CIM_Job.RunMonth", "CIM_Job.RunDay",
          "CIM_Job.RunDayOfWeek", "CIM_Job.RunStartInterval" }, Write, 
       Description (
          "The time that the current Job is scheduled to start. This "
          "time can be represented by the actual date and time, or an "
          "interval relative to the time that this property is "
          "requested. A value of all zeroes indicates that the Job is "
          "already executing. The property is deprecated in lieu of "
          "the more expressive scheduling properties, RunMonth, "
          "RunDay, RunDayOfWeek, and RunStartInterval.")]
   datetime ScheduledStartTime;

      [Description (
          "The time that the Job was actually started. This time can "
          "be represented by an actual date and time, or by an "
          "interval relative to the time that this property is "
          "requested. Note that this property is also present in the "
          "JobProcessingStatistics class. This class is necessary to "
          "capture the processing information for recurring Jobs, "
          "because only the 'last' run time can be stored in this "
          "single-valued property.")]
   datetime StartTime;

      [Description (
          "The time interval that the Job has been executing or the "
          "total execution time if the Job is complete. Note that this "
          "property is also present in the JobProcessingStatistics "
          "class. This class is necessary to capture the processing "
          "information for recurring Jobs, because only the 'last' run "
          "time can be stored in this single-valued property.")]
   datetime ElapsedTime;

      [Write, Description (
          "The number of times that the Job should be run. A value of "
          "1 indicates that the Job is not recurring, while any "
          "non-zero value indicates a limit to the number of times "
          "that the Job will recur. Zero indicates that there is no "
          "limit to the number of times that the Job can be processed, "
          "but that it is terminated either after the UntilTime or by "
          "manual intervention. By default, a Job is processed once.")]
   uint32 JobRunTimes = 1;

      [Write, Description (
          "The month during which the Job should be processed. 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" }, 
       ModelCorrespondence { "CIM_Job.RunDay", "CIM_Job.RunDayOfWeek",
          "CIM_Job.RunStartInterval" }]
   uint8 RunMonth;

      [Write, Description (
          "The day in the month on which the Job should be processed. "
          "There are two different interpretations for this property, "
          "depending on the value of DayOfWeek. In one case, RunDay "
          "defines the day-in-month on which the Job is processed. "
          "This interpretation is used when the DayOfWeek is 0. A "
          "positive or negative integer indicates whether the RunDay "
          "should be calculated from the beginning or end of the "
          "month. For example, 5 indicates the fifth day in the "
          "RunMonth and -1 indicates the last day in the RunMonth. \n"
          "\n"
          "When RunDayOfWeek is not 0, RunDay is the day-in-month on "
          "which the Job is processed, defined in conjunction with "
          "RunDayOfWeek. For example, if RunDay is 15 and RunDayOfWeek "
          "is Saturday, then the Job is processed on the first "
          "Saturday on or after the 15th day in the RunMonth (for "
          "example, the third Saturday in the month). If RunDay is 20 "
          "and RunDayOfWeek is -Saturday, then this indicates the "
          "first Saturday on or before the 20th day in the RunMonth. "
          "If RunDay is -1 and RunDayOfWeek is -Sunday, then this "
          "indicates the last Sunday in the RunMonth."), 
       MinValue ( -31 ), MaxValue ( 31 ), 
       ModelCorrespondence { "CIM_Job.RunMonth",
          "CIM_Job.RunDayOfWeek", "CIM_Job.RunStartInterval" }]
   sint8 RunDay;

      [Write, Description (
          "A positive or negative integer used in conjunction with "
          "RunDay to indicate the day of the week on which the Job is "
          "processed. RunDayOfWeek 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 RunDay. A "
          "negative integer (representing -Sunday, -Monday, ..., "
          "-Saturday) means that the day of week is found on or BEFORE "
          "the RunDay."), 
       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" }, 
       ModelCorrespondence { "CIM_Job.RunMonth", "CIM_Job.RunDay",
          "CIM_Job.RunStartInterval" }]
   sint8 RunDayOfWeek;

      [Write, Description (
          "The time interval after midnight when the Job should be "
          "processed. For example, \n"
          "00000000020000.000000:000 \n"
          "indicates that the Job should be run on or after two "
          "o'clock, local time or UTC time (distinguished using the "
          "LocalOrUtcTime property."), 
       ModelCorrespondence { "CIM_Job.RunMonth", "CIM_Job.RunDay",
          "CIM_Job.RunDayOfWeek", "CIM_Job.RunStartInterval" }]
   datetime RunStartInterval;

      [Write, Description (
          "This property indicates whether the times represented in "
          "the RunStartInterval and UntilTime properties represent "
          "local times or UTC times. Time values are synchronized "
          "worldwide by using the enumeration value 2, \"UTC Time\"."), 
       ValueMap { "1", "2" }, 
       Values { "Local Time", "UTC Time" }]
   uint16 LocalOrUtcTime;

      [Write, Description (
          "The time after which the Job is invalid or should be "
          "stopped. This time can be represented by an actual date and "
          "time, or by an interval relative to the time that this "
          "property is requested. A value of all nines indicates that "
          "the Job can run indefinitely."), 
       ModelCorrespondence { "CIM_Job.LocalOrUtcTime" }]
   datetime UntilTime;

      [Write, Description (
          "The User who is to be notified upon the Job completion or "
          "failure.")]
   string Notify;

      [Description (
          "The User that submitted the Job, or the Service or method "
          "name that caused the job to be created."), 
       ModelCorrespondence { "CIM_OwningJobElement" }]
   string Owner;

      [Write, Description (
          "Indicates the urgency or importance of execution of the "
          "Job. The lower the number, the higher the priority. Note "
          "that this property is also present in the "
          "JobProcessingStatistics class. This class is necessary to "
          "capture the setting information that would influence the "
          "results of a job.")]
   uint32 Priority;

      [Description (
          "The percentage of the job that has completed at the time "
          "that this value is requested. Note that this property is "
          "also present in the JobProcessingStatistics class. This "
          "class is necessary to capture the processing information "
          "for recurring Jobs, because only the 'last' run data can be "
          "stored in this single-valued property. \n"
          "Note that the value 101 is undefined and will be not be "
          "allowed in the next major revision of the specification."), 
       Units ( "Percent" ), MinValue ( 0 ), MaxValue ( 101 )]
   uint16 PercentComplete;

      [Write, Description (
          "Indicates whether or not the job should be automatically "
          "deleted upon completion. Note that the 'completion' of a "
          "recurring job is defined by its JobRunTimes or UntilTime "
          "properties, or when the Job is terminated by manual "
          "intervention. If this property is set to false and the job "
          "completes, then the extrinsic method DeleteInstance must be "
          "used to delete the job instead of updating this property.")]
   boolean DeleteOnCompletion;

      [Description (
          "A vendor-specific error code. The value must be set to zero "
          "if the Job completed without error. Note that this property "
          "is also present in the JobProcessingStatistics class. This "
          "class is necessary to capture the processing information "
          "for recurring Jobs, because only the 'last' run error can "
          "be stored in this single-valued property."), 
       ModelCorrespondence { "CIM_Job.ErrorDescription" }]
   uint16 ErrorCode;

      [Description (
          "A free-form string that contains the vendor error "
          "description. Note that this property is also present in the "
          "JobProcessingStatistics class. This class is necessary to "
          "capture the processing information for recurring Jobs, "
          "because only the 'last' run error can be stored in this "
          "single-valued property."), 
       ModelCorrespondence { "CIM_Job.ErrorCode" }]
   string ErrorDescription;

      [Description (
          "Describes the recovery action to be taken for an "
          "unsuccessfully run Job. The possible values are: \n"
          "0 = \"Unknown\", meaning it is unknown as to what recovery "
          "action to take \n"
          "1 = \"Other\", indicating that the recovery action will be "
          "specified in the OtherRecoveryAction property \n"
          "2 = \"Do Not Continue\", meaning stop the execution of the "
          "job and appropriately update its status \n"
          "3 = \"Continue With Next Job\", meaning continue with the "
          "next job in the queue \n"
          "4 = \"Re-run Job\", indicating that the job should be "
          "re-run \n"
          "5 = \"Run Recovery Job\", meaning run the Job associated "
          "using the RecoveryJob relationship. Note that the recovery "
          "Job must already be in the queue from which it will run."), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "Other", "Do Not Continue",
          "Continue With Next Job", "Re-run Job", "Run Recovery Job" }, 
       ModelCorrespondence { "CIM_Job.OtherRecoveryAction" }]
   uint16 RecoveryAction;

      [Description (
          "A string describing the recovery action when the "
          "RecoveryAction property of the instance is 1 (\"Other\")."), 
       ModelCorrespondence { "CIM_Job.RecoveryAction" }]
   string OtherRecoveryAction;

      [Deprecated { "CIM_ConcreteJob.RequestStateChange()" }, 
       Description (
          "KillJob is being deprecated because there is no distinction "
          "made between an orderly shutdown and an immediate kill. "
          "CIM_ConcreteJob.RequestStateChange() provides 'Terminate' "
          "and 'Kill' options to allow this distinction. \n"
          "A method to kill this job and any underlying processes, and "
          "to remove any 'dangling' associations."), 
       ValueMap { "0", "1", "2", "3", "4", "6", "7", "..",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unknown", "Timeout",
          "Failed", "Access Denied", "Not Found", "DMTF Reserved",
          "Vendor Specific" }]
   uint32 KillJob( 
         [IN, Description (
             "Indicates whether or not the Job should be automatically "
             "deleted upon termination. This parameter takes "
             "precedence over the property, DeleteOnCompletion.")]
      boolean DeleteOnKill); 

};

// ==================================================================
//  CIM_AffectedJobElement
// ==================================================================
   [Association, Abstract,  Version ( "2.15.0" ), Description (
       "AffectedJobElement represents an association between a Job and "
       "the ManagedElement(s) that may be affected by its execution. "
       "It may not be feasible for the Job to describe all of the "
       "affected elements. The main purpose of this association is to "
       "provide information when a Job requires exclusive use of the "
       "'affected' ManagedElment(s) or when describing that side "
       "effects may result.")]
class CIM_AffectedJobElement {

      [Key, Description (
          "The ManagedElement affected by the execution of the Job.")]
   CIM_ManagedElement REF AffectedElement;

      [Key, Description (
          "The Job that is affecting the ManagedElement.")]
   CIM_Job REF AffectingElement;

      [Description (
          "An enumeration describing the 'effect' on the "
          "ManagedElement. This array corresponds to the "
          "OtherElementEffectsDescriptions array, where the latter "
          "provides details related to the high-level 'effects' "
          "enumerated by this property. Additional detail is required "
          "if the ElementEffects array contains the value 1, "
          "\"Other\"."), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "Other", "Exclusive Use",
          "Performance Impact", "Element Integrity", "Create" },
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_AffectedJobElement.OtherElementEffectsDescriptions" }]
   uint16 ElementEffects[];

      [Description (
          "Provides details for the 'effect' at the corresponding "
          "array position in ElementEffects. This information is "
          "required whenever ElementEffects contains the value 1 "
          "(\"Other\")."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_AffectedJobElement.ElementEffects" }]
   string OtherElementEffectsDescriptions[];
};

// ==================================================================
//  CIM_ConcreteJob
// ==================================================================
   [Abstract,  Version ( "2.13.0" ), Description (
       "A concrete version of Job. This class represents a generic and "
       "instantiable unit of work, such as a batch or a print job.")]
class CIM_ConcreteJob : CIM_Job {

      [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 that is creating or defining the InstanceID, or that "
          "is a registered ID that is assigned to the business entity "
          "by a recognized global authority. (This requirement 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 resulting "
          "InstanceID is not re-used across any InstanceIDs produced "
          "by this or other providers for the NameSpace of this "
          "instance. \n"
          "For DMTF defined instances, the 'preferred' algorithm must "
          "be used with the <OrgID> set to 'CIM'.")]
   string InstanceID;

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

      [Description (
          "JobState is an integer enumeration that indicates the "
          "operational state of a Job. It can also indicate "
          "transitions between these states, for example, 'Shutting "
          "Down' and 'Starting'. Following is a brief description of "
          "the states: \n"
          "New (2) indicates that the job has never been started. \n"
          "Starting (3) indicates that the job is moving from the "
          "'New', 'Suspended', or 'Service' states into the 'Running' "
          "state. \n"
          "Running (4) indicates that the Job is running. \n"
          "Suspended (5) indicates that the Job is stopped, but can be "
          "restarted in a seamless manner. \n"
          "Shutting Down (6) indicates that the job is moving to a "
          "'Completed', 'Terminated', or 'Killed' state. \n"
          "Completed (7) indicates that the job has completed "
          "normally. \n"
          "Terminated (8) indicates that the job has been stopped by a "
          "'Terminate' state change request. The job and all its "
          "underlying processes are ended and can be restarted (this "
          "is job-specific) only as a new job. \n"
          "Killed (9) indicates that the job has been stopped by a "
          "'Kill' state change request. Underlying processes might "
          "have been left running, and cleanup might be required to "
          "free up resources. \n"
          "Exception (10) indicates that the Job is in an abnormal "
          "state that might be indicative of an error condition. "
          "Actual status might be displayed though job-specific "
          "objects. \n"
          "Service (11) indicates that the Job is in a vendor-specific "
          "state that supports problem discovery, or resolution, or "
          "both. \n"
          "Query pending (12) waiting for a client to resolve a query"), 
       ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
          "12", "13..32767", "32768..65535" }, 
       Values { "New", "Starting", "Running", "Suspended",
          "Shutting Down", "Completed", "Terminated", "Killed",
          "Exception", "Service", "Query Pending", "DMTF Reserved",
          "Vendor Reserved" }]
   uint16 JobState;

      [Description (
          "The date or time when the state of the Job last changed. If "
          "the state of the Job has not changed and this property is "
          "populated, then it must be set to a 0 interval value. If a "
          "state change was requested, but rejected or not yet "
          "processed, the property must not be updated.")]
   datetime TimeOfLastStateChange;

      [Description (
          "Requests that the state of the job be changed to the value "
          "specified in the RequestedState parameter. Invoking the "
          "RequestStateChange method multiple times could result in "
          "earlier requests being overwritten or lost. \n"
          "If 0 is returned, then the task completed successfully. Any "
          "other return code indicates an error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported",
          "Unknown/Unspecified Error",
          "Can NOT complete within Timeout Period", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Transition Started",
          "Invalid State Transition",
          "Use of Timeout Parameter Not Supported", "Busy",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestStateChange( 
         [IN, Description (
             "RequestStateChange changes the state of a job. The "
             "possible values are as follows: \n"
             "Start (2) changes the state to 'Running'. \n"
             "Suspend (3) stops the job temporarily. The intention is "
             "to subsequently restart the job with 'Start'. It might "
             "be possible to enter the 'Service' state while "
             "suspended. (This is job-specific.) \n"
             "Terminate (4) stops the job cleanly, saving data, "
             "preserving the state, and shutting down all underlying "
             "processes in an orderly manner. \n"
             "Kill (5) terminates the job immediately with no "
             "requirement to save data or preserve the state. \n"
             "Service (6) puts the job into a vendor-specific service "
             "state. It might be possible to restart the job."), 
          ValueMap { "2", "3", "4", "5", "6", "7..32767",
             "32768..65535" }, 
          Values { "Start", "Suspend", "Terminate", "Kill", "Service",
             "DMTF Reserved", "Vendor Reserved" }]
      uint16 RequestedState, 
         [IN, Description (
             "A timeout period that specifies the maximum amount of "
             "time that the client expects the transition to the new "
             "state to take. The interval format must be used to "
             "specify the TimeoutPeriod. A value of 0 or a null "
             "parameter indicates that the client has no time "
             "requirements for the transition. \n"
             "If this property does not contain 0 or null and the "
             "implementation does not support this parameter, a return "
             "code of 'Use Of Timeout Parameter Not Supported' must be "
             "returned.")]
      datetime TimeoutPeriod); 

      [Description (
          "When the job is executing or has terminated without error, "
          "then this method returns no CIM_Error instance. However, if "
          "the job has failed because of some internal problem or "
          "because the job has been terminated by a client, then a "
          "CIM_Error instance is returned."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 GetError ( 
         [OUT, Description (
             "If the OperationalStatus on the Job is not \"OK\", then "
             "this method will return a CIM Error instance. Otherwise, "
             "when the Job is \"OK\", null is returned."), 
          EmbeddedInstance ( "CIM_Error" )]
      string Error); 

      [Required, Write, Description (
          "The amount of time that the Job is retained after it has "
          "finished executing, either succeeding or failing in that "
          "execution. The job must remain in existence for some period "
          "of time regardless of the value of the DeleteOnCompletion "
          "property. \n"
          "The default is five minutes.")]
   datetime TimeBeforeRemoval = "00000000000500.000000:000";

};

// ==================================================================
//  CIM_EnabledLogicalElement
// ==================================================================
   [Abstract,  Version ( "2.22.0" ), Description (
       "This class extends LogicalElement to abstract the concept of "
       "an element that is enabled and disabled, such as a "
       "LogicalDevice or a ServiceAccessPoint.")]
class CIM_EnabledLogicalElement : CIM_LogicalElement {

      [Description ( 
          "EnabledState is an integer enumeration that indicates "
          "the enabled and disabled states of an element. It can "
          "also indicate the transitions between these requested "
          "states. For example, shutting down (value=4) and "
          "starting (value=10) are transient states between enabled "
          "and disabled. The following text briefly summarizes the "
          "various enabled and disabled states: \n"
          "Enabled (2) indicates that the element is or could be "
          "executing commands, will process any queued commands, "
          "and queues new requests. \n"
          "Disabled (3) indicates that the element will not execute "
          "commands and will drop any new requests. \n"
          "Shutting Down (4) indicates that the element is in the "
          "process of going to a Disabled state. \n"
          "Not Applicable (5) indicates the element does not "
          "support being enabled or disabled. \n"
          "Enabled but Offline (6) indicates that the element might "
          "be completing commands, and will drop any new requests. \n"
          "Test (7) indicates that the element is in a test state. \n"
          "Deferred (8) indicates that the element might be "
          "completing commands, but will queue any new requests. \n"
          "Quiesce (9) indicates that the element is enabled but in "
          "a restricted mode.\n"
          "Starting (10) indicates that the element is in the "
          "process of going to an Enabled state. New requests are "
          "queued." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11..32767", "32768..65535" }, 
       Values { "Unknown", "Other", "Enabled", "Disabled", 
          "Shutting Down", "Not Applicable", "Enabled but Offline", 
          "In Test", "Deferred", "Quiesce", "Starting", 
          "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { 
          "CIM_EnabledLogicalElement.OtherEnabledState" }]
   uint16 EnabledState = 5;

      [Description ( 
          "A string that describes the enabled or disabled state of "
          "the element when the EnabledState property is set to 1 "
          "(\"Other\"). This property must be set to null when "
          "EnabledState is any value other than 1." ), 
       ModelCorrespondence { "CIM_EnabledLogicalElement.EnabledState" }]
   string OtherEnabledState;

      [Description ( 
          "RequestedState is an integer enumeration that indicates "
          "the last requested or desired state for the element, "
          "irrespective of the mechanism through which it was "
          "requested. The actual state of the element is "
          "represented by EnabledState. This property is provided "
          "to compare the last requested and current enabled or "
          "disabled states. Note that when EnabledState is set to 5 "
          "(\"Not Applicable\"), then this property has no meaning. "
          "Refer to the EnabledState property description for "
          "explanations of the values in the RequestedState "
          "enumeration. \n"
          "\"Unknown\" (0) indicates the last requested state for "
          "the element is unknown.\n"
          "Note that the value \"No Change\" (5) has been "
          "deprecated in lieu of indicating the last requested "
          "state is \"Unknown\" (0). If the last requested or "
          "desired state is unknown, RequestedState should have the "
          "value \"Unknown\" (0), but may have the value \"No "
          "Change\" (5).Offline (6) indicates that the element has "
          "been requested to transition to the Enabled but Offline "
          "EnabledState. \n"
          "It should be noted that there are two new values in "
          "RequestedState that build on the statuses of "
          "EnabledState. These are \"Reboot\" (10) and \"Reset\" "
          "(11). Reboot refers to doing a \"Shut Down\" and then "
          "moving to an \"Enabled\" state. Reset indicates that the "
          "element is first \"Disabled\" and then \"Enabled\". The "
          "distinction between requesting \"Shut Down\" and "
          "\"Disabled\" should also be noted. Shut Down requests an "
          "orderly transition to the Disabled state, and might "
          "involve removing power, to completely erase any existing "
          "state. The Disabled state requests an immediate "
          "disabling of the element, such that it will not execute "
          "or accept any commands or processing requests. \n"
          "\n"
          "This property is set as the result of a method "
          "invocation (such as Start or StopService on "
          "CIM_Service), or can be overridden and defined as "
          "WRITEable in a subclass. The method approach is "
          "considered superior to a WRITEable property, because it "
          "allows an explicit invocation of the operation and the "
          "return of a result code. \n"
          "\n"
          "If knowledge of the last RequestedState is not supported "
          "for the EnabledLogicalElement, the property shall be "
          "NULL or have the value 12 \"Not Applicable\"." ), 
       ValueMap { "0", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "..", "32768..65535" }, 
       Values { "Unknown", "Enabled", "Disabled", "Shut Down", 
          "No Change", "Offline", "Test", "Deferred", "Quiesce", 
          "Reboot", "Reset", "Not Applicable", "DMTF Reserved", 
          "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_EnabledLogicalElement.EnabledState" }]
   uint16 RequestedState = 12;

      [Write, Description ( 
          "An enumerated value indicating an administrator\'s "
          "default or startup configuration for the Enabled State "
          "of an element. By default, the element is \"Enabled\" "
          "(value=2)." ), 
       ValueMap { "2", "3", "5", "6", "7", "9", "..", "32768..65535" }, 
       Values { "Enabled", "Disabled", "Not Applicable", 
          "Enabled but Offline", "No Default", "Quiesce", 
          "DMTF Reserved", "Vendor Reserved" }]
   uint16 EnabledDefault = 2;

      [Description ( 
          "The date or time when the EnabledState of the element "
          "last changed. If the state of the element has not "
          "changed and this property is populated, then it must be "
          "set to a 0 interval value. If a state change was "
          "requested, but rejected or not yet processed, the "
          "property must not be updated." )]
   datetime TimeOfLastStateChange;

      [Description ( 
          "AvailableRequestedStates indicates the possible values "
          "for the RequestedState parameter of the method "
          "RequestStateChange, used to initiate a state change. The "
          "values listed shall be a subset of the values contained "
          "in the RequestedStatesSupported property of the "
          "associated instance of "
          "CIM_EnabledLogicalElementCapabilities where the values "
          "selected are a function of the current state of the "
          "CIM_EnabledLogicalElement. This property may be non-null "
          "if an implementation is able to advertise the set of "
          "possible values as a function of the current state. This "
          "property shall be null if an implementation is unable to "
          "determine the set of possible values as a function of "
          "the current state." ), 
       ValueMap { "2", "3", "4", "6", "7", "8", "9", "10", "11", ".." }, 
       Values { "Enabled", "Disabled", "Shut Down", "Offline", 
          "Test", "Defer", "Quiesce", "Reboot", "Reset", 
          "DMTF Reserved" }, 
       ModelCorrespondence { 
          "CIM_EnabledLogicalElement.RequestStateChange", 
          "CIM_EnabledLogicalElementCapabilities.RequestedStatesSupported" }]
   uint16 AvailableRequestedStates[];

      [Description ( 
          "TransitioningToState indicates the target state to which "
          "the instance is transitioning. \n"
          "A value of 5 \"No Change\" shall indicate that no "
          "transition is in progress.A value of 12 \"Not "
          "Applicable\" shall indicate the implementation does not "
          "support representing ongoing transitions. \n"
          "A value other than 5 or 12 shall identify the state to "
          "which the element is in the process of transitioning." ), 
       ValueMap { "0", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", ".." }, 
       Values { "Unknown", "Enabled", "Disabled", "Shut Down", 
          "No Change", "Offline", "Test", "Defer", "Quiesce", 
          "Reboot", "Reset", "Not Applicable", "DMTF Reserved" }, 
       ModelCorrespondence { 
          "CIM_EnabledLogicalElement.RequestStateChange", 
          "CIM_EnabledLogicalElement.RequestedState", 
          "CIM_EnabledLogicalElement.EnabledState" }]
   uint16 TransitioningToState = 12;


      [Description ( 
          "Requests that the state of the element be changed to the "
          "value specified in the RequestedState parameter. When "
          "the requested state change takes place, the EnabledState "
          "and RequestedState of the element will be the same. "
          "Invoking the RequestStateChange method multiple times "
          "could result in earlier requests being overwritten or "
          "lost. \n"
          "A return code of 0 shall indicate the state change was "
          "successfully initiated. \n"
          "A return code of 3 shall indicate that the state "
          "transition cannot complete within the interval specified "
          "by the TimeoutPeriod parameter. \n"
          "A return code of 4096 (0x1000) shall indicate the state "
          "change was successfully initiated, a ConcreteJob has "
          "been created, and its reference returned in the output "
          "parameter Job. Any other return code indicates an error "
          "condition." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096", 
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Unknown or Unspecified Error", 
          "Cannot complete within Timeout Period", "Failed", 
          "Invalid Parameter", "In Use", "DMTF Reserved", 
          "Method Parameters Checked - Job Started", 
          "Invalid State Transition", 
          "Use of Timeout Parameter Not Supported", "Busy", 
          "Method Reserved", "Vendor Specific" }, 
       ModelCorrespondence { 
          "CIM_EnabledLogicalElement.RequestedState" }]
   uint32 RequestStateChange(
         [IN, Description ( 
             "The state requested for the element. This "
             "information will be placed into the RequestedState "
             "property of the instance if the return code of the "
             "RequestStateChange method is 0 (\'Completed with "
             "No Error\'), or 4096 (0x1000) (\'Job Started\'). "
             "Refer to the description of the EnabledState and "
             "RequestedState properties for the detailed "
             "explanations of the RequestedState values." ), 
          ValueMap { "2", "3", "4", "6", "7", "8", "9", "10", 
             "11", "..", "32768..65535" }, 
          Values { "Enabled", "Disabled", "Shut Down", "Offline", 
             "Test", "Defer", "Quiesce", "Reboot", "Reset", 
             "DMTF Reserved", "Vendor Reserved" }, 
          ModelCorrespondence { 
             "CIM_EnabledLogicalElement.RequestedState" }]
      uint16 RequestedState, 
         [IN ( false ), OUT, Description ( 
             "May contain a reference to the ConcreteJob created "
             "to track the state transition initiated by the "
             "method invocation." )]
      CIM_ConcreteJob REF Job, 
         [IN, Description ( 
             "A timeout period that specifies the maximum amount "
             "of time that the client expects the transition to "
             "the new state to take. The interval format must be "
             "used to specify the TimeoutPeriod. A value of 0 or "
             "a null parameter indicates that the client has no "
             "time requirements for the transition. \n"
             "If this property does not contain 0 or null and "
             "the implementation does not support this "
             "parameter, a return code of \'Use Of Timeout "
             "Parameter Not Supported\' shall be returned." )]
      datetime TimeoutPeriod);
};

// ==================================================================
//  CIM_LogicalDevice
// ==================================================================
   [Abstract,  Version ( "2.8.0" ), Description (
       "An abstraction or emulation of a hardware entity, that may or "
       "may not be Realized in physical hardware. Any characteristics "
       "of a LogicalDevice that are used to manage its operation or "
       "configuration are contained in, or associated with, the "
       "LogicalDevice object. Examples of the operational properties "
       "of a Printer would be paper sizes supported, or detected "
       "errors. Examples of the configuration properties of a Sensor "
       "Device would be threshold settings. Various configurations "
       "could exist for a LogicalDevice. These configurations could be "
       "contained in Setting objects and associated with the "
       "LogicalDevice.")]
class CIM_LogicalDevice : CIM_EnabledLogicalElement {

      [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, Description (
          "An address or other identifying information to uniquely "
          "name the LogicalDevice."), 
       MaxLen ( 64 )]
   string DeviceID;

      [Deprecated { "CIM_PowerManagementCapabilities" }, Description (
          "Boolean indicating that the Device can be power managed. "
          "The use of this property has been deprecated. Instead, the "
          "existence of an associated PowerManagementCapabilities "
          "class (associated using the ElementCapabilities "
          "relationhip) indicates that power management is supported.")]
   boolean PowerManagementSupported;

      [Deprecated { "CIM_PowerManagementCapabilities.PowerCapabilities" 
          }, Description (
          "An enumerated array describing the power management "
          "capabilities of the Device. The use of this property has "
          "been deprecated. Instead, the PowerCapabilites property in "
          "an associated PowerManagementCapabilities class should be "
          "used."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7" }, 
       Values { "Unknown", "Not Supported", "Disabled", "Enabled",
          "Power Saving Modes Entered Automatically",
          "Power State Settable", "Power Cycling Supported",
          "Timed Power On Supported" }]
   uint16 PowerManagementCapabilities[];

      [Description (
          "The primary availability and status of the Device. "
          "(Additional status information can be specified using the "
          "Additional Availability array property.) For example, the "
          "Availability property indicates that the Device is running "
          "and has full power (value=3), or is in a warning (4), test "
          "(5), degraded (10) or power save state (values 13-15 and "
          "17). Regarding the Power Save states, these are defined as "
          "follows: Value 13 (\"Power Save - Unknown\") indicates that "
          "the Device is known to be in a power save mode, but its "
          "exact status in this mode is unknown; 14 (\"Power Save - "
          "Low Power Mode\") indicates that the Device is in a power "
          "save state but still functioning, and may exhibit degraded "
          "performance; 15 (\"Power Save - Standby\") describes that "
          "the Device is not functioning but could be brought to full "
          "power 'quickly'; and value 17 (\"Power Save - Warning\") "
          "indicates that the Device is in a warning state, though "
          "also in a power save mode."), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
          "11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
          "21" }, 
       Values { "Other", "Unknown", "Running/Full Power", "Warning",
          "In Test", "Not Applicable", "Power Off", "Off Line",
          "Off Duty", "Degraded", "Not Installed", "Install Error",
          "Power Save - Unknown", "Power Save - Low Power Mode",
          "Power Save - Standby", "Power Cycle",
          "Power Save - Warning", "Paused", "Not Ready",
          "Not Configured", "Quiesced" }, 
       MappingStrings { "MIF.DMTF|Operational State|006.5",
          "MIB.IETF|HOST-RESOURCES-MIB.hrDeviceStatus",
          "MIF.DMTF|Host Device|001.5" }, 
       ModelCorrespondence { "CIM_LogicalDevice.AdditionalAvailability" 
          }]
   uint16 Availability;

      [Deprecated { "CIM_EnabledLogicalElement.EnabledState" }, 
       Description (
          "The StatusInfo property indicates whether the Logical "
          "Device is in an enabled (value = 3), disabled (value = 4) "
          "or some other (1) or unknown (2) state. If this property "
          "does not apply to the LogicalDevice, the value, 5 (\"Not "
          "Applicable\"), should be used. StatusInfo has been "
          "deprecated in lieu of a more clearly named property with "
          "additional enumerated values (EnabledState), that is "
          "inherited from ManagedSystemElement. \n"
          "If a Device is (\"Enabled\")(value=3), it has been powered "
          "up, and is configured and operational. The Device may or "
          "may not be functionally active, depending on whether its "
          "Availability (or AdditionalAvailability) indicate that it "
          "is (\"Running/Full Power\")(value=3) or (\"Off line\") "
          "(value=8). In an enabled but offline mode, a Device may be "
          "performing out-of-band requests, such as running "
          "Diagnostics. If (\"Disabled\") StatusInfo value=4), a "
          "Device can only be \"enabled\" or powered off. In a "
          "personal computer environment, (\"Disabled\") means that "
          "the Device's driver is not available in the stack. In other "
          "environments, a Device can be disabled by removing its "
          "configuration file. A disabled device is physically present "
          "in a System and consuming resources, but can not be "
          "communicated with until a load of a driver, a load of a "
          "configuration file or some other \"enabling\" activity has "
          "occurred."), 
       ValueMap { "1", "2", "3", "4", "5" }, 
       Values { "Other", "Unknown", "Enabled", "Disabled",
          "Not Applicable" }, 
       MappingStrings { "MIF.DMTF|Operational State|006.4" }]
   uint16 StatusInfo;

      [Deprecated { "CIM_DeviceErrorData.LastErrorCode" }, 
       Description (
          "LastErrorCode captures the last error code reported by the "
          "LogicalDevice.")]
   uint32 LastErrorCode;

      [Deprecated { "CIM_DeviceErrorData.ErrorDescription" }, 
       Description (
          "ErrorDescription is a free-form string supplying more "
          "information about the error recorded in LastErrorCode, and "
          "information on any corrective actions that may be taken.")]
   string ErrorDescription;

      [Deprecated { "CIM_ManagedSystemElement.OperationalStatus" }, 
       Description (
          "ErrorCleared is a boolean property indicating that the "
          "error reported in LastErrorCode is now cleared.")]
   boolean ErrorCleared;

      [Description (
          "OtherIdentifyingInfo captures additional data, beyond "
          "DeviceID information, that could be used to identify a "
          "LogicalDevice. One example would be to hold the Operating "
          "System's user friendly name for the Device in this "
          "property."), 
       MaxLen ( 256 ), ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_LogicalDevice.IdentifyingDescriptions" }]
   string OtherIdentifyingInfo[];

      [Description (
          "The number of consecutive hours that this Device has been "
          "powered, since its last power cycle."), 
       Units ( "Hours" ), Counter]
   uint64 PowerOnHours;

      [Description (
          "The total number of hours that this Device has been "
          "powered."), 
       Units ( "Hours" ), Counter]
   uint64 TotalPowerOnHours;

      [Description (
          "An array of free-form strings providing explanations and "
          "details behind the entries in the OtherIdentifyingInfo "
          "array. Note, each entry of this array is related to the "
          "entry in OtherIdentifyingInfo that is located at the same "
          "index."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_LogicalDevice.OtherIdentifyingInfo" }]
   string IdentifyingDescriptions[];

      [Description (
          "Additional availability and status of the Device, beyond "
          "that specified in the Availability property. The "
          "Availability property denotes the primary status and "
          "availability of the Device. In some cases, this will not be "
          "sufficient to denote the complete status of the Device. In "
          "those cases, the AdditionalAvailability property can be "
          "used to provide further information. For example, a "
          "Device's primary Availability may be \"Off line\" "
          "(value=8), but it may also be in a low power state "
          "(AdditonalAvailability value=14), or the Device could be "
          "running Diagnostics (AdditionalAvailability value=5, \"In "
          "Test\")."), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
          "11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
          "21" }, 
       Values { "Other", "Unknown", "Running/Full Power", "Warning",
          "In Test", "Not Applicable", "Power Off", "Off Line",
          "Off Duty", "Degraded", "Not Installed", "Install Error",
          "Power Save - Unknown", "Power Save - Low Power Mode",
          "Power Save - Standby", "Power Cycle",
          "Power Save - Warning", "Paused", "Not Ready",
          "Not Configured", "Quiesced" }, 
       ModelCorrespondence { "CIM_LogicalDevice.Availability" }]
   uint16 AdditionalAvailability[];

      [Deprecated { "No value" }, Description (
          "The MaxQuiesceTime property has been deprecated. When "
          "evaluating the use of Quiesce, it was determine that this "
          "single property is not adequate for describing when a "
          "device will automatically exit a quiescent state. In fact, "
          "the most likely scenario for a device to exit a quiescent "
          "state was determined to be based on the number of "
          "outstanding requests queued rather than on a maximum time. "
          "This will be re-evaluated and repositioned later. \n"
          "Maximum time in milliseconds, that a Device can run in a "
          "\"Quiesced\" state. A Device's state is defined in its "
          "Availability and AdditionalAvailability properties, where "
          "\"Quiesced\" is conveyed by the value 21. What occurs at "
          "the end of the time limit is device-specific. The Device "
          "may unquiesce, may offline or take other action. A value of "
          "0 indicates that a Device can remain quiesced indefinitely."), 
       Units ( "MilliSeconds" )]
   uint64 MaxQuiesceTime;

      [Deprecated { "CIM_PowerManagementService.SetPowerState" }, 
       Description (
          "Sets the power state of the Device. The use of this method "
          "has been deprecated. Instead, use the SetPowerState method "
          "in the associated PowerManagementService class.")]
   uint32 SetPowerState( 
         [IN, Description (
             "The power state to set."), 
          ValueMap { "1", "2", "3", "4", "5", "6" }, 
          Values { "Full Power", "Power Save - Low Power Mode",
             "Power Save - Standby", "Power Save - Other",
             "Power Cycle", "Power Off" }]
      uint16 PowerState, 
         [IN, Description (
             "Time indicates when the power state should be set, "
             "either as a regular date-time value or as an interval "
             "value (where the interval begins when the method "
             "invocation is received.")]
      datetime Time); 

      [Description (
          "Requests a reset of the LogicalDevice. The return value "
          "should be 0 if the request was successfully executed, 1 if "
          "the request is not supported and some other value if an "
          "error occurred. In a subclass, the set of possible return "
          "codes could be specified, using a ValueMap qualifier on the "
          "method. The strings to which the ValueMap contents are "
          "'translated' may also be specified in the subclass as a "
          "Values array qualifier.")]
   uint32 Reset(); 

      [Deprecated { "CIM_EnabledLogicalElement.RequestStateChange" }, 
       Description (
          "The EnableDevice method has been deprecated in lieu of the "
          "more general RequestStateChange method that directly "
          "overlaps with the functionality provided by this method. \n"
          "Requests that the LogicalDevice be enabled (\"Enabled\" "
          "input parameter = TRUE) or disabled (= FALSE). If "
          "successful, the Device's StatusInfo/EnabledState properties "
          "should reflect the desired state (enabled/disabled). Note "
          "that this method's function overlaps with the "
          "RequestedState property. RequestedState was added to the "
          "model to maintain a record (i.e., a persisted value) of the "
          "last state request. Invoking the EnableDevice method should "
          "set the RequestedState property appropriately. \n"
          "The return code should be 0 if the request was successfully "
          "executed, 1 if the request is not supported and some other "
          "value if an error occurred. In a subclass, the set of "
          "possible return codes could be specified, using a ValueMap "
          "qualifier on the method. The strings to which the ValueMap "
          "contents are 'translated' may also be specified in the "
          "subclass as a Values array qualifier.")]
   uint32 EnableDevice( 
         [IN, Description (
             "If TRUE enable the device, if FALSE disable the device.")]
      boolean Enabled); 

      [Deprecated { "CIM_EnabledLogicalElement.RequestStateChange" }, 
       Description (
          "The OnlineDevice method has been deprecated in lieu of the "
          "more general RequestStateChange method that directly "
          "overlaps with the functionality provided by this method. \n"
          "Requests that the LogicalDevice be brought online "
          "(\"Online\" input parameter = TRUE) or taken offline (= "
          "FALSE). \"Online\" indicates that the Device is ready to "
          "accept requests, and is operational and fully functioning. "
          "In this case, the Device's Availability property would be "
          "set to a value of 3 (\"Running/Full Power\"). \"Offline\" "
          "indicates that a Device is powered up and operational, but "
          "not processing functional requests. In an offline state, a "
          "Device may be capable of running diagnostics or generating "
          "operational alerts. For example, when the \"Offline\" "
          "button is pushed on a Printer, the Device is no longer "
          "available to process print jobs, but could be available for "
          "diagnostics or maintenance. \n"
          "If this method is successful, the Device's Availability and "
          "AdditionalAvailability properties should reflect the "
          "updated status. If a failure occurs trying to bring the "
          "Device online or offline, it should remain in its current "
          "state. IE, the request, if unsuccessful, should not leave "
          "the Device in an indeterminate state. When bringing a "
          "Device back \"Online\", from an \"Offline\" mode, the "
          "Device should be restored to its last \"Online\" state, if "
          "at all possible. Only a Device that has an "
          "EnabledState/StatusInfo of \"Enabled\" and has been "
          "configured can be brought online or taken offline. \n"
          "OnlineDevice should return 0 if successful, 1 if the "
          "request is not supported at all, 2 if the request is not "
          "supported due to the current state of the Device, and some "
          "other value if any other error occurred. In a subclass, the "
          "set of possible return codes could be specified, using a "
          "ValueMap qualifier on the method. The strings to which the "
          "ValueMap contents are 'translated' may also be specified in "
          "the subclass as a Values array qualifier. \n"
          "Note that this method's function overlaps with the "
          "RequestedState property. RequestedState was added to the "
          "model to maintain a record (i.e., a persisted value) of the "
          "last state request. Invoking the OnlineDevice method should "
          "set the RequestedState property appropriately.")]
   uint32 OnlineDevice( 
         [IN, Description (
             "If TRUE, take the device online, if FALSE, take the "
             "device OFFLINE.")]
      boolean Online); 

      [Deprecated { "CIM_EnabledLogicalElement.RequestStateChange" }, 
       Description (
          "The QuiesceDevice method has been deprecated in lieu of the "
          "more general RequestStateChange method that directly "
          "overlaps with the functionality provided by this method. \n"
          "Requests that the LogicalDevice cleanly cease all current "
          "activity (\"Quiesce\" input parameter = TRUE) or resume "
          "activity (= FALSE). For this method to quiesce a Device, "
          "that Device should have an Availability (or Additional "
          "Availability) of \"Running/Full Power\" (value=3) and an "
          "EnabledStatus/StatusInfo of \"Enabled\". For example, if "
          "quiesced, a Device may then be offlined for diagnostics, or "
          "disabled for power off and hot swap. For the method to "
          "\"unquiesce\" a Device, that Device should have an "
          "Availability (or AdditionalAvailability) of \"Quiesced\" "
          "(value=21) and an EnabledStatus/StatusInfo of \"Enabled\". "
          "In this case, the Device would be returned to an "
          "\"Enabled\" and \"Running/Full Power\" status. \n"
          "The method's return code should indicate the success or "
          "failure of the quiesce. It should return 0 if successful, 1 "
          "if the request is not supported at all, 2 if the request is "
          "not supported due to the current state of the Device, and "
          "some other value if any other error occurred. In a "
          "subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 QuiesceDevice( 
         [IN, Description (
             "If set to TRUE then cleanly cease all activity, if FALSE "
             "resume activity.")]
      boolean Quiesce); 

      [Description (
          "Requests that the Device capture its current configuration, "
          "setup and/or state information in a backing store. The goal "
          "would be to use this information at a later time (via the "
          "RestoreProperties method), to return a Device to its "
          "present \"condition\". This method may not be supported by "
          "all Devices. The method should return 0 if successful, 1 if "
          "the request is not supported, and some other value if any "
          "other error occurred. In a subclass, the set of possible "
          "return codes could be specified, using a ValueMap qualifier "
          "on the method. The strings to which the ValueMap contents "
          "are 'translated' may also be specified in the subclass as a "
          "Values array qualifier.")]
   uint32 SaveProperties(); 

      [Description (
          "Requests that the Device re-establish its configuration, "
          "setup and/or state information from a backing store. The "
          "intent is to capture this information at an earlier time "
          "(via the SaveProperties method), and use it to return a "
          "Device to this earlier \"condition\". This method may not "
          "be supported by all Devices. The method should return 0 if "
          "successful, 1 if the request is not supported, and some "
          "other value if any other error occurred. In a subclass, the "
          "set of possible return codes could be specified, using a "
          "ValueMap qualifier on the method. The strings to which the "
          "ValueMap contents are 'translated' may also be specified in "
          "the subclass as a Values array qualifier.")]
   uint32 RestoreProperties(); 
};

// ==================================================================
//  CIM_Sensor
// ==================================================================
   [Abstract,  Version ( "2.16.0" ), 
    Description ( 
       "A Sensor is an entity capable of measuring or reporting the "
       "characteristics of some physical property - for example, the "
       "temperature or voltage characteristics of a Computer System." )]
class CIM_Sensor : CIM_LogicalDevice {

      [Description ( 
          "The Type of the Sensor, e.g. Voltage or Temperature "
          "Sensor. If the type is set to \"Other\", then the "
          "OtherSensorType Description can be used to further "
          "identify the type, or if the Sensor has numeric "
          "readings, then the type of the Sensor can be implicitly "
          "determined by the Units. A description of the different "
          "Sensor types is as follows: A Temperature Sensor "
          "measures the environmental temperature. Voltage and "
          "Current Sensors measure electrical voltage and current "
          "readings. A Tachometer measures speed/revolutions of a "
          "Device. For example, a Fan Device can have an associated "
          "Tachometer which measures its speed. A Counter is a "
          "general purpose Sensor that measures some numerical "
          "property of a Device. A Counter value can be cleared, "
          "but it never decreases. A Switch Sensor has states like "
          "Open/Close, On/Off, or Up/Down. A Lock has states of "
          "Locked/Unlocked. Humidity, Smoke Detection and Air Flow "
          "Sensors measure the equivalent environmental "
          "characteristics. A Presence Sensor detects the presence "
          "of a PhysicalElement. A Power Consumption Sensor "
          "measures the instantaneous power consumed by a managed "
          "element. A Power Production Sensor measures the "
          "instantaneous power produced by a managed element such "
          "as a power supply or a voltage regulator. A pressure "
          "sensor is used to report pressure." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "13", "14", "15", "..", "32768..65535" }, 
       Values { "Unknown", "Other", "Temperature", "Voltage", 
          "Current", "Tachometer", "Counter", "Switch", "Lock", 
          "Humidity", "Smoke Detection", "Presence", "Air Flow", 
          "Power Consumption", "Power Production", "Pressure", 
          "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_Sensor.OtherSensorTypeDescription" }]
   uint16 SensorType;

      [Description ( 
          "A string describing the Sensor type - used when the "
          "SensorType property is set to \"Other\"." ), 
       MaxLen ( 128 ), 
       ModelCorrespondence { "CIM_Sensor.SensorType" }]
   string OtherSensorTypeDescription;

      [Description ( 
          "PossibleStates enumerates the string outputs of the "
          "Sensor. For example, a \"Switch\" Sensor may output the "
          "states \"On\", or \"Off\". Another implementation of the "
          "Switch may output the states \"Open\", and \"Close\". "
          "Another example is a NumericSensor supporting "
          "thresholds. This Sensor can report the states like "
          "\"Normal\", \"Upper Fatal\", \"Lower Non-Critical\", "
          "etc. A NumericSensor that does not publish readings and "
          "thresholds, but stores this data internally, can still "
          "report its states." ), 
       MaxLen ( 128 )]
   string PossibleStates[];

      [Description ( 
          "The current state indicated by the Sensor. This is "
          "always one of the \"PossibleStates\"." ), 
       MaxLen ( 128 )]
   string CurrentState;

      [Description ( 
          "The polling interval that the Sensor hardware or the "
          "instrumentation uses to determine the current state of "
          "the Sensor." ), 
       Units ( "NanoSeconds" ), 
       PUnit ( "second * 10^-9" )]
   uint64 PollingInterval;


};

// ==================================================================
//  CIM_NumericSensor
// ==================================================================
   [Abstract,  Version ( "2.16.0" ), 
    Description ( 
       "A Numeric Sensor is capable of returning numeric readings and "
       "optionally supports thresholds settings." )]
class CIM_NumericSensor : CIM_Sensor {

      [Description ( 
          "The base unit of the values returned by this Sensor. All "
          "the values returned by this Sensor are represented in "
          "the units obtained by (BaseUnits * 10 raised to the "
          "power of the UnitModifier). For example, if BaseUnits is "
          "Volts and the UnitModifier is -6, then the units of the "
          "values returned are MicroVolts. However, if the "
          "RateUnits property is set to a value other than \"None\", "
          "then the units are further qualified as rate units. In "
          "the above example, if RateUnits is set to \"Per Second\", "
          "then the values returned by the Sensor are in "
          "MicroVolts/Second. The units apply to all numeric "
          "properties of the Sensor, unless explicitly overridden "
          "by the Units qualifier." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "13", "14", "15", "16", "17", "18", 
          "19", "20", "21", "22", "23", "24", "25", "26", "27", 
          "28", "29", "30", "31", "32", "33", "34", "35", "36", 
          "37", "38", "39", "40", "41", "42", "43", "44", "45", 
          "46", "47", "48", "49", "50", "51", "52", "53", "54", 
          "55", "56", "57", "58", "59", "60", "61", "62", "63", 
          "64", "65", "66" }, 
       Values { "Unknown", "Other", "Degrees C", "Degrees F", 
          "Degrees K", "Volts", "Amps", "Watts", "Joules", 
          "Coulombs", //10 
          "VA", "Nits", "Lumens", 
          "Lux", "Candelas", "kPa", "PSI", "Newtons", "CFM", "RPM", 
          //20 
          "Hertz", "Seconds", "Minutes", "Hours", 
          "Days", "Weeks", "Mils", "Inches", "Feet", "Cubic Inches", 
          //30 
          "Cubic Feet", "Meters", 
          "Cubic Centimeters", "Cubic Meters", "Liters", 
          "Fluid Ounces", "Radians", "Steradians", "Revolutions", 
          "Cycles", //40 
          "Gravities", "Ounces", 
          "Pounds", "Foot-Pounds", "Ounce-Inches", "Gauss", 
          "Gilberts", "Henries", "Farads", "Ohms", 
          //50 
          "Siemens", "Moles", "Becquerels", 
          "PPM (parts/million)", "Decibels", "DbA", "DbC", "Grays", 
          "Sieverts", "Color Temperature Degrees K", 
          //60 
          "Bits", "Bytes", "Words (data)", 
          "DoubleWords", "QuadWords", "Percentage", "Pascals" }, 
       ModelCorrespondence { "CIM_NumericSensor.UnitModifier", 
          "CIM_NumericSensor.RateUnits" }]
   uint16 BaseUnits;

      [Description ( 
          "The unit multiplier for the values returned by this "
          "Sensor. All the values returned by this Sensor are "
          "represented in the units obtained by (BaseUnits * 10 "
          "raised to the power of the UnitModifier). For example, "
          "if BaseUnits is Volts and the Unit Modifier is -6, then "
          "the units of the values returned are MicroVolts. "
          "However, if the RateUnits property is set to a value "
          "other than \"None\", then the units are further "
          "qualified as rate units. In the above example, if "
          "RateUnits is set to \"Per Second\", then the values "
          "returned by the Sensor are in MicroVolts/Second. The "
          "units apply to all numeric properties of the Sensor, "
          "unless explicitly overridden by the Units qualifier." ), 
       ModelCorrespondence { "CIM_NumericSensor.BaseUnits", 
          "CIM_NumericSensor.RateUnits" }]
   sint32 UnitModifier;

      [Description ( 
          "Specifies if the units returned by this Sensor are rate "
          "units. All the values returned by this Sensor are "
          "represented in the units obtained by (BaseUnits * 10 "
          "raised to the power of the UnitModifier). This is true "
          "unless this property (RateUnits) has a value different "
          "than \"None\". For example, if BaseUnits is Volts and "
          "the UnitModifier is -6, then the units of the values "
          "returned are MicroVolts. But, if the RateUnits property "
          "is set to a value other than \"None\", then the units "
          "are further qualified as rate units. In the above "
          "example, if RateUnits is set to \"Per Second\", then the "
          "values returned by the Sensor are in MicroVolts/Second. "
          "The units apply to all numeric properties of the Sensor, "
          "unless explicitly overridden by the Units qualifier. Any "
          "implementation of CurrentReading should be qualified "
          "with either a Counter or a Gauge qualifier, depending on "
          "the characteristics of the sensor being modeled." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }, 
       Values { "None", "Per MicroSecond", "Per MilliSecond", 
          "Per Second", "Per Minute", "Per Hour", "Per Day", 
          "Per Week", "Per Month", "Per Year" }, 
       ModelCorrespondence { "CIM_NumericSensor.UnitModifier", 
          "CIM_NumericSensor.BaseUnits" }]
   uint16 RateUnits;

      [Description ( "The current value indicated by the Sensor." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.5", 
          "MIF.DMTF|Electrical Current Probe|001.5", 
          "MIF.DMTF|Voltage Probe|001.5" }]
   sint32 CurrentReading;

      [Description ( 
          "NominalReading indicates the \'normal\' or expected "
          "value for the NumericSensor." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.6", 
          "MIF.DMTF|Electrical Current Probe|001.6", 
          "MIF.DMTF|Voltage Probe|001.6" }]
   sint32 NominalReading;

      [Description ( 
          "NormalMax provides guidance for the user as to the "
          "normal maximum range for the NumericSensor." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.7", 
          "MIF.DMTF|Electrical Current Probe|001.7", 
          "MIF.DMTF|Voltage Probe|001.7" }]
   sint32 NormalMax;

      [Description ( 
          "NormalMin provides guidance for the user as to the "
          "normal minimum range for the NumericSensor." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.8", 
          "MIF.DMTF|Electrical Current Probe|001.8", 
          "MIF.DMTF|Voltage Probe|001.8" }]
   sint32 NormalMin;

      [Description ( 
          "MaxReadable indicates the largest value of the measured "
          "property that can be read by the NumericSensor." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.9", 
          "MIF.DMTF|Electrical Current Probe|001.9", 
          "MIF.DMTF|Voltage Probe|001.9" }]
   sint32 MaxReadable;

      [Description ( 
          "MinReadable indicates the smallest value of the measured "
          "property that can be read by the NumericSensor." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.10", 
          "MIF.DMTF|Electrical Current Probe|001.10", 
          "MIF.DMTF|Voltage Probe|001.10" }]
   sint32 MinReadable;

      [Description ( 
          "Resolution indicates the ability of the Sensor to "
          "resolve differences in the measured property. The units "
          "for this measurement are determined by "
          "BaseUnit*UnitModifier/RateUnit." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.17", 
          "MIF.DMTF|Electrical Current Probe|001.17", 
          "MIF.DMTF|Voltage Probe|001.17" }]
   uint32 Resolution;

      [Deprecated { "CIM_NumericSensor.Resolution", 
          "CIM_NumericSensor.Accuracy" }, 
       Description ( 
          "This property is being deprecated in lieu of using the "
          "Resolution and Accuracy properties. \n"
          "Indicates the tolerance of the Sensor for the measured "
          "property. Tolerance, along with Resolution and Accuracy, "
          "is used to calculate the actual value of the measured "
          "physical property. Tolerance may vary depending on "
          "whether the Device is linear over its dynamic range." )]
   sint32 Tolerance;

      [Description ( 
          "Indicates the accuracy of the Sensor for the measured "
          "property. Its value is recorded as plus/minus hundredths "
          "of a percent. Accuracy, along with Resolution, is used "
          "to calculate the actual value of the measured physical "
          "property. Accuracy may vary depending on whether the "
          "Device is linear over its dynamic range." ), 
       Units ( "Hundredths of Percent" ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.19", 
          "MIF.DMTF|Electrical Current Probe|001.19", 
          "MIF.DMTF|Voltage Probe|001.19" }, 
       PUnit ( "percent * 10^-2" )]
   sint32 Accuracy;

      [Description ( 
          "Indicates that the Sensor is linear over its dynamic range."
           )]
   boolean IsLinear;

      [Description ( 
          "Indicates the margin built around the thresholds. This "
          "margin prevents unnecessary state changes when the "
          "Sensor reading may fluctuate very close to its "
          "thresholds. This could be due to the Sensor\'s "
          "tolerance/accuracy/resolution or due to environmental "
          "factors. Once a threshold is crossed, the state of the "
          "Sensor should change. However, the state should not "
          "fluctuate between the old and new states unless the "
          "Sensor\'s change in the reading exceeds the hysteresis "
          "value. The units for this measurement are determined by "
          "BaseUnit*UnitModifier/RateUnit." )]
   uint32 Hysteresis;

      [Write, Description ( 
          "The Sensor\'s threshold values specify the ranges (min "
          "and max values) for determining whether the Sensor is "
          "operating under Normal, NonCritical, Critical or Fatal "
          "conditions. If Current Reading is between "
          "LowerThresholdNonCritical and Upper "
          "ThresholdNonCritical, then the Sensor is reporting a "
          "normal value. If CurrentReading is between "
          "LowerThresholdNonCritical and LowerThresholdCritical, "
          "then the CurrentState is NonCritical." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.11", 
          "MIF.DMTF|Electrical Current Probe|001.11", 
          "MIF.DMTF|Voltage Probe|001.11" }]
   sint32 LowerThresholdNonCritical;

      [Write, Description ( 
          "The Sensor\'s threshold values specify the ranges (min "
          "and max values) for determining whether the Sensor is "
          "operating under Normal, NonCritical, Critical or Fatal "
          "conditions. If the CurrentReading is between "
          "LowerThresholdNonCritical and UpperThresholdNonCritical, "
          "then the Sensor is reporting a normal value. If the "
          "CurrentReading is between UpperThreshold NonCritical and "
          "UpperThresholdCritical, then the CurrentState is "
          "NonCritical." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.12", 
          "MIF.DMTF|Electrical Current Probe|001.12", 
          "MIF.DMTF|Voltage Probe|001.12" }]
   sint32 UpperThresholdNonCritical;

      [Write, Description ( 
          "The Sensor\'s threshold values specify the ranges (min "
          "and max values) for determining whether the Sensor is "
          "operating under Normal, NonCritical, Critical or Fatal "
          "conditions. If the CurrentReading is between "
          "LowerThresholdCritical and Lower ThresholdFatal, then "
          "the CurrentState is Critical." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.13", 
          "MIF.DMTF|Electrical Current Probe|001.13", 
          "MIF.DMTF|Voltage Probe|001.13" }]
   sint32 LowerThresholdCritical;

      [Write, Description ( 
          "The Sensor\'s threshold values specify the ranges (min "
          "and max values) for determining whether the Sensor is "
          "operating under Normal, NonCritical, Critical or Fatal "
          "conditions. If the CurrentReading is between "
          "UpperThresholdCritical and Upper ThresholdFatal, then "
          "the CurrentState is Critical." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.14", 
          "MIF.DMTF|Electrical Current Probe|001.14", 
          "MIF.DMTF|Voltage Probe|001.14" }]
   sint32 UpperThresholdCritical;

      [Write, Description ( 
          "The Sensor\'s threshold values specify the ranges (min "
          "and max values) for determining whether the Sensor is "
          "operating under Normal, NonCritical, Critical or Fatal "
          "conditions. If the CurrentReading is below "
          "LowerThresholdFatal, then the Current State is Fatal." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.15", 
          "MIF.DMTF|Electrical Current Probe|001.15", 
          "MIF.DMTF|Voltage Probe|001.15" }]
   sint32 LowerThresholdFatal;

      [Write, Description ( 
          "The Sensor\'s threshold values specify the ranges (min "
          "and max values) for determining whether the Sensor is "
          "operating under Normal, NonCritical, Critical or Fatal "
          "conditions. If the CurrentReading is above "
          "UpperThresholdFatal, then the Current State is Fatal." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.16", 
          "MIF.DMTF|Electrical Current Probe|001.16", 
          "MIF.DMTF|Voltage Probe|001.16" }]
   sint32 UpperThresholdFatal;

      [Description ( 
          "An array representing the thresholds supported by this Sensor."
           ), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "LowerThresholdNonCritical", 
          "UpperThresholdNonCritical", "LowerThresholdCritical", 
          "UpperThresholdCritical", "LowerThresholdFatal", 
          "UpperThresholdFatal" }]
   uint16 SupportedThresholds[];

      [Description ( 
          "An array representing the thresholds that are currently "
          "enabled for this Sensor." ), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "LowerThresholdNonCritical", 
          "UpperThresholdNonCritical", "LowerThresholdCritical", 
          "UpperThresholdCritical", "LowerThresholdFatal", 
          "UpperThresholdFatal" }]
   uint16 EnabledThresholds[];

      [Description ( 
          "An array representing the writable thresholds supported by Sensor."
           ), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "LowerThresholdNonCritical", 
          "UpperThresholdNonCritical", "LowerThresholdCritical", 
          "UpperThresholdCritical", "LowerThresholdFatal", 
          "UpperThresholdFatal" }]
   uint16 SettableThresholds[];


      [Description ( 
          "This method resets the values of the thresholds to "
          "hardware defaults. This method returns 0 if successful, "
          "1 if unsupported and any other value if an error "
          "occurred. In a subclass, the set of possible return "
          "codes could be specified, using a ValueMap qualifier on "
          "the method. The strings to which the ValueMap contents "
          "are \'translated\' may also be specified in the subclass "
          "as a Values array qualifier." )]
   uint32 RestoreDefaultThresholds(
);

      [Deprecated { "No Value" }, 
       Description ( 
          "The use of this method is being deprecated, since "
          "Current senor reading can be retrieved through the "
          "GetInstance operation. \n"
          "For a non-linear Sensor, the resolution, accuracy, "
          "tolerance and hysteresis vary as the current reading "
          "moves. This method can be used to get these factors for "
          "a given reading. It returns 0 if successful, 1 if "
          "unsupported, and any other value if an error occurred. "
          "In a subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are \'translated\' "
          "may also be specified in the subclass as a Values array "
          "qualifier." )]
   uint32 GetNonLinearFactors(
         [IN, Description ( 
             "The sensor reading to get information for." )]
      sint32 SensorReading, 
         [IN ( false ), OUT, Description ( 
             "The accuracy of the reading." )]
      sint32 Accuracy, 
         [IN ( false ), OUT, Description ( 
             "The resolution of the reading." )]
      uint32 Resolution, 
         [IN ( false ), OUT, Description ( 
             "The tolerance of the reading." )]
      sint32 Tolerance, 
         [IN ( false ), OUT, Description ( 
             "The Hysteresis of the reading." )]
      uint32 Hysteresis);

};

// ==================================================================
//  CIM_AlarmDevice
// ==================================================================
   [Abstract,  Version ( "2.8.0" ), Description (
       "An AlarmDevice is a type of Device that emits audible or "
       "visible indications related to a problem situation.")]
class CIM_AlarmDevice : CIM_LogicalDevice {

      [Description (
          "Boolean indicating that the Alarm is audible.")]
   boolean AudibleAlarm;

      [Description (
          "Boolean indicating that the Alarm is visible.")]
   boolean VisibleAlarm;

      [Description (
          "Boolean indicating that the Alarm causes motion of the "
          "Device.")]
   boolean MotionAlarm;

      [Description (
          "Urgency is an enumerated value that indicates the relative "
          "frequency at which the Alarm flashes, vibrates and/or emits "
          "audible tones."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6" }, 
       Values { "Unknown", "Other", "Not Supported", "Informational",
          "Non-Critical", "Critical", "Unrecoverable" }]
   uint16 Urgency;

      [Description (
          "The current state of the alarm."), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Unknown", "Off", "Steady", "Alternating" }]
   uint16 AlarmState;

      [Description (
          "True indicates that the audio of an AlarmState indicator "
          "has been disabled (i.e. muted). A disabled state here does "
          "not imply that the AlarmState is off.")]
   boolean AudioIndicatorIsDisabled;

      [Description (
          "True indicates that the visual of an AlarmState indicator "
          "has been disabled (i.e. dimmed). A disabled state here does "
          "not imply that the AlarmState is off.")]
   boolean VisualIndicatorIsDisabled;

      [Description (
          "True indicates that the motion of an AlarmState indicator "
          "has been disabled (i.e. stopped). A disabled state here "
          "does not imply that the AlarmState is off.")]
   boolean MotionIndicatorIsDisabled;

      [Description (
          "SetAlarmState is a method for defining the current state of "
          "the Alarm. Its input parameter, RequestedAlarmState, is "
          "specified using the Values list of AlarmDevice's AlarmState "
          "property. SetAlarmState returns 0 if the request is "
          "successfully implemented, 1 if the specified RequestedAlarm "
          "State is not supported, and some other value if any other "
          "error occurred. In a subclass, the set of possible return "
          "codes should be specified using a ValueMap qualifier on the "
          "method. The strings to which the ValueMap contents are "
          "'translated' should be specified as a Values array "
          "qualifier.")]
   uint32 SetAlarmState ( 
         [IN, Description (
             "The desired state for the alarm."), 
          ValueMap { "0", "1", "2", "3" }, 
          Values { "Unknown", "Off", "Steady", "Alternating" }]
      uint16 RequestedAlarmState); 

      [Description (
          "SetAlarmIndicator is a method for enabling or disabling the "
          "indicator of the AlarmState function, without changing the "
          "current AlarmState. It has 3 input parameters, Audio "
          "Indicator, VisualIndicator and MotionIndicator. For all of "
          "the input parameters, a value of 0 indicates no change to "
          "the AlarmState indicator, 1 indicates Disable, and 2 "
          "indicates Enable. The method returns 0 if the request is "
          "successfully implemented, 1 if the specified request is not "
          "supported, and some other value if any other error "
          "occurred. In a subclass, the set of possible return codes "
          "should be specified using a ValueMap qualifier on the "
          "method. The strings to which the ValueMap contents are "
          "'translated' should be specified as a Values array "
          "qualifier.")]
   uint32 SetAlarmIndicator ( 
         [IN, Description (
             "The state for the audio indicator."), 
          ValueMap { "0", "1", "2" }, 
          Values { "No Change", "Disable", "Enable" }]
      uint16 AudioIndicator, 
         [IN, Description (
             "The state for the visual indicator."), 
          ValueMap { "0", "1", "2" }, 
          Values { "No Change", "Disable", "Enable" }]
      uint16 VisualIndicator, 
         [IN, Description (
             "The state for the motion indicator."), 
          ValueMap { "0", "1", "2" }, 
          Values { "No Change", "Disable", "Enable" }]
      uint16 MotionIndicator); 

      [Description (
          "SetUrgency is a method for defining the desired urgency "
          "level for the Alarm. Its input parameter, RequestedUrgency, "
          "is specified using the Values list of AlarmDevice's Urgency "
          "property. SetUrgency returns 0 if the request is "
          "successfully implemented, 1 if the specified Urgency level "
          "is not supported, and some other value if any other error "
          "occurred. In a subclass, the set of possible return codes "
          "should be specified using a ValueMap qualifier on the "
          "method. The strings to which the ValueMap contents are "
          "'translated' should be specified as a Values array "
          "qualifier.")]
   uint32 SetUrgency ( 
         [IN, Description (
             "Desired urgency for the alarm."), 
          ValueMap { "1", "3", "4", "5", "6" }, 
          Values { "Other", "Informational", "Non-Critical",
             "Critical", "Unrecoverable" }]
      uint16 RequestedUrgency); 
};

// ==================================================================
//  CIM_Dependency
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "CIM_Dependency is a generic association used to establish "
       "dependency relationships between ManagedElements.")]
class CIM_Dependency {

      [Key, Description (
          "Antecedent represents the independent object in this "
          "association.")]
   CIM_ManagedElement REF Antecedent;

      [Key, Description (
          "Dependent represents the object that is dependent on the "
          "Antecedent.")]
   CIM_ManagedElement REF Dependent;
};

// ==================================================================
//  CIM_Spared
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "The Spared association indicates an element that is acting as "
       "a replacement for another element. If the Dependent references "
       "a Collection, this indicates that 'spared' element is a member "
       "of that collection and the actual mapping between the spare "
       "and the spared is un-important.")]
class CIM_Spared : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "A ManagedElement that has replaced/spared another the "
          "reference Dependent element.")]
   CIM_ManagedElement REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The Element or Elements (in the case of a collection) that "
          "have been replaced/spared.")]
   CIM_ManagedElement REF Dependent;
};

// ==================================================================
//  CIM_AssociatedSensor
// ==================================================================
   [Association, Abstract,  Version ( "2.12.0" ), Description (
       "The CIM_AssociatedCooling relationship indicates what "
       "ManagedSystemElement(s) the fan or cooling device is providing "
       "cooling for.")]
class CIM_AssociatedSensor : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The Sensor.")]
   CIM_Sensor REF Antecedent;

      [Experimental, Override ( "Dependent" ), Description (
          "The ManagedSystemElement for which information is measured "
          "by the Sensor.")]
   CIM_ManagedSystemElement REF Dependent;
};

// ==================================================================
//  CIM_SettingData
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "The SettingData class represents configuration-related and "
       "operational parameters for one or more ManagedElements. A "
       "ManagedElement can have multiple SettingData objects "
       "associated with it. The current operational values for the "
       "parameters of the element are reflected by properties in the "
       "Element itself or by properties in its associations. These "
       "properties do not have to be the same values that are present "
       "in the SettingData object. For example, a modem might have a "
       "SettingData baud rate of 56Kb/sec but be operating at "
       "19.2Kb/sec. \n"
       "Note: The CIM_SettingData class is very similar to "
       "CIM_Setting, yet both classes are present in the model 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 can 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. "
          "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 that is creating or defining the InstanceID or that "
          "is a registered ID assigned to the business entity by a "
          "recognized global authority. (This requirement 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 reused to identify different underlying (real-world) "
          "elements. If the above \"preferred\" algorithm is not used, "
          "the defining entity must assure that the resulting "
          "InstanceID is not reused across any InstanceIDs produced by "
          "this or other providers for the NameSpace of this instance. "
          "\nFor 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 an index "
          "property for a search or query. (Note: The name does not "
          "have to be unique within a namespace.)")]
   string ElementName;
};

// ==================================================================
//  CIM_RecordForLog 
// ==================================================================
   [Abstract,  Version ( "2.25.0" ), Description ( 
       "The RecordForLog class is used to instantiate records to be "
       "aggregated to a Log." )]
class CIM_RecordForLog : CIM_ManagedElement {

      [Description ( 
          "A string describing the data structure of the "
          "information in the property, RecordData. If the "
          "RecordFormat string is <empty>, RecordData should be "
          "interpreted as a free-form string. \n"
          "\n"
          "To describe the data structure of RecordData, the "
          "RecordFormat string should be constructed as follows: \n"
          "- The first character is a delimiter character and is "
          "used to parse the remainder of the string into "
          "sub-strings. \n"
          "- Each sub-string is separated by the delimiter "
          "character and should be in the form of a CIM property "
          "declaration (i.e., datatype and property name). This set "
          "of declarations may be used to interpret the similarly "
          "delimited RecordData property. \n"
          "For example, using a \'*\' delimiter, RecordFormat = "
          "\"*string ThisDay*uint32 ThisYear*datetime SomeTime\" \n"
          "may be used to interpret: RecordData = \"*This is "
          "Friday*2002*20020807141000.000000-300\"." ), 
       ModelCorrespondence { "CIM_RecordForLog.RecordData" }]
   string RecordFormat;

      [Description ( 
          "A string containing LogRecord data. \n"
          "If the corresponding RecordFormat property is <empty>, "
          "or cannot be parsed according to the recommended format, "
          "RecordData should be interpreted as a free-form string. "
          "If the RecordFormat property contains parseable format "
          "information (as recommended in the RecordFormat "
          "Description qualifier), the RecordData string SHOULD be "
          "parsed in accordance with this format. In this case, "
          "RecordData SHOULD begin with the delimiter character and "
          "this character SHOULD be used to separate substrings in "
          "the manner described. The RecordData string can then be "
          "parsed by the data consumer and appropriately typed." ), 
       ModelCorrespondence { "CIM_RecordForLog.RecordFormat" }]
   string RecordData;

      [Deprecated { "No Value" }, 
       Description ( 
          "This property is being deprecated to avoid conflicts "
          "with localization implementations using CIM/XML over "
          "HTTP protocol, the preferred mechanism. \n"
          "A locale indicates a particular geographical, political, "
          "or cultural region. The Locale specifies the language "
          "used in creating the RecordForLog data. If the Locale "
          "property is empty, it is assumed that the default locale "
          "is en_US (English). \n"
          "The locale string consists of three sub-strings, "
          "separated by underscores: \n"
          "- The first sub-string is the language code, as "
          "specified in ISO639. \n"
          "- The second sub-string is the country code, as "
          "specified in ISO3166. \n"
          "- The third sub-string is a variant, which is vendor "
          "specific. \n"
          "For example, US English appears as: \"en_US_WIN\", where "
          "the \"WIN\" variant would specify a Windows "
          "browser-specific collation (if one exists). Since the "
          "variant is not standardized, it is not commonly used and "
          "generally is limited to easily recognizable values "
          "(\"WIN\", \"UNIX\", \"EURO\", etc.) used in standard "
          "environments. The language and country codes are "
          "required; the variant may be empty." )]
   string Locale;

      [Description ( 
          "An enumerated value that describes the severity of the "
          "Indication from the notifier\'s point of view: \n"
          "1 - Other, by CIM convention, is used to indicate that "
          "the Severity\'s value can be found in the OtherSeverity "
          "property. \n"
          "3 - Degraded/Warning should be used when its appropriate "
          "to let the user decide if action is needed. \n"
          "4 - Minor should be used to indicate action is needed, "
          "but the situation is not serious at this time. \n"
          "5 - Major should be used to indicate action is needed "
          "NOW. \n"
          "6 - Critical should be used to indicate action is needed "
          "NOW and the scope is broad (perhaps an imminent outage "
          "to a critical resource will result). \n"
          "7 - Fatal/NonRecoverable should be used to indicate an "
          "error occurred, but it\'s too late to take remedial "
          "action. \n"
          "2 and 0 - Information and Unknown (respectively) follow "
          "common usage. Literally, the Indication is purely "
          "informational or its severity is simply unknown." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7" }, 
       Values { "Unknown", "Other", "Information", 
          "Degraded/Warning", "Minor", "Major", "Critical", 
          "Fatal/NonRecoverable" }, 
       MappingStrings { "Recommendation.ITU|X733.Perceived severity" }]
   uint16 PerceivedSeverity;
};

// ==================================================================
//  CIM_LogEntry
// ==================================================================
   [Abstract,  Version ( "2.25.0" ), Description ( 
       "The LogEntry object can describe the definitional format for "
       "entries in a Log, or can be used to instantiate the actual "
       "entries in the Log." )]
class CIM_LogEntry : CIM_RecordForLog {

      [Key, Override ( "InstanceID" ), 
       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;

      [Description ( "The containing Log\'s InstanceID." ), 
       MaxLen ( 256 )]
   string LogInstanceID;

      [Description ( 
          "The containing Log\'s Name. This property is available "
          "for backwards continuity with CIM_LogRecord." ), 
       MaxLen ( 256 )]
   string LogName;

      [Description ( 
          "RecordID may be used to provide a representation of log "
          "entry ordering or pointers/handles for log entries." ), 
       MaxLen ( 256 )]
   string RecordID;

      [Description ( 
          "A LogEntry may include a timestamp for the entry." )]
   datetime CreationTimeStamp;

      [Experimental, Description ( 
          "A string that uniquely identifies the entity that owns "
          "the definition of the format of the Message described in "
          "this instance. OwningEntity MUST include a copyrighted, "
          "trademarked or otherwise unique name that is owned by "
          "the business entity or standards body defining the "
          "format." )]
   string OwningEntity;

      [Description ( 
          "A string that uniquely identifies, within the scope of "
          "the OwningEntity, the format of the Message." ), 
       ModelCorrespondence { "CIM_LogEntry.Message", 
          "CIM_LogEntry.MessageArguments" }]
   string MessageID;

      [Description ( 
          "The formatted message. This message is constructed by "
          "combining some or all of the dynamic elements specified "
          "in the MessageArguments property with the static "
          "elements uniquely identified by the MessageID in a "
          "message registry or other catalog associated with the "
          "OwningEntity." ), 
       ModelCorrespondence { "CIM_LogEntry.MessageID", 
          "CIM_LogEntry.MessageArguments" }]
   string Message;

      [Description ( 
          "An array containing the dynamic content of the message.\r\n"
          "Each DYNAMIC_ELEMENT for the message referred to by the "
          "MessageID property shall be contained in "
          "MessageArguments whether the DYNAMIC_ELEMENT is included "
          "in the Message or not.\r\n"
          "In addition, the entries in MessageArguments need to be "
          "in the same order as the DYNAMIC_ELEMENTs." ), 
       ModelCorrespondence { "CIM_LogEntry.Message", 
          "CIM_LogEntry.MessageID" }]
   string MessageArguments[];


};

// ==================================================================
//  CIM_DiagnosticRecord
// ==================================================================
   [Abstract,  Version ( "2.11.0" ), Description ( 
       "Data related to Diagnostics may be recorded in various "
       "DiagnosticRecord objects. The type of information that is "
       "recorded in a log is specified via the LogOptions property in "
       "DiagnosticSetting." )]
class CIM_DiagnosticRecord : CIM_LogEntry {

      [Required, Description ( 
          "This property should reflect the value of the underlying "
          "DiagnosticService.Name property." ), 
       ModelCorrespondence { "CIM_DiagnosticService.Name" }]
   string ServiceName;

      [Required, Description ( 
          "This property SHOULD reflect the value of the underlying "
          "ManagedElement.ElementName property." ), 
       ModelCorrespondence { "CIM_ManagedElement.ElementName" }]
   string ManagedElementName;

      [Description ( 
          "The date and time that the record instance should be "
          "deleted. The expiration datetime SHOULD be set when the "
          "record is fully populated with record data. The value "
          "SHOULD be calculated using the ResultPersistence "
          "property of the DiagnosticSettingData class. Once the "
          "Expiration Date has been reached, record instances "
          "SHOULD be deleted as soon as possible. \n"
          "If a ResultPersistence value is not provided, records "
          "MAY be deleted at any time." ), 
       ModelCorrespondence { 
          "CIM_DiagnosticSettingData.ResultPersistence" }]
   datetime ExpirationDate;

      [Description ( 
          "The RecordType property specifies the nature of the data "
          "being entered into the ServiceRecord. The value in this "
          "property should match one of the values indicated by the "
          "DiagnosticSettingData.LogOptions property. A brief "
          "summary of the various log options can be found in "
          "CIM_DiagnosticSettingData.LogOptions." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "13", "14" }, 
       Values { "Unknown", "Other", "Results", "Subtests", 
          "Actions", "Warnings", "Status", "Device Errors", 
          "Service Errors", "Setting Data", "Statistics", 
          "Hardware Configuration", "Software Configuration", 
          "References", "Debug" }, 
       ModelCorrespondence { "CIM_DiagnosticSettingData.LogOptions", 
          "CIM_DiagnosticRecord.OtherRecordTypeDescription" }]
   uint16 RecordType;

      [Description ( 
          "When \"Other\" (value=1) is entered in the RecordType "
          "property, OtherRecordTypeDescription can be used to "
          "describe the message type." ), 
       ModelCorrespondence { 
          "CIM_DiagnosticSettingData.OtherLogOptionsDescriptions", 
          "CIM_DiagnosticRecord.RecordType" }]
   string OtherRecordTypeDescription;
};

// ==================================================================
//  CIM_DiagnosticServiceRecord
// ==================================================================
   [Abstract,  Version ( "2.9.0" ), Description ( 
       "While a DiagnosticService is running, data generated by the "
       "service may be recorded in DiagnosticServiceRecord objects. A "
       "DiagnosticServiceRecord is related to its MessageLog via an "
       "instance of the RecordInLog aggregation class." )]
class CIM_DiagnosticServiceRecord : CIM_DiagnosticRecord {

      [Description ( 
          "If applicable, this string should contain one or more "
          "vendor specific error codes that the diagnostic service "
          "detected. These error codes may be used by the vendor "
          "for variety of purposes such as: fault data base "
          "indexing, field service trouble ticketing, product "
          "quality tracking, part failure history, etc. Since these "
          "codes are for vendor purposes they may assume any form. "
          "Details on suggested use cases will be left to white "
          "papers. The array of error codes has model "
          "correspondence with an ErrorCount array so the number of "
          "errors reported can be analyzed by individual error "
          "code." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticServiceRecord.ErrorCount" }]
   string ErrorCode[];

      [Description ( 
          "Since some tests may detect transient and correctable "
          "errors such as a network diagnostic or memory test, an "
          "error count is useful to indicate the severity of the "
          "failure. This field contains an integer value of the "
          "number of errors detected by the test. The ErrorCount is "
          "an array with model correspondence to ErrorCode so that "
          "the test can report an ErrorCount on each type of error "
          "encountered. It is recommended that hard errors and "
          "correctable or recoverable errors be given different "
          "codes so that clients with knowledge of the error codes "
          "can evaluate correctable, recoverable, and hard errors "
          "independently." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticServiceRecord.ErrorCode" }]
   uint32 ErrorCount[];

      [Description ( 
          "Since some tests may be looped, it is useful to report "
          "how many iterations passed and failed. This is relevant "
          "in analyzing transitory failures. For example, if all "
          "the errors occurred in just one of 100 iterations, the "
          "device may be viewed as OK or marginal, to be monitored "
          "further rather then failed. Note: LoopsPassed & "
          "LoopsFailed should add up to the loops completed. \n"
          "A value for this property would likely be reported with "
          "a DiagnosticServiceRecord.RecordType value = "
          "\"ResultSummary\", which contains a summary result "
          "covering all iterations of a looped service." )]
   uint32 LoopsFailed;

      [Description ( 
          "Since some tests may be looped, it is useful to report "
          "how many iterations passed and failed. This is relevant "
          "in analyzing transitory failures. For example if all the "
          "errors occurred in just one of 100 iterations, the "
          "device may be viewed as OK or marginal, to be monitored "
          "further rather then failed. Note: LoopsPassed & "
          "LoopsFailed should add up to the loops completed. \n"
          "A value for this property would likely be reported with "
          "a DiagnosticServiceRecord.RecordType value = "
          "\"ResultSummary\", which contains a summary result "
          "covering all iterations of a looped service." )]
   uint32 LoopsPassed;


};


// ==================================================================
//  CIM_StorageSetting
// ==================================================================
   [Abstract,  Version ( "2.11.0" ), Description (
       "StorageSetting is roughly equivalent to a Service Level "
       "Agreement (SLA) It defines the characteristics, qualities of "
       "service and goals when used in a CreateOrModifyElement "
       "FromStoragePool or CreateOrModifyStoragePool method in the "
       "StorageConfigurationService. It specifies a series of "
       "properties with Maximum and Minimum values that define the "
       "(inclusive) bounds that the object should maintain. Note that "
       "the setting is associated to a StorageVolume or LogicalDisk, "
       "using ElementSetting. \n"
       "The use of these properties differs depending on whether the "
       "StorageSetting instance is being used as a goal for a "
       "configuration operation or being used as a Service Level "
       "Agreement for a created Volume. In addition the properties "
       "fall into two categories: The QOS "
       "properties(PackageRedundancy, Data Redundancy, & "
       "NoSinglePointOfFailure) and the Detailed RAID "
       "properties(ExtentStripeLength, ParityLayout, and "
       "UserDataStripeDepth). In a Setting used as a goal, the QOS "
       "properties are required as a set; The Detailed RAID "
       "properties(if supported as indicated by the scoping "
       "StorageCapabilities instance) may be used optionally in any "
       "combination. The implementation MUST supply it's own best "
       "practice in the case where one or more supported RAID "
       "properties are not supplied. In this situation the use of "
       "StorageSettingWithHints can be useful to provide direction to "
       "the implementation. \n"
       "In a Setting used as a service agreement for a Volume, the QOS "
       "properties reflect the Service Level Agreement, with goal, "
       "min, & max. The actual current service level is exposed by "
       "corresponding values in StorageExtent. \n"
       "The Detailed RAID properties, by contrast, reflect specific "
       "values that reflect the RAID construction of the Volume. Only "
       "the primary values are meaningful; Min and Max are set to "
       "match. \n"
       "Certain StorageSetting instances may be classed as \"Fixed\", "
       "by using the \"ChangeableType\" property, indicating the "
       "setting is preset. Such settings are used when the possible "
       "setting variations are low enough to be instantiated in their "
       "entirety. The StorageCapabilities \"CreateSetting\" method MAY "
       "NOT be used to return settings that are not changeable. \n"
       "Other StorageSetting instances are created using the "
       "\"CreateSetting\" method. If the capabilities specifies "
       "ranges, then the setting can be used by a client to narrow the "
       "range to particular values within the range. In other words, "
       "the capabilities MAY be broad, but the related setting MUST be "
       "as capable or less capable, that is more narrowly defined, "
       "before it is used to create or modify resources. \n"
       "These created StorageSetting instances MUST have their "
       "\"ChangeableType\" property = 1, \"Changeable - Transient\". \n"
       "GeneratedSettings MAY not remain after the restart or reset of "
       "the implementation. They may be deleted by implementation at "
       "any time. A reasonable minimal time to retain the generated "
       "transient settings is five minutes, although there is no "
       "minimal retention time.")]
class CIM_StorageSetting : CIM_SettingData {

      [Write, Description (
          "Indicates the desired value for No Single Point of Failure. "
          "Possible values are false = single point of failure, and "
          "true = no single point of failure.")]
   boolean NoSinglePointOfFailure;

      [Write, Description (
          "DataRedundancyMax describes the maximum number of complete "
          "copies of data to be maintained. Examples would be RAID 5 "
          "where 1 copy is maintained and RAID 1 where 2 or more "
          "copies are maintained. Possible values are 1 to n. The "
          "desired redundancy is specified using DataRedundancyGoal, "
          "while the minimum is defined by DataRedundancyMin."), 
       MinValue ( 1 ), 
       ModelCorrespondence { "CIM_StorageSetting.DataRedundancyMin",
          "CIM_StorageSetting.DataRedundancyGoal" }]
   uint16 DataRedundancyMax;

      [Write, Description (
          "DataRedundancyMin describes the minimum number of complete "
          "copies of data to be maintained. Examples would be RAID 5 "
          "where 1 copy is maintained and RAID 1 where 2 or more "
          "copies are maintained. Possible values are 1 to n. The "
          "desired redundancy is specified using DataRedundancyGoal, "
          "while the maximum is defined by DataRedundancyMax."), 
       MinValue ( 1 ), 
       ModelCorrespondence { "CIM_StorageSetting.DataRedundancyMax",
          "CIM_StorageSetting.DataRedundancyGoal" }]
   uint16 DataRedundancyMin;

      [Write, Description (
          "DataRedundancyGoal describes the desired number of complete "
          "copies of data to be maintained. Examples would be RAID 5 "
          "where 1 copy is maintained and RAID 1 where 2 or more "
          "copies are maintained. Possible values are 1 to n. The "
          "bounds (max and min) for redundancy are defined using the "
          "properties, DataRedundancyMax and DataRedundancyMin."), 
       MinValue ( 1 ), 
       ModelCorrespondence { "CIM_StorageSetting.DataRedundancyMax",
          "CIM_StorageSetting.DataRedundancyMin" }]
   uint16 DataRedundancyGoal;

      [Write, Description (
          "PackageRedundancyMax describes the maximum number of "
          "redundant packages to be used. For example, in the storage "
          "domain, package redundancy describes how many disk spindles "
          "can fail without data loss including, at most, one spare. "
          "An example would be RAID5 with a spare disk which would "
          "have a PackageRedundancy of 2. Possible values are 0 to n. "
          "The desired redundancy is specified using "
          "PackageRedundancyGoal, while the minimum is defined by "
          "PackageRedundancyMin."), 
       ModelCorrespondence { "CIM_StorageSetting.PackageRedundancyMin",
          "CIM_StorageSetting.PackageRedundancyGoal" }]
   uint16 PackageRedundancyMax;

      [Write, Description (
          "PackageRedundancyMin describes the minimum number of "
          "redundant packages to be used. For example, in the storage "
          "domain, package redundancy describes how many disk spindles "
          "can fail without data loss including, at most, one spare. "
          "An example would be RAID5 with a spare disk which would "
          "have a PackageRedundancy of 2. Possible values are 0 to n. "
          "The desired redundancy is specified using "
          "PackageRedundancyGoal, while the maximum is defined by "
          "PackageRedundancyMax."), 
       ModelCorrespondence { "CIM_StorageSetting.PackageRedundancyMax",
          "CIM_StorageSetting.PackageRedundancyGoal" }]
   uint16 PackageRedundancyMin;

      [Write, Description (
          "PackageRedundancyGoal describes the desired number of "
          "redundant packages to be used. For example, in the storage "
          "domain, package redundancy describes how many disk spindles "
          "can fail without data loss including, at most, one spare. "
          "An example would be RAID5 with a spare disk which would "
          "have a PackageRedundancy of 2. Possible values are 0 to n. "
          "The bounds (max and min) for redundancy are defined using "
          "the properties, PackageRedundancyMax and "
          "PackageRedundancyMin."), 
       ModelCorrespondence { "CIM_StorageSetting.PackageRedundancyMax",
          "CIM_StorageSetting.PackageRedundancyMin" }]
   uint16 PackageRedundancyGoal;

      [Write, Description (
          "DeltaReservationMax is a number between 1 (1%) and a 100 "
          "(100%) which specifies the maximum amount of space that "
          "should be reserved in a replica for caching changes. For a "
          "complete copy this would be 100%. The desired reservation "
          "is specified using DeltaReservationGoal, while the minimum "
          "is defined by DeltaReservationMin."), 
       Units ( "Percentage" ), MinValue ( 1 ), MaxValue ( 100 ), 
       ModelCorrespondence { "CIM_StorageSetting.DeltaReservationMin",
          "CIM_StorageSetting.DeltaReservationGoal" }]
   uint8 DeltaReservationMax;

      [Write, Description (
          "DeltaReservationMin is a number between 1 (1%) and a 100 "
          "(100%) which specifies the minimum amount of space that "
          "should be reserved in a replica for caching changes. For a "
          "complete copy this would be 100%. The desired reservation "
          "is specified using DeltaReservationGoal, while the maximum "
          "is defined by DeltaReservationMax."), 
       Units ( "Percentage" ), MinValue ( 1 ), MaxValue ( 100 ), 
       ModelCorrespondence { "CIM_StorageSetting.DeltaReservationMax",
          "CIM_StorageSetting.DeltaReservationGoal" }]
   uint8 DeltaReservationMin;

      [Write, Description (
          "DeltaReservationGoal is a number between 1 (1%) and a 100 "
          "(100%) which specifies the desired amount of space that "
          "should be reserved in a replica for caching changes. For a "
          "complete copy this would be 100%. The bounds (max and min) "
          "for the reservation are defined using the properties, "
          "DeltaReservationMax and DeltaReservationMin."), 
       Units ( "Percentage" ), MinValue ( 1 ), MaxValue ( 100 ), 
       ModelCorrespondence { "CIM_StorageSetting.DeltaReservationMin",
          "CIM_StorageSetting.DeltaReservationMax" }]
   uint8 DeltaReservationGoal;

      [Description (
          "Enumeration indicating the type of setting. \"Fixed - Not "
          "Changeable\" settings are primordial. These setting are "
          "defined at the implementor of the class. \"Changeable - "
          "Transient\" is the type of setting produced by the "
          "\"CreateSetting\" method. A client can subsequently request "
          "that the implementation persist the generated and "
          "potentially modified setting indefinately. Only a "
          "\"Changeable - Transient\" setting SHALL be converted to a "
          "\"Changeable = Persistent\" setting; the setting SHALL NOT "
          "be changed back."), 
       ValueMap { "0", "1", "2" }, 
       Values { "Fixed - Not Changeable", "Changeable - Transient",
          "Changeable - Persistent" }]
   uint16 ChangeableType;

      [Write, Description (
          "ExtentStripeLength describes the number of underlying "
          "StorageExtents across which data is striped in the common "
          "striping-based storage organizations. This is also known as "
          "the number of 'members' or 'columns'. When used in a goal "
          "setting instance, ExtentStripeLength is the optimal desired "
          "value. The bounds (max and min) for Stripe Length are "
          "defined using the properties ExtentStripeLengthMax and "
          "ExtentStripeLengthMin. ExtentStripeLength MUST be set to "
          "NULL if the scoping StorageCapablities indicates that it is "
          "not supported in this context. ExtentStripeLength can be "
          "used in conjunction with CreateOrModifyElementFromELements "
          "to explicitly configure storage. An example would be RAID "
          "0+1 with mirroring two stripe sets, each set being three "
          "wide. In this case CreateOrModifyElementFromElements would "
          "be passed a goal setting with DataRedundancy = 2 and "
          "ExtentStripeLength = 3. The size of the InElements array "
          "would be 6 and would contain the StorageExtents to be used "
          "to construct the StorageElement as a RAID 0+1. "
          "ExtentStripeLengthMin and ExtentStripeLengthMax are "
          "meaningless and wouldbe set to NULL. If the property is "
          "supported, and is part of StorageSettingWithHints it MAY be "
          "set to NULL. If used it will constrain the effects of Hint "
          "selections. When used in a Setting instance associated to a "
          "Volume, this property indicates the specific value that the "
          "Volume was created with, and ExtentStripeLengthMin and "
          "ExtentStripeLengthMax will be set to the same specific "
          "value."), 
       MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageSetting.ExtentStripeLengthMax",
          "CIM_StorageSetting.ExtentStripeLengthMin" }]
   uint16 ExtentStripeLength;

      [Write, Description (
          "ExtentStripeLength describes the number of underlying "
          "StorageExtents across which data is striped in the common "
          "striping-based storage organizations. This is also known as "
          "the number of 'members' or 'columns'. When used in a goal "
          "setting instance, ExtentStripeLengthMin is the minimum "
          "acceptable value. The desired Stripe Length is specified "
          "using ExtentStripeLength, while the maximum is defined by "
          "ExtentStripeLengthMax. ExtentStripeLengthMin MUST be set to "
          "NULL if the scoping StorageCapablities indicates that it is "
          "not supported in this context. If the property is "
          "supported, and is part of StorageSettingWithHints it MAY be "
          "set to NULL. If used it will constrain the effects of Hint "
          "selections. When used in a Setting instance associated to a "
          "Volume, this property is set to the specific value of "
          "ExtentStripeLength."), 
       MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageSetting.ExtentStripeLengthMax",
          "CIM_StorageSetting.ExtentStripeLength" }]
   uint16 ExtentStripeLengthMin;

      [Write, Description (
          "ExtentStripeLength describes the number of underlying "
          "StorageExtents across which data is striped in the common "
          "striping-based storage organizations. This is also known as "
          "the number of 'members' or 'columns'. When used in a goal "
          "setting instance, ExtentStripeLengthMax is the maximum "
          "acceptable value. The desired Stripe Length is specified "
          "using ExtentStripeLength, while the minimum is defined by "
          "ExtentStripeLengthMin. ExtentStripeLengthMax MUST be set to "
          "NULL if the scoping StorageCapablities indicates that it is "
          "not supported in this context. If the property is "
          "supported, and is part of StorageSettingWithHints it MAY be "
          "set to NULL. If used it will constrain the effects of Hint "
          "selections. When used in a Setting instance associated to a "
          "Volume, this property is set to the specific value of "
          "ExtentStripeLength."), 
       MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageSetting.ExtentStripeLengthMin",
          "CIM_StorageSetting.ExtentStripeLength" }]
   uint16 ExtentStripeLengthMax;

      [Write, Description (
          "ParityLayout specifies whether a parity-based storage "
          "organization is using rotated or non-rotated parity. When "
          "used in a goal setting instance, ParityLayout is the "
          "desired value. It MUST be set to NULL if the scoping "
          "StorageCapablities indicates that it is not supported in "
          "this context. If the property is supported, and is part of "
          "StorageSettingWithHints it MAY be set to NULL. If used it "
          "will constrain the effects of Hint selections. When used in "
          "a Setting instance associated to a Volume, this property "
          "indicates the specific value that the Volume was created "
          "with."), 
       ValueMap { "1", "2" }, 
       Values { "Non-rotated Parity", "Rotated Parity" }]
   uint16 ParityLayout;

      [Write, Description (
          "UserDataStripeDepth describes the number of bytes forming a "
          "strip in common striping-based storage organizations. The "
          "strip is defined as the size of the portion of a stripe "
          "that lies on one extent. Thus, ExtentStripeLength * "
          "UserDataStripeDepth will yield the size of one stripe of "
          "user data. When used in a goal setting instance, "
          "UserDataStripeDepth is the optimal desired value. The "
          "bounds (max and min) for Stripe Depth are defined using the "
          "properties UserDataStripeDepthMax and "
          "UserDataStripeDepthMin. UserDataStripeDepth MUST be set to "
          "NULL if the scoping StorageCapablities indicates that it is "
          "not supported in this context. If the property is "
          "supported, and is part of StorageSettingWithHints it MAY be "
          "set to NULL. If used it will constrain the effects of Hint "
          "selections. When used in a Setting instance associated to a "
          "Volume, this property indicates the specific value that the "
          "Volume was created with, and UserDataStripeDepthMin and "
          "UserDataStripeDepthMax will be set to the same specific "
          "value."), 
       Units ( "Bytes" ), MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageSetting.UserDataStripeDepthMax",
          "CIM_StorageSetting.UserDataStripeDepthMin" }]
   uint64 UserDataStripeDepth;

      [Write, Description (
          "UserDataStripeDepth describes the number of bytes forming a "
          "strip in common striping-based storage organizations. The "
          "strip is defined as the size of the portion of a stripe "
          "that lies on one extent. Thus, ExtentStripeLength * "
          "UserDataStripeDepth will yield the size of one stripe of "
          "user data. When used in a goal setting instance, "
          "UserDataStripeDepthMin is the minimum acceptable value. The "
          "desired Stripe Depth is specified using "
          "UserDataStripeDepth, while the maximum is defined by "
          "UserDataStripeDepthMax. UserDataStripeDepthMin MUST be set "
          "to NULL if the scoping StorageCapablities indicates that it "
          "is not supported in this context. If the property is "
          "supported, and is part of StorageSettingWithHints it MAY be "
          "set to NULL. If used it will constrain the effects of Hint "
          "selections. When used in a Setting instance associated to a "
          "Volume, this property is set to the specific value of "
          "UserDataStripeDepth."), 
       Units ( "Bytes" ), MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageSetting.UserDataStripeDepthMax",
          "CIM_StorageSetting.UserDataStripeDepth" }]
   uint64 UserDataStripeDepthMin;

      [Write, Description (
          "UserDataStripeDepth describes the number of bytes forming a "
          "strip in common striping-based storage organizations. The "
          "strip is defined as the size of the portion of a stripe "
          "that lies on one extent. Thus, ExtentStripeLength * "
          "UserDataStripeDepth will yield the size of one stripe of "
          "user data. When used in a goal setting instance, "
          "UserDataStripeDepthMax is the maximum acceptable value. The "
          "desired Stripe Depth is specified using "
          "UserDataStripeDepthGoal, while the minimum is defined by "
          "UserDataStripeDepthMin. UserDataStripeDepthMax MUST be set "
          "to NULL if the scoping StorageCapablities indicates that it "
          "is not supported in this context. If the property is "
          "supported, and is part of StorageSettingwWithHints it MAY "
          "be set to NULL. If used it will constrain the effects of "
          "Hint selections. When used in a Setting instance associated "
          "to a Volume, this property is set to the specific value of "
          "UserDataStripeDepth."), 
       Units ( "Bytes" ), MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageSetting.UserDataStripeDepthMin",
          "CIM_StorageSetting.UserDataStripeDepth" }]
   uint64 UserDataStripeDepthMax;

};

// ==================================================================
//  CIM_StorageExtent
// ==================================================================
   [Abstract,  Version ( "2.13.0" ), Description (
       "StorageExtent describes the capabilities and management of the "
       "various media that exist to store data and allow data "
       "retrieval. This superclass could be used to represent the "
       "various components of RAID (Hardware or Software) or as a raw "
       "logical extent on top of physical media.")]
class CIM_StorageExtent : CIM_LogicalDevice {

      [Description (
          "Type of data organization used."), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Other", "Unknown", "Fixed Block", "Variable Block",
          "Count Key Data" }]
   uint16 DataOrganization;

      [Description (
          "A free form string describing the media and/or its use."), 
       MappingStrings { "MIB.IETF|HOST-RESOURCES-MIB.hrStorageDescr" }]
   string Purpose;

      [Description (
          "Access describes whether the media is readable (value=1), "
          "writeable (value=2), or both (value=3). \"Unknown\" (0) and "
          "\"Write Once\" (4) can also be defined."), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Unknown", "Readable", "Writeable",
          "Read/Write Supported", "Write Once" }]
   uint16 Access;

      [Description (
          "ErrorMethodology is a free-form string describing the type "
          "of error detection and correction supported by this "
          "StorageExtent.")]
   string ErrorMethodology;

      [Description (
          "Size in bytes of the blocks which form this StorageExtent. "
          "If variable block size, then the maximum block size in "
          "bytes should be specified. If the block size is unknown or "
          "if a block concept is not valid (for example, for "
          "AggregateExtents, Memory or LogicalDisks), enter a 1."), 
       Units ( "Bytes" ), 
       MappingStrings { "MIF.DMTF|Host Storage|001.4",
          "MIB.IETF|HOST-RESOURCES-MIB.hrStorageAllocationUnits",
          "MIF.DMTF|Storage Devices|001.5" }]
   uint64 BlockSize;

      [Description (
          "Total number of logically contiguous blocks, of size Block "
          "Size, which form this Extent. The total size of the Extent "
          "can be calculated by multiplying BlockSize by "
          "NumberOfBlocks. If the BlockSize is 1, this property is the "
          "total size of the Extent."), 
       MappingStrings { "MIF.DMTF|Host Storage|001.5",
          "MIB.IETF|HOST-RESOURCES-MIB.hrStorageSize" }]
   uint64 NumberOfBlocks;

      [Description (
          "The maximum number of blocks, of size BlockSize, which are "
          "available for consumption when layering StorageExtents "
          "using the BasedOn association. This property only has "
          "meaning when this StorageExtent is an Antecedent reference "
          "in a BasedOn relationship. For example, a StorageExtent "
          "could be composed of 120 blocks. However, the Extent itself "
          "may use 20 blocks for redundancy data. If another "
          "StorageExtent is BasedOn this Extent, only 100 blocks would "
          "be available to it. This information ('100 blocks is "
          "available for consumption') is indicated in the "
          "ConsumableBlocks property.")]
   uint64 ConsumableBlocks;

      [Description (
          "True indicates that the underlying StorageExtent(s) "
          "participate in a StorageRedundancyGroup.")]
   boolean IsBasedOnUnderlyingRedundancy;

      [Description (
          "Boolean set to TRUE if the Storage is sequentially accessed "
          "by a MediaAccessDevice. A TapePartition is an example of a "
          "sequentially accessed StorageExtent. StorageVolumes, Disk "
          "Partitions and LogicalDisks represent randomly accessed "
          "Extents.")]
   boolean SequentialAccess;

      [Description (
          "StorageExtents have additional status information beyond "
          "that captured in the OperationalStatus and other "
          "properties, inherited from ManagedSystemElement. This "
          "additional information (for example, \"Protection "
          "Disabled\", value=9) is captured in the ExtentStatus "
          "property. \n"
          "'In-Band Access Granted' says that access to data on an "
          "extent is granted to some consumer and is only valid when "
          "'Exported' is also set. It is set as a side effect of "
          "PrivilegeManagementService.ChangeAccess or equivalent "
          "interfaces. \n"
          "'Imported' indicates that the extent is used in the current "
          "system, but known to be managed by some other system. For "
          "example, a server imports volumes from a disk array. \n"
          "'Exported' indicates the extent is meant to be used by some "
          "comsumer. A disk array's logical units are exported. \n"
          "Intermediate composite extents may be neither imported nor "
          "exported."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17", "18..32767",
          "32768..65535" }, 
       Values { "Other", "Unknown", "None/Not Applicable", "Broken",
          "Data Lost", "Dynamic Reconfig", "Exposed",
          "Fractionally Exposed", "Partially Exposed",
          "Protection Disabled", "Readying", "Rebuild", "Recalculate",
          "Spare in Use", "Verify In Progress",
          "In-Band Access Granted", "Imported", "Exported",
          "DMTF Reserved", "Vendor Reserved" }]
   uint16 ExtentStatus[];

      [Description (
          "Indicates whether or not there exists no single point of "
          "failure."), 
       ModelCorrespondence { 
          "CIM_StorageSetting.NoSinglePointOfFailure" }]
   boolean NoSinglePointOfFailure;

      [Description (
          "Number of complete copies of data currently maintained."), 
       ModelCorrespondence { "CIM_StorageSetting.DataRedundancyGoal",
          "CIM_StorageSetting.DataRedundancyMax",
          "CIM_StorageSetting.DataRedundancyMin" }]
   uint16 DataRedundancy;

      [Description (
          "How many physical packages can currently fail without data "
          "loss. For example, in the storage domain, this might be "
          "disk spindles."), 
       ModelCorrespondence { 
          "CIM_StorageSetting.PackageRedundancyGoal",
          "CIM_StorageSetting.PackageRedundancyMax",
          "CIM_StorageSetting.PackageRedundancyMin" }]
   uint16 PackageRedundancy;

      [Description (
          "Current value for Delta reservation. This is a percentage "
          "that specifies the amount of space that should be reserved "
          "in a replica for caching changes."), 
       Units ( "Percentage" ), MinValue ( 1 ), MaxValue ( 100 ), 
       ModelCorrespondence { "CIM_StorageSetting.DeltaReservationGoal",
          "CIM_StorageSetting.DeltaReservationMax",
          "CIM_StorageSetting.DeltaReservationMin" }]
   uint8 DeltaReservation;

      [Description (
          "If true, \"Primordial\" indicates that the containing "
          "System does not have the ability to create or delete this "
          "operational element. This is important because "
          "StorageExtents are assembled into higher-level abstractions "
          "using the BasedOn association. Although the higher-level "
          "abstractions can be created and deleted, the most basic, "
          "(i.e. primordial), hardware-based storage entities cannot. "
          "They are physically realized as part of the System, or are "
          "actually managed by some other System and imported as if "
          "they were physically realized. In other words, a Primordial "
          "StorageExtent exists in, but is not created by its System "
          "and conversely a non-Primordial StorageExtent is created in "
          "the context of its System. For StorageVolumes, this "
          "property will generally be false. One use of this property "
          "is to enable algorithms that aggregate "
          "StorageExtent.ConsumableSpace across all, StorageExtents "
          "but that also want to distinquish the space that underlies "
          "Primordial StoragePools. Since implementations are not "
          "required to surface all Component StorageExtents of a "
          "StoragePool, this information is not accessible in any "
          "other way.")]
   boolean Primordial = false;

      [Override ( "Name" ), Description (
          "A unique identifier for the Extent."), 
       MappingStrings { "SPC.INCITS-T10| VPD 83, Association 0 | "
           "Identifier" }, 
       ModelCorrespondence { "CIM_StorageExtent.NameFormat",
          "CIM_StorageExtent.NameNamespace" }]
   string Name;

      [Description (
          "The list here applies to all StorageExtent subclasses. "
          "Please look at the Description in each subclass for "
          "guidelines on the approriate values for that subclass. Note "
          "that any of these formats could apply to a CompositeExtent. "
          "\n\n"
          "Note - this property originally touched on two concepts "
          "that are now separated into this property and "
          "NameNamespace. Values 2,3,4,5,6, and 8 are retained for "
          "backwards compatibility but are deprecated in lieu of the "
          "corresponding values in CIM_StorageExtent.NameNamespace. \n"
          "\n"
          "For example, the preferred source for SCSI virtual (RAID) "
          "disk names is from Inquiry VPD page 83 response, type 3 "
          "identifiers. These will have NameFormat set to 'NAA' and "
          "NameNamespace to 'VPD83Type3'. \n"
          "\n"
          "Format of the Name property. Values for extents "
          "representing SCSI volumes are (per SCSI SPC-3): \n"
          "2 = VPD Page 83, NAA IEEE Registered Extended (VPD83NAA6) \n"
          "(DEPRECATED) \n"
          "3 = VPD Page 83, NAA IEEE Registered (VPD83NAA5) \n"
          "(DEPRECATED) \n"
          "4 = VPD Page 83, (VPD83Type2) (DEPRECATED) \n"
          "5 = VPD Page 83, \n"
          "T10 Vendor Identification (VPD83Type1) (DEPRECATED) \n"
          "6 = VPD Page 83, Vendor Specific (VPD83Type0) (DEPRECATED) "
          "\n7 = Serial Number/Vendor/Model (SNVM) SNVM is 3 strings "
          "representing the vendor name, product name within the "
          "vendor namespace, and the serial number within the model "
          "namespace. Strings are delimited with a '+'. Spaces may be "
          "included and are significant. The serial number is the text "
          "representation of the serial number in hexadecimal upper "
          "case. This represents the vendor and model ID from SCSI "
          "Inquiry data; the vendor field MUST be 8 characters wide "
          "and the product field MUST be 16 characters wide. For "
          "example, \n"
          "'ACME____+SUPER DISK______+124437458' (_ is a space "
          "character) \n"
          "8 = Node WWN (for single LUN/controller) (NodeWWN) \n"
          "(DEPRECATED) \n"
          "9 = NAA as a generic format. See \n"
          "http://standards.ieee.org/regauth/oui/tutorials/fibrecomp_id.html. "
          "Formatted as 16 or 32 unseparated uppercase hex characters "
          "(2 per binary byte). For example '21000020372D3C73' \n"
          "10 = EUI as a generic format (EUI64) See \n"
          "http://standards.ieee.org/regauth/oui/tutorials/EUI64.html. "
          "\nFormatted as 16 unseparated uppercase hex characters (2 "
          "per binary byte) \n"
          "11 = T10 vendor identifier format as returned by SCSI "
          "Inquiry VPD page 83, identifier type 1. See T10 SPC-3 "
          "specification. This is the 8-byte ASCII vendor ID from the "
          "T10 registry followed by a vendor specific ASCII "
          "identifier; spaces are permitted. For non SCSI volumes, "
          "'SNVM' may be the most appropriate choice. 12 = OS Device "
          "Name (for LogicalDisks). See LogicalDisk Name description "
          "for details."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12" }, 
       Values { "Unknown", "Other", "VPD83NAA6", "VPD83NAA5",
          "VPD83Type2", "VPD83Type1", "VPD83Type0", "SNVM", "NodeWWN",
          "NAA", "EUI64", "T10VID", "OS Device Name" }, 
       ModelCorrespondence { "CIM_StorageExtent.Name",
          "CIM_StorageExtent.NameNamespace",
          "CIM_StorageExtent.OtherNameFormat" }]
   uint16 NameFormat;

      [Description (
          "The preferred source SCSI for volume names is SCSI VPD Page "
          "83 responses. Page 83 returns a list of identifiers for "
          "various device elements. The metadata for each identifier "
          "includes an Association field, identifiers with association "
          "of 0 apply to volumes. Page 83 supports several namespaces "
          "specified in the Type field in the identifier metadata. See "
          "SCSI SPC-3 specification. \n"
          "2 = VPD Page 83, Type 3 NAA (NameFormat SHOULD be NAA) \n"
          "3 = VPD Page 83, Type 2 EUI64 (NameFormat EUI) \n"
          "4 = VPD Page 83, Type 1 T10 Vendor Identification \n"
          "(NameFormat T10) \n"
          "Less preferred volume namespaces from other interfaces: \n"
          "5 = VPD page 80, Serial number (NameFormat SHOULD be Other) "
          "\n6 = FC NodeWWN (NameFormat SHOULD be NAA or EUI) \n"
          "7 = Serial Number/Vendor/Model (NameFormat SHOULD be SNVM) "
          "\nThe preferred namespace for LogigicalDisk names is "
          "platform specific device namespace; see LogigicalDIsk "
          "Description. \n"
          "8 = OS Device Namespace."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8" }, 
       Values { "Unknown", "Other", "VPD83Type3", "VPD83Type2",
          "VPD83Type1", "VPD80", "NodeWWN", "SNVM",
          "OS Device Namespace" }, 
       MappingStrings { "SPC.INCITS-T10| VPD 83, Association 0 | "
           "Identifier" }, 
       ModelCorrespondence { "CIM_StorageExtent.Name",
          "CIM_StorageExtent.OtherNameNamespace",
          "CIM_StorageExtent.NameFormat" }]
   uint16 NameNamespace;

      [Description (
          "A string describing the namespace of the Name property when "
          "NameNamespace includes the value 1, \"Other\"."), 
       ModelCorrespondence { "CIM_StorageExtent.NameNamespace" }]
   string OtherNameNamespace;

      [Description (
          "A string describing the format of the Name property when "
          "NameFormat includes the value 1, \"Other\"."), 
       ModelCorrespondence { "CIM_StorageExtent.NameFormat" }]
   string OtherNameFormat;

};

// ===================================================================
// CIM_ResourcePool
// ===================================================================
   [Abstract, Experimental,  Version ( "2.22.0" ), Description (
       "A ResourcePool is a logical entity (with associated controls) "
       "provided by the host system for the purpose of allocation and "
       "assignment of resources. A given ResourcePool may be used to "
       "allocate resources of a specific type. Hierarchies of "
       "ResourcePools may be created to provide administrative control "
       "over allocations. In the cases where resources are subdivided, "
       "multiple resource pools may exist (e.g. nodal boundaries in "
       "NUMA-like systems). In systems that support over commitment, "
       "pools represent the reservable capacity, not an upper bound or "
       "limit on the maximum amount that can be allocated. Admission "
       "control during power on may detect and prevent systems from "
       "powering due to resource exhaustion. For example, over "
       "commitment on a ResourcePool with ResourceType=Memory would "
       "require that sufficient space be available in some "
       "backing-store, that may be managed through a storage "
       "ResourcePool.")]
class CIM_ResourcePool : CIM_LogicalElement {

      [Key, Override ( "InstanceID" ), 
       Description ( 
          "Within the scope of the instantiating Namespace, "
          "InstanceID opaquely and uniquely identifies an instance "
          "of this class. 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 that is creating or defining the "
          "InstanceID or that is a registered ID assigned to the "
          "business entity by a recognized global authority. (This "
          "requirement 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 reused to identify different underlying "
          "(real-world) elements. If the above \"preferred\" "
          "algorithm is not used, the defining entity must ensure "
          "that the resulting InstanceID is not reused across any "
          "InstanceIDs produced by this or other providers for the "
          "NameSpace of this instance. \n"
          "For DMTF-defined instances, the \"preferred\" algorithm "
          "must be used with the <OrgID> set to CIM." )]
   string InstanceID;

      [Description ( 
          "An opaque identifier for the pool. This property is used "
          "to provide correlation across save and restore of "
          "configuration data to underlying persistent storage." ), 
       ModelCorrespondence { 
          "CIM_ResourceAllocationSettingData.PoolId" }]
   string PoolID;

      [Description ( 
          "If true, \"Primordial\" indicates that this ResourcePool "
          "is a base from which resources are drawn and returned in "
          "the activity of resource management. Being primordial "
          "means that this ResourcePool shall not be created or "
          "deleted by consumers of this model. However, other "
          "actions, modeled or not, may affect the characteristics "
          "or size of primordial ResourcePools. If false, "
          "\"Primordial\" indicates that the ResourcePool, a "
          "concrete Resource Pool, is subject to resource "
          "allocation services functions. This distinction is "
          "important because higher-level ResourcePools may be "
          "assembled using the Component or "
          "ElementAllocatedFromPool associations. Although the "
          "higher-level abstractions can be created and deleted, "
          "the most basic, (i.e. primordial), hardware-based "
          "ResourcePools cannot. They are physically realized as "
          "part of the System, or are actually managed by some "
          "other System and imported as if they were physically "
          "realized." )]
   boolean Primordial = false;

      [Description ( 
          "This property represents the maximum amount (in units of "
          "AllocationUnits) of reservations that the ResourcePool "
          "can support." )]
   uint64 Capacity;

      [Description ( 
          "This property represents the current reservations (in "
          "units of AllocationUnits) spread across all active "
          "allocations from this pool. In a hierarchical "
          "configuration, this represents the sum of all descendant "
          "ResourcePool current reservations." )]
   uint64 Reserved;

      [Description ( 
          "The type of resource this ResourcePool may allocate." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "14", "15", "16", "17", "18", "19", 
          "20", "21", "22", "23", "24", "25", "26", "27", "28", 
          "29", "30", "31", "32", "33", "..", "0x8000..0xFFFF" }, 
       Values { "Other", "Computer System", "Processor", "Memory", 
          "IDE Controller", "Parallel SCSI HBA", "FC HBA", 
          "iSCSI HBA", "IB HCA", "Ethernet Adapter", 
          "Other Network Adapter", "I/O Slot", "I/O Device", 
          "Floppy Drive", "CD Drive", "DVD drive", "Disk Drive", 
          "Tape Drive", "Storage Extent", "Other storage device", 
          "Serial port", "Parallel port", "USB Controller", 
          "Graphics controller", "IEEE 1394 Controller", 
          "Partitionable Unit", "Base Partitionable Unit", "Power", 
          "Cooling Capacity", "Ethernet Switch Port", 
          "Logical Disk", "Storage Volume", "Ethernet Connection", 
          "DMTF reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_ResourcePool.OtherResourceType", 
          "CIM_ResourcePool.ResourceSubType" }]
   uint16 ResourceType;

      [Description ( 
          "A string that describes the resource type when a well "
          "defined value is not available and ResourceType is set "
          "to 0 for Other." ), 
       ModelCorrespondence { "CIM_ResourcePool.ResourceType" }]
   string OtherResourceType;

      [Description ( 
          "A string describing an implementation specific sub-type "
          "for this pool. For example, this may be used to "
          "distinguish different models of the same resource type." ), 
       ModelCorrespondence { "CIM_ResourcePool.ResourceType" }]
   string ResourceSubType;

      [Description ( 
          "This property specifies the units of allocation used by "
          "the Reservation and Limit properties. For example, when "
          "ResourceType=Processor, AllocationUnits may be set to "
          "hertz*10^6 or percent. When ResourceType=Memory, "
          "AllocationUnits may be set to bytes*10^3. The value of "
          "this property shall be a legal value of the Programmatic "
          "Units qualifier as defined in Appendix C.1 of DSP0004 "
          "V2.4 or later." ), 
       IsPUnit]
   string AllocationUnits;

      [Description ( 
          "This property specifies the units for the MaxConsumable "
          "and the Consumed properties." ), 
       ModelCorrespondence { 
          "CIM_ResourcePool.MaxConsumableResource", 
          "CIM_ResourcePool.CurrentlyConsumedResource" }, 
       IsPUnit]
   string ConsumedResourceUnits = "count";

      [Description ( 
          "This property specifies the amount of resource that the "
          "resource pool currently presents to consumers.\n"
          "This property is different from the Reserved property in "
          "that it describes the consumers view of the resource "
          "while the Reserved property describes the producers view "
          "of the resource." ), 
       ModelCorrespondence { "CIM_ResourcePool.ConsumedResourceUnits" }]
   uint64 CurrentlyConsumedResource;

      [Description ( 
          "This property specifies the maximum of amount of "
          "consumable resource that the resource pool can present "
          "to consumers.\n"
          "This property is different from the Capacity property in "
          "that it describes the consumers view of the resource "
          "while the Capacity property describes the producers view "
          "of the resource." ), 
       ModelCorrespondence { "CIM_ResourcePool.ConsumedResourceUnits" }]
   uint64 MaxConsumableResource;
};

// ==================================================================
//  CIM_StoragePool
// ==================================================================
   [Abstract,  Version ( "2.15.0" ), Description (
       "A StoragePool is a conglomeration of storage capacity for the "
       "purpose of assignment and allocation based on service "
       "characteristics, such as location, available space or other "
       "criteria (for example, cost per megabyte or hardware "
       "ownership). A StoragePool is managed within the scope of a "
       "particular System. StoragePools may consist of component "
       "StoragePools or StorageExtents. StorageExtents that belong to "
       "the StoragePool have a Component relationship to the "
       "StoragePool. StorageExtents/StoragePools that are elements of "
       "a pool have their available space aggregated into the pool. "
       "StoragePools, StorageVolumes and LogicalDisks may be created "
       "from StoragePools. This is indicated by the "
       "AllocatedFromStoragePool association. StoragePool is scoped to "
       "a system by the HostedStoragePool association.")]
class CIM_StoragePool : CIM_ResourcePool {

    [Required, Override ( "PoolID" ), 
       Description ( 
          "A unique name in the context of the System that "
          "identifies this pool." ), 
       MaxLen ( 256 )]
   string PoolID;

      [Override ( "Primordial" ), 
       Description ( 
          "If true, \"Primordial\" indicates that this StoragePool "
          "is the base from which storage capacity is drawn and "
          "returned in the activity of storage management. Being "
          "primordial means that this StoragePool shall not be "
          "created or deleted by consumers of this model. However, "
          "other actions, modeled or not, may affect the "
          "characteristics or size of primordial StoragePools. If "
          "false, \"Primordial\" indicated that the StoragePool, a "
          "concrete Storage Pool, is subject to storage services "
          "functions. This distinction is important because "
          "higher-level StoragePools may be assembled using the "
          "Component or AllocatedFromStoragePool associations. "
          "Although the higher-level abstractions can be created "
          "and deleted, the most basic, (i.e. primordial), "
          "hardware-based StoragePools cannot. They are physically "
          "realized as part of the System, or are actually managed "
          "by some other System and imported as if they were "
          "physically realized." )]
   boolean Primordial = false;

      [Description ( 
          "The total amount of capacity usable for the allocation "
          "of StorageVolumes, LogicalDisks, or child Storage Pools. \n"
          "For primordial Storage Pools, this capacity reflects the "
          "usable capacity of Disk Drives or LUNs, for example, to "
          "the owning storage device or application. For example, "
          "in storage array, a primordial Storage Pool\'s "
          "TotalManagedSpace does not include metadata such as the "
          "disk label area and absolute disk drive capacity lost in "
          "disk formatting. \n"
          "For concrete Storage Pools, the same applies, but the "
          "metadata not included in TotalManagedSpace is consumed "
          "in virtualization like RAID and concatenation. Concrete "
          "Storage Pool may also be simple reserve of capacity. In "
          "such a case, no capacity may be lost in formation of the "
          "Storage Pool. \n"
          "Conceptually TotalManagedSpace is the sum of all storage "
          "known via AssociatedComponentExtent associations to "
          "underlying StorageExtents. However, note some of these "
          "underlying storage may not be modeled by the "
          "instrumentation." ), 
       Units ( "Bytes" ), 
       ModelCorrespondence { "CIM_StoragePool.RemainingManagedSpace" }, 
       PUnit ( "byte" )]
   uint64 TotalManagedSpace;

      [Required, Description ( 
          "The remaining usable capacity after the allocation of "
          "StorageVolumes, LogicalDisks, or child Storage Pools. "
          "This property is maintained here to provide efficient "
          "access to this information. However, note that it is "
          "possible to compute RemainingManagedSpace as "
          "(TotalManagedSpace minus the sum of SpaceConsumed from "
          "all of the AllocatedFromStoragePool references from this "
          "StoragePool). Note that SpaceConsumed remains useful to "
          "determine the amount of capacity consumed by a "
          "particular allocated element." ), 
       Units ( "Bytes" ), 
       ModelCorrespondence { "CIM_StoragePool.TotalManagedSpace", 
          "CIM_AllocatedFromStoragePool.SpaceConsumed" }, 
       PUnit ( "byte" )]
   uint64 RemainingManagedSpace;

      [Experimental, Description ( 
          "LowSpaceWarningThreshold simplifies the creation of a "
          "pool specific Indication based on RemainingManagedSpace "
          "<= \n"
          "(TotalManagedSpace*LowSpaceWarningThreshold)/100. One "
          "example client for an Indication based on this property "
          "is a delta copy implementation where the pool enables "
          "continuous, variable space consumption for the delta "
          "storage. Another example client for an Indication based "
          "on this property is a provisioning manager implementing "
          "a policy for adding storage to a pool when it becomes "
          "low." ), 
       Units ( "Percentage" ), 
       MinValue ( 0 ), 
       MaxValue ( 100 ), 
       ModelCorrespondence { "CIM_StoragePool.RemainingManagedSpace" }, 
       PUnit ( "percent" )]
   uint16 LowSpaceWarningThreshold;

      [Experimental, Description ( 
          "Indicates the intended usage or any restrictions that "
          "may have been imposed on the usage of this component. "
          "For example, a storage pool may be reserved for use by "
          "the block server. In that case the Usage of the storage "
          "pool is marked as \"Reserved for the ComputerSystem\". "
          "In the case of \"Other\", see OtherUsageDescription for "
          "more information." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "..", 
          "32768..65535" }, 
       Values { "Other", "Unrestricted", 
          "Reserved for ComputerSystem (the block server)", 
          "Reserved as a Delta Replica Container", 
          "Reserved for Migration Services", 
          "Reserved for Local Replication Services", 
          "Reserved for Remote Replication Services", 
          "Reserved for Sparing", "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_StoragePool.OtherUsageDescription" }]
   uint16 Usage;

      [Experimental, Description ( 
          "Populated when \"Usage\" has the value of \"Other\"." ), 
       ModelCorrespondence { "CIM_StoragePool.Usage" }]
   string OtherUsageDescription;

      [Experimental, Description ( 
          "Indicates which values from the \"Usage\" valuemap can "
          "be manipulated by a client using the method "
          "\"StorageConfigurationService.RequestUsageChange\"." ), 
       ModelCorrespondence { "CIM_StoragePool.Usage" }]
   uint16 ClientSettableUsage[];


      [Description ( 
          "For pools that support discrete sizes for volume or pool "
          "creation, this method can be used to retrieve a list of "
          "supported sizes. Note that different pool "
          "implementations may support either or both the "
          "GetSupportedSizes and GetSupportedSizeRanges methods at "
          "different times, depending on Pool configuration. Also "
          "note that the advertised sizes may change after the call "
          "due to requests from other clients. If the pool "
          "currently only supports a range of sizes, then the "
          "return value will be set to 1." ), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported", 
          "Use GetSupportedSizeRange instead" }]
   uint32 GetSupportedSizes(
         [IN, Description ( 
             "The type of element for which supported sizes are reported for."
              ), 
          ValueMap { "2", "3", "4" }, 
          Values { "Storage Pool", "Storage Volume", 
             "Logical Disk" }]
      uint16 ElementType, 
         [IN, Description ( 
             "The StorageSetting for which supported sizes "
             "should be reported for." )]
      CIM_StorageSetting REF Goal, 
         [IN, OUT, Description ( 
             "List of supported sizes for a Volume/Pool creation "
             "or modification." ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 Sizes[]);

      [Description ( 
          "For pools that that support a range of sizes for volume "
          "or pool creation, this method can be used to retrieve "
          "the supported range. Note that different pool "
          "implementations may support either or both the "
          "GetSupportedSizes and GetSupportedSizeRanges methods at "
          "different times, depending on Pool configuration. Also "
          "note that the advertised sizes may change after the call "
          "due to requests from other clients. If the pool "
          "currently only supports discrete sizes, then the return "
          "value will be set to 1." ), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported", 
          "Use GetSupportedSizes instead" }]
   uint32 GetSupportedSizeRange(
         [IN, Description ( 
             "The type of element for which supported size "
             "ranges are reported for." ), 
          ValueMap { "2", "3", "4" }, 
          Values { "Storage Pool", "Storage Volume", 
             "Logical Disk" }]
      uint16 ElementType, 
         [IN, Description ( 
             "The StorageSetting for which supported size ranges "
             "should be reported for." )]
      CIM_StorageSetting REF Goal, 
         [IN, OUT, Description ( 
             "The minimum size for a volume/pool in bytes." ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 MinimumVolumeSize, 
         [IN, OUT, Description ( 
             "The maximum size for a volume/pool in bytes." ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 MaximumVolumeSize, 
         [IN, OUT, Description ( 
             "A volume/pool size must be a multiple of this "
             "value which is specified in bytes." ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 VolumeSizeDivisor);

      [Description ( 
          "This method can be used to retrieve a list of available "
          "Extents that may be used in the creation or modification "
          "of a StoragePool, StorageVolume, or LogicalDisk. The "
          "GetAvailableExtents method MUST return the Extents from "
          "the set of Component Extents of the Pool on which the "
          "method is being invoked. The returned Extents are "
          "available at the time the method returns. There is no "
          "guarantee that the same Extents will be available later. "
          "This method MUST return the Extents that are not being "
          "used as supporting capacity for any other Pools, "
          "Volumes, or LogicalDisks that have been allocated from "
          "this Pool. The Extent returned MUST be a component "
          "Extent of the Pool or subdivisions of a component "
          "Extent, the subdivisions themselves represented as "
          "Extents." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", 
          "4098..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Unknown", "Timeout", "Failed", "Invalid Parameter", 
          "In Use", "DMTF Reserved", "Method Reserved", 
          "Vendor Specific" }]
   uint32 GetAvailableExtents(
         [IN, Description ( 
             "The StorageSetting (Goal) for which supported "
             "extents should be retrieved as available. \n"
             "If a NULL is passed for the Goal, the method will "
             "return all available extents, regardless of the "
             "goal. There exists a possibility of error in "
             "creating a Pool, Volume, or LogicalDisk retrieved "
             "in this manner." )]
      CIM_StorageSetting REF Goal, 
         [OUT, Description ( 
             "List of references to available StorageExtents, or "
             "subclass instances." )]
      CIM_StorageExtent REF AvailableExtents[]);
};

// ===================================================================
// CIM_ElementAllocatedFromPool
// ===================================================================
   [Association, Abstract, Experimental,  Version ( "2.15.0" ),
       Description (
       "ElementAllocatedFromPool associates an instance of "
       "CIM_LogicalElement representing an allocated Resource with the "
       "CIM_ResourcePool from which it was allocated.")]
class CIM_ElementAllocatedFromPool : CIM_Dependency {

      [Override ( "Antecedent" ), Max ( 1 ), Description (
          "The resource pool.")]
   CIM_ResourcePool REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The allocated resource.")]
   CIM_LogicalElement REF Dependent;

};


// ==================================================================
//  CIM_AllocatedFromStoragePool
// ==================================================================
   [Association, Abstract,  Version ( "2.15.0" ), Description (
       "AllocatedFromStoragePool is an association describing how "
       "LogicalElements are allocated from underlying StoragePools. "
       "These elements typically would be subclasses of StorageExtents "
       "or StoragePools.")]
class CIM_AllocatedFromStoragePool : CIM_ElementAllocatedFromPool {

      [Override ( "Antecedent" ), 
       Description ( "The StoragePool." )]
   CIM_StoragePool REF Antecedent;

      [Override ( "Dependent" ), 
       Description ( "The subsidiary element." )]
   CIM_LogicalElement REF Dependent;

      [Required, Description ( 
          "Space consumed from this Pool, in bytes. This value MUST "
          "be maintained so that, relative to the Antecedent "
          "StoragePool, it is possible to compute TotalManagedSpace "
          "as StoragePool.RemainingManagedSpace plus the sum of "
          "SpaceConsumed from all of the AllocatedFromStoragePool "
          "references from the antecedent StoragePool." ), 
       Units ( "Bytes" ), 
       ModelCorrespondence { "CIM_StoragePool.TotalManagedSpace", 
          "CIM_StoragePool.RemainingManagedSpace" }, 
       PUnit ( "byte" )]
   uint64 SpaceConsumed;

      [Experimental, Description ( 
          "SpaceLimit is the consumption limit for the allocated "
          "storage element from the associated StoragePool. If "
          "SpaceLimt is greater than zero, the assumption is that "
          "the storage element can grow, (for instance an element "
          "representing the storage for a delta replica) \n"
          "If SpaceLimit is greater than zero, SpaceConsumed shall "
          "not exceed the value of SpaceLimit. \n"
          "If SpaceLimit = 0 (the default) then no limits are "
          "asserted on SpaceConsumed." ), 
       Units ( "Bytes" ), 
       ModelCorrespondence { 
          "CIM_AllocatedFromStoragePool.SpaceConsumed" }, 
       PUnit ( "byte" )]
   uint64 SpaceLimit = 0;

      [Experimental, Description ( 
          "If the associated storage element may dynamically "
          "consume an increasing amount of space and a space limit "
          "is enforced on the element, then a non-zero warning "
          "threshold percentage indicates when a warning indication "
          "should be generated based on SpaceConsumed >= "
          "(SpaceLimit*SpaceLimitWarningThreshold)/100." ), 
       Units ( "Percentage" ), 
       MinValue ( 0 ), 
       MaxValue ( 100 ), 
       ModelCorrespondence { 
          "CIM_AllocatedFromStoragePool.SpaceConsumed" }, 
       PUnit ( "percent" )]
   uint16 SpaceLimitWarningThreshold;
};

// ==================================================================
//  CIM_AssociatedAlarm
// ==================================================================
   [Association, Abstract,  Version ( "2.6.0" ), Description (
       "LogicalDevices may have one or more AlarmDevices associated "
       "with them, in order to indicate problem situations. This "
       "relationship is indicated by the AssociatedAlarm dependency.")]
class CIM_AssociatedAlarm : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The AlarmDevice.")]
   CIM_AlarmDevice REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The LogicalDevice that is alarmed.")]
   CIM_LogicalDevice REF Dependent;
};

// ==================================================================
//  CIM_PowerSource
// ==================================================================
   [Abstract,  Version ( "2.17.0" ), 
    Description (
       "This class is a representation of logical properties of a "
       "generic power source. Any logical device that has an aspect of "
       "producing power and thus effectively being a power source may "
       "be represented by this class or the subclass of this class." )]
class CIM_PowerSource : CIM_LogicalDevice {

      [Description (
          "Indicates the maximum amount of power that may be drawn "
          "within the rating of the PowerSource. The units of the "
          "value shall be described by the OutputPowerUnits "
          "property. A value of zero shall indicate \'unknown\'." ),
       ModelCorrespondence { "CIM_PowerSource.OutputPowerUnits" }]
   uint32 RatedMaxOutputPower;

      [Description (
          "Indicates the programatic units for the MaxOutputPower property."
           ),
       ModelCorrespondence { "CIM_PowerSource.MaxOutputPower" },
       ISPunit]
   string OutputPowerUnits;

      [Description (
          "A value of true shall indicate the output from the "
          "PowerSource is alternating current (AC). A value of "
          "false shall indicate the output from the PowerSource is "
          "direct current (DC)." )]
   boolean IsACOutput;
};

// ==================================================================
//  CIM_Battery
// ==================================================================
   [Abstract,  Version ( "2.26.0" ), Description (
       "Capabilities and management of the Battery LogicalDevice. This "
       "class applies to both batteries in Laptop Systems and other "
       "internal or external batteries, such as an uninterruptible "
       "power supply (UPS).")]
class CIM_Battery : CIM_PowerSource {

      [Description ( 
          "Description of the charge status of the Battery. Values "
          "such as \"Fully Charged\" (value=3) or \"Partially "
          "Charged\" (value=11) can be specified. The value, 10, is "
          "not valid in the CIM Schema because in DMI it represents "
          "that no battery is installed. In this case, this object "
          "should not be instantiated. The valuemaps: 6(Charging), "
          "7(Charging and High), 8(Charging and Low), and 9(Charing "
          "and Critical) has been deprecated in lieu of the "
          "ChargingStatus property. 10(Undefined) has been "
          "deprecated in lieu of 2(Unknown)." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "..", "32768..65535" }, 
       Values { "Other", "Unknown", "Fully Charged", "Low", 
          "Critical", "Charging", "Charging and High", 
          "Charging and Low", "Charging and Critical", "Undefined", 
          "Partially Charged", "Learning", "Overcharged", 
          "DMTF Reserved", "Vendor Specific" }, 
       MappingStrings { "MIF.DMTF|Portable Battery|003.14" }]
   uint16 BatteryStatus;

      [Description ( 
          "TimeOnBattery indicates the elapsed time in seconds "
          "since the ComputerSystem, UPS, or so on, last switched "
          "to battery power, or the time since the System or UPS "
          "was last restarted, whichever is less. Zero is returned "
          "if the Battery is \'on line\'." ), 
       Units ( "Seconds" ), 
       PUnit ( "second" )]
   uint32 TimeOnBattery;

      [Description ( 
          "EstimatedRunTime is an estimate in minutes of the time "
          "that battery charge depletion will occur under the "
          "present load conditions if the utility power is off, or "
          "is lost and remains off, or a Laptop is disconnected "
          "from a power source." ), 
       Units ( "Minutes" ), 
       MappingStrings { "MIF.DMTF|Portable Battery|003.15" }, 
       PUnit ( "minute" )]
   uint32 EstimatedRunTime;

      [Description ( 
          "An estimate of the percentage of full charge remaining." ), 
       Units ( "Percent" ), 
       Gauge, PUnit ( "percent" )]
   uint16 EstimatedChargeRemaining;

      [Description ( 
          "An enumeration that describes the chemistry of the Battery."
           ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "..", 
          "32768..65535" }, 
       Values { "Other", "Unknown", "Lead Acid", "Nickel Cadmium", 
          "Nickel Metal Hydride", "Lithium-ion", "Zinc air", 
          "Lithium Polymer", "DMTF Reserved", "Vendor Specified" }, 
       MappingStrings { "MIF.DMTF|Portable Battery|003.7" }]
   uint16 Chemistry;

      [Description ( 
          "The design capacity of the battery in mWatt-hours. If "
          "this property is not supported, enter 0." ), 
       Units ( "MilliWattHours" ), 
       MappingStrings { "MIF.DMTF|Portable Battery|003.8" }, 
       PUnit ( "watt * hour * 10^-3" )]
   uint32 DesignCapacity;

      [Description ( 
          "The full charge capacity of the battery in mWatt-hours. "
          "Comparison of this value to the Battery DesignCapacity "
          "determines when the Battery requires replacement. The "
          "end of life of a Battery is typically when the "
          "FullCharge Capacity falls below 80% of the "
          "DesignCapacity. If this property is not supported, enter "
          "0." ), 
       Units ( "MilliWattHours" ), 
       MappingStrings { "MIF.DMTF|Portable Battery|003.11" }, 
       PUnit ( "watt * hour * 10^-3" )]
   uint32 FullChargeCapacity;

      [Description ( 
          "The design voltage of the battery in mVolts. If this "
          "attribute is not supported, enter 0." ), 
       Units ( "MilliVolts" ), 
       MappingStrings { "MIF.DMTF|Portable Battery|003.9" }, 
       PUnit ( "volt * 10^-3" )]
   uint64 DesignVoltage;

      [Description ( 
          "The Smart Battery Data Specification version number that "
          "is supported by this Battery. If the Battery does not "
          "support this function, the value should be left blank." ), 
       MaxLen ( 64 ), 
       MappingStrings { "MIF.DMTF|Portable Battery|003.10" }]
   string SmartBatteryVersion;

      [Description ( 
          "The remaining time in minutes to charge the battery "
          "fully at the current charging rate and usage." ), 
       Units ( "Minutes" ), 
       MappingStrings { "MIF.DMTF|Portable Battery|003.16" }, 
       PUnit ( "minute" )]
   uint32 TimeToFullCharge;

      [Description ( 
          "Indicates the expected lifetime of the Battery in "
          "minutes, assuming that the Battery is fully charged. "
          "This property represents the total expected life of the "
          "Battery, not its current remaining life, which is "
          "indicated by the EstimatedRunTime property." ), 
       Units ( "Minutes" ), 
       PUnit ( "minute" )]
   uint32 ExpectedLife;

      [Description ( 
          "MaxRechargeTime indicates the maximum time, in minutes, "
          "to fully charge the Battery. This property represents "
          "the time to recharge a fully depleted Battery, not the "
          "current remaining charging time, which is indicated in "
          "the TimeToFullCharge property." ), 
       Units ( "Minutes" ), 
       PUnit ( "minute" )]
   uint32 MaxRechargeTime;

      [Description ( 
          "The number of times the Battery has been recharged." )]
   uint32 RechargeCount;

      [Description ( 
          "The maximum number of times the Battery can be recharged." )]
   uint32 MaxRechargeCount;

      [Description ( 
          "The Battery\'s remaining charge capacity in mWatt-hours." ), 
       Units ( "MilliWattHours" ), 
       PUnit ( "watt * hour * 10^-3" )]
   uint32 RemainingCapacity;

      [Description ( 
          "The maximum error (as a percentage) in the mWatt-hour "
          "data reported by RemainingCapacity property." ), 
       Units ( "Percentage" ), 
       PUnit ( "percent" )]
   uint8 RemainingCapacityMaxError;

      [Description ( 
          "ChargingStatus indicates whether the battery is "
          "charging. Charging - the battery is charging. "
          "Discharging - the battery is discharging. Idle - the "
          "batter is neither charging nor discharging." ), 
       ValueMap { "0", "2", "3", "4", "..", "32768..65535" }, 
       Values { "Unknown", "Charging", "Discharging", "Idle", 
          "DMTF Reserved", "Vendor Specified" }]
   uint16 ChargingStatus;

      [Description ( 
          "The description of the battery chemistry when the "
          "Chemistry property has value 1 (Other). The property "
          "shall be implemented if the Chemistry property has value "
          "1(Other)." )]
   string OtherChemistryDescription;

      [Description ( 
          "An estimate of the percentage of the overall battery "
          "health. It indicates how much the battery has "
          "deteriorated over time. It can take values 0 to 100; 255 "
          "if it is unknown." ), 
       Units ( "Percentage" ), 
       PUnit ( "percent" )]
   uint8 HealthPercent;

      [Experimental, Description ( 
          "An enumeration that describes the error information in "
          "the event of permanent failure of the battery. This code "
          "will enable system administrators to troubleshoot the "
          "reason behind failed batteries. Unknown value means a "
          "permanent error has occured but the error type is "
          "unknown." ), 
       ValueMap { "0", "2", "3", "4", "5", "6", "7", "8", "..", 
          "32768..65535" }, 
       Values { "Unknown", "No Failure", "Fuse Blown", 
          "Cell imbalance", "Over voltage", "FET inoperative", 
          "Communication error", "Incompatible battery type", 
          "DMTF Reserved", "Vendor Reserved" }]
   uint16 PermanentErrorInfo;
};

// ==================================================================
//  CIM_AssociatedBattery
// ==================================================================
   [Association, Abstract,  Version ( "2.12.0" ), Description (
       "A LogicalDevice might use or require one or more Batteries. "
       "This relationship is described by the AssociatedBattery "
       "dependency. It is also possible to model the individual "
       "Batteries that comprise a UPS, using this association.")]
class CIM_AssociatedBattery : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The Battery.")]
   CIM_Battery REF Antecedent;

      [Experimental, Override ( "Dependent" ), Description (
          "The ManagedSystemElement that needs or is associated with "
          "the Battery.")]
   CIM_ManagedSystemElement REF Dependent;
};

// ==================================================================
//  CIM_Component
// ==================================================================
   [Association, Abstract, Aggregation,  Version ( "2.7.0" ), 
    Description (
       "CIM_Component is a generic association used to establish 'part "
       "of' relationships between Managed Elements. For example, it "
       "could be used to define the components or parts of a System.")]
class CIM_Component {

      [Key, Aggregate, Description (
          "The parent element in the association.")]
   CIM_ManagedElement REF GroupComponent;

      [Key, Description (
          "The child element in the association.")]
   CIM_ManagedElement REF PartComponent;
};

// ==================================================================
//  CIM_AssociatedComponentExtent
// ==================================================================
   [Association, Abstract, Experimental, Aggregation,
     Version ( "2.13.0" ), Description (
       "This association defines the capacity, expressed in "
       "StorageExtents, that together represents the entire capacity "
       "collected in a StoragePool. The capacity represented by "
       "StorageExtents may represent capacity that is allocated or "
       "unallocated. \n"
       "StorageExtents associated to a StoragePool using this "
       "association shall not be also be associated to that "
       "StoragePool using the CIM_AssociatedRemainingExtent "
       "association.")]
class CIM_AssociatedComponentExtent : CIM_Component {

      [Aggregate, Override ( "GroupComponent" ), Description (
          "The parent StoragePool in the association.")]
   CIM_StoragePool REF GroupComponent;

      [Override ( "PartComponent" ), Description (
          "The component StorageExtent in the association.")]
   CIM_StorageExtent REF PartComponent;
};

// ==================================================================
//  CIM_CoolingDevice
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "Capabilities and management of CoolingDevices.")]
class CIM_CoolingDevice : CIM_LogicalDevice {

      [Description (
          "ActiveCooling is a Boolean that indicates that the Cooling "
          "Device provides active (as opposed to passive) cooling.")]
   boolean ActiveCooling;
};

// ==================================================================
//  CIM_AssociatedCooling
// ==================================================================
   [Association, Abstract,  Version ( "2.12.0" ), Description (
       "Many Devices, such as processors or power supplies, require "
       "their own cooling devices. This association indicates where "
       "fans or other CoolingDevices are specific to a Device, versus "
       "providing enclosure or cabinet cooling.")]
class CIM_AssociatedCooling : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The CoolingDevice.")]
   CIM_CoolingDevice REF Antecedent;

      [Experimental, Override ( "Dependent" ), Description (
          "The ManagedSystemElement being cooled.")]
   CIM_ManagedSystemElement REF Dependent;
};

// ==================================================================
//  CIM_ServiceAccessPoint
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "CIM_ServiceAccessPoint represents the ability to utilize or "
       "invoke a Service. Access points represent that a Service is "
       "made available for other entities to use.")]
class CIM_ServiceAccessPoint : CIM_EnabledLogicalElement {

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

      [Key, Propagated ( "CIM_System.Name" ), Description (
          "The Name of the scoping System."), 
       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 ( "Name" ), Description (
          "The Name property uniquely identifies the "
          "ServiceAccessPoint and provides an indication of the "
          "functionality that is managed. This functionality is "
          "described in more detail in the Description property of the "
          "object."), 
       MaxLen ( 256 )]
   string Name;
};

// ==================================================================
//  CIM_ProtocolEndpoint
// ==================================================================
   [Abstract,  Version ( "2.15.0" ), Description (
       "A communication point from which data may be sent or received. "
       "ProtocolEndpoints link system/computer interfaces to "
       "LogicalNetworks.")]
class CIM_ProtocolEndpoint : CIM_ServiceAccessPoint {

      [Override ( "Description" ), 
       MappingStrings { "MIB.IETF|IF-MIB.ifDescr" }]
   string Description;

      [Override ( "OperationalStatus" ), 
       MappingStrings { "MIB.IETF|IF-MIB.ifOperStatus" }]
   uint16 OperationalStatus[];

      [Override ( "EnabledState" ), 
       MappingStrings { "MIB.IETF|IF-MIB.ifAdminStatus" }]
   uint16 EnabledState;

      [Override ( "TimeOfLastStateChange" ), 
       MappingStrings { "MIB.IETF|IF-MIB.ifLastChange" }]
   datetime TimeOfLastStateChange;

      [Override ( "Name" ), Description (
          "A string that identifies this ProtocolEndpoint with either "
          "a port or an interface on a device. To ensure uniqueness, "
          "the Name property should be prepended or appended with "
          "information from the Type or OtherTypeDescription "
          "properties. The method selected is described in the "
          "NameFormat property of this class."), 
       MaxLen ( 256 )]
   string Name;

      [Description (
          "NameFormat contains the naming heuristic that is selected "
          "to ensure that the value of the Name property is unique. "
          "For example, you might choose to prepend the name of the "
          "port or interface with the Type of ProtocolEndpoint (for "
          "example, IPv4) of this instance followed by an underscore."), 
       MaxLen ( 256 )]
   string NameFormat;

      [Deprecated { "CIM_ProtocolEndpoint.ProtocolIFType" }, 
       Description (
          "Note: This property is deprecated in lieu of the "
          "ProtocolIFType enumeration. This deprecation was done to "
          "have better alignment between the IF-MIB of the IETF and "
          "this CIM class. \n"
          "Deprecated description: ProtocolType is an enumeration that "
          "provides information to categorize and classify different "
          "instances of this class. For most instances, information in "
          "this enumeration and the definition of the subclass "
          "overlap. However, there are several cases where a specific "
          "subclass of ProtocolEndpoint is not required (for example, "
          "there is no Fibre Channel subclass of ProtocolEndpoint). "
          "Therefore, this property is needed to define the type of "
          "Endpoint."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
          "20", "21", "22", "23", "24", "25", "26", "27" }, 
       Values { "Unknown", "Other", "IPv4", "IPv6", "IPX", "AppleTalk",
          "DECnet", "SNA", "CONP", "CLNP", "VINES", "XNS", "ATM",
          "Frame Relay", "Ethernet", "TokenRing", "FDDI", "Infiniband",
          "Fibre Channel", "ISDN BRI Endpoint",
          "ISDN B Channel Endpoint", "ISDN D Channel Endpoint", 
          // 22                           
          "IPv4/v6", "BGP", "OSPF", "MPLS", "UDP", "TCP" }, 
       ModelCorrespondence { 
          "CIM_ProtocolEndpoint.OtherTypeDescription" }]
   uint16 ProtocolType;

      [Description (
          "ProtocolIFType is an enumeration that is synchronized with "
          "the IANA ifType MIB. The ifType MIB is maintained at the "
          "URL, http://www.iana.org/assignments/ianaiftype-mib. Also, "
          "additional values defined by the DMTF are included. The "
          "property is used to categorize and classify instances of "
          "the ProtocolEndpoint class. Note that if the ProtocolIFType "
          "is set to 1 (Other), then the type information should be "
          "provided in the OtherTypeDescription string property."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
          "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
          "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",
          "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",
          "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",
          "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",
          "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",
          "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",
          "90", "91", "92", "93", "94", "95", "96", "97", "98", "99",
          "100", "101", "102", "103", "104", "105", "106", "107",
          "108", "109", "110", "111", "112", "113", "114", "115",
          "116", "117", "118", "119", "120", "121", "122", "123",
          "124", "125", "126", "127", "128", "129", "130", "131",
          "132", "133", "134", "135", "136", "137", "138", "139",
          "140", "141", "142", "143", "144", "145", "146", "147",
          "148", "149", "150", "151", "152", "153", "154", "155",
          "156", "157", "158", "159", "160", "161", "162", "163",
          "164", "165", "166", "167", "168", "169", "170", "171",
          "172", "173", "174", "175", "176", "177", "178", "179",
          "180", "181", "182", "183", "184", "185", "186", "187",
          "188", "189", "190", "191", "192", "193", "194", "195",
          "196", "197", "198", "199", "200", "201", "202", "203",
          "204", "205", "206", "207", "208", "209", "210", "211",
          "212", "213", "214", "215", "216", "217", "218", "219",
          "220", "221", "222", "223", "224", "225..4095", "4096",
          "4097", "4098", "4099", "4100", "4101", "4102", "4103",
          "4104", "4105", "4106", "4107", "4108", "4109", "4110",
          "4111", "4112", "4113", "4114", "4115", "4200", "4201",
          "4202", "4203", "4204", "4205", "4300", "4400", "4401",
          "4402", "4403", "4404", "4405", "4406", "..", "32768.." }, 
       Values { "Unknown", "Other", "Regular 1822", "HDH 1822",
          "DDN X.25", "RFC877 X.25", "Ethernet CSMA/CD",
          "ISO 802.3 CSMA/CD", "ISO 802.4 Token Bus",
          "ISO 802.5 Token Ring", "ISO 802.6 MAN", "StarLAN",
          "Proteon 10Mbit", "Proteon 80Mbit", "HyperChannel", "FDDI",
          "LAP-B", "SDLC", "DS1", "E1", "Basic ISDN", "Primary ISDN",
          "Proprietary Point-to-Point Serial", "PPP",
          "Software Loopback", "EON", "Ethernet 3Mbit", "NSIP", "SLIP",
          "Ultra", "DS3", "SIP", "Frame Relay", "RS-232", "Parallel",
          "ARCNet", "ARCNet Plus", "ATM", "MIO X.25", "SONET",
          "X.25 PLE", "ISO 802.211c", "LocalTalk", "SMDS DXI",
          "Frame Relay Service", "V.35", "HSSI", "HIPPI", "Modem",
          "AAL5", "SONET Path", "SONET VT", "SMDS ICIP",
          "Proprietary Virtual/Internal", "Proprietary Multiplexor",
          "IEEE 802.12", "Fibre Channel", "HIPPI Interface",
          "Frame Relay Interconnect", "ATM Emulated LAN for 802.3",
          "ATM Emulated LAN for 802.5", "ATM Emulated Circuit",
          "Fast Ethernet (100BaseT)", "ISDN", "V.11", "V.36",
          "G703 at 64K", "G703 at 2Mb", "QLLC",
          "Fast Ethernet 100BaseFX", "Channel", "IEEE 802.11",
          "IBM 260/370 OEMI Channel", "ESCON", "Data Link Switching",
          "ISDN S/T Interface", "ISDN U Interface", "LAP-D",
          "IP Switch", "Remote Source Route Bridging", "ATM Logical",
          "DS0", "DS0 Bundle", "BSC", "Async", "Combat Net Radio",
          "ISO 802.5r DTR", "Ext Pos Loc Report System",
          "AppleTalk Remote Access Protocol",
          "Proprietary Connectionless", "ITU X.29 Host PAD",
          "ITU X.3 Terminal PAD", "Frame Relay MPI", "ITU X.213",
          "ADSL", "RADSL", "SDSL", "VDSL", "ISO 802.5 CRFP", "Myrinet",
          "Voice Receive and Transmit",
          "Voice Foreign Exchange Office",
          "Voice Foreign Exchange Service", "Voice Encapsulation",
          "Voice over IP", "ATM DXI", "ATM FUNI", "ATM IMA",
          "PPP Multilink Bundle", "IP over CDLC", "IP over CLAW",
          "Stack to Stack", "Virtual IP Address", "MPC", "IP over ATM",
          "ISO 802.5j Fibre Token Ring", "TDLC", "Gigabit Ethernet",
          "HDLC", "LAP-F", "V.37", "X.25 MLP", "X.25 Hunt Group",
          "Transp HDLC", "Interleave Channel", "FAST Channel",
          "IP (for APPN HPR in IP Networks)", "CATV MAC Layer",
          "CATV Downstream", "CATV Upstream", "Avalon 12MPP Switch",
          "Tunnel", "Coffee", "Circuit Emulation Service",
          "ATM SubInterface", "Layer 2 VLAN using 802.1Q",
          "Layer 3 VLAN using IP", "Layer 3 VLAN using IPX",
          "Digital Power Line", "Multimedia Mail over IP", "DTM",
          "DCN", "IP Forwarding", "MSDSL", "IEEE 1394",
          "IF-GSN/HIPPI-6400", "DVB-RCC MAC Layer",
          "DVB-RCC Downstream", "DVB-RCC Upstream", "ATM Virtual",
          "MPLS Tunnel", "SRP", "Voice over ATM",
          "Voice over Frame Relay", "ISDL", "Composite Link",
          "SS7 Signaling Link", "Proprietary P2P Wireless",
          "Frame Forward", "RFC1483 Multiprotocol over ATM", "USB",
          "IEEE 802.3ad Link Aggregate", "BGP Policy Accounting",
          "FRF .16 Multilink FR", "H.323 Gatekeeper", "H.323 Proxy",
          "MPLS", "Multi-Frequency Signaling Link", "HDSL-2", "S-HDSL",
          "DS1 Facility Data Link", "Packet over SONET/SDH",
          "DVB-ASI Input", "DVB-ASI Output", "Power Line",
          "Non Facility Associated Signaling", "TR008", "GR303 RDT",
          "GR303 IDT", "ISUP", "Proprietary Wireless MAC Layer",
          "Proprietary Wireless Downstream",
          "Proprietary Wireless Upstream", "HIPERLAN Type 2",
          "Proprietary Broadband Wireless Access Point to Mulipoint",
          "SONET Overhead Channel", "Digital Wrapper Overhead Channel",
          "ATM Adaptation Layer 2", "Radio MAC", "ATM Radio",
          "Inter Machine Trunk", "MVL DSL", "Long Read DSL",
          "Frame Relay DLCI Endpoint", "ATM VCI Endpoint",
          "Optical Channel", "Optical Transport", "Proprietary ATM",
          "Voice over Cable", "Infiniband", "TE Link", "Q.2931",
          "Virtual Trunk Group", "SIP Trunk Group", "SIP Signaling",
          "CATV Upstream Channel", "Econet", "FSAN 155Mb PON",
          "FSAN 622Mb PON", "Transparent Bridge", "Line Group",
          "Voice E&M Feature Group", "Voice FGD EANA", "Voice DID",
          "MPEG Transport", "6To4", "GTP", "Paradyne EtherLoop 1",
          "Paradyne EtherLoop 2", "Optical Channel Group", "HomePNA",
          "GFP", "ciscoISLvlan", "actelisMetaLOOP", "Fcip",
          "IANA Reserved", "IPv4", "IPv6", "IPv4/v6", "IPX", "DECnet",
          "SNA", "CONP", "CLNP", "VINES", "XNS",
          "ISDN B Channel Endpoint", "ISDN D Channel Endpoint", "BGP",
          "OSPF", "UDP", "TCP", "802.11a", "802.11b", "802.11g",
          "802.11h", "NFS", "CIFS", "DAFS", "WebDAV", "HTTP", "FTP",
          "NDMP", "Telnet", "SSH", "SM CLP", "SMTP", "LDAP", "RDP",
          "HTTPS", "DMTF Reserved", "Vendor Reserved" }, 
       MappingStrings { "MIB.IETF|IF-MIB.ifType" }, 
       ModelCorrespondence { 
          "CIM_ProtocolEndpoint.OtherTypeDescription" }]
   uint16 ProtocolIFType;

      [Description (
          "A string that describes the type of ProtocolEndpoint when "
          "the Type property of this class (or any of its subclasses) "
          "is set to 1 (Other). This property should be set to null "
          "when the Type property is any value other than 1."), 
       MaxLen ( 64 ), 
       ModelCorrespondence { "CIM_ProtocolEndpoint.ProtocolType",
          "CIM_ProtocolEndpoint.ProtocolIFType" }]
   string OtherTypeDescription;

};

// ==================================================================
//  CIM_ATAProtocolEndpoint
// ==================================================================
   [Abstract, Experimental,  Version ( "2.13.0" ), Description (
       "An ATAProtocolEndpoint represents the protocol (command) "
       "aspects of a logical ATA port, independent of the "
       "connection/transport. ATAProtocolEndpoint is either directly "
       "or indirectly associated to one or more instances of "
       "LogicalPort depending on the underlying transport.")]

class CIM_ATAProtocolEndpoint : CIM_ProtocolEndpoint {

      [Override ( "Name" ), Description (
          "The ATA identifier for the target or initiator device, in "
          "the format appropriate for the ConnectionType. If a "
          "ConnectionType specific subclass is defined, the subclass "
          "may override Name to define the format. For other "
          "ConnectionTypes, the format (and content) should match that "
          "of PermanentAddress of the corresponding port if the port "
          "is is subclassed from NetworkPort."), 
       MaxLen ( 256 )]
   string Name;

      [Description (
          "The supported connection type for this endpoint. The "
          "connection type may be needed before the port(s) are "
          "associated and also is used in some ATA commands."), 
       ValueMap { "1", "2", "3" }, 
       Values { "Other", "ATA", "SATA" }]
   uint16 ConnectionType;

      [Description (
          "This property indicates which role this ProtocolEndpoint "
          "implements."), 
       ValueMap { "0" , "2", "3", "4" }, 
       Values { "Unknown", "Initiator", "Target",
          "Both Initiator and Target" }]
   uint16 Role;

      [Description (
          "The connection type, if ConnectionType is \"Other\".")]
   string OtherConnectionType;
};


// ==================================================================
//  CIM_Service
// ==================================================================
   [Abstract,  Version ( "2.14.0" ), Description (
       "A CIM_Service is a Logical Element that contains the "
       "information that is necessary to represent and manage the "
       "functionality provided by a Device or a SoftwareFeature, or "
       "both. A Service is a general-purpose object that is used to "
       "configure and manage the implementation of functionality. It "
       "is not the functionality itself.")]
class CIM_Service : CIM_EnabledLogicalElement {

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

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

      [Key, Description (
          "CreationClassName indicates the name of the class or the "
          "subclass that is 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 ( "Name" ), Description (
          "The Name property uniquely identifies the Service and "
          "provides an indication of the functionality that is "
          "managed. This functionality is described in more detail in "
          "the Description property of the object."), 
       MaxLen ( 256 )]
   string Name;

      [Write, Description (
          "The name of the primary owner for the service, if one is "
          "defined. The primary owner is the initial support contact "
          "for the Service."), 
       MaxLen ( 64 ), 
       MappingStrings { "MIF.DMTF|General Information|001.3" }]
   string PrimaryOwnerName;

      [Write, Description (
          "A string that provides information on how the primary owner "
          "of the Service can be reached (for example, phone number, "
          "e-mail address, and so on)."), 
       MaxLen ( 256 ), 
       MappingStrings { "MIF.DMTF|General Information|001.4" }]
   string PrimaryOwnerContact;

      [Deprecated { "CIM_Service.EnabledDefault" }, Description (
          "Note: The use of this element is deprecated in lieu of the "
          "EnabledDefault property that is inherited from "
          "EnabledLogicalElement. The EnabledLogicalElement addresses "
          "the same semantics. The change to a uint16 data type was "
          "discussed when CIM V2.0 was defined. However, existing V1.0 "
          "implementations used the string property. To remain "
          "compatible with those implementations, StartMode was "
          "grandfathered into the schema. Use of the deprecated "
          "qualifier allows the maintenance of the existing property "
          "but also permits an improved, clarified definition using "
          "EnabledDefault. \n"
          "Deprecated description: StartMode is a string value that "
          "indicates whether the Service is automatically started by a "
          "System, an Operating System, and so on, or is started only "
          "upon request."), 
       ValueMap { "Automatic", "Manual" }, MaxLen ( 10 )]
   string StartMode;

      [Description (
          "Started is a Boolean that indicates whether the Service has "
          "been started (TRUE), or stopped (FALSE).")]
   boolean Started;

      [Description (
          "The StartService method places the Service in the started "
          "state. Note that the function of this method overlaps with "
          "the RequestedState property. RequestedState was added to "
          "the model to maintain a record (such as a persisted value) "
          "of the last state request. Invoking the StartService method "
          "should set the RequestedState property appropriately. The "
          "method returns an integer value of 0 if the Service was "
          "successfully started, 1 if the request is not supported, "
          "and any other number to indicate an error. In a subclass, "
          "the set of possible return codes could be specified using a "
          "ValueMap qualifier on the method. The strings to which the "
          "ValueMap contents are translated can also be specified in "
          "the subclass as a Values array qualifier. \n"
          "\n"
          "Note: The semantics of this method overlap with the "
          "RequestStateChange method that is inherited from "
          "EnabledLogicalElement. This method is maintained because it "
          "has been widely implemented, and its simple \"start\" "
          "semantics are convenient to use.")]
   uint32 StartService(); 

      [Description (
          "The StopService method places the Service in the stopped "
          "state. Note that the function of this method overlaps with "
          "the RequestedState property. RequestedState was added to "
          "the model to maintain a record (such as a persisted value) "
          "of the last state request. Invoking the StopService method "
          "should set the RequestedState property appropriately. The "
          "method returns an integer value of 0 if the Service was "
          "successfully stopped, 1 if the request is not supported, "
          "and any other number to indicate an error. In a subclass, "
          "the set of possible return codes could be specified using a "
          "ValueMap qualifier on the method. The strings to which the "
          "ValueMap contents are translated can also be specified in "
          "the subclass as a Values array qualifier. \n"
          "\n"
          "Note: The semantics of this method overlap with the "
          "RequestStateChange method that is inherited from "
          "EnabledLogicalElement. This method is maintained because it "
          "has been widely implemented, and its simple \"stop\" "
          "semantics are convenient to use.")]
   uint32 StopService(); 
};

// ==================================================================
//  CIM_ServiceAvailableToElement
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "CIM_ServiceAvailableToElement conveys the semantics of a "
       "Service that is available for the use of a ManagedElement. An "
       "example of an available Service is that a Processor and an "
       "enclosure (a PhysicalElement) can use AlertOnLAN Services to "
       "signal an incomplete or erroneous boot. In reality, AlertOnLAN "
       "is simply a HostedService on a computer system that is "
       "generally available for use and is not a dependency of the "
       "processor or enclosure. To describe that the use of this "
       "service might be restricted or have limited availability or "
       "applicability, the CIM_ServiceAvailableToElement association "
       "would be instantiated between the Service and specific "
       "CIM_Processors and CIM_Chassis.")]
class CIM_ServiceAvailableToElement {

      [Key, Description (
          "The Service that is available.")]
   CIM_Service REF ServiceProvided;

      [Key, Description (
          "The ManagedElement that can use the Service.")]
   CIM_ManagedElement REF UserOfService;
};

// ==================================================================
//  CIM_Collection
// ==================================================================
   [Abstract,  Version ( "2.6.0" ), Description (
       "Collection is an abstract class that provides a common "
       "superclass for data elements that represent collections of "
       "ManagedElements and its subclasses.")]
class CIM_Collection : CIM_ManagedElement {
};

// ==================================================================
//  CIM_CollectionOfMSEs
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "The CollectionOfMSEs object allows the grouping of Managed "
       "SystemElements for various identification purposes and to "
       "reduce the complexity of associating Settings and "
       "Configurations. It is abstract to require further definition "
       "and semantic refinement in subclasses. The CollectionOfMSEs "
       "object does not carry any state or status information, but "
       "represents only a grouping or 'bag' of Elements. For this "
       "reason, it is incorrect to subclass groups that have state or "
       "status from CollectionOfMSEs. An example is CIM_Redundancy "
       "Group (which is subclassed from LogicalElement). \n"
       "Collections typically aggregate similar ('like') objects, but "
       "they are not required to do so. Collections simply identify "
       "'bags' and might represent an optimization. This purpose is "
       "especially true with respect to their association to Settings "
       "and Configurations. Without Collections, you would need to "
       "define individual ElementSetting and ElementConfiguration "
       "associations, to tie Settings and Configuration objects to "
       "individual ManagedSystemElements. There might be duplication "
       "when assigning the same Setting to multiple objects. In "
       "addition, using the Collection object allows the determination "
       "that the Setting and Configuration associations are indeed the "
       "same for the Collection's members. This information would "
       "otherwise be obtained by defining the Collection in a "
       "proprietary manner, and then querying the ElementSetting and "
       "ElementConfiguration associations to determine if the "
       "Collection set is completely covered.")]
class CIM_CollectionOfMSEs : CIM_Collection {

      [Description (
          "The identification of the Collection object. When "
          "subclassed, the CollectionID property can be overridden to "
          "be a Key property."), 
       MaxLen ( 256 )]
   string CollectionID;
};

// ==================================================================
//  CIM_Setting
// ==================================================================
   [Abstract,  Version ( "2.8.1000" ), Description (
       "The Setting class represents configuration-related and "
       "operational parameters for one or more ManagedSystemElements. "
       "An Element can have multiple Setting objects associated with "
       "it. The current operational values for the parameters of an "
       "Element 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 might have a Setting baud rate of 56Kb/sec "
       "but be operating at 19.2Kb/sec. \n"
       "Note: The CIM_SettingData class is very similar to "
       "CIM_Setting, yet both classes are present in the model 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 "
       "can 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 "
          "ManagedSystemElement 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 okay 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\" can also be specified in the subclass as a "
          "Values array qualifier.")]
   uint32 VerifyOKToApplyToMSE( 
         [IN, Description (
             "The ManagedSystemElement 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 ManagedSystemElement "
          "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\" can also be "
          "specified in the subclass as a Values array qualifier. \n"
          "Note: If an error occurs when applying the Setting to a "
          "ManagedSystemElement, the Element must be configured as it "
          "was when the \"Apply\" attempt began. That is, the Element "
          "should not be left in an indeterminate state.")]
   uint32 ApplyToMSE( 
         [IN, Description (
             "The ManagedSystemElement 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 that are aggregated by the Collection. "
          "This method takes three input parameters: Collection (the "
          "Collection of ManagedSystemElements 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 "
          "okay 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, CanNotApply, is defined, which is a "
          "string array that lists the keys of the "
          "ManagedSystemElements to which the Setting cannot be "
          "applied. This parameter enables those Elements to be "
          "revisited and either fixed or have other corrective action "
          "taken on them. \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\" "
          "can also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 VerifyOKToApplyToCollection ( 
         [IN, Description (
             "The Collection of ManagedSystemElements 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 cannot be "
             "applied.")]
      string CanNotApply[]); 

      [Description (
          "The ApplyToCollection method performs the application of "
          "the Setting to the referenced Collection of "
          "ManagedSystemElements. The net effect is to execute the "
          "ApplyToMSE method against each of the Elements that are "
          "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 the case of an error, the method 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 of 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 indicates to continue processing when an error is "
          "encountered), 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, CanNotApplystring, is "
          "defined, which is an array that lists the keys of the "
          "ManagedSystemElements to which the Setting could not 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\" "
          "can also be specified in the subclass as a Values array "
          "qualifier. \n"
          "Note: If an error occurs when applying the Setting to a "
          "ManagedSystemElement in the Collection, the Element must be "
          "configured as it was when the \"Apply\" attempt began. That "
          "is, the Element should not be left in an indeterminate "
          "state.")]
   uint32 ApplyToCollection( 
         [IN, Description (
             "The Collection of ManagedSystemElements 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 when an error is "
             "encountered.")]
      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 could 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 ManagedSystemElement at the "
          "given time or time interval. This method takes four input "
          "parameters: MSE (the ManagedSystemElement 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 or empty or contains the "
          "string \"ALL\" as a property name, then all Settings "
          "properties will be verified. If it is set to \"NONE\", then "
          "no Settings properties will be verified. The return value "
          "should be 0 if it is okay 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\" can also be specified in the subclass as a "
          "Values array qualifier.")]
   uint32 VerifyOKToApplyIncrementalChangeToMSE( 
         [IN, Description (
             "The ManagedSystemElement 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 will 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\" "
          "can also be specified in the subclass as a Values array "
          "qualifier. \n"
          "Note: If an error occurs when applying the Setting to a "
          "ManagedSystemElement, the Element must be configured as it "
          "was when the \"Apply\" attempt began. That is, the Element "
          "should not be left in an indeterminate state.")]
   uint32 ApplyIncrementalChangeToMSE( 
         [IN, Description (
             "The ManagedSystemElement 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 that are aggregated by the "
          "Collection. This method takes four input parameters: "
          "Collection (the Collection of ManagedSystemElements 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 or empty or contains the "
          "string \"all\" as a property name, all Settings properties "
          "will be verified. If it is set to \"none\" then no Settings "
          "properties will be verified. The return value should be 0 "
          "if it is okay 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, CanNotApply, is defined, which is a "
          "string array that lists the keys of the "
          "ManagedSystemElements to which the Setting cannot be "
          "applied. This parameter enables those Elements to be "
          "revisited and either fixed or have other corrective action "
          "taken on them. \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\" "
          "can also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 VerifyOKToApplyIncrementalChangeToCollection ( 
         [IN, Description (
             "The Collection of ManagedSystemElements 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 cannot 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 ManagedSystemElements. The "
          "net effect is to execute the ApplyIncrementalChangeToMSE "
          "method against each of the Elements that are 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 of 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 indicates to continue processing when "
          "an error is encountered), 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 will 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, "
          "CanNotApplystring, is defined, which is an array that lists "
          "the keys of the ManagedSystemElements to which the Setting "
          "could not 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\" "
          "can also be specified in the subclass as a Values array "
          "qualifier. \n"
          "Note: If an error occurs when applying the Setting to a "
          "ManagedSystemElement in the Collection, the Element must be "
          "configured as it was 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 indicates to continue processing when an error is "
             "encountered.")]
      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 cannot be "
             "applied.")]
      string CanNotApply[]); 
};


// ==================================================================
//  CIM_DiagnosticSetting
// ==================================================================
   [Abstract,  Version ( "2.9.0" ), Description (
       "Specific diagnostic test parameters and execution instructions "
       "are defined by this class. To provide more detailed Settings "
       "for a type of test (i.e., additional properties), subclassing "
       "is appropriate.")]

class CIM_DiagnosticSetting : CIM_Setting {

      [Key, Override ( "SettingID" ), Description (
          "In order to ensure uniqueness within the NameSpace, the "
          "value of SettingID 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 SettingID, 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 SettingID 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 "
          "SettingID is not re-used across any SettingIDs produced by "
          "this or other providers for this instance's NameSpace. \n"
          "A preferred value for <LocalID> is a timestamp (CIM "
          "DateTime). For example, ACME:19980525133015.0000000-300"), 
       MaxLen ( 256 )]
   string SettingID;

      [Deprecated { "CIM_DiagnosticSetting.LogOptions",
          "CIM_DiagnosticSetting.VerbosityLevel" }, Write, 
       Description (
          "This property is being deprecated because the "
          "TestWarningLevel and LogOptions properties serve the same "
          "purpose. It is deprecated in lieu of using the LogOptions "
          "('Warnings') property in conjunction with VerbosityLevel to "
          "specify this information. The 'Missing Resources' and "
          "'Testing Impacts' values are not included directly in "
          "LogOptions, but they are expected to be recorded in the "
          "resulting DiagnosticServiceRecord object. \n"
          "\n"
          "Sets the level of warning messages to be logged. \n"
          "If for example no warning information is required, the "
          "level would be set to \"No Warnings\" (value=0). Using "
          "\"Missing Resources\" (value=1) will cause warnings to be "
          "generated when required resources or hardware are not "
          "found. Setting the value to 2, \"Testing Impacts\", results "
          "in both missing resources and 'test impact' warnings (for "
          "example, multiple retries required) to be reported."), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "No Warnings", "Missing Resources", "Testing Impacts",
          "All Warnings" }]
   uint16 TestWarningLevel;

      [Deprecated { "CIM_DiagnosticSetting.LogOptions" }, Write, 
       Description (
          "When this flag is true, the diagnostic test will report "
          "'soft errors'. In this context, a soft error is a message "
          "from the diagnostic reporting a known defect in the "
          "hardware or driver configuration, or execution environment. "
          "Examples are: 'Not enough memory', 'Driver IOCTL not "
          "implemented', 'Video RAM compare failed during polygon fill "
          "test (A known defect in the video chipset)', etc.")]
   boolean ReportSoftErrors;


      [Deprecated { "CIM_DiagnosticSetting.LogOptions" }, Write, 
       Description (
          "When this flag is true, the diagnostic test will report "
          "'status messages'. In this context, a status message "
          "indicates that the diagnostic code is at a checkpoint. "
          "Examples are: \"Completion of phase 1\", \"Complex "
          "pattern\", etc.")]
   boolean ReportStatusMessages;

      [Write, Description (
          "When this flag is true, the test will halt after finding "
          "the first error.")]
   boolean HaltOnError;

      [Write, Description (
          "When this flag is true, the test software should attempt to "
          "run in an accelerated fashion either by reducing the "
          "coverage or number of tests performed.")]
   boolean QuickMode;

      [Write, Description (
          "Requests the diagnostic software to reduce test coverage to "
          "the specified percentage. For example, a hard drive scan "
          "test could be asked to run at 50%. The most effective way "
          "to accomplish this is for the test software to scan every "
          "other track, as opposed to only scanning the first half of "
          "a drive. It is assumed that the effectiveness of the test "
          "is impacted proportional to the percentage of testing "
          "requested. Permissible values for this property range from "
          "0 to 100."), 
       Units ( "Percent" ), MinValue ( 0 ), MaxValue ( 100 ), 
       ModelCorrespondence { 
          "CIM_DiagnosticServiceCapabilities.SupportedServiceModes" }]
   uint8 PercentOfTestCoverage;

      [Write, Description (
          "Array entries contain parameters corresponding to entries "
          "in the LoopControl array, limiting the number of times a "
          "test should be repeated with a single invocation of a test "
          "method by a CIM client."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticSetting.LoopControl" }]
   string LoopControlParameter[];

      [Write, Description (
          "LoopControl, used in conjunction with LoopControlParameter, "
          "sets one or more loop control mechanisms that limits the "
          "number of times a test should be repeated with a single "
          "invocation of a test method by a CIM client. There is an "
          "array-positional correspondence between LoopControl entries "
          "& LoopControlParameter entries. The entries in these "
          "coupled arrays of loop controls can be used in a logical OR "
          "fashion to achieve the desired loop control. For example, "
          "if a client wants to loop a test 1000 times, but quit if a "
          "timer runs out, it could set both controls into the "
          "LoopControl array as two separate entries in each array. "
          "The looping test will terminate when the first of the two "
          "ORed conditions are met. \n"
          "The descriptions for each loop control are given below: \n"
          "Unknown (= 0) \n"
          "Other (= 1) : Additional detail may be found in "
          "OtherLoopControlDescriptions. \n"
          "Continuous (= 2) : The corresponding LoopControl Parameter "
          "is ignored and the test will execute continuously. Tests "
          "that use this control should also support DiscontinueTest. "
          "\nCount(=3) : The corresponding LoopControlParameter is "
          "interpreted as a loop count (uint32), indicating the number "
          "of times the test should be repeated with a single "
          "invocation of a test method by a CIM client. \n"
          "Timer (= 4) : The corresponding LoopControlParameter is "
          "interpreted as an initial value (uint32) for a test loop "
          "timer, given in seconds. The looping is terminated when "
          "this timer has lapsed. \n"
          "ErrorCount (= 5) : The corresponding LoopControl Parameter "
          "is interpreted as an error count (uint32). The loop will "
          "continue until the number of errors that have occurred "
          "exceeds the ErrorCount. Note: the ErrorCount only refers to "
          "hard test errors; it does not include soft errors or "
          "warnings."), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "Other", "Continuous", "Count", "Timer",
          "ErrorCount" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticSetting.LoopControlParameter",
          "CIM_DiagnosticSetting.OtherLoopControlDescriptions",
          "CIM_DiagnosticServiceCapabilities.SupportedLoopControl" }]
   uint16 LoopControl[];

      [Deprecated { 
          "CIM_DiagnosticSetting.OtherLoopControlDescriptions" }, Write, 
       Description (
          "This property is deprecated and replaced with an array. \n"
          "It provides additional information for LoopControl when its "
          "value is set to 1 ('Other')."), 
       ModelCorrespondence { 
          "CIM_DiagnosticSetting.LoopControlParameter" }]
   string OtherLoopControlDescription;

      [Write, Description (
          "This property provides additional information for "
          "LoopControl when the corresponding value is set to 1 "
          "('Other')."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticSetting.LoopControlParameter",
          "CIM_DiagnosticSetting.LoopControl" }]
   string OtherLoopControlDescriptions[];

      [Write, Description (
          "The ResultPersistence property is a directive from a "
          "diagnostic client to a diagnostic provider. It allows the "
          "client to specify to the diagnostic service provider how "
          "long to persist the messages that result from execution of "
          "a diagnostic service. This applies to instances of "
          "DiagnosticResult as well as the preferred use of "
          "DiagnosticServiceRecord. The timeout period starts upon "
          "completion of the diagnostic action described by the "
          "DiagnosticService. \n"
          "\n"
          "Here is a summary of the choices and behaviors for "
          "different ResultPersistence values: \n"
          "0 = \"No Persistence\": \n"
          "Setting the timer to zero tells the provider not to persist "
          "the diagnostic result. The diagnostic information is only "
          "available while the diagnostic is executing or at its "
          "conclusion. \n"
          "Value > 0 and < 0xFFFFFFFF = \"Persist With TimeOut\": \n"
          "Setting the ResultPersistenceOption to a integer will cause "
          "the DiagnosticResult to be persisted for that number of "
          "seconds. At the end of that time, the DiagnosticResult may "
          "be deleted by the diagnostic service provider. \n"
          "0xFFFFFFFF = \"Persist Forever\": \n"
          "By setting the timeout value to the very large value, "
          "0xFFFFFFFF, the provider shall persist results forever. In "
          "this case, the client MUST bear the responsibility for "
          "deleting them."), 
       Units ( "Seconds" )]
   uint32 ResultPersistence;

      [Write, Description (
          "The LogOptions property is used to specify the types of "
          "data that SHOULD be logged by the diagnostic service. Any "
          "number of values may be specified in the array. Note that "
          "the default behavior is for nothing to be logged. \n"
          "The AMOUNT of data to be logged can be controlled for each "
          "value selected by specifying a VerbosityLevel value. "
          "Verbosity may not apply to all LogOptions values, in which "
          "case the default VerbosityLevel of \"Standard\" SHOULD be "
          "used. \n"
          "The RecordForLog produced by running a service MUST be "
          "tagged with a RecordType that corresponds to one of these "
          "log option values. \n"
          "Following is a brief description of the available log "
          "options: \n"
          "* \"Other\" (value = 1): Details are given in the "
          "corresponding OtherLogOptionsDescriptions entry. \n"
          "* \"Results\" (value = 2): Log the results obtained by "
          "running the service. This is the most common value for "
          "reporting the service results. \n"
          "* \"Subtests\" (value = 3): Log a test summary report upon "
          "completion of each subtest and each loop iteration. The "
          "summary reports SHOULD state whether the individual subtest "
          "or iteration passed or failed and list relevant error codes "
          "and respective error counts. \n"
          "* \"Actions\" (value = 4): Log corrective action and "
          "instructional messages to guide service personnel; for "
          "example, a prioritized list of actions to perform in order "
          "to isolate a failure or correct a problem. When ordering "
          "steps or prioritizing actions, a number should proceed the "
          "text; for example, 1) Do this first, 2) Do this next, etc. "
          "\n* \"Warnings\" (value = 5): Log warning messages; for "
          "example, 'device will be taken off line', 'test is "
          "long-running' or 'available memory is low'. The "
          "VerbosityLevel value specified for the Warnings option is "
          "related to the severity of the warnings logged; for "
          "instance, one would specify a high level of verbosity to "
          "get all warnings logged, regardless of severity, and a low "
          "level of verbosity to have only the most severe warnings "
          "logged. \n"
          "* \"Status\" (value = 6): Log status messages; for example, "
          "state information for the driver, device, or system. \n"
          "* \"Device Errors\" (value = 7): Log errors related to the "
          "managed element being serviced. \n"
          "* \"Service Errors\" (value = 8): Log errors related to the "
          "service itself rather than the element being serviced, such "
          "as 'Resource Allocaton Failure'. \n"
          "* \"Setting Data\" (value=9): Log the property values of "
          "the DiagnosticSetting object used to configure the service. "
          "\n* \"Statistics\" (value = 10): Log statistical messages; "
          "for example, packets sent per second. \n"
          "* \"Hardware Configuration\" (value = 11): Log messages "
          "that contain information about the hardware configuration "
          "as viewed by the service; for example, vendor, version, FRU "
          "identification, and location information. The format and "
          "contents of this property is element dependent. Examples "
          "are: SCSI ID, LPTx, PCI Slot Number, and Dimm#. \n"
          "* \"Software Configuration\" (value = 12): Log messages "
          "that contain information about the software environment as "
          "viewed by the service; for example, the name and version of "
          "all the critical software elements controlling the device "
          "under test. Each configuration message SHOULD have the "
          "following common format: Element name; element type; "
          "manufacturer name; version; for example, 'Miniport driver; "
          "SCSI; Intel; Version 1.2'. \n"
          "* \"Reference\" (value = 13): Log the keys of an CIM object "
          "of of interest; for example, the element under test, or a "
          "data file. \n"
          "* \"Debug\" (value = 14): Log debug messages. These "
          "messages are vendor specific."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15" }, 
       Values { "Unknown", "Other", "Results", "Subtests", "Actions",
          "Warnings", "Status", "Device Errors", "Service Errors",
          "Setting Data", "Statistics", "Hardware Configuration",
          "Software Configuration", "References", "Debug",
          "No Log Options" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticSetting.OtherLogOptionsDescriptions",
          "CIM_DiagnosticServiceCapabilities.SupportedLogOptions",
          "CIM_DiagnosticServiceRecord.RecordType",
          "CIM_DiagnosticSetting.VerbosityLevel" }]
   uint16 LogOptions[];

      [Write, Description (
          "Provides additional information regarding the types of test "
          "messages that are logged when the property LogOptions "
          "includes the value 1 (\"Other\")."), 
       ModelCorrespondence { "CIM_DiagnosticSetting.LogOptions" }]
   string OtherLogOptionsDescriptions[];

      [Write, Description (
          "The LogStorage setting property indicates which types of "
          "supported storage should be used by the Diagnostic Service "
          "for logging of the data specified in LogOptions. \n"
          "The values are: \n"
          "\"DiagnosticRecordLog\" (Value = 2): Use the "
          "DiagnosticRecordLog and DiagnosticRecord classes. \n"
          "\"MessageLog\" (Value = 4): Use the MessageLog class and "
          "its methods. \n"
          "\"File\" (Value = 5): Write data to a file."), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Unknown", "Other", "DiagnosticRecordLog",
          "MessageLog", "File" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticSetting.OtherLogStorageDescriptions",
          "CIM_DiagnosticServiceCapabilities.SupportedLogStorage" }]
   uint16 LogStorage[];

      [Write, Description (
          "This property provides additional information for "
          "LogStorage when the corresponding value is set to 1 "
          "(\"Other\")."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticSetting.LogStorage" }]
   string OtherLogStorageDescriptions[];

      [Write, Description (
          "A client may want to specify the desired volume or detail "
          "logged by a diagnostic service. This property is applied to "
          "a corresponding logging option, acting as a qualifier on "
          "its description. Three levels of verbosity are defined as "
          "follows: \n"
          "* \"Minimum\" (value=2): Specified if the least amount of "
          "information is desired; for example, Pass or Fail. \n"
          "* \"Standard\" (value=3): This is the standard level of "
          "messaging provided by the service. It is the form most "
          "likely to be used if no verbosity value is specified "
          "(default). \n"
          "* \"Full\" (value=4): Specified when all information, "
          "regardless of size, is desired. \n"
          "Note that VerbosityLevel is a subjective property and "
          "relates to the degree of detail, not an absolute metric. A "
          "client simply specifies its desired level of detail and the "
          "provider publishes its data in accordance with this desired "
          "level of detail. \n"
          "Verbosity may not apply to all LogOptions values, in which "
          "case the default VerbosityLevel of \"Standard\" SHOULD be "
          "used."), 
       ValueMap { "2", "3", "4" }, 
       Values { "Minimum", "Standard", "Full" },
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticSetting.LogOptions" }]
   uint16 VerbosityLevel[];

      [Write, Description (
          "This property, along with the locale information in "
          "LocalizationCapabilities and DiagnosticServiceRecord, meets "
          "the requirement to specify locale for results produced by a "
          "diagnostic service. A locale indicates a particular "
          "geographical, political, or cultural region. The Locales "
          "property of the DiagnosticSetting class is an array of "
          "strings whose entries specify a language to be used in the "
          "formulation of information requested by or delivered to a "
          "client as a result of running a diagnostic service. It is "
          "specified by the client as an input parameter to the "
          "RunDiagnostic method, by virtue of its inclusion in this "
          "Setting class which is a parameter of the method. A single "
          "Setting object may specify more than one Locale. In this "
          "case, information MUST be returned in each language "
          "specified. \n"
          "\n"
          "Each array entry consists of three sub-strings, separated "
          "by underscores: \n"
          "- The first sub-string is the language code, as specified "
          "in ISO639. \n"
          "- The second sub-string is the country code, as specified "
          "in ISO3166. \n"
          "- The third sub-string is a variant, which is vendor "
          "specific. \n"
          "For example, US English appears as: \"en_US_WIN\", where "
          "the \"WIN\" variant would specify a Windows "
          "browser-specific collation (if one exists). Since the "
          "variant is not standardized, it is not commonly used and "
          "generally is limited to easily recognizable values "
          "(\"WIN\", \"UNIX\", \"EURO\", etc.) used in standard "
          "environments. The language and country codes are required; "
          "the variant may be empty."), 
       ModelCorrespondence { 
          "CIM_LocalizationCapabilities.SupportedOutputLocales" }]
   string Locales[];


};

// ==================================================================
//  CIM_JobSettingData
// ==================================================================
   [Abstract,  Version ( "2.9.0" ), Description (
       "JobSettingData represents job characteristics and scheduling "
       "information for a CIM_Job. The settings may be applied to a "
       "job handling Service, a JobQueue or other destination to which "
       "jobs are submitted, and/or to individual CIM_Jobs. The "
       "applicability of the settings are defined using the "
       "ElementSettingData relationship. Since the Settings may be "
       "defined in several contexts and applied to many types of "
       "elements, this class is defined as a subclass of SettingData, "
       "versus ScopedSettingData.")]
class CIM_JobSettingData : CIM_SettingData {


      [Write, Description (
          "Indicates whether or not the Job should be automatically "
          "deleted upon completion. Note that the 'completion' of a "
          "recurring job is defined by its JobRunTimes or UntilTime "
          "properties, OR when the Job is terminated by manual "
          "intervention."), 
       ModelCorrespondence { "CIM_Job.DeleteOnCompletion" }]
   boolean DeleteOnCompletion;

      [Description (
          "Describes the recovery setting if the Job does not "
          "successfully complete. The possible values are: \n"
          "0 = \"Unknown\", meaning it is unknown as to what recovery "
          "action to take \n"
          "1 = \"Other\", indicating that the recovery action will be "
          "specified in the property, OtherRecoveryAction \n"
          "2 = \"Do Not Continue\", meaning stop the execution of the "
          "job and appropriately update its status \n"
          "3 = \"Continue With Next Job\", meaning continue with the "
          "next job in the queue \n"
          "4 = \"Re-run Job\", indicating that the job should be "
          "re-run \n"
          "5 = \"Run Recovery Job\", meaning run the Job associated "
          "using the RecoveryJob relationship. Note that the recovery "
          "Job MUST already be on the queue from which it will run."), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "Other", "Do Not Continue",
          "Continue With Next Job", "Re-run Job", "Run Recovery Job" }, 
       ModelCorrespondence { "CIM_JobSettingData.OtherRecoveryAction",
          "CIM_Job.RecoveryAction" }]
   uint16 RecoveryAction;

      [Description (
          "A string describing the recovery action when the instance's "
          "RecoveryAction property is 1 (\"Other\")."), 
       ModelCorrespondence { "CIM_JobSettingData.RecoveryAction",
          "CIM_Job.OtherRecoveryAction" }]
   string OtherRecoveryAction;
};

// ==================================================================
//  CIM_DiagnosticService
// ==================================================================
   [Abstract,  Version ( "2.9.0" ), Description (
       "The CIM_DiagnosticService class provides the ability to start "
       "a service that functions to participate in a problem "
       "determination process. Specific diagnostic services SHOULD be "
       "defined by subclassing this class. Examples of a diagnostic "
       "service are tests, information retrievers, exercisers, and "
       "ports to external executives.")]
class CIM_DiagnosticService : CIM_Service {

      [Description (
          "The RunDiagnostic method executes this test for the "
          "specified ManagedSystemElement (defined using the "
          "SystemElement input parameter). The capabilities for the "
          "diagnostic service indicate where the results from the test "
          "job are stored. How the test should execute, i.e. its "
          "settings, is defined in a DiagnosticSetting object (or by a "
          "subclass of DiagnosticSetting). A reference to a Setting "
          "object is specified using the Setting input parameter. If a "
          "reference is not passed into the method, then a default "
          "DiagnosticSetting SHALL be used. \n"
          "When RunDiagnostic starts execution, the settings, which "
          "are time sensitive, SHOULD be evaluated and captured. This "
          "is suggested since the DiagnosticSetting object MAY be "
          "modified at any time, and therefore the current test "
          "settings could be lost. \n"
          "If 0 is returned, the function completed successfully and "
          "no ConcreteJob instance is created. If 0x1000 a ConcreteJob "
          "will be started."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "0x1000", "..",
          "0x8000.." }, 
       Values { "Job completed with no error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "DMTF Reserved", "Method parameters checked - job started",
          "Method Reserved", "Vendor Specific" }]
   uint32 RunDiagnostic( 
         [IN, Description (
             "Specifies the element upon which the DiagnosticService "
             "SHOULD be run.")]
      CIM_ManagedElement REF ManagedElement, 
         [IN, Description (
             "Specifies the desired settings that SHOULD be applied to "
             "the Diagnostic. If null, then the Diagnostic's defaults "
             "MAY be used.")]
      CIM_DiagnosticSetting REF DiagSetting, 
         [IN, Description (
             "Specifies the desired settings that SHOULD be applied to "
             "the resulting Job. If null and a resulting Job is "
             "required (i.e., the Diagnostic is long running), then "
             "the test's defaults MAY be used.")]
      CIM_JobSettingData REF JobSetting, 
         [IN ( FALSE ), OUT, Description (
             "Returns a handle to the resulting Job.")]
      CIM_ConcreteJob REF Job); 
};

// ==================================================================
//  CIM_AvailableDiagnosticService
// ==================================================================
   [Association, Abstract,  Version ( "2.9.0" ), Description (
       "This is an association class that relates a DiagnosticService "
       "to a ManagedElement. Consumers wishing to 'diagnose' a "
       "particular Element could query this association to determine "
       "what services are available.")]
class CIM_AvailableDiagnosticService : CIM_ServiceAvailableToElement {

      [Override ( "ServiceProvided" ), Description (
          "The diagnostic service that is available to a "
          "ManagedElement.")]
   CIM_DiagnosticService REF ServiceProvided;

      [Description (
          "Estimated magnitude of time to perform the referenced "
          "DiagnosticService on the referenced ManagedElement. \n"
          "Since the processing speed of a system can vary immensely "
          "due to a variety of factors (e.g., processor speed), this "
          "property takes on values that are a statement of magnitude, "
          "not absolute time. If greater accuracy can be provided, a "
          "quantification may be specified in the corresponding "
          "integer property, EstimatedDurationQualifier. \n"
          "Since execution times could vary by Element, this property "
          "is located in the association between the two entities."), 
       ValueMap { "0", "2", "3", "4", "5", "6" }, 
       Values { "Unknown", "Milliseconds", "Seconds", "Minutes",
          "Hours", "Days" }, 
       ModelCorrespondence { 
          "CIM_AvailableDiagnosticService.EstimatedDurationQualifier" }]
   uint16 EstimatedDurationOfService;

      [Description (
          "EstimatedDurationQualifier can be used to further quantify "
          "the magnitude of time to perform the service."), 
       ModelCorrespondence { 
          "CIM_AvailableDiagnosticService.EstimatedDurationOfService" }]
   uint32 EstimatedDurationQualifier;

};

// ==================================================================
//  CIM_BasedOn
// ==================================================================
   [Association, Abstract,  Version ( "2.6.0" ), Description (
       "BasedOn is an association describing how StorageExtents can be "
       "assembled from lower level Extents. For example, "
       "ProtectedSpaceExtents are parts of PhysicalExtents, while "
       "VolumeSets are assembled from one or more Physical or "
       "ProtectedSpaceExtents. As another example, CacheMemory can be "
       "defined independently and realized in a PhysicalElement or can "
       "be 'based on' Volatile or NonVolatileStorageExtents.")]
class CIM_BasedOn : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The lower level StorageExtent.")]
   CIM_StorageExtent REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The higher level StorageExtent.")]
   CIM_StorageExtent REF Dependent;

      [Description (
          "StartingAddress indicates where in lower level storage, the "
          "higher level Extent begins.")]
   uint64 StartingAddress;

      [Description (
          "EndingAddress indicates where in lower level storage, the "
          "higher level Extent ends. This property is useful when "
          "mapping non-contiguous Extents into a higher level "
          "grouping.")]
   uint64 EndingAddress;

      [Description (
          "If there is an order to the BasedOn associations that "
          "describe how a higher level StorageExtent is assembled, the "
          "OrderIndex property indicates this. When an order exists, "
          "the instances of BasedOn with the same Dependent value "
          "(i.e., the same higher level Extent) should place unique "
          "values in the OrderIndex property. The lowest value implies "
          "the first member of the collection of lower level Extents, "
          "and increasing values imply successive members of the "
          "collection. If there is no ordered relationship, a value of "
          "zero should be specified. An example of the use of this "
          "property is to define a RAID-0 striped array of 3 disks. "
          "The resultant RAID array is a StorageExtent that is "
          "dependent on (BasedOn) the StorageExtents that describe "
          "each of the 3 disks. The OrderIndex of each BasedOn "
          "association from the disk Extents to the RAID array could "
          "be specified as 1, 2 and 3 to indicate the order in which "
          "the disk Extents are used to access the RAID data.")]
   uint16 OrderIndex;
};

// ==================================================================
//  CIM_PhysicalElement
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "Subclasses of CIM_PhysicalElement define any component of a "
       "System that has a distinct physical identity. Instances of "
       "this class can be defined as an object that can be seen or "
       "touched. All Processes, Files, and LogicalDevices are "
       "considered not to be Physical Elements. For example, it is not "
       "possible to touch the functionality of a 'modem.' You can "
       "touch only the card or package that implements the modem. The "
       "same card could also implement a LAN adapter. PhysicalElements "
       "are tangible ManagedSystemElements that have a physical "
       "manifestation of some sort. \n"
       "\n"
       "Note that the properties of PhysicalElement describe a "
       "hardware entity. Possible replacement (FRU) information is "
       "defined by following the ElementFRU association to one or more "
       "instances of the ReplacementFRU class. This definition allows "
       "a client to determine what hardware can be replaced (FRUed) "
       "and what 'spare' parts might be required by a customer or "
       "engineer doing the replacement. If it can be instrumented or "
       "manually determined that an element actually replaced (FRUed) "
       "another, then this can be described in the model using the "
       "ElementHasBeenFRUed association.")]
class CIM_PhysicalElement : CIM_ManagedSystemElement {

      [Key, Description (
          "An arbitrary string that uniquely identifies the Physical "
          "Element and serves as the key of the Element. The Tag "
          "property can contain information such as asset tag or "
          "serial number data. The key for PhysicalElement is placed "
          "very high in the object hierarchy in order to independently "
          "identify the hardware or entity, regardless of physical "
          "placement in or on Cabinets, Adapters, and so on. For "
          "example, a hotswappable or removable component can be taken "
          "from its containing (scoping) Package and be temporarily "
          "unused. The object still continues to exist and can even be "
          "inserted into a different scoping container. Therefore, the "
          "key for Physical Element is an arbitrary string and is "
          "defined independently of any placement or location-oriented "
          "hierarchy."), 
       MaxLen ( 256 )]
   string Tag;

      [Override ( "Description" ), Description (
          "A textual description of the PhysicalElement."), 
       MappingStrings { "MIF.DMTF|FRU|003.3" }]
   string Description;

      [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;

      [Override ( "ElementName" ), 
       MappingStrings { "MIB.IETF|Entity-MIB.entPhysicalName" }]
   string ElementName;

      [Description (
          "The name of the organization responsible for producing the "
          "PhysicalElement. This organization might be the entity from "
          "whom the Element is purchased, but this is not necessarily "
          "true. The latter information is contained in the Vendor "
          "property of CIM_Product."), 
       MaxLen ( 256 ), 
       MappingStrings { "MIB.IETF|Entity-MIB.entPhysicalMfgName",
          "MIF.DMTF|FRU|003.4" }]
   string Manufacturer;

      [Description (
          "The name by which the PhysicalElement is generally known."), 
       MaxLen ( 256 ), 
       MappingStrings { "MIB.IETF|Entity-MIB.entPhysicalDescr",
          "MIF.DMTF|FRU|003.5" }]
   string Model;

      [Description (
          "The stock-keeping unit number for this PhysicalElement."), 
       MaxLen ( 64 )]
   string SKU;

      [Description (
          "A manufacturer-allocated number used to identify the "
          "Physical Element."), 
       MaxLen ( 256 ), 
       MappingStrings { "MIB.IETF|Entity-MIB.entPhysicalSerialNum",
          "MIF.DMTF|FRU|003.7" }]
   string SerialNumber;

      [Description (
          "A string that indicates the version of the PhysicalElement."), 
       MaxLen ( 64 ), 
       MappingStrings { "MIB.IETF|Entity-MIB.entPhysicalHardwareRev",
          "MIF.DMTF|FRU|003.8" }]
   string Version;

      [Description (
          "The part number assigned by the organization that is "
          "responsible for producing or manufacturing the "
          "PhysicalElement."), 
       MaxLen ( 256 ), 
       MappingStrings { "MIB.IETF|Entity-MIB.entPhysicalModelName" }]
   string PartNumber;

      [Write, Description (
          "OtherIdentifyingInfo captures data in addition to Tag "
          "information. This information could be used to identify a "
          "Physical Element. One example is bar code data associated "
          "with an Element that also has an asset tag. Note that if "
          "only bar code data is available and is unique or able to be "
          "used as an Element key, this property would be null and the "
          "bar code data would be used as the class key, in the Tag "
          "property."), 
       MappingStrings { "MIB.IETF|Entity-MIB.entPhysicalAlias" }]
   string OtherIdentifyingInfo;

      [Description (
          "Boolean that indicates whether the PhysicalElement is "
          "powered on (TRUE) or is currently off (FALSE).")]
   boolean PoweredOn;

      [Description (
          "The date that this PhysicalElement was manufactured.")]
   datetime ManufactureDate;

      [Description (
          "A vendor-specific hardware type for the PhysicalElement. It "
          "describes the specific equipment type for the element, as "
          "defined by the vendor or manufacturer."), 
       MappingStrings { "MIB.IETF|Entity-MIB.entPhysicalVendorType" }]
   string VendorEquipmentType;

      [Write, Description (
          "User-assigned and writeable asset-tracking identifier for "
          "the PhysicalElement."), 
       MappingStrings { "MIB.IETF|Entity-MIB.entPhysicalAssetID" }]
   string UserTracking;

      [Description (
          "Boolean that indicates whether this PhysicalElement can be "
          "FRUed (TRUE) or not (FALSE)."), 
       MappingStrings { "MIB.IETF|Entity-MIB.entPhysicalIsFRU" }]
   boolean CanBeFRUed;
};

// ==================================================================
//  CIM_PhysicalPackage
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), 
    Description (
       "The PhysicalPackage class represents PhysicalElements that "
       "contain or host other components. Examples are a Rack "
       "enclosure or an adapter Card.")]
class CIM_PhysicalPackage : CIM_PhysicalElement {

      [Description (
          "The RemovalCapabilites property is used to describe the "
          "conditions under which a PhysicalPackage can be removed. "
          "Since all PhysicalPackages are not removable, this property "
          "defaults to 2, 'Not Applicable'."), 
       ValueMap { "0", "2", "3", "4" }, 
       Values { "Unknown", "Not Applicable", "Removable when off",
          "Removable when on or off" }]
   uint16 RemovalConditions = 2;

      [Deprecated { "CIM_PhysicalPackage.RemovalConditions" }, 
       Description (
          "The use of this property is being deprecated. Instead "
          "RemovalConditions should be used. The RemovalConditions "
          "property addresses whether a PhysicalPackage is removable "
          "with or without power being applied. \n"
          "A PhysicalPackage is Removable if it is designed to be "
          "taken in and out of the physical container in which it is "
          "normally found, without impairing the function of the "
          "overall packaging. A Package can still be Removable if "
          "power must be 'off' in order to perform the removal. If "
          "power can be 'on' and the Package removed, then the Element "
          "is both Removable and HotSwappable. For example, an extra "
          "battery in a laptop is Removable, as is a disk drive "
          "Package inserted using SCA connectors. However, the latter "
          "is also HotSwappable. A laptop's display is not Removable, "
          "nor is a non-redundant power supply. Removing these "
          "components would impact the function of the overall "
          "packaging or is impossible due to the tight integration of "
          "the Package.")]
   boolean Removable;

      [Deprecated { "No Value" }, Description (
          "The use of this property is being deprecated because it is "
          "redundant with the FRU class and its associations. A "
          "PhysicalPackage is Replaceable if it is possible to replace "
          "(FRU or upgrade) the Element with a physically different "
          "one. For example, some ComputerSystems allow the main "
          "Processor chip to be upgraded to one of a higher clock "
          "rating. In this case, the Processor is said to be "
          "Replaceable. Another example is a power supply Package "
          "mounted on sliding rails. All Removable packages are "
          "inherently Replaceable.")]
   boolean Replaceable;

      [Deprecated { "CIM_PhysicalPackage.RemovalConditions" }, 
       Description (
          "The use of this property is being deprecated. Instead "
          "RemovalConditions should be used. The RemovalConditions "
          "property addresses whether a PhysicalPackage is removable "
          "with or without power being applied. \n"
          "\n"
          "A PhysicalPackage is HotSwappable if it is possible to "
          "replace the Element with a physically different but "
          "equivalent one while the containing Package has power "
          "applied to it (ie, is 'on'). For example, a disk drive "
          "Package inserted using SCA connectors is both Removable and "
          "HotSwappable. All HotSwappable packages are inherently "
          "Removable and Replaceable.")]
   boolean HotSwappable;

      [Description (
          "The height of the PhysicalPackage in inches."), 
       Units ( "Inches" )]
   real32 Height;

      [Description (
          "The depth of the PhysicalPackage in inches."), 
       Units ( "Inches" )]
   real32 Depth;

      [Description (
          "The width of the PhysicalPackage in inches."), 
       Units ( "Inches" )]
   real32 Width;

      [Description (
          "The weight of the PhysicalPackage in pounds."), 
       Units ( "Pounds" )]
   real32 Weight;

      [Deprecated { "No Value" }, Description (
          "This method is being deprecated. A PhysicalPackage cannot "
          "determine if it is compatible with another object. The "
          "IsCompatible method verifies whether the referenced "
          "PhysicalElement may be contained by or inserted into the "
          "PhysicalPackage. The return value should be 0 if the "
          "request was successfully executed, 1 if the request is not "
          "supported and some other value if an error occurred. In a "
          "subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 IsCompatible( 
         [IN, Description (
             "The element to check for compatibility with this one.")]
      CIM_PhysicalElement REF ElementToCheck); 

      [Experimental, Description (
          "Enumeration defining the type of the PhysicalPackage. Note "
          "that this enumeration expands on the list in the Entity MIB "
          "(the attribute, entPhysicalClass). The numeric values are "
          "consistent with CIM's enum numbering guidelines, but are "
          "slightly different than the MIB's values. \n"
          "Unknown - indicates that the package type is not known. \n"
          "Other - The package type does not correspond to an existing "
          "enumerated value. The value is specified using the "
          "OtherPackageType property. \n"
          "The values \"Rack\" through \"Port/Connector\" are defined "
          "per the Entity-MIB (where the semantics of rack are "
          "equivalent to the MIB's 'stack' value). The other values "
          "(for battery, processor, memory, power source/generator and "
          "storage media package) are self-explanatory. \n"
          "A value of \"Blade\" should be used when the "
          "PhysicalPackage contains the operational hardware aspects "
          "of a ComputerSystem, without the supporting mechanicals "
          "such as power and cooling. For example, a Blade Server "
          "includes processor(s) and memory, and relies on the "
          "containing chassis to supply power and cooling. In many "
          "respects, a Blade can be considered a \"Module/Card\". "
          "However, it is tracked differently by inventory systems and "
          "differs in terms of service philosophy. For example, a "
          "Blade is intended to be hot-plugged into a hosting "
          "enclosure without requiring additional cabling, and does "
          "not require a cover to be removed from the enclosure for "
          "installation. Similarly, a \"Blade Expansion\" has "
          "characteristics of a \"Blade\" and a \"Module/Card\". "
          "However, it is distinct from both due to inventory tracking "
          "and service philosophy, and because of its hardware "
          "dependence on a Blade. A Blade Expansion must be attached "
          "to a Blade prior to inserting the resultant assembly into "
          "an enclosure."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17" }, 
       Values { "Unknown", "Other", "Rack", "Chassis/Frame",
          "Cross Connect/Backplane", "Container/Frame Slot",
          "Power Supply", "Fan", "Sensor", "Module/Card",
          "Port/Connector", "Battery", "Processor", "Memory",
          "Power Source/Generator",
          "Storage Media Package (e.g., Disk or Tape Drive)", "Blade",
          "Blade Expansion" }, 
       MappingStrings { "MIB.IETF|ENTITY-MIB.entPhysicalClass" }, 
       ModelCorrespondence { "CIM_PhysicalPackage.OtherPackageType" }]
   uint16 PackageType;

      [Experimental, Description (
          "A string describing the package when the instance's "
          "PackageType property is 1 (\"Other\")."), 
       ModelCorrespondence { "CIM_PhysicalPackage.PackageType" }]
   string OtherPackageType;

      [Experimental, Description (
          "An array of strings that identify the component that is "
          "compatible with, and can be inserted in a slot that reports "
          "this string as one of the array element in the "
          "VendorCompatibilityStrings This allows system "
          "administrators to determine whether it is appropriate to "
          "insert a package into a slot \n"
          "In order to ensure uniqueness within the NameSpace, each "
          "value defined by the vendor for use in the "
          "VendorCompatibilityStrings property 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."), 
       ModelCorrespondence { "CIM_Slot.VendorCompatibilityStrings" }]
   string VendorCompatibilityStrings[];
};

// ==================================================================
//  CIM_PhysicalConnector
// ==================================================================
   [Abstract,  Version ( "2.8.1000" ), Description (
       "The PhysicalConnector class represents any PhysicalElement "
       "that is used to connect to other Elements. Any object that can "
       "be used to connect and transmit signals or power between two "
       "or more PhysicalElements is a descendant (or member) of this "
       "class. For example, Slots and D-shell connectors are types of "
       "PhysicalConnectors.")]
class CIM_PhysicalConnector : CIM_PhysicalElement {

      [Description (
          "A free-form string describing the pin configuration and/or "
          "signal usage of a PhysicalConnector."), 
       ModelCorrespondence { "CIM_PhysicalConnector.NumPhysicalPins" }]
   string ConnectorPinout;

      [Deprecated { "CIM_PhysicalConnector.ConnectorGender",
          "CIM_PhysicalConnector.ConnectorElectricalCharacteristics",
          "CIM_PhysicalConnector.NumPhysicalPins",
          "CIM_PhysicalConnector.ConnectorLayout" }, Description (
          "An array of integers defining the type of "
          "PhysicalConnector. An array is specified to allow the "
          "description of 'combinations' of Connector information. For "
          "example, one array entry could specify RS-232 (value=25), "
          "another DB-25 (value=23) and a third entry define the "
          "Connector as \"Male\" (value=2). \n"
          "This single property is being deprecated in lieu of using "
          "separate properties to describe the various aspects of the "
          "connector. The separation allows for a more generic means "
          "of describing the connectors. Obsolete connectors were "
          "intentionally removed from the new list."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
          "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
          "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",
          "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",
          "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",
          "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",
          "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",
          "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",
          "90", "91", "92", "93", "94", "95", "96", "97", "98", "99",
          "100", "101", "102", "103", "104", "105", "106", "107",
          "108", "109", "110", "111", "112", "113", "114", "115",
          "116", "117", "118", "119", "120", "121", "122" }, 
       Values { "Unknown", "Other", "Male", "Female", "Shielded",
          "Unshielded", "SCSI (A) High-Density (50 pins)",
          "SCSI (A) Low-Density (50 pins)",
          "SCSI (P) High-Density (68 pins)", "SCSI SCA-I (80 pins)",
          "SCSI SCA-II (80 pins)", 
          // 11                       
          "Fibre Channel (DB-9, Copper)",
          "Fibre Channel (Optical Fibre)",
          "Fibre Channel SCA-II (40 pins)",
          "Fibre Channel SCA-II (20 pins)", "Fibre Channel BNC",
          "ATA 3-1/2 Inch (40 pins)", "ATA 2-1/2 Inch (44 pins)",
          "ATA-2", "ATA-3", "ATA/66", "DB-9", "DB-15", "DB-25",
          "DB-36", "RS-232C", "RS-422", "RS-423", "RS-485", "RS-449",
          "V.35", 
          // 31                      
          "X.21", "IEEE-488", "AUI", "UPT Category 3",
          "UPT Category 4", "UPT Category 5", "BNC", "RJ11", "RJ45",
          "Fiber MIC", "Apple AUI", "Apple GeoPort", "PCI", "ISA",
          "EISA", "VESA", "PCMCIA", "PCMCIA Type I", "PCMCIA Type II",
          "PCMCIA Type III", 
          // 51                                   
          "ZV Port", "CardBus", "USB", "IEEE 1394", "HIPPI",
          "HSSDC (6 pins)", "GBIC", "DIN", "Mini-DIN", "Micro-DIN",
          "PS/2", "Infrared", "HP-HIL", "Access.bus", "NuBus",
          "Centronics", "Mini-Centronics", "Mini-Centronics Type-14",
          "Mini-Centronics Type-20", "Mini-Centronics Type-26", 
          // 71                    
          "Bus Mouse", "ADB", "AGP", "VME Bus", "VME64", "Proprietary",
          "Proprietary Processor Card Slot",
          "Proprietary Memory Card Slot", "Proprietary I/O Riser Slot",
          "PCI-66MHZ", "AGP2X", "AGP4X", "PC-98", "PC-98-Hireso",
          "PC-H98", "PC-98Note", "PC-98Full", "SSA SCSI", "Circular",
          "On Board IDE Connector", "On Board Floppy Connector",
          "9 Pin Dual Inline", "25 Pin Dual Inline",
          "50 Pin Dual Inline", "68 Pin Dual Inline",
          "On Board Sound Connector", "Mini-jack", "PCI-X",
          "Sbus IEEE 1396-1993 32 bit", 
          // 100                                    
          "Sbus IEEE 1396-1993 64 bit", "MCA", "GIO", "XIO", "HIO",
          "NGIO", "PMC", "MTRJ", "VF-45", "Future I/O", "SC", "SG",
          "Electrical", "Optical", "Ribbon", "GLM", "1x9", "Mini SG",
          "LC", "HSSC", 
          // 120                     
          "VHDCI Shielded (68 pins)", "InfiniBand", "AGP8X" }, 
       MappingStrings { "MIF.DMTF|Bus Port|004.10" },
          ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_PhysicalConnector.OtherTypeDescription" }]
   uint16 ConnectorType[];

      [Deprecated { "CIM_PhysicalConnector.ConnectorDescription" }, 
       Description (
          "A string describing the Connector - used when the "
          "ConnectorType property is set to 1 (\"Other\"). OtherType "
          "Description should be set to NULL when ConnectorType is any "
          "value other than 1. \n"
          "The use of this property is deprecated in lieu of Connector "
          "Description."), 
       MappingStrings { "MIF.DMTF|Bus Port|004.11" }, 
       ModelCorrespondence { "CIM_PhysicalConnector.ConnectorType" }]
   string OtherTypeDescription;

      [Description (
          "Describes the gender of the connector."), 
       ValueMap { "0", "2", "3" }, 
       Values { "Unknown", "Male", "Female" }]
   uint16 ConnectorGender;

      [Description (
          "Describes the electrical characteristic for this connector."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8" }, 
       Values { "Unknown", "Other", "Single Ended", "Differential",
          "Low Voltage Differential", "Optical", "Copper", "Shielded",
          "Unshielded" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_PhysicalConnector.OtherElectricalCharacteristics" }]
   uint16 ConnectorElectricalCharacteristics[];

      [Description (
          "A string describing the connector's electrical "
          "characteristics - used when the "
          "ConnectorElectricalCharacteristics property contains an "
          "entry of 1 (Other). OtherElectricalCharacteristics should "
          "be set to NULL when ConnectorElectricalCharacteristics does "
          "not contain an value of 1."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_PhysicalConnector.ConnectorElectricalCharacteristics" }]
   string OtherElectricalCharacteristics[];

      [Description (
          "Describes the number of physical pins (male/female) that "
          "are present on this connector."), 
       ModelCorrespondence { "CIM_PhysicalConnector.ConnectorPinout" }]
   uint32 NumPhysicalPins;

      [Description (
          "Describes the type of packaging normally associated with "
          "this type of connector."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "17..32567",
          "32568..65535" }, 
       Values { "Unknown", "Other", "RS232", "BNC", "RJ11", "RJ45",
          "DB9", "Slot", "SCSI High Density", "SCSI Low Density",
          "Ribbon", "AUI", "Fiber SC", "Fiber ST", "FDDI-MIC",
          "Fiber-RTMJ", "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { 
          "CIM_PhysicalConnector.ConnectorDescription" }]
   uint16 ConnectorLayout;

      [Description (
          "A string describing the Connector - used when the "
          "ConnectorLayout property is set to 1 (\"Other\"). Connector "
          "Description should be set to NULL when ConnectorLayout is "
          "any value other than 1."), 
       MappingStrings { "MIF.DMTF|Bus Port|004.11" }, 
       ModelCorrespondence { "CIM_PhysicalConnector.ConnectorLayout" }]
   string ConnectorDescription;
};

// ==================================================================
//  CIM_Card
// ==================================================================
   [Abstract,  Version ( "2.8.0" ), Description (
       "The Card class represents a type of physical container that "
       "can be plugged into another Card or HostingBoard, or is itself "
       "a HostingBoard/Motherboard in a Chassis. The CIM_Card class "
       "includes any package capable of carrying signals and providing "
       "a mounting point for PhysicalComponents, such as Chips, or "
       "other PhysicalPackages, such as other Cards.")]
class CIM_Card : CIM_PhysicalPackage {

      [Description (
          "Boolean indicating that this Card is a Motherboard or, more "
          "generically, a baseboard in a Chassis.")]
   boolean HostingBoard;

      [Description (
          "SlotLayout is a free-form string that describes the slot "
          "positioning, typical usage, restrictions, individual slot "
          "spacings or any other pertinent information for the slots "
          "on a Card.")]
   string SlotLayout;

      [Description (
          "Boolean indicating that at least one daughterboard or "
          "auxiliary Card is required in order to function properly.")]
   boolean RequiresDaughterBoard;

      [Description (
          "Boolean indicating that this Card is physically unique from "
          "other Cards of the same type and therefore requires a "
          "special Slot. For example, a double-wide Card requires two "
          "Slots. Another example is where a certain Card may be used "
          "for the same general function as other Cards but requires a "
          "special Slot (e.g., extra long), whereas the other Cards "
          "can be placed in any available Slot. If set to TRUE, then "
          "the corresponding property, RequirementsDescription, should "
          "specify the nature of the uniqueness or purpose of the "
          "Card."), 
       ModelCorrespondence { "CIM_Card.RequirementsDescription" }]
   boolean SpecialRequirements;

      [Description (
          "A free-form string describing the way(s) in which this Card "
          "is physically unique from other Cards. This property only "
          "has meaning when the corresponding boolean property, "
          "SpecialRequirements, is set to TRUE."), 
       ModelCorrespondence { "CIM_Card.SpecialRequirements" }]
   string RequirementsDescription;

      [Description (
          "Operating voltages required by the Card."), 
       Units ( "MilliVolts" )]
   sint16 OperatingVoltages[];

      [Description (
          "This method manipulates the power to a PhysicalConnector on "
          "a Card. It is intended to be used by a Card (especially by "
          "a motherboard - i.e., HostingBoard=TRUE) to turn the power "
          "on and off for a specific PhysicalConnector located on it. "
          "For example, in a personal computer, a system slot does not "
          "know how to turn itself on and off. However, the "
          "motherboard hosting this slot may have that capability. "
          "This is important in order to support hot swapping of an "
          "adapter card in a system slot. The method should return 0 "
          "if successful, 1 if the request is not supported, and some "
          "other value if any other error occurred. In a subclass, the "
          "set of possible return codes could be specified, using a "
          "ValueMap qualifier on the method. The strings to which the "
          "ValueMap contents are 'translated' may also be specified in "
          "the subclass as a Values array qualifier.")]
   uint32 ConnectorPower( 
         [IN, Description (
             "The connector to change the power setting for.")]
      CIM_PhysicalConnector REF Connector, 
         [IN, Description (
             "If TRUE, turn power on for the connector. If FALSE, turn "
             "power off.")]
      boolean PoweredOn); 
};

// ==================================================================
//  CIM_PhysicalFrame
// ==================================================================
   [Abstract,  Version ( "2.7.0" ), Description (
       "PhysicalFrame is a superclass of Rack, Chassis and other frame "
       "enclosures, as they are defined in extension classes. "
       "Properties like visible or audible alarm, and data related to "
       "security breaches are in this superclass.")]
class CIM_PhysicalFrame : CIM_PhysicalPackage {

      [Description (
          "CableManagementStrategy is a free-form string that contains "
          "information on how the various cables are connected and "
          "bundled for the Frame. With many networking, "
          "storage-related and power cables, cable management can be a "
          "complex and challenging endeavor. This string property "
          "contains information to aid in assembly and service of the "
          "Frame.")]
   string CableManagementStrategy;

      [Description (
          "ServicePhilosophy is an enumerated, integer-valued array "
          "that indicates whether the Frame is serviced from the top "
          "(value=2), front (3), back (4) or side (5), whether it has "
          "sliding trays (6) or removable sides (7), and/or whether "
          "the Frame is moveable (8), for example, having rollers."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8" }, 
       Values { "Unknown", "Other", "Service From Top",
          "Service From Front", "Service From Back",
          "Service From Side", "Sliding Trays", "Removable Sides",
          "Moveable" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_PhysicalFrame.ServiceDescriptions" }]
   uint16 ServicePhilosophy[];

      [Description (
          "An array of free-form strings providing more detailed "
          "explanations for any of the entries in the Service "
          "Philosophy array. Note, each entry of this array is related "
          "to the entry in ServicePhilosophy that is located at the "
          "same index."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_PhysicalFrame.ServicePhilosophy" }]
   string ServiceDescriptions[];

      [Description (
          "Boolean indicating whether the Frame is protected with a "
          "lock.")]
   boolean LockPresent;

      [Description (
          "Boolean indicating whether the Frame is equipped with an "
          "audible alarm.")]
   boolean AudibleAlarm;

      [Description (
          "Boolean indicating that the equipment includes a visible "
          "alarm.")]
   boolean VisibleAlarm;

      [Description (
          "SecurityBreach is an enumerated, integer-valued property "
          "indicating whether a physical breach of the Frame was "
          "attempted but unsuccessful (value=4) or attempted and "
          "successful (5). Also, the values, \"Unknown\", \"Other\" or "
          "\"No Breach\", can be specified."), 
       ValueMap { "1", "2", "3", "4", "5" }, 
       Values { "Other", "Unknown", "No Breach", "Breach Attempted",
          "Breach Successful" }, 
       MappingStrings { "MIF.DMTF|Physical Container Global " 
          "Table|004.12" }, 
       ModelCorrespondence { "CIM_PhysicalFrame.BreachDescription" }]
   uint16 SecurityBreach;

      [Description (
          "BreachDescription is a free-form string providing more "
          "information if the SecurityBreach property indicates that a "
          "breach or some other security-related event occurred."), 
       ModelCorrespondence { "CIM_PhysicalFrame.SecurityBreach" }]
   string BreachDescription;

      [Description (
          "Boolean indicating that the Frame is currently locked.")]
   boolean IsLocked;
};

// ==================================================================
//  CIM_Chassis
// ==================================================================
   [Abstract,  Version ( "2.14.0" ), Description (
       "The Chassis class represents the PhysicalElements that enclose "
       "other Elements and provide definable functionality, such as a "
       "desktop, processing node, UPS, disk or tape storage, or a "
       "combination of these.")]
class CIM_Chassis : CIM_PhysicalFrame {

      [Description (
          "Integer indicating the number of power cords which must be "
          "connected to the Chassis, for all the componentry to "
          "operate.")]
   uint16 NumberOfPowerCords;

      [Description (
          "Current required by the Chassis at 120V. If power is "
          "provided by the Chassis (as in the case of a UPS), this "
          "property may indicate the amperage produced, as a negative "
          "number."), 
       Units ( "Amps at 120 Volts" )]
   sint16 CurrentRequiredOrProduced;

      [Description (
          "Amount of heat generated by the Chassis in BTU/hour."), 
       Units ( "BTU per Hour" )]
   uint16 HeatGeneration;

      [Deprecated { "CIM_Chassis.ChassisPackageType",
          "CIM_Chassis.MultipleSystemSupport" }, Description (
          "The use of this property is deprecated in lieu of "
          "ChassisPackageType. A physical package should not have "
          "multiple form factors. Therefore, this property is being "
          "deprecated in lieu of a single value property. \n"
          "An enumerated, integer-valued array indicating the type of "
          "Chassis."), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
          "11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
          "21", "22", "23", "24", "25" }, 
       Values { "Other", "Unknown", "Desktop", "Low Profile Desktop",
          "Pizza Box", "Mini Tower", "Tower", "Portable", "LapTop", 
          // 10                 
          "Notebook", "Hand Held", "Docking Station", "All in One",
          "Sub Notebook", "Space-Saving", "Lunch Box",
          "Main System Chassis", "Expansion Chassis", "SubChassis", 
          // 20                
          "Bus Expansion Chassis", "Peripheral Chassis",
          "Storage Chassis", "Rack Mount Chassis", "Sealed-Case PC",
          "Multi-system Chassis" }, ArrayType ( "Indexed" ), 
       MappingStrings { "MIF.DMTF|Physical Container Global " 
          "Table|004.1" }, 
       ModelCorrespondence { "CIM_Chassis.TypeDescriptions" }]
   uint16 ChassisTypes[];

      [Deprecated { "CIM_Chassis.ChassisTypeDescription" }, 
       Description (
          "The use of this property is deprecated in lieu of a single "
          "value property, ChassisTypeDescription. \n"
          "An array of free-form strings providing more information on "
          "the ChassisTypes array entries. Note, each entry of this "
          "array is related to the entry in ChassisTypes that is "
          "located at the same index."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_Chassis.ChassisTypes" }]
   string TypeDescriptions[];

      [Description (
          "ChassisPackageType indicates the physical form factor for "
          "the type of Chassis. This property may have a value when "
          "the PackageType property contains the value 3 \"Chassis "
          "Frame\". \n"
          "A value of 28 \"Blade Enclosure\" shall indicate the "
          "Chassis is designed to contain one or more "
          "PhysicalPackage(s) of PackageType 16 \"Blade\" or "
          "PackageType 17 \"Blade Expansion\"."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
          "20", "21", "22", "23", "24", "25", "26", "27", "28", "..",
          "0x8000..0xFFFF" }, 
       Values { "Unknown", "Other", "SMBIOS Reserved", "Desktop",
          "Low Profile Desktop", "Pizza Box", "Mini Tower", "Tower",
          "Portable", "LapTop", 
          // 10                 
          "Notebook", "Hand Held", "Docking Station", "All in One",
          "Sub Notebook", "Space-Saving", "Lunch Box",
          "Main System Chassis", "Expansion Chassis", "SubChassis", 
          // 20                
          "Bus Expansion Chassis", "Peripheral Chassis",
          "Storage Chassis", "SMBIOS Reseved", "Sealed-Case PC",
          "SMBIOS Reserved", "CompactPCI", "AdvancedTCA",
          "Blade Enclosure", "DMTF Reserved", "Vendor Reserved" }, 
       MappingStrings { "MIF.DMTF|Physical Container Global " 
          "Table|004.1" }, 
       ModelCorrespondence { "CIM_Chassis.ChassisTypeDescription" }]
   uint16 ChassisPackageType;

      [Description (
          "A string providing more information on the "
          "ChassisPackageType."), 
       ModelCorrespondence { "CIM_Chassis.ChassisPackageType" }]
   string ChassisTypeDescription;

      [Description (
          "MultipleSystemSupport indicates whether or not this chassis "
          "supports multiple systems, for example server blades."), 
       ValueMap { "0", "1", "2" }, 
       Values { "Unknown", "True", "False" }]
   uint16 MultipleSystemSupport;

      [Description (
          "RackMountable indicates whether or not the chassis is Rack "
          "Mountable."), 
       ValueMap { "0", "1", "2" }, 
       Values { "Unknown", "True", "False" }]
   uint16 RackMountable;
};

// ==================================================================
//  CIM_Indication
// ==================================================================
   [Indication,  Version ( "2.24.0" ), Description (
       "CIM_Indication is the abstract root class for all "
       "notifications about changes in schema, objects and their data, "
       "and about events detected by providers and instrumentation. "
       "Subclasses represent specific types of notifications. \n"
       "\n"
       "To receive an Indication, a consumer (or subscriber) must "
       "create an instance of CIM_IndicationFilter describing the "
       "criteria of the notification, an instance of "
       "CIM_ListenerDestination describing the delivery of the "
       "notification, and an instance of CIM_IndicationSubscription "
       "associating the Filter and Handler.")]
class CIM_Indication {

      [Description ( 
          "An identifier for the Indication. This property is "
          "similar to a key value in that it can be used for "
          "identification, when correlating Indications (see the "
          "CorrelatedIndications array). Its value SHOULD be unique "
          "as long as correlations are reported, but MAY be reused "
          "or left NULL if no future Indications will reference it "
          "in their CorrelatedIndications array.To ensure "
          "uniqueness, the value of IndicationIdentifier 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 that is creating or defining the "
          "IndicationIdentifier or that is a recognized ID that is "
          "assigned to the business entity by a recognized global "
          "authority. (This requirement 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 IndicationIdentifier 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. \n"
          "If the above \"preferred\" algorithm is not used, the "
          "defining entity should assure that the resulting "
          "IndicationIdentifier is not re-used across any "
          "IndicationIdentifiers that are produced by this or other "
          "providers for the NameSpace of this instance. \n"
          "For DMTF-defined instances, the \"preferred\" algorithm "
          "should be used with the <OrgID> set to CIM." ), 
       MappingStrings { 
          "Recommendation.ITU|X733.Notification identifier" }]
   string IndicationIdentifier;

      [Description ( 
          "A list of IndicationIdentifiers whose notifications are "
          "correlated with (related to) this one." ), 
       MappingStrings { 
          "Recommendation.ITU|X733.Correlated notifications" }, 
       ModelCorrespondence { "CIM_Indication.IndicationIdentifier" }]
   string CorrelatedIndications[];

      [Description ( 
          "The time and date of creation of the Indication. The "
          "property may be set to NULL if the entity creating the "
          "Indication is not capable of determining this "
          "information. Note that IndicationTime may be the same "
          "for two Indications that are generated in rapid "
          "succession." )]
   datetime IndicationTime;

      [Description ( 
          "An enumerated value that describes the severity of the "
          "Indication from the notifier\'s point of view: \n"
          "1 - Other, by CIM convention, is used to indicate that "
          "the Severity\'s value can be found in the OtherSeverity "
          "property. \n"
          "3 - Degraded/Warning should be used when its appropriate "
          "to let the user decide if action is needed. \n"
          "4 - Minor should be used to indicate action is needed, "
          "but the situation is not serious at this time. \n"
          "5 - Major should be used to indicate action is needed "
          "NOW. \n"
          "6 - Critical should be used to indicate action is needed "
          "NOW and the scope is broad (perhaps an imminent outage "
          "to a critical resource will result). \n"
          "7 - Fatal/NonRecoverable should be used to indicate an "
          "error occurred, but it\'s too late to take remedial "
          "action. \n"
          "2 and 0 - Information and Unknown (respectively) follow "
          "common usage. Literally, the Indication is purely "
          "informational or its severity is simply unknown." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", ".." }, 
       Values { "Unknown", "Other", "Information", 
          "Degraded/Warning", "Minor", "Major", "Critical", 
          "Fatal/NonRecoverable", "DMTF Reserved" }, 
       MappingStrings { "Recommendation.ITU|X733.Perceived severity" }]
   uint16 PerceivedSeverity;

      [Description ( 
          "Holds the value of the user defined severity value when "
          "\'PerceivedSeverity\' is 1 (\"Other\")." ), 
       ModelCorrespondence { "CIM_AlertIndication.PerceivedSeverity" }]
   string OtherSeverity;

      [Description ( 
          "An identifier for the indication filter that selects "
          "this indication and causes it to be sent. This property "
          "is to be filled out by the indication sending service. "
          "The value shall be correlatable with the Name property "
          "of the instance of CIM_IndicationFilter describing the "
          "criteria of the indication. The value of the "
          "IndicationFilterName should be formatted using the "
          "following algorithm: < OrgID > : < LocalID >, where < "
          "OrgID > and < LocalID > are separated by a colon (:) and "
          "< OrgID > shall include a copyrighted, trademarked, or "
          "otherwise unique name that is owned by the business "
          "entity that is creating or defining the value or that is "
          "a registered ID assigned to the business entity by a "
          "recognized global authority. In addition, to ensure "
          "uniqueness, < OrgID > shall not contain a colon (:).When "
          "using this algorithm, the first colon to appear in the "
          "value shall appear between < OrgID > and < LocalID >. < "
          "LocalID > is chosen by the business entity and shall be "
          "used uniquely." ), 
       ModelCorrespondence { "CIM_IndicationFilter.Name" }]
   string IndicationFilterName;

      [Description ( 
          "The sequence context portion of a sequence identifier "
          "for the indication. The sequence number portion of the "
          "sequence identifier is provided by the SequenceNumber "
          "property. The combination of both property values "
          "represents the sequence identifier for the indication.\n"
          "The sequence identifier for the indication enables a CIM "
          "listener to identify duplicate indications when the CIM "
          "service attempts the delivery retry of indications, to "
          "reorder indications that arrive out-of-order, and to "
          "detect lost indications.\n"
          "If a CIM service does not support sequence identifiers "
          "for indications, this property shall be NULL.\n"
          "If a CIM service supports sequence identifiers for "
          "indications, this property shall be maintained by the "
          "CIM service for each registered listener destination, "
          "and its value shall uniquely identify the CIM service "
          "and the indication service within the CIM service such "
          "that restarts of the CIM service and deregistration of "
          "listener destinations to the CIM service cause the value "
          "to change, without reusing earlier values for a "
          "sufficiently long time.\n"
          "When retrying the delivery of an indication, this "
          "property shall have the same value as in the original delivery.\n"
          "To guarantee this uniqueness, the property value should "
          "be constructed using the following format (defined in "
          "ABNF): sequence-context = indication-service-name \"#\" "
          "cim-service-start-id \"#\" listener-destination-creation-time\n"
          "Where: indication-service-name is the value of the Name "
          "property of the CIM_IndicationService instance "
          "responsible for delivering the indication. "
          "cim-service-start-id is an identifier that uniquely "
          "identifies the CIM service start, for example via a "
          "timestamp of the start time, or via a counter that "
          "increases for each start or restart. "
          "listener-destination-creation-time is a timestamp of the "
          "creation time of the CIM_ListenerDestination instance "
          "representing the listener destination.\n"
          "Since this format is only a recommendation, CIM clients "
          "shall treat the value as an opaque identifier for the "
          "sequence context and shall not rely on this format." ), 
       ModelCorrespondence { "CIM_Indication.SequenceNumber" }]
   string SequenceContext;

      [Description ( 
          "The sequence number portion of a sequence identifier for "
          "the indication. The sequence context portion of the "
          "sequence identifier is provided by the SequenceContext "
          "property. The combination of both property values "
          "represents the sequence identifier for the indication.\n"
          "The sequence identifier for the indication enables a CIM "
          "listener to identify duplicate indications when the CIM "
          "service attempts the delivery retry of indications, to "
          "reorder indications that arrive out-of-order, and to "
          "detect lost indications.\n"
          "If a CIM service does not support sequence identifiers "
          "for indications, this property shall be NULL.\n"
          "If a CIM service supports sequence identifiers for "
          "indications, this property shall be maintained by the "
          "CIM service for each registered listener destination, "
          "and its value shall uniquely identify the indication "
          "within the sequence context provided by SequenceContext. "
          "It shall start at 0 whenever the sequence context string "
          "changes. Otherwise, it shall be increased by 1 for every "
          "new indication to that listener destination, and it "
          "shall wrap to 0 when the value range is exceeded.\n"
          "When retrying the delivery of an indication, this "
          "property shall have the same value as in the original "
          "delivery." ), 
       ModelCorrespondence { "CIM_Indication.SequenceContext" }]
   sint64 SequenceNumber;
};

// ==================================================================
//  CIM_ProcessIndication
// ==================================================================
   [Indication,  Version ( "2.6.0" ), Description (
       "An abstract superclass for specialized Indication classes, "
       "addressing specific changes and alerts published by providers "
       "and instrumentation. Subclasses include AlertIndication (with "
       "properties such as PerceivedSeverity and ProbableCause), and "
       "SNMPTrapIndication (which recasts Traps as CIM indications).")]
class CIM_ProcessIndication : CIM_Indication {
};

// ==================================================================
//  CIM_AlertIndication
// ==================================================================
   [Indication,  Version ( "2.10.0" ), Description (
       "A concrete superclass for CIM Alert notifications. An "
       "AlertIndication is a specialized type of CIM_Indication that "
       "contains information about the severity, cause, recommended "
       "actions and other data of a real world event. This event and "
       "its data may or may not be modeled in the CIM class hierarchy.")]
class CIM_AlertIndication : CIM_ProcessIndication {

      [Description (
          "A short description of the Indication."), 
       MappingStrings { "Recommendation.ITU|X733.Additional text" }]
   string Description;

      [Description (
          "The identifying information of the entity (ie, the "
          "instance) for which this Indication is generated. The "
          "property contains the path of an instance, encoded as a "
          "string parameter - if the instance is modeled in the CIM "
          "Schema. If not a CIM instance, the property contains some "
          "identifying string that names the entity for which the "
          "Alert is generated. The path or identifying string is "
          "formatted per the AlertingElementFormat property."), 
       ModelCorrespondence { 
          "CIM_AlertIndication.AlertingElementFormat" }]
   string AlertingManagedElement;

      [Description (
          "The format of the AlertingManagedElement property is "
          "interpretable based upon the value of this property. Values "
          "are defined as: \n"
          "0 - Unknown. The format is unknown or not meaningfully "
          "interpretable by a CIM client application. \n"
          "1 - Other. The format is defined by the value of the "
          "OtherAlertingElementFormat property. \n"
          "2 - CIMObjectPath. The format is a CIMObjectPath, with "
          "format <NamespacePath>:<ClassName>.<Prop1>=\"<Value1>\", "
          "<Prop2>=\"<Value2>\", . . . specifying an instance in the "
          "CIM Schema."), 
       ValueMap { "0", "1", "2" }, 
       Values { "Unknown", "Other", "CIMObjectPath" }, 
       ModelCorrespondence { 
          "CIM_AlertIndication.AlertingManagedElement",
          "CIM_AlertIndication.OtherAlertingElementFormat" }]
   uint16 AlertingElementFormat = 0;


      [Description (
          "A string defining \"Other\" values for "
          "AlertingElementFormat. This value MUST be set to a non NULL "
          "value when AlertingElementFormat is set to a value of 1 "
          "(\"Other\"). For all other values of AlertingElementFormat, "
          "the value of this string must be set to NULL."), 
       ModelCorrespondence { 
          "CIM_AlertIndication.AlertingElementFormat" }]
   string OtherAlertingElementFormat;

      [Required, Description (
          "Primary classification of the Indication. The following "
          "values are defined: \n"
          "1 - Other. The Indication's OtherAlertType property conveys "
          "its classification. Use of \"Other\" in an enumeration is a "
          "standard CIM convention. It means that the current "
          "Indication does not fit into the categories described by "
          "this enumeration. \n"
          "2 - Communications Alert. An Indication of this type is "
          "principally associated with the procedures and/or processes "
          "required to convey information from one point to another. \n"
          "3 - Quality of Service Alert. An Indication of this type is "
          "principally associated with a degradation or errors in the "
          "performance or function of an entity. \n"
          "4 - Processing Error. An Indication of this type is "
          "principally associated with a software or processing fault. "
          "\n5 - Device Alert. An Indication of this type is "
          "principally associated with an equipment or hardware fault. "
          "\n6 - Environmental Alert. An Indication of this type is "
          "principally associated with a condition relating to an "
          "enclosure in which the hardware resides, or other "
          "environmental considerations. \n"
          "7 - Model Change. The Indication addresses changes in the "
          "Information Model. For example, it may embed a Lifecycle "
          "Indication to convey the specific model change being "
          "alerted. \n"
          "8 - Security Alert. An Indication of this type is "
          "associated with security violations, detection of viruses, "
          "and similar issues."), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8" }, 
       Values { "Other", "Communications Alert",
          "Quality of Service Alert", "Processing Error",
          "Device Alert", "Environmental Alert", "Model Change",
          "Security Alert" }, 
       MappingStrings { "Recommendation.ITU|X733.Event type" }]
   uint16 AlertType;

      [Description (
          "A string describing the Alert type - used when the "
          "AlertType property is set to 1, \"Other State Change\"."), 
       ModelCorrespondence { "CIM_AlertIndication.AlertType" }]
   string OtherAlertType;

      [Required, Override ( "PerceivedSeverity" ), Description (
          "An enumerated value that describes the severity of the "
          "Alert Indication from the notifier's point of view: \n"
          "1 - Other, by CIM convention, is used to indicate that the "
          "Severity's value can be found in the OtherSeverity "
          "property. \n"
          "3 - Degraded/Warning should be used when its appropriate to "
          "let the user decide if action is needed. \n"
          "4 - Minor should be used to indicate action is needed, but "
          "the situation is not serious at this time. \n"
          "5 - Major should be used to indicate action is needed NOW. "
          "\n6 - Critical should be used to indicate action is needed "
          "NOW and the scope is broad (perhaps an imminent outage to a "
          "critical resource will result). \n"
          "7 - Fatal/NonRecoverable should be used to indicate an "
          "error occurred, but it's too late to take remedial action. "
          "\n2 and 0 - Information and Unknown (respectively) follow "
          "common usage. Literally, the AlertIndication is purely "
          "informational or its severity is simply unknown."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7" }, 
       Values { "Unknown", "Other", "Information", "Degraded/Warning",
          "Minor", "Major", "Critical", "Fatal/NonRecoverable" }, 
       MappingStrings { "Recommendation.ITU|X733.Perceived severity" }]
   uint16 PerceivedSeverity;

      [Required, Description (
          "An enumerated value that describes the probable cause of "
          "the situation which resulted in the AlertIndication."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
          "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
          "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",
          "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",
          "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",
          "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",
          "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",
          "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",
          "90", "91", "92", "93", "94", "95", "96", "97", "98", "99",
          "100", "101", "102", "103", "104", "105", "106", "107",
          "108", "109", "110", "111", "112", "113", "114", "115",
          "116", "117", "118", "119", "120", "121", "122", "123",
          "124", "125", "126", "127", "128", "129", "130" }, 
       Values { "Unknown", "Other", "Adapter/Card Error",
          "Application Subsystem Failure", "Bandwidth Reduced",
          "Connection Establishment Error",
          "Communications Protocol Error",
          "Communications Subsystem Failure",
          "Configuration/Customization Error", "Congestion",
          "Corrupt Data", "CPU Cycles Limit Exceeded",
          "Dataset/Modem Error", "Degraded Signal",
          "DTE-DCE Interface Error", "Enclosure Door Open",
          "Equipment Malfunction", "Excessive Vibration",
          "File Format Error", "Fire Detected", "Flood Detected",
          "Framing Error", "HVAC Problem", "Humidity Unacceptable",
          "I/O Device Error", "Input Device Error", "LAN Error",
          "Non-Toxic Leak Detected", "Local Node Transmission Error",
          "Loss of Frame", "Loss of Signal", 
          //31 
          "Material Supply Exhausted", "Multiplexer Problem",
          "Out of Memory", "Output Device Error",
          "Performance Degraded", "Power Problem",
          "Pressure Unacceptable",
          "Processor Problem (Internal Machine Error)", "Pump Failure",
          "Queue Size Exceeded", "Receive Failure", "Receiver Failure",
          "Remote Node Transmission Error",
          "Resource at or Nearing Capacity", "Response Time Excessive",
          "Retransmission Rate Excessive", "Software Error",
          "Software Program Abnormally Terminated",
          "Software Program Error (Incorrect Results)",
          "Storage Capacity Problem", "Temperature Unacceptable",
          "Threshold Crossed", "Timing Problem", "Toxic Leak Detected",
          "Transmit Failure", "Transmitter Failure",
          "Underlying Resource Unavailable", "Version MisMatch",
          "Previous Alert Cleared", 
          //60 
          "Login Attempts Failed", "Software Virus Detected",
          "Hardware Security Breached", "Denial of Service Detected",
          "Security Credential MisMatch", "Unauthorized Access",
          "Alarm Received", "Loss of Pointer", "Payload Mismatch",
          "Transmission Error", "Excessive Error Rate",
          "Trace Problem", "Element Unavailable", "Element Missing",
          "Loss of Multi Frame", "Broadcast Channel Failure",
          "Invalid Message Received", "Routing Failure",
          "Backplane Failure", "Identifier Duplication",
          "Protection Path Failure", "Sync Loss or Mismatch",
          "Terminal Problem", "Real Time Clock Failure",
          "Antenna Failure", "Battery Charging Failure",
          "Disk Failure", "Frequency Hopping Failure",
          "Loss of Redundancy", "Power Supply Failure",
          "Signal Quality Problem", 
          //91 
          "Battery Discharging", "Battery Failure",
          "Commercial Power Problem", "Fan Failure", "Engine Failure",
          "Sensor Failure", "Fuse Failure", "Generator Failure",
          "Low Battery", "Low Fuel", "Low Water", "Explosive Gas",
          "High Winds", "Ice Buildup", "Smoke", "Memory Mismatch",
          "Out of CPU Cycles", "Software Environment Problem",
          "Software Download Failure", "Element Reinitialized",
          "Timeout", "Logging Problems", "Leak Detected",
          "Protection Mechanism Failure", 
          //115 
          "Protecting Resource Failure", "Database Inconsistency",
          "Authentication Failure", "Breach of Confidentiality",
          "Cable Tamper", "Delayed Information",
          "Duplicate Information", "Information Missing",
          "Information Modification", "Information Out of Sequence",
          "Key Expired", "Non-Repudiation Failure",
          "Out of Hours Activity", "Out of Service",
          "Procedural Error", "Unexpected Information" }, 
       MappingStrings { "Recommendation.ITU|X733.Probable cause",
          "Recommendation.ITU|M3100.probableCause",
       "ITU-IANA-ALARM-TC" }, 
       ModelCorrespondence { 
          "CIM_AlertIndication.ProbableCauseDescription",
          "CIM_AlertIndication.EventID",
          "CIM_AlertIndication.EventTime" }]
   uint16 ProbableCause;

      [Description (
          "Provides additional information related to the "
          "ProbableCause."), 
       ModelCorrespondence { "CIM_AlertIndication.ProbableCause" }]
   string ProbableCauseDescription;

      [Description (
          "Provides information on trending - trending up, down or no "
          "change."), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Unknown", "Not Applicable", "Trending Up",
          "Trending Down", "No Change" }, 
       MappingStrings { "Recommendation.ITU|X733.TrendIndication" }]
   uint16 Trending;

      [Description (
          "Free form descriptions of the recommended actions to take "
          "to resolve the cause of the notification."), 
       MappingStrings { "Recommendation.ITU|X733.Proposed repair " 
          "actions" }]
   string RecommendedActions[];

      [Description (
          "An instrumentation or provider specific value that "
          "describes the underlying \"real-world\" event represented "
          "by the Indication. Two Indications with the same, non NULL "
          "EventID value are considered, by the creating entity, to "
          "represent the same event. The comparison of two EventID "
          "values is only defined for Alert Indications with "
          "identical, non NULL values of SystemCreateClassName, "
          "SystemName and ProviderName."), 
       ModelCorrespondence { "CIM_AlertIndication.ProbableCause" }]
   string EventID;

      [Description (
          "The time and date the underlying event was first detected. "
          "If specified, this property MUST be set to NULL if the "
          "creating entity is not capable of providing this "
          "information. This value is based on the notion of local "
          "date and time of the Managed System Element generating the "
          "Indication."), 
       ModelCorrespondence { "CIM_AlertIndication.ProbableCause" }]
   datetime EventTime;


      [Description (
          "The scoping System's CreationClassName for the Provider "
          "generating this Indication."), 
       MaxLen ( 256 )]
   string SystemCreationClassName;

      [Description (
          "The scoping System's Name for the Provider generating this "
          "Indication."), 
       MaxLen ( 256 )]
   string SystemName;

      [Description (
          "The name of the Provider generating this Indication."), 
       MaxLen ( 256 )]
   string ProviderName;

         [Required, Description (
          "A string that uniquely identifies the entity that owns the "
          "definition of the format of the Message described in this "
          "instance. OwningEntity MUST include a copyrighted, "
          "trademarked or otherwise unique name that is owned by the "
          "business entity or standards body defining the format.")]
   string OwningEntity;

      [Required, Description (
          "An opaque string that uniquely identifies, within the scope "
          "of the OwningEntity, the format of the Message.")]
   string MessageID;


      [Required, Description (
          "The formatted message. This message is constructed by "
          "applying the dynamic content of the message, described in "
          "MessageArguments, to the format string uniquely identified, "
          "within the scope of the OwningEntity, by MessageID.")]
   string Message;

      [Description (
          "An array containing the dynamic content of the message.")]
   string MessageArguments[];
   

};

// ==================================================================
//  CIM_IndicationFilter
// ==================================================================
   [ Version ( "2.22.0" ), Description (
       "CIM_IndicationFilter defines the criteria for generating an "
       "Indication and what data should be returned in the Indication. "
       "It is derived from CIM_ManagedElement to allow modeling the "
       "dependency of the filter on a specific service.")]

class CIM_IndicationFilter : CIM_ManagedElement {

      [Key, Description ( 
          "A System\'s CreationClassName. The Filter is defined in "
          "the context of a CIM_System, where it is hosted or to "
          "which it applies. In a future release, a weak "
          "relationship will be explicitly added to the model. This "
          "is not done now to allow further refinement of the "
          "Filter definition and its inheritance tree. Keys are "
          "defined now to allow the class to be instantiated." ), 
       MaxLen ( 256 )]
   string SystemCreationClassName;

      [Key, Description ( 
          "A System\'s Name. The Filter is defined in the context "
          "of a CIM_System, where it is hosted or to which it "
          "applies. In a future release, a weak relationship will "
          "be explicitly added to the model. This is not done now "
          "to allow further refinement of the Filter definition and "
          "its inheritance tree. Keys are defined now to allow the "
          "class to be instantiated." ), 
       MaxLen ( 256 )]
   string SystemName;

      [Key, Description ( 
          "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, it allows all instances of "
          "this class and its subclasses to be uniquely identified." ), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Description ( "The name of the filter." )]
   string Name;

      [Deprecated { "CIM_IndicationFilter.SourceNamespaces" }, 
       Description ( 
          "The path to a local namespace where the Indications "
          "originate. If NULL, the namespace of the Filter "
          "registration is assumed." )]
   string SourceNamespace;

      [Description ( 
          "The names of the local namespaces where the Indications "
          "originate. If NULL, the namespace of the Filter "
          "registration is assumed. SourceNamespaces replaces the "
          "SourceNamespace property on IndicationFilter to provide "
          "a means of defining the multiple namespaces where "
          "indications may originate." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_Namespace.Name" }]
   string SourceNamespaces[];

      [Description ( 
          "If IndividualSubscriptionSupported is true, the "
          "implementation shall support direct subscription to this "
          "IndicationFilter. If IndividualSubscriptionSupported is "
          "false, the implementation shall not support direct "
          "subscription to this IndicationFilter." )]
   boolean IndividualSubscriptionSupported = true;

      [Required, Description ( 
          "A query expression that defines the condition(s) under "
          "which instances of CIM_Indication will be generated. For "
          "CIM_InstIndication subclasses of CIM_Indication classes, "
          "the query expression may also define the instance "
          "properties to be copied to the CIM_InstIndication\'s "
          "SourceInstance and PreviousInstance properties. Query "
          "language semantics include projection (e.g., Select), "
          "range (e.g., From) and predicate (e.g., Where). \n"
          "When used with QueryLanguage set to \"DMTF:CQL\" or "
          "\"DMTF:CQLT\", the FROM clause shall contain at least "
          "one subclass of CIM_Indication and may contain any "
          "number of other classes or subqueries. If only one "
          "subclass of CIM_Indication is named, it defines the "
          "CIM_Indication that this Instance of "
          "CIM_IndicationFilter will produce. If more than one "
          "subclass of CIM_Indication is named, then one of them "
          "must be named explicitly in the select-list. \n"
          "The select-list must refer explicitly or implicitly to "
          "exactly one CIM_Indication subclass. In addition, it "
          "shall conform to one of several options: \n"
          "1) only a \"*\": This may only be used if the Indication "
          "subclass is the only entry on the FROM list. \n"
          "2) only a \"<Indicationclass or alias>.*\": This form "
          "may be used if the FROM clause contains more than one "
          "Indication subclass. \n"
          "3) a list of the form \"<propertyname>*[\",\"[<literal> "
          "AS ]<propertyname>]\": This form may only be used if the "
          "CIM_Indication subclass is the only entry on the FROM "
          "list. In this form, the literal is assigned to the named "
          "property of the selected CIM_Indication subclass \n"
          "4) a list of the form \"<Indicationname>.<propertyname> "
          "*[\",\" [<Indicationname>.<propertyname> |\"\": "
          "<literal> AS <propertyname> | <fromname>.<propertyname> "
          "AS <propertyname> ] ]\" : The first term selects the "
          "appropriate CIM_Indication subclass to produce. "
          "Subsequent terms allow other properties of that "
          "indication, or allow a literal or property of another "
          "class to be assigned to the output as one of the "
          "properties of the selected CIM_Indication subclass. \n"
          "Note that in all cases, only the property names of the "
          "selected CIM_Indication subclass may be referred to in "
          "the select-list.\n"
          "When used with \"DMTF:CQLT\", the additional string "
          "array property TemplateVariable should be used to "
          "provide additional filtering information to the query." ), 
       ModelCorrespondence { "CIM_IndicationFilter.QueryLanguage", 
          "CIM_IndicationFilter.TemplateVariable" }]
   string Query;

      [Required, Description ( 
          "The language in which the query is expressed. . \n"
          "\"DMTF:CQL\" indicates a CIM Query Language string. \n"
          "\"DMTF:CQLT\" indicates a CIM Query Language Template "
          "string. When used, the identifiers recognized in the "
          "$identifier$ tokens are \"SELF\" and the property names "
          "of this class, or one of its subclasses. As seen by a "
          "CIM client, the value of the Query property is not "
          "changed as a result of template processing. Template "
          "processing conceptually produces a new query string, "
          "which defines the actual conditions that will trigger "
          "production of a CIM_Indication instance. When used in "
          "the Query string, $SELF$ will be replaced by a string "
          "corresponding to a WBEM URI referencing the instance of "
          "this class that contains the Query template string. "
          "Tokens of the form $<propertyname>$ will be replaced by "
          "a string representing the corresponding property value "
          "of the instance of this class that contains the Query "
          "string. The Query string must be evaluated when the "
          "CIM_IndicationFilter is created and at any time when one "
          "any modification of any property referenced by tokens in "
          "the Query string are modified." ), 
       ModelCorrespondence { "CIM_IndicationFilter.Query", 
          "CIM_IndicationFilter.TemplateVariable" }]
   string QueryLanguage;

      [Experimental, Description ( 
          "This property may be used to hold application specific "
          "filtering information for use within a \"DMTF:CQLT\" "
          "formatted query.\n"
          "\n"
          "For example, each TemplateVariable entry might be filled "
          "with the WBEM URI formatted object path of a "
          "CIM_ManagedElement, as in the following example, which "
          "selects only indications against "
          "namedCIM_StorageSynchonized instances. It then uses SELF "
          "to select the executing IndicationFilter, and then uses "
          "the entries of the TemplateVariable array to select "
          "particular instances of CIM_StorageSynchronized.\n"
          "\n"
          "SELECT I.* \n"
          "FROM CIM_InstIndication I, CIM_IndicationFilter F \n"
          "WHERE I.SourceInstance ISA CIM_StorageSynchronized \n"
          "\tAND ObjectPath(F) = ObjectPath($SELF$)\n"
          "\tAND ANY x IN F.TemplateVariable[*]\n"
          "\t\tSATISFIES (ObjectPath(I.SourceInstanceModelPath) = "
          "ObjectPath(x))." ), 
       ModelCorrespondence { "CIM_IndicationFilter.QueryLanguage", 
          "CIM_IndicationFilter.Query" }]
   string TemplateVariable[];
};

// ==================================================================
//  CIM_ListenerDestination
// ==================================================================
   [Abstract,  Version ( "2.22.0" ), Description (
       "The description of a CIM Listener destination. A CIM_Listener "
       "is an entity capable of receiving CIM Export Messages (e.g., "
       "Indications or responses to an asynchronous CIM Operation).")]
class CIM_ListenerDestination : CIM_ManagedElement {

      [Key, Description ( 
          "A System\'s CreationClassName. A CIM Listener "
          "destination is defined in context of a CIM_System (e.g., "
          "the sending system." ), 
       MaxLen ( 256 )]
   string SystemCreationClassName;

      [Key, Description ( 
          "A System\'s Name. A CIM Listener destination is defined "
          "in context of a CIM_System (e.g., the sending system." ), 
       MaxLen ( 256 )]
   string SystemName;

      [Key, Description ( 
          "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, it allows all instances of "
          "this class and its subclasses to be uniquely identified." ), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Description ( 
          "Indicates the name of the CIM Listener destination." ), 
       MaxLen ( 256 )]
   string Name;

      [Description ( 
          "Describes the Persistence Type of the destination "
          "defined by this instance. If the value of "
          "PersistenceType is not specified, the value of "
          "PersistenceType MUST be treated as 2 (\"Permanent\"). A "
          "value of 2 (\"Permanent\") declares that the destination "
          "is always expected to be available (e.g., system log "
          "file). Inability to access this destination MUST be "
          "treated as an error condition. A value of 3 "
          "(\"Transient\") indicates that the destination is "
          "short-lived. Inability to access the destination MAY be "
          "treated as a normal termination condition. Subscriptions "
          "with \"Transient\" destinations MAY be deleted when the "
          "destination terminates or is no longer available." ), 
       ValueMap { "1", "2", "3" }, 
       Values { "Other", "Permanent", "Transient" }, 
       ModelCorrespondence { 
          "CIM_ListenerDestination.OtherPersistenceType" }]
   uint16 PersistenceType;

      [Description ( 
          "A string describing (\"Other\") values for "
          "PersistenceType. This value MUST be set to a non NULL "
          "value when the PersistenceType is 1 (\"Other\"). For all "
          "other values of PersistenceType, the value of "
          "OtherPersistenceType MUST be NULL." ), 
       ModelCorrespondence { 
          "CIM_ListenerDestination.PersistenceType" }]
   string OtherPersistenceType;

      [Description ( 
          "The destination IETF URI to which Export Messages are to "
          "be delivered. The scheme in the URI must be supported by "
          "theprotocol selected in the Protocol property." )]
   string Destination;

      [Description ( 
          "A free-form string providing a description of the "
          "supported protocols when 1, \"Other\", is specified for "
          "the Protocol." ), 
       ModelCorrespondence { "CIM_ListenerDestination.Protocol" }]
   string OtherProtocol;

      [Description ( 
          "Protocol describes an encoding and protocol which will "
          "be used to deliver the indication. If Other is used, the "
          "value for OtherProtocol must not be null.\n"
          "If a protocol is not specified, 2 \"CIM-XML\" must be "
          "assumed." ), 
       ValueMap { "1", "2", "3", "4", "5", ".." }, 
       Values { "Other", "CIM-XML", "SM CLP", "WS-Management", 
          "WSDM", "DMTF Reserved" }, 
       ModelCorrespondence { "CIM_ListenerDestination.OtherProtocol" }]
   uint16 Protocol = 2;
};

// ==================================================================
//  CIM_AbstractIndicationSubscription
// ==================================================================
   [Association, Abstract,  Version ( "2.16.0" ), Description (
       "CIM_IndicationSubscription describes a flow of Indications. "
       "The flow is specified by the referenced Filter, and directed "
       "to the referenced destination or process in the Handler. "
       "Property values of the referenced CIM_IndicationFilter "
       "instance and CIM_ListenerDestination instance MAY "
       "significantly effect the definition of the subscription. E.g., "
       "a subscription associated with a \"Transient\" destination MAY "
       "be deleted when the destination terminates or is no longer "
       "available.")]
class CIM_AbstractIndicationSubscription {

      [Key, Description ( 
          "The Filter that defines the criteria and data of the "
          "possible Indications of this subscription." )]
   CIM_ManagedElement REF Filter;

      [Key, Description ( 
          "The Handler addressing delivery of the possible "
          "Indications of this subscription." )]
   CIM_ListenerDestination REF Handler;

      [Description ( 
          "Defines the desired behavior for a subscription when a "
          "fatal error occurs in one of the Indication processing "
          "subcomponents (e.g., Indication processor, Indication or "
          "instance provider, or Indication handler) and the "
          "Indication cannot be successfully sent. Specifically, a "
          "failure implies that some aspect of Indication "
          "generation, processing or dispatch is no longer "
          "functioning and Indications may be lost. If the value of "
          "OnFatalErrorPolicy is 2 (\"Ignore\") or not set (NULL), "
          "the subscription MUST continue to be processed in a "
          "\'best effort\' mode. This mode of operation can lead to "
          "unpredictable, and potentially misleading results, "
          "because Indications may be lost. If the value is 3 "
          "(\"Disable\"), the subscription MUST be disabled. With "
          "this policy, no new Indications will be generated or "
          "dispatched until the subscription is explicitly enabled. "
          "This is accomplished via the property, "
          "SubscriptionState. If the value is 4 (\"Remove\"), the "
          "subscription MUST be deleted. Selecting this policy has "
          "the same effect as issuing a DeleteInstance operation on "
          "this subscription instance." ), 
       ValueMap { "1", "2", "3", "4" }, 
       Values { "Other", "Ignore", "Disable", "Remove" }]
   uint16 OnFatalErrorPolicy;

      [Description ( 
          "A string defining \"Other\" values for "
          "OnFatalErrorPolicy. This value MUST be set to a non NULL "
          "value when OnFatalErrorPolicy is set to a value of 1 "
          "(\"Other\"). For all other values, the "
          "OtherOnFatalErrorPolicy MUST be NULL." )]
   string OtherOnFatalErrorPolicy;

      [Description ( 
          "The FailureTriggerTimeInterval is used by the client to "
          "specify a recommended minimum delay before the "
          "OnFatalErrorPolicy is implemented." ), 
       Units ( "Seconds" ), 
       PUnit ( "second" )]
   uint64 FailureTriggerTimeInterval;

      [Write, Description ( 
          "Indicates the current processing state of the subscription."
           ), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Unknown", "Other", "Enabled", "Enabled Degraded", 
          "Disabled" }]
   uint16 SubscriptionState;

      [Description ( 
          "A string defining \"Other\" values for "
          "SubscriptionState. This value MUST be set to a non NULL "
          "value when SubscriptionState is set to a value of 1 "
          "(\"Other\"). For all other values, the "
          "OtherSubscriptionState MUST be NULL." )]
   string OtherSubscriptionState;

      [Description ( 
          "Date and time of the last state change. This value is "
          "based on the notion of local date and time of the "
          "Managed System Element running the Indication processing "
          "subcomponents." )]
   datetime TimeOfLastStateChange;

      [Write, Description ( 
          "SubscriptionDuration defines the desired length of the "
          "subscription. Indications generated after the duration "
          "of the subscription has exceeded SubscriptionDuration "
          "MUST NOT be sent. The duration of a subscription MAY be "
          "changed by modifying this property. An expired "
          "subscription MAY be deleted and MUST NOT be modified. If "
          "the value of SubscriptionDuration is not set, the "
          "subscription MUST be treated as having no expiration "
          "date." ), 
       Units ( "Seconds" ), 
       PUnit ( "second" )]
   uint64 SubscriptionDuration;

      [Description ( 
          "SubscriptionStartTime is the time the subscription was "
          "started. The value of this property is computed based on "
          "the notion of date and time of the ManagedSystemElement "
          "running the Indication processing subcomponents." )]
   datetime SubscriptionStartTime;

      [Description ( 
          "SubscriptionTimeRemaining is a computed value that "
          "provides a snapshot of the time remaining in the "
          "Subscription." ), 
       Units ( "Seconds" ), 
       PUnit ( "second" )]
   uint64 SubscriptionTimeRemaining;

      [Description ( 
          "The RepeatNotificationPolicy property defines the "
          "desired behavior for handling Indications that report "
          "the occurrence of the same underlying event (e.g., the "
          "disk is still generating I/O errors and has not yet been "
          "repaired). The defined semantics for the "
          "RepeatNotificationCount, RepeatNotificationInterval, and "
          "RepeatNotificationGap properties depend on the value of "
          "RepeatNotificationPolicy, but values for these "
          "properties MUST be set if the property is defined for "
          "the selected policy. If the value of "
          "RepeatNotificationPolicy is 0 (\"Unknown\") or not set, "
          "no special processing for repeat Indications is defined "
          "by the subscription. The semantics associated with the "
          "handling of repeat Indications MAY be defined by the "
          "Indication processing subcomponents. If the value of "
          "RepeatNotificationPolicy is 2 (\"None\"), special "
          "processing of repeat Indications MUST NOT be performed. "
          "If the value is 3 (\"Suppress\") the first "
          "RepeatNotificationCount Indications, describing the same "
          "event, MUST be sent and all subsequent Indications for "
          "this event suppressed for the remainder of the time "
          "interval RepeatNotificationInterval. A new interval "
          "starts when the next Indication for this event is "
          "received. If the value of RepeatNotificationPolicy is 4 "
          "(\"Delay\") and an Indication is received, this "
          "Indication MUST be suppressed if, including this "
          "Indication, RepeatNoticationCount or fewer Indications "
          "for this event have been received during the prior time "
          "interval defined by RepeatNotificationInterval. If this "
          "Indication is the RepeatNotificationCount + 1 "
          "Indication, this Indication MUST be sent and all "
          "subsequent Indications for this event ignored until the "
          "RepeatNotificationGap has elapsed. A "
          "RepeatNotificationInterval MAY NOT overlap a "
          "RepeatNotificationGap time interval." ), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Unknown", "Other", "None", "Suppress", "Delay" }]
   uint16 RepeatNotificationPolicy;

      [Description ( 
          "A string defining \"Other\" values for "
          "RepeatNotificationPolicy. This value MUST be set to a "
          "non NULL value when RepeatNotificationPolicy is set to a "
          "value of 1 (\"Other\"). For all other values, the "
          "OtherRepeatNotificationPolicy MUST be NULL." )]
   string OtherRepeatNotificationPolicy;

      [Description ( 
          "Defines the time interval for the repeat notification "
          "policy calculation." ), 
       Units ( "Seconds" ), 
       PUnit ( "second" )]
   uint64 RepeatNotificationInterval;

      [Description ( 
          "Defines the gap interval for the repeat notification "
          "policy calculation." ), 
       Units ( "Seconds" ), 
       PUnit ( "second" )]
   uint64 RepeatNotificationGap;

      [Description ( 
          "Defines the count property for the repeat notification "
          "policy calculation." )]
   uint16 RepeatNotificationCount;

      [Experimental, Description ( 
          "Set to TRUE if a Listener should receive an "
          "IndicationSubscriptionAlert if a state change affects "
          "the subscription. Otherwise it is set to FALSE." )]
   boolean AlertOnStateChange = false;

      [Experimental, Description ( 
          "The IndicationIdentifier for the last indication "
          "produced for this indication subscription.This property "
          "shall be updated when the indication is produced "
          "regardless if the indication was delivered to its "
          "destination." ), 
       ModelCorrespondence { "CIM_Indication.IndicationIdentifier" }]
   string LastIndicationIdentifier;

      [Experimental, Description ( 
          "The date and time of the last time an indication was "
          "produced for this subscription. This property shall be "
          "updated when the indication is produced regardless if "
          "the indication was delivered to its destination." ), 
       ModelCorrespondence { "CIM_Indication.IndicationTime" }]
   datetime LastIndicationProductionDateTime;

      [Experimental, Write, Description ( 
          "Subscription identification information. May be used by "
          "the client or protocol to store subscription "
          "identification information." )]
   string SubscriptionInfo;
};

// ==================================================================
//  CIM_IndicationSubscription
// ==================================================================
   [Association, Experimental,  Version ( "2.15.0" ), Description (
       "CIM_IndicationSubscription describes a flow of Indications. "
       "The flow is specified by the referenced Filter, and directed "
       "to the referenced destination or process in the Handler. "
       "Property values of the referenced CIM_IndicationFilter "
       "instance and CIM_ListenerDestination instance MAY "
       "significantly effect the definition of the subscription. E.g., "
       "a subscription associated with a \"Transient\" destination MAY "
       "be deleted when the destination terminates or is no longer "
       "available.")]
class CIM_IndicationSubscription : CIM_AbstractIndicationSubscription {

};

// ==================================================================
//  CIM_InstIndication
// ==================================================================
   [Indication,  Version ( "2.9.0" ), Description (
       "CIM_InstIndication is an abstract superclass describing "
       "changes to instances. Subclasses represent specific types of "
       "change notifications, such as instance creation, deletion and "
       "modification.")]
class CIM_InstIndication : CIM_Indication {

      [Required, Description (
          "A copy of the instance that changed to generate the "
          "Indication. SourceInstance contains the current values of "
          "the properties selected by the Indication Filter's Query. "
          "In the case of CIM_InstDeletion, the property values are "
          "copied before the instance is deleted."), 
       EmbeddedObject]
   string SourceInstance;


      [Description (
          "The Model Path of the SourceInstance. The following format "
          "MUST be used to encode the Model Path: \n"
          "<NamespacePath>:<ClassName>.<Prop1>=\"<Value1>\", \n"
          "<Prop2>=\"<Value2>\", ..."), 
       ModelCorrespondence { "CIM_InstIndication.SourceInstance" }]
   string SourceInstanceModelPath;

      [Description (
          "The host name or IP address of the SourceInstance."), 
       ModelCorrespondence { "CIM_InstIndication.SourceInstance" }]
   string SourceInstanceHost;

};

// ==================================================================
//  CIM_InstCreation
// ==================================================================
   [Indication,  Version ( "2.6.0" ), Description (
       "CIM_InstCreation notifies when a new instance is created.")]
class CIM_InstCreation : CIM_InstIndication {
};

// ==================================================================
//  CIM_InstDeletion
// ==================================================================
   [Indication,  Version ( "2.6.0" ), Description (
       "CIM_InstDeletion notifies when an existing instance is "
       "deleted.")]
class CIM_InstDeletion : CIM_InstIndication {
};

// ==================================================================
//  CIM_InstModification
// ==================================================================
   [Indication,  Version ( "2.6.0" ), Description (
       "CIM_InstModification notifies when an instance is modified.")]
class CIM_InstModification : CIM_InstIndication {

      [Required, Description (
          "A copy of the 'previous' instance whose change generated "
          "the Indication. PreviousInstance contains 'older' values of "
          "an instance's properties (as compared to SourceInstance), "
          "selected by the IndicationFilter's Query."), 
       EmbeddedObject]
   string PreviousInstance;
};

// ==================================================================
//  CIM_ListenerDestinationCIMXML
// ==================================================================
   [ Version ( "2.22.0" ), Description (
       "CIM_ListenerDestinationCIMXML describes the destination for "
       "CIM Export Messages to be delivered via CIM-XML.")]
class CIM_ListenerDestinationCIMXML : CIM_ListenerDestination {

      [Required, Description (
          "The destination URL to which CIM-XML Export Messages are to "
          "be delivered.The scheme prefix MUST be consistent with the "
          "DMTF CIM-XML specifications.If a scheme prefix is not "
          "specified, the scheme \"http:\" MUST be assumed.")]
   string Destination;
};

// ==================================================================
//  CIM_System
// ==================================================================
   [Abstract,  Version ( "2.15.0" ), Description (
       "CIM_System represents an entity made up of component parts "
       "(defined by the SystemComponent relationship), that operates "
       "as a 'functional whole'. Systems are top level objects in the "
       "CIM hierarchy, requiring no scoping or weak relationships in "
       "order to exist and have context. It should be reasonable to "
       "uniquely name and manage a System at an enterprise level. For "
       "example, a ComputerSystem is a kind of System that can be "
       "uniquely named and independently managed in an enterprise. "
       "However, this is not true for the power supply (or the power "
       "supply sub-'system') within the computer. \n"
       "\n"
       "Although a System may be viewed as a Collection, this is not "
       "the correct model. A Collection is simply a 'bag' that 'holds' "
       "its members. A System is a higher level abstraction, built out "
       "of its individual components. It is more than a sum of its "
       "parts. Note that System is a subclass of EnabledLogicalElement "
       "which allows the entire abstraction to be functionally "
       "enabled/disabled - at a higher level than enabling/disabling "
       "its component parts.")]
class CIM_System : CIM_EnabledLogicalElement {

      [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 ( "Name" ), Description (
          "The inherited Name serves as the key of a System instance "
          "in an enterprise environment."), 
       MaxLen ( 256 )]
   string Name;

      [Description (
          "The System object and its derivatives are top-level objects "
          "of CIM. They provide the scope for numerous components. "
          "Having unique System keys is required. A heuristic can be "
          "defined in individual System subclasses to attempt to "
          "always generate the same System Name Key. The NameFormat "
          "property identifies how the System name was generated, "
          "using the heuristic of the subclass."), 
       MaxLen ( 64 )]
   string NameFormat;

      [Write, Description (
          "The name of the primary system owner. The system owner is "
          "the primary user of the system."), 
       MaxLen ( 64 ), 
       MappingStrings { "MIF.DMTF|General Information|001.3" }]
   string PrimaryOwnerName;

      [Write, Description (
          "A string that provides information on how the primary "
          "system owner can be reached (for example, phone number, "
          "e-mail address, and so on)."), 
       MaxLen ( 256 ), 
       MappingStrings { "MIF.DMTF|General Information|001.4" }]
   string PrimaryOwnerContact;

      [Write, Description (
          "An array (bag) of strings that specifies the administrator "
          "-defined roles this System plays in the managed "
          "environment. Examples might be 'Building 8 print server' or "
          "'Boise user directories'. A single system may perform "
          "multiple roles. \n"
          "Note that the instrumentation view of the 'roles' of a "
          "System is defined by instantiating a specific subclass of "
          "System, or by properties in a subclass, or both. For "
          "example, the purpose of a ComputerSystem is defined using "
          "the Dedicated and OtherDedicatedDescription properties.")]
   string Roles[];

      [Description (
          "OtherIdentifyingInfo captures additional data, beyond "
          "System Name information, that could be used to identify a "
          "ComputerSystem. One example would be to hold the Fibre "
          "Channel World-Wide Name (WWN) of a node. Note that if only "
          "the Fibre Channel name is available and is unique (able to "
          "be used as the System key), then this property would be "
          "NULL and the WWN would become the System key, its data "
          "placed in the Name property."), 
       ArrayType ( "Indexed" ), MaxLen ( 256 ), 
       ModelCorrespondence { "CIM_System.IdentifyingDescriptions" }]
   string OtherIdentifyingInfo[];

      [Description (
          "An array of free-form strings providing explanations and "
          "details behind the entries in the OtherIdentifying Info "
          "array. Note, each entry of this array is related to the "
          "entry in OtherIdentifyingInfo that is located at the same "
          "index."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_System.OtherIdentifyingInfo" }]
   string IdentifyingDescriptions[];

};

// ==================================================================
//  CIM_SystemComponent
// ==================================================================
   [Association, Abstract, Aggregation,  Version ( "2.10.0" ), Description (
       "CIM_SystemComponent is a specialization of the CIM_Component "
       "association that establishes 'part of' relationships between a "
       "System and any ManagedSystemElements of which it is composed. "
       "\nUse this association with caution when using it instead of a "
       "subclass such as SystemDevice or a peer association such as "
       "HostedService. This class is very broadly defined, which can "
       "lead to erroneous use. For example, Access Points that are "
       "dependent on (and hosted on) a System are NOT Components of "
       "the System. The System is not made up of any AccessPoint "
       "'parts', which is why a Dependency association, "
       "HostedAccessPoint, was defined. Similarly, a PhysicalPackage "
       "is not a 'part' of a System, because the physical element "
       "exists independently of any internal components, software, and "
       "so on. In fact, again, a Dependency relationship is true where "
       "a ComputerSystem is Dependent on its packaging, as described "
       "by the ComputerSystemPackage association.")]
class CIM_SystemComponent : CIM_Component {

      [Aggregate, Override ( "GroupComponent" ), Description (
          "The parent System in the Association.")]
   CIM_System REF GroupComponent;

      [Override ( "PartComponent" ), Description (
          "The child element that is a component of a System.")]
   CIM_ManagedSystemElement REF PartComponent;
};

// ==================================================================
//  CIM_ComputerSystem
// ==================================================================
   [Abstract,  Version ( "2.15.0" ), Description (
       "A class derived from System that is a special collection of "
       "ManagedSystemElements. This collection provides compute "
       "capabilities and serves as aggregation point to associate one "
       "or more of the following elements: FileSystem, "
       "OperatingSystem, Processor and Memory (Volatile and/or "
       "NonVolatile Storage).")]
class CIM_ComputerSystem : CIM_System {

      [Override ( "NameFormat" ), Description (
          "The ComputerSystem object and its derivatives are Top Level "
          "Objects of CIM. They provide the scope for numerous "
          "components. Having unique System keys is required. The "
          "NameFormat property identifies how the ComputerSystem Name "
          "is generated. The NameFormat ValueMap qualifier defines the "
          "various mechanisms for assigning the name. Note that "
          "another name can be assigned and used for the "
          "ComputerSystem that better suit a business, using the "
          "inherited ElementName property."), 
       ValueMap { "Other", "IP", "Dial", "HID", "NWA", "HWA", "X25",
          "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI",
          "WWN", "NAA" }]
   string NameFormat;

      [Description (
          "Enumeration indicating the purpose(s) to which the "
          "ComputerSystem is dedicated, if any, and what functionality "
          "is provided. For example, one could specify that the System "
          "is dedicated to \"Print\" (value=11) or acts as a \"Hub\" "
          "(value=8). \n"
          "Also, one could indicate that this is a general purpose "
          "system by indicating 'Not Dedicated' (value=0) but that it "
          "also hosts 'Print' (value=11) or mobile phone 'Mobile User "
          "Device' (value=17) services. \n"
          "A clarification is needed with respect to the value 17 "
          "(\"Mobile User Device\"). An example of a dedicated user "
          "device is a mobile phone or a barcode scanner in a store "
          "that communicates via radio frequency. These systems are "
          "quite limited in functionality and programmability, and are "
          "not considered 'general purpose' computing platforms. "
          "Alternately, an example of a mobile system that is 'general "
          "purpose' (i.e., is NOT dedicated) is a hand-held computer. "
          "Although limited in its programmability, new software can "
          "be downloaded and its functionality expanded by the user. \n"
          "A value of \"Management\" indicates this instance is "
          "dedicated to hosting system management software. \n"
          "A value of \"Management Controller\" indicates this "
          "instance represents specialized hardware dedicated to "
          "systems management (i.e., a Baseboard Management Controller "
          "(BMC) or service processor). \n"
          "The management scope of a \"Management Controller\" is "
          "typically a single managed system in which it is contained. "
          "\nA value of \"Chassis Manager\" indicates this instance "
          "represents a system dedicated to management of a blade "
          "chassis and its contained devices. This value would be used "
          "to represent a Shelf Controller. A \"Chassis Manager\" is "
          "an aggregation point for management and may rely on "
          "subordinate management controllers for the management of "
          "constituent parts. A value of \"Host-based RAID "
          "Controller\" indicates this instance represents a RAID "
          "storage controller contained within a host computer. A "
          "value of \"Storage Device Enclosure\" indicates this "
          "instance represents an enclosure that contains storage "
          "devices."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
          "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
          "30", "31", "32", "33", "34..32567", "32568..65535" }, 
       Values { "Not Dedicated", "Unknown", "Other", "Storage",
          "Router", "Switch", "Layer 3 Switch",
          "Central Office Switch", "Hub", "Access Server", "Firewall",
          "Print", "I/O", "Web Caching", "Management", "Block Server",
          "File Server", "Mobile User Device", "Repeater",
          "Bridge/Extender", "Gateway", "Storage Virtualizer",
          "Media Library", "ExtenderNode", "NAS Head",
          "Self-contained NAS", "UPS", "IP Phone",
          "Management Controller", "Chassis Manager",
          "Host-based RAID controller", "Storage Device Enclosure",
          "Desktop", "Laptop", "DMTF Reserved", "Vendor Reserved" },
       ArrayType ( "Indexed" ), 
       MappingStrings { "MIB.IETF|MIB-II.sysServices",
          "FC-GS.INCITS-T11 | Platform | PlatformType" }, 
       ModelCorrespondence { 
          "CIM_ComputerSystem.OtherDedicatedDescriptions" }]
   uint16 Dedicated[];

      [Description (
          "A string describing how or why the system is dedicated when "
          "the Dedicated array includes the value 2, \"Other\"."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_ComputerSystem.Dedicated" }]
   string OtherDedicatedDescriptions[];

      [Description (
          "If enabled (value = 4), the ComputerSystem can be reset via "
          "hardware (e.g. the power and reset buttons). If disabled "
          "(value = 3), hardware reset is not allowed. In addition to "
          "Enabled and Disabled, other Values for the property are "
          "also defined - \"Not Implemented\" (5), \"Other\" (1) and "
          "\"Unknown\" (2)."), 
       ValueMap { "1", "2", "3", "4", "5" }, 
       Values { "Other", "Unknown", "Disabled", "Enabled",
          "Not Implemented" }, 
       MappingStrings { "MIF.DMTF|System Hardware Security|001.4" }]
   uint16 ResetCapability;

      [Deprecated { "CIM_PowerManagementCapabilities.PowerCapabilities" 
          }, Description (
          "An enumerated array describing the power management "
          "capabilities of the ComputerSystem. The use of this "
          "property has been deprecated. Instead, the Power "
          "Capabilites property in an associated PowerManagement "
          "Capabilities class should be used."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7" }, 
       Values { "Unknown", "Not Supported", "Disabled", "Enabled",
          "Power Saving Modes Entered Automatically",
          "Power State Settable", "Power Cycling Supported",
          "Timed Power On Supported" }, 
       MappingStrings { "MIF.DMTF|System Power Controls|001.2" }]
   uint16 PowerManagementCapabilities[];

      [Deprecated { "CIM_PowerManagementService.SetPowerState" }, 
       Description (
          "Sets the power state of the computer. The use of this "
          "method has been deprecated. Instead, use the SetPowerState "
          "method in the associated PowerManagementService class.")]
   uint32 SetPowerState( 
         [IN, Description (
             "The Desired state for the COmputerSystem."), 
          ValueMap { "1", "2", "3", "4", "5", "6", "7", "8" }, 
          Values { "Full Power", "Power Save - Low Power Mode",
             "Power Save - Standby", "Power Save - Other",
             "Power Cycle", "Power Off", "Hibernate", "Soft Off" }]
      uint32 PowerState, 
         [IN, Description (
             "Time indicates when the power state should be set, "
             "either as a regular date-time value or as an interval "
             "value (where the interval begins when the method "
             "invocation is received.")]
      datetime Time); 
};


// ==================================================================
//  CIM_CompositeExtent
// ==================================================================
   [Abstract,  Version ( "2.7.0" ), Description (
       "A CompositeExtent is used to model the distribution of user "
       "data across one or more underlying StorageExtents, which may "
       "or not be protected by some redundancy mechanism. "
       "CompositeExtents represent a contiguous range of logical "
       "blocks. CompositeExtents may overlap, however, the underlying "
       "StorageExtents within the overlap shall not contain any check "
       "data. Distribution of check data may be specified using the "
       "CompositeExtentBasedOn association.")]
class CIM_CompositeExtent : CIM_StorageExtent {

      [Override ( "NumberOfBlocks" ), 
       MappingStrings { "MIF.DMTF|Volume Set|001.3" }]
   uint64 NumberOfBlocks;

      [Description (
          "Number of contiguous underlying StorageExtents counted "
          "before looping back to the first underlying StorageExtent "
          "of the current stripe. It is the number of StorageExtents "
          "forming the user data stripe."), 
       MappingStrings { "MIF.DMTF|Volume Set|001.4" }]
   uint64 ExtentStripeLength;

      [Description (
          "Number of StorageExtents to stripe as a collective set. In "
          "SCC, this value is defined as the number of stripes to "
          "count before continuing to map into the next contiguous set "
          "of Extents, beyond the current stripe."), 
       MappingStrings { "MIF.DMTF|Volume Set|001.5" }]
   uint64 ExtentInterleaveDepth;

      [Description (
          "True indicates that the data is concatenated across the "
          "various StorageExtents in the Group.")]
   boolean IsConcatenated;
};

// ==================================================================
//  CIM_CompositeExtentBasedOn
// ==================================================================
   [Association, Abstract,  Version ( "2.19.0" ), Description (
       "This specialization defines how data is striped across "
       "StorageExtents. Additionally, it includes information on "
       "distribution of check data so that the 'usual case' RAID "
       "devices can be created in one step.")]
class CIM_CompositeExtentBasedOn : CIM_BasedOn {

      [Override ( "Antecedent" ), 
       Min ( 1 ), 
       Description ( "The underlying StorageExtent." )]
   CIM_StorageExtent REF Antecedent;

      [Override ( "Dependent" ), 
       Description ( 
          "The StorageExtent which is built on the StorageExtent." )]
   CIM_StorageExtent REF Dependent;

      [Required, Override ( "OrderIndex" ), 
       Description ( 
          "Order matters to composite extents. An example of the "
          "use of this property is when defining a RAID-0 striped "
          "array of 3 disks. The resultant RAID array is a "
          "composite extent that is dependent on (as described by "
          "CompositeExtentBasedOn) the StorageExtents that "
          "represent each of the 3 disks. The OrderIndex of each "
          "CompositeExtentBasedOn association from the disk Extents "
          "to the RAID array could be specified as 1, 2 and 3 to "
          "indicate the order in which the disk Extents are used to "
          "access the RAID data." ), 
       MappingStrings { "MIF.DMTF|Protected Space Extent|001.1" }]
   uint16 OrderIndex;

      [Description ( 
          "True if logical blocks in the underlying StorageExtents "
          "are mapped in decrementing order. This property "
          "corresponds to the INCDEC value in the SCSI SCC-2 Volume "
          "Set PS_Extent Descriptor." )]
   boolean LBAsMappedByDecrementing;

      [Description ( 
          "True if the logical block mapping algorithm includes "
          "check data bytes. This property corresponds to the "
          "NOCHKSKIP attribute in the SCC-2 Volume Set PS_Extent "
          "Descriptor." )]
   boolean LBAMappingIncludesCheckData;

      [Description ( 
          "The total number of blocks that will be consumed on the "
          "Dependent Extent. This is limited by the Antecedent\'s "
          "NumberOfBlocks, but is included explicitly to provide "
          "for the DMTF MIF mapping. In SCSI SCC, this is "
          "equivalent to the NUMBER OF LBA_PS(s) field in the "
          "Volume Set PS_Extent Descriptor." ), 
       MappingStrings { "MIF.DMTF|Protected Space Extent|001.3" }, 
       ModelCorrespondence { "CIM_StorageExtent.NumberOfBlocks" }]
   uint64 NumberOfBlocks;

      [Description ( 
          "The Dependent\'s BlockSize is limited by the "
          "Antecedent\'s. In SCSI SCC, this is equivalent to the "
          "NUMBER OF BYTES PER LBA_PS field in the RedundancyGroup "
          "P_Extent Descriptor." ), 
       Units ( "Bytes" ), 
       MappingStrings { "MIF.DMTF|Protected Space Extent|001.4" }, 
       ModelCorrespondence { "CIM_StorageExtent.BlockSize" }, 
       PUnit ( "byte" )]
   uint64 BlockSize;

      [Description ( 
          "Number of bytes which form the stripe size for the "
          "Dependent StorageExtent. If the CompositeExtent is "
          "concatenated instead of striped, then "
          "UserDataStripeDepth should be set to zero." ), 
       Units ( "Bytes" ), 
       MappingStrings { "MIF.DMTF|Protected Space Extent|001.6" }, 
       PUnit ( "byte" )]
   uint64 UserDataStripeDepth;

      [Description ( 
          "Number of bytes of user data to skip before starting the "
          "check data interleave." ), 
       Units ( "Bytes" ), 
       MappingStrings { "MIF.DMTF|Physical Extent|001.6" }, 
       PUnit ( "byte" )]
   uint64 UnitsBeforeCheckDataInterleave;

      [Description ( 
          "Number of bytes to be reserved for check data." ), 
       Units ( "Bytes" ), 
       MappingStrings { "MIF.DMTF|Physical Extent|001.7" }, 
       PUnit ( "byte" )]
   uint64 UnitsOfCheckData;

      [Description ( "Number of bytes to be reserved for user data." ), 
       Units ( "Bytes" ), 
       MappingStrings { "MIF.DMTF|Physical Extent|001.8" }, 
       PUnit ( "byte" )]
   uint64 UnitsOfUserData;

};
// ==================================================================
//  CIM_ConcreteComponent
// ==================================================================
   [Association, Abstract, Aggregation,  Version ( "2.10.0" ), Description (
       "CIM_ConcreteComponent is a generic association used to "
       "establish 'part of' relationships between ManagedElements. It "
       "is defined as a concrete subclass of the abstract "
       "CIM_Component class, to be used in place of many specific "
       "subclasses of Component that add no semantics, that is "
       "subclasses that do not clarify the type of composition, update "
       "cardinalities, or add or remove qualifiers. Note that when you "
       "define additional semantics for Component, this class must not "
       "be subclassed. Specific semantics continue to be defined as "
       "subclasses of the abstract CIM_Component. ConcreteComponent is "
       "limited in its use as a concrete form of a general "
       "composition. \n"
       "\n"
       "It was deemed more prudent to create this concrete subclass "
       "than to change Component from an abstract to a concrete class. "
       "Industry usage and impact could not be anticipated.")]
class CIM_ConcreteComponent : CIM_Component {

      [Aggregate, Override ( "GroupComponent" ), Description (
          "The parent element in the association.")]
   CIM_ManagedElement REF GroupComponent;

      [Override ( "PartComponent" ), Description (
          "The child element in the association.")]
   CIM_ManagedElement REF PartComponent;
};

// ==================================================================
//  CIM_ConcreteDependency
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "CIM_ConcreteDependency is a generic association used to "
       "establish dependency relationships between ManagedElements. It "
       "is defined as a concrete subclass of the abstract "
       "CIM_Dependency class, to be used in place of many specific "
       "subclasses of Dependency that add no semantics, that is "
       "subclasses that do not clarify the type of dependency, update "
       "cardinalities, or add or remove qualifiers. Note that when you "
       "define additional semantics for Dependency, this class must "
       "not be subclassed. Specific semantics continue to be defined "
       "as subclasses of the abstract CIM_Dependency. "
       "ConcreteDependency is limited in its use as a concrete form of "
       "a general dependency. \n"
       "\n"
       "It was deemed more prudent to create this concrete subclass "
       "than to change Dependency from an abstract to a concrete "
       "class. Dependency already had multiple abstract subclasses in "
       "the CIM Schema, and wider industry usage and impact could not "
       "be anticipated.")]
class CIM_ConcreteDependency : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "Antecedent represents the independent object in this "
          "association.")]
   CIM_ManagedElement REF Antecedent;

      [Override ( "Dependent" ), Description (
          "Dependent represents the object that is dependent on the "
          "Antecedent.")]
   CIM_ManagedElement REF Dependent;
};

// ==================================================================
//  CIM_LogicalIdentity
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "CIM_LogicalIdentity is an abstract and generic association, "
       "indicating that two ManagedElements represent different "
       "aspects of the same underlying entity. This relationship "
       "conveys what could be defined with multiple inheritance. In "
       "most scenarios, the Identity relationship is determined by the "
       "equivalence of Keys or some other identifying properties of "
       "the related Elements. \n"
       "\n"
       "This relationship is reasonable in several scenarios. For "
       "example, it could be used to represent that a LogicalDevice is "
       "both a 'bus' entity and a 'functional' entity. A Device could "
       "be both a USB (bus) and a Keyboard (functional) entity.")]
class CIM_LogicalIdentity {

      [Key, Description (
          "SystemElement represents one aspect of the Managed Element. "
          "The use of 'System' in the role name does not limit the "
          "scope of the association. The role name was defined in the "
          "original association, where the referenced elements were "
          "limited to LogicalElements. Since that time, it has been "
          "found valuable to instantiate these types of relationships "
          "for ManagedElements, such as Collections. So, the "
          "referenced elements of the association were redefined to be "
          "ManagedElements. Unfortunately, the role name could not be "
          "changed without deprecating the entire association. This "
          "was not deemed necessary just to correct the role name.")]
   CIM_ManagedElement REF SystemElement;

      [Key, Description (
          "SameElement represents an alternate aspect of the "
          "ManagedElement.")]
   CIM_ManagedElement REF SameElement;
};

// ==================================================================
//  CIM_ConcreteIdentity
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "CIM_ConcreteIdentity associates two elements that represent "
       "different aspects of the same underlying entity. It is defined "
       "as a concrete subclass of the abstract CIM_LogicalIdentity "
       "class, to be used in place of many specific subclasses of "
       "LogicalIdentity that add no semantics, that is, subclasses "
       "that do not clarify the type of identity, update "
       "cardinalities, or add or remove qualifiers. Note that when you "
       "define additional semantics for LogicalIdentity, this class "
       "should not be subclassed. Specific semantics continue to be "
       "defined as subclasses of the abstract CIM_LogicalIdentity. "
       "ConcreteIdentity is limited in its use as a concrete form of a "
       "general identity relationship. \n"
       "\n"
       "It was deemed more prudent to create this concrete subclass "
       "than to change LogicalIdentity from an abstract to a concrete "
       "class. LogicalIdentity already had multiple abstract "
       "subclasses in the CIM Schema, and wider industry usage and "
       "impact could not be anticipated.")]
class CIM_ConcreteIdentity : CIM_LogicalIdentity {

      [Override ( "SystemElement" ), Description (
          "One aspect of the ManagedElement. The use of 'System' in "
          "the name does not limit the scope of the association. This "
          "name is an artifact of the original definition of the "
          "association.")]
   CIM_ManagedElement REF SystemElement;

      [Override ( "SameElement" ), Description (
          "Another aspect of the ManagedElement.")]
   CIM_ManagedElement REF SameElement;
};

// ==================================================================
//  CIM_SystemSpecificCollection
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "SystemSpecificCollection represents the general concept of a "
       "collection that is scoped (or contained) by a System. It "
       "represents a Collection that has meaning only in the context "
       "of a System, a Collection whose elements are restricted by the "
       "definition of the System, or both of these types of "
       "Collections. This meaning is explicitly described by the "
       "(required) association, HostedCollection. \n"
       "An example of a SystemSpecificCollection is a Fibre Channel "
       "zone that collects network ports, port groupings, and aliases "
       "(as required by a customer) in the context of an AdminDomain. "
       "The Collection is not a part of the domain, but merely an "
       "arbitrary grouping of the devices and other Collections in the "
       "domain. In other words, the context of the Collection is "
       "restricted to the domain, and its members are also limited by "
       "the domain.")]
class CIM_SystemSpecificCollection : CIM_Collection {

      [Key, Description (
          "Within the scope of the instantiating Namespace, InstanceID "
          "opaquely and uniquely identifies an instance of this class. "
          "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 unique name. It can be a "
          "copyrighted, trademarked, or otherwise unique name that is "
          "owned by the business entity that is creating or defining "
          "the InstanceID. Or, it could be a registered ID that is "
          "assigned to the business entity by a recognized global "
          "authority. (This requirement 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 ensure that the resulting "
          "InstanceID is not re-used as any of InstanceIDs produced by "
          "this or other providers for the NameSpace of this instance. "
          "\nFor DMTF-defined instances, the 'preferred' algorithm "
          "must be used with the <OrgID> set to 'CIM'.")]
   string InstanceID;
};

// ==================================================================
//  CIM_ConnectivityCollection
// ==================================================================
   [Abstract,  Version ( "2.7.0" ), Description (
       "A ConnectivityCollection groups together a set of "
       "ProtocolEndpoints of the same 'type' (i.e., class) which are "
       "able to communicate with each other. It may also group related "
       "Systems, users or other ManagedElements. A "
       "ConnectivityCollection represents the ability to send and/or "
       "receive data over a set of ProtocolEndpoints. The collection "
       "is defined in the context of an AdminDomain or scoping "
       "ComputerSystem. This is mandated by the Hosted Collection "
       "association on the SystemSpecificCollection superclass. Note "
       "that the entities aggregated into the Collection are specified "
       "using the association, MemberOfCollection.")]
class CIM_ConnectivityCollection : CIM_SystemSpecificCollection {

      [Description (
          "An enumeration describing the current or potential "
          "connectivity between endpoints in this collection. "
          "Connectivity may be provided or not, or may be in a "
          "degraded/partitioned state if one or more endpoints or "
          "links have failed. The latter would prevent full "
          "connectivity between all elements in the Collection, but "
          "would permit connectivity between subsets."), 
       ValueMap { "0", "2", "3", "4" }, 
       Values { "Unknown", "Connectivity/Up", "No Connectivity/Down",
          "Partitioned" }]
   uint16 ConnectivityStatus;
};

// ==================================================================
//  CIM_Container
// ==================================================================
   [Association, Abstract, Aggregation,  Version ( "2.6.0" ), Description (
       "The Container association represents the relationship between "
       "a contained and a containing PhysicalElement. A containing "
       "object must be a PhysicalPackage.")]
class CIM_Container : CIM_Component {

      [Aggregate, Override ( "GroupComponent" ), Max ( 1 ), 
       Description (
          "The PhysicalPackage that contains other PhysicalElements, "
          "including other Packages."), 
       MappingStrings { "MIB.IETF|Entity-MIB.entPhysicalContainedIn" }]
   CIM_PhysicalPackage REF GroupComponent;

      [Override ( "PartComponent" ), Description (
          "The PhysicalElement which is contained in the Package.")]
   CIM_PhysicalElement REF PartComponent;

      [Description (
          "A free-form string representing the positioning of the "
          "PhysicalElement within the PhysicalPackage. Information "
          "relative to stationary elements in the Container (for "
          "example, 'second drive bay from the top'), angles, "
          "altitudes and other data may be recorded in this property. "
          "This string could supplement or be used in place of "
          "instantiating the CIM_Location object."), 
       MappingStrings { "MIB.IETF|Entity-MIB.entPhysicalParentRelPos" }]
   string LocationWithinContainer;
};

// ==================================================================
//  CIM_ConnectorOnPackage
// ==================================================================
   [Association, Abstract, Aggregation,  Version ( "2.6.0" ), Description (
       "PhysicalPackages contain Connectors as well as other "
       "PhysicalElements. The ConnectorOnPackage association makes "
       "explicit the containment relationship between Connectors and "
       "Packages.")]
class CIM_ConnectorOnPackage : CIM_Container {

      [Aggregate, Override ( "GroupComponent" ), Max ( 1 ), 
       Description (
          "The PhysicalPackage that has a Connector.")]
   CIM_PhysicalPackage REF GroupComponent;

      [Override ( "PartComponent" ), Description (
          "The PhysicalConnector.")]
   CIM_PhysicalConnector REF PartComponent;
};

// ==================================================================
//  CIM_DeviceConnection
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "The DeviceConnection relationship indicates that two or more "
       "Devices are connected together.")]
class CIM_DeviceConnection : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "A LogicalDevice.")]
   CIM_LogicalDevice REF Antecedent;

      [Override ( "Dependent" ), Description (
          "A second LogicalDevice that is connected to the Antecedent "
          "Device.")]
   CIM_LogicalDevice REF Dependent;

      [Description (
          "When several bus and connection speeds are possible, the "
          "NegotiatedSpeed property defines the one that is in use "
          "between the Devices. Speed is specified in bits per second. "
          "If connection or bus speeds are not negotiated, or if this "
          "information is not available or not important to Device "
          "management, the property should be set to 0."), 
       Units ( "Bits per Second" ), 
       MappingStrings { "MIF.DMTF|Bus Port Association|001.2" }]
   uint64 NegotiatedSpeed;

      [Description (
          "When several bus and connection data widths are possible, "
          "the NegotiatedDataWidth property defines the one that is in "
          "use between the Devices. Data width is specified in bits. "
          "If data width is not negotiated, or if this information is "
          "not available or not important to Device management, the "
          "property should be set to 0."), 
       Units ( "Bits" ), 
       MappingStrings { "MIF.DMTF|Bus Port Association|001.3" }]
   uint32 NegotiatedDataWidth;
};

// ===================================================================
// CIM_Controller
// ===================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "Controller is a superclass for grouping the miscellaneous "
       "control-related Devices that provide a classic bus master "
       "interface. Examples of Controllers are USBControllers, "
       "SerialControllers, and so on. The Controller class is an "
       "abstraction for Devices with a single protocol stack, which "
       "exist to control communications (data, control, and reset) to "
       "downstream devices. Note that a new abstract class "
       "(ProtocolController) has been created to model more complex "
       "interface controllers such as SCSI.")]
class CIM_Controller : CIM_LogicalDevice {

      [Description (
          "Time of last reset of the Controller.")]
   datetime TimeOfLastReset;

      [Description (
          "The protocol used by the Controller to access controlled "
          "Devices."), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
          "11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
          "21", "22", "23", "24", "25", "26", "27", "28", "29", "30",
          "31", "32", "33", "34", "35", "36", "37", "38", "39", "40",
          "41", "42", "43", "44", "45", "46", "47", "48" }, 
       Values { "Other", "Unknown", "EISA", "ISA", "PCI", "ATA/ATAPI",
          "Flexible Diskette", "1496", "SCSI Parallel Interface", 
          // 10                
          "SCSI Fibre Channel Protocol", "SCSI Serial Bus Protocol",
          "SCSI Serial Bus Protocol-2 (1394)",
          "SCSI Serial Storage Architecture", "VESA", "PCMCIA",
          "Universal Serial Bus", "Parallel Protocol", "ESCON",
          "Diagnostic", 
          // 20                
          "I2C", "Power", "HIPPI", "MultiBus", "VME", "IPI",
          "IEEE-488", "RS232", "IEEE 802.3 10BASE5",
          "IEEE 802.3 10BASE2", 
          // 30                
          "IEEE 802.3 1BASE5", "IEEE 802.3 10BROAD36",
          "IEEE 802.3 100BASEVG", "IEEE 802.5 Token-Ring",
          "ANSI X3T9.5 FDDI", "MCA", "ESDI", "IDE", "CMD", "ST506", 
          // 40                
          "DSSI", "QIC2", "Enhanced ATA/IDE", "AGP",
          "TWIRP (two-way infrared)", "FIR (fast infrared)",
          "SIR (serial infrared)", "IrBus", "Serial ATA" }, 
       MappingStrings { "MIF.DMTF|Bus Port|004.2",
          "MIF.DMTF|Disks|003.3" }, 
       ModelCorrespondence { "CIM_Controller.ProtocolDescription" }]
   uint16 ProtocolSupported;

      [Description (
          "Maximum number of directly addressable entities that are "
          "supported by this Controller. A value of 0 should be used "
          "if the number is unknown or unlimited."), 
       MappingStrings { "MIF.DMTF|Bus Port|004.9" }]
   uint32 MaxNumberControlled;

      [Description (
          "A free-form string that provides more information that is "
          "related to the ProtocolSupported by the Controller."), 
       MappingStrings { "MIF.DMTF|Bus Port|004.3" }, 
       ModelCorrespondence { "CIM_Controller.ProtocolSupported" }]
   string ProtocolDescription;
};

// ==================================================================
//  CIM_ControlledBy
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "The ControlledBy relationship indicates which Devices are "
       "controlled by a CIM_Controller.")]
class CIM_ControlledBy : CIM_DeviceConnection {

      [Override ( "Antecedent" ), Description (
          "The Controller.")]
   CIM_Controller REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The controlled Device.")]
   CIM_LogicalDevice REF Dependent;

      [Description (
          "The State property indicates whether the Controller is "
          "actively commanding or accessing the Device (value=1) or "
          "not (value=2). Also, the value, \"Unknown\" (0), can be "
          "defined. This information is necessary when a LogicalDevice "
          "can be commanded by, or accessed through, multiple "
          "Controllers."), 
       ValueMap { "0", "1", "2" }, 
       Values { "Unknown", "Active", "Inactive" }]
   uint16 AccessState;

      [Description (
          "The time that the downstream Device was last reset by the "
          "Controller.")]
   datetime TimeOfDeviceReset;

      [Description (
          "Number of hard resets issued by the Controller. A hard "
          "reset returns the Device to its initialization or boot-up "
          "state. All internal Device state information and data are "
          "lost."), 
       Counter]
   uint32 NumberOfHardResets;

      [Description (
          "Number of soft resets issued by the Controller. A soft "
          "reset does not completely clear current Device state or "
          "data. Exact semantics are dependent on the Device and on "
          "the protocols and mechanisms used to communicate with the "
          "Device."), 
       Counter]
   uint32 NumberOfSoftResets;

      [Description (
          "Address of associated Device in context of the antecedent "
          "Controller.")]
   string DeviceNumber;

      [Description (
          "This property describes the accessibility of the device "
          "through the antecedent controller."), 
       ValueMap { "2", "3", "4" }, 
       Values { "ReadWrite", "ReadOnly", "NoAccess" }]
   uint16 AccessMode;

      [Description (
          "The property describes the priority given to accesses of "
          "the device through this controller. The highest priority "
          "path will have the lowest value for this parameter.")]
   uint16 AccessPriority;
};

// ==================================================================
//  CIM_LogicalPort
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "The abstraction of a port or connection point of a Device. "
       "This object should be instantiated when the Port has "
       "independent management characteristics from the Device that "
       "includes it. Examples are a Fibre Channel Port and a USB Port.")]
class CIM_LogicalPort : CIM_LogicalDevice {

      [Description (
          "The bandwidth of the Port in Bits per Second."), 
       Units ( "Bits per Second" )]
   uint64 Speed;

      [Description (
          "The maximum bandwidth of the Port in Bits per Second."), 
       Units ( "Bits per Second" )]
   uint64 MaxSpeed;

      [Write, Description (
          "The requested bandwidth of the Port in Bits per Second. The "
          "actual bandwidth is reported in LogicalPort.Speed."), 
       Units ( "Bits per Second" ), 
       ModelCorrespondence { "CIM_LogicalPort.Speed" }]
   uint64 RequestedSpeed;

      [Description (
          "In some circumstances, a LogicalPort might be identifiable "
          "as a front end or back end port. An example of this "
          "situation would be a storage array that might have back end "
          "ports to communicate with disk drives and front end ports "
          "to communicate with hosts. If there is no restriction on "
          "the use of the port, then the value should be set to 'not "
          "restricted'."), 
       ValueMap { "0", "2", "3", "4" }, 
       Values { "Unknown", "Front-end only", "Back-end only",
          "Not restricted" }]
   uint16 UsageRestriction;

      [Description (
          "PortType is defined to force consistent naming of the "
          "'type' property in subclasses and to guarantee unique enum "
          "values for all instances of NetworkPort. When set to 1 "
          "(\"Other\"), related property OtherPortType contains a "
          "string description of the type of port. A range of values, "
          "DMTF_Reserved, has been defined that allows subclasses to "
          "override and define their specific types of ports."), 
       ValueMap { "0", "1", "2", "3..15999", "16000..65535" }, 
       Values { "Unknown", "Other", "Not Applicable", "DMTF Reserved",
          "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_NetworkPort.OtherNetworkPortType" }]
   uint16 PortType;

      [Description (
          "Describes the type of module, when PortType is set to 1 "
          "(\"Other\")."), 
       ModelCorrespondence { "CIM_LogicalPort.PortType" }]
   string OtherPortType;
};

// ==================================================================
//  CIM_DAPort
// ==================================================================
   [Abstract, Experimental,  Version ( "2.10.0" ), Description (
       "Represents the connection of a device to a Computer System. "
       "Direct Attach ports are SCSI ports where the host port (HBA) "
       "and device port are the same. This condition occurs when a "
       "chip or card that implements SCSI devices is connected "
       "directly to an internal bus of the host system.")]
class CIM_DAPort : CIM_LogicalPort {

      [Override ( "PortType" ), Description (
          "The type of port."), 
       ValueMap { "0", "1", "81", "82", "83", "16000.." }, 
       Values { "Unknown", "Other", "Embedded", "PCI", "PCI-X",
          "Vendor Reserved" }]
   uint16 PortType;
};

// ==================================================================
//  CIM_DeviceSAPImplementation
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "An association between a ServiceAccessPoint (SAP) and how it "
       "is implemented. The cardinality of this association is "
       "many-to-many. A SAP can be provided by more than one "
       "LogicalDevice, operating in conjunction. And, any Device can "
       "provide more than one ServiceAccessPoint. When many "
       "LogicalDevices are associated with a single SAP, it is assumed "
       "that these elements operate in conjunction to provide the "
       "AccessPoint. If different implementations of a SAP exist, each "
       "of these implementations would result in individual "
       "instantiations of the ServiceAccessPoint object. These "
       "individual instantiations would then have associations to the "
       "unique implementations.")]
class CIM_DeviceSAPImplementation : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The LogicalDevice.")]
   CIM_LogicalDevice REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The ServiceAccessPoint implemented using the LogicalDevice.")]
   CIM_ServiceAccessPoint REF Dependent;
};

// ==================================================================
//  CIM_Capabilities
// ==================================================================
   [Abstract,  Version ( "2.7.0" ), Description (
       "Capabilities is an abstract class whose subclasses describe "
       "abilities and/or potential for use. For example, one may "
       "describe the maximum number of VLANs that can be supported on "
       "a system using a subclass of Capabilities. Capabilities are "
       "tied to the elements which they describe using the "
       "ElementCapabilities association. Note that the cardinality of "
       "the ManagedElement reference is Min(1), Max(1). This "
       "cardinality mandates the instantiation of the "
       "ElementCapabilities association for the referenced instance of "
       "Capabilities. ElementCapabilities describes the existence "
       "requirements and context for the referenced instance of "
       "ManagedElement. Specifically, the ManagedElement MUST exist "
       "and provides the context for the Capabilities. Note that "
       "Capabilities do not indicate what IS configured or "
       "operational, but what CAN or CANNOT exist, be defined or be "
       "used. Note that it is possible to describe both supported and "
       "excluded abilities and functions (both capabilities and "
       "limitations) using this class.")]
class CIM_Capabilities : 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 Capabilities. "
          "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;
};

// ==================================================================
//  CIM_DiagnosticServiceCapabilities
// ==================================================================
   [Abstract,  Version ( "2.9.0" ), Description (
       "DiagnosticServiceCapabilities is a class that describes the "
       "capabilities of the diagnostic service. This provides the "
       "means for the diagnostic service to describe its abilities, "
       "limitations, and/or potential for use of various diagnostic "
       "service parameters. For example, what types of settings the "
       "diagnostic service supports.")]
class CIM_DiagnosticServiceCapabilities : CIM_Capabilities {

      [Description (
          "The SupportedServiceModes property lists the operational "
          "modes that are supported by the Diagnostic Service. These "
          "modes may correspond to, but are not limited to, settings "
          "that may be applied to a Diagnostic Service."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "0x8000" }, 
       Values { "Unknown", "Other", "PercentOfTestCoverage",
          "QuickMode", "HaltOnError", "ResultPersistence",
          "No Service Modes" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticServiceCapabilities." 
          "OtherSupportedServiceModesDescriptions" }]
   uint16 SupportedServiceModes[];

      [Description (
          "Provides additional information for SupportedServiceModes "
          "when the corresponding value is set to 1 (\"Other\")."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticServiceCapabilities." 
          "SupportedServiceModes" }]
   string OtherSupportedServiceModesDescriptions[];

      [Description (
          "The SupportedLoopControl property lists the loop controls "
          "that are supported by the Diagnostic Service."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "0x8000" }, 
       Values { "Unknown", "Other", "Continuous", "Count", "Timer",
          "ErrorCount", "No Loop Control" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticSetting.LoopControl",
          "CIM_DiagnosticServiceCapabilities." 
          "OtherSupportedLoopControlDescriptions" }]
   uint16 SupportedLoopControl[];

      [Description (
          "Provides additional information for SupportedLoopControl "
          "when the corresponding value is set to 1 (\"Other\")."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticServiceCapabilities.SupportedLoopControl" }]
   string OtherSupportedLoopControlDescriptions[];

      [Description (
          "The SupportedLogOptions property lists the log options that "
          "are supported by the Diagnostic Service."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "0x8000" }, 
       Values { "Unknown", "Other", "Results", "Subtests", "Actions",
          "Warnings", "Status", "Device Errors", "Service Errors",
          "Setting Data", "Statistics", "Hardware Configuration",
          "Software Configuration", "References", "Debug",
          "No Log Options" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticSetting.LogOptions",
          "CIM_DiagnosticServiceCapabilities.OtherSupportedLogOptionsDescriptions" 
          }]
   uint16 SupportedLogOptions[];

      [Description (
          "Provides additional information for SupportedLogOptions "
          "when the corresponding value is set to 1 (\"Other\")."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticServiceCapabilities.SupportedLogOptions" }]
   string OtherSupportedLogOptionsDescriptions[];

      [Description (
          "The SupportedLogStorage property lists the storage options "
          "for logging that are supported by the Diagnostic Service. \n"
          "The values are: \n"
          "\"DiagnosticRecordLog\" (Value = 2): Supports use of the "
          "DiagnosticRecordLog class for aggregating "
          "DiagnosticRecords. \n"
          "\"MessageLog\" (Value = 3): Supports writing log "
          "information using the methods in the MessageLog class. \n"
          "\"File\" (Value = 4): Supports writing log information to a "
          "file."), 
       ValueMap { "0", "1", "2", "3", "4", "0x8000" }, 
       Values { "Unknown", "Other", "DiagnosticRecordLog",
          "MessageLog", "File", "No Log Storage" }, 
       ModelCorrespondence { 
          "CIM_DiagnosticServiceCapabilities.OtherSupportedLogStorageDescriptions",
          "CIM_DiagnosticSetting.LogStorage" }]
   uint16 SupportedLogStorage[];

      [Description (
          "Provides additional information for SupportedLogStorage "
          "when the corresponding value is set to 1 (\"Other\")."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticServiceCapabilities.SupportedLogStorage" }]
   string OtherSupportedLogStorageDescriptions[];

      [Description (
          "The SupportedExecutionControls property lists the job "
          "controls that are supported by the Diagnostic Service. The "
          "values are: \n"
          "\"Job Creation\" (Value = 2): publishes that a ConcreteJob "
          "instance will be created to control the diagnostic job "
          "launched by the diagnostic service. \n"
          "\"Kill Job\" (Value = 3): publishes that the diagnostic "
          "service implements the ConcreteJob.RequestStateChange(Kill) "
          "method. \n"
          "\"Suspend Job\" (Value = 4): publishes that the diagnostic "
          "service implements the "
          "ConcreteJob.RequestStateChange(Suspend) method. \n"
          "\"Terminate Job\" (Value = 5): publishes that the "
          "diagnostic service implements the "
          "ConcreteJob.RequestStateChange(Terminate) method."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "0x8000" }, 
       Values { "Unknown", "Other", "Job Creation", "Kill Job",
          "Suspend Job", "Terminate Job", "No Execution Controls" }, 
       ModelCorrespondence { "CIM_DiagnosticServiceCapabilities." 
          "OtherSupportedExecutionControlsDescriptions" }]
   uint16 SupportedExecutionControls[];

      [Description (
          "Provides additional information for "
          "SupportedExecutionControls when the corresponding value is "
          "set (\"Other\")."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticServiceCapabilities.SupportedExecutionControls" 
          }]
   string OtherSupportedExecutionControlsDescriptions[];

      [Deprecated { 
          "CIM_DiagnosticServiceCapabilities.SupportedLogOptions" }, 
       Description (
          "This property is being deprecated because the "
          "TestWarningLevel and LogOptions properties serve the same "
          "purpose. \n"
          "Lists the level of warning messages that MAY be logged. If "
          "for example no warning information is required, the level "
          "would be set to \"No Warnings\" (value=0). Using \"Missing "
          "Resources\" (value=1) will cause warnings to be generated "
          "when required resources or hardware are not found. Setting "
          "the value to 2, \"Testing Impacts\", results in both "
          "missing resources and 'test impact' warnings (for example, "
          "multiple retries required) to be reported."), 
       ValueMap { "2", "3", "4", "5" }, 
       Values { "No Warnings", "Missing Resources", "Testing Impacts",
          "All Warnings" }]
   uint16 SupportedTestWarnings = 3;

};

// ==================================================================
//  CIM_DiagnosticSettingData
// ==================================================================
   [Abstract, Experimental,  Version ( "2.13.0" ), Description (
       "Specific diagnostic test parameters and execution instructions "
       "are defined by this class. To provide more detailed Settings "
       "for a type of test (i.e., additional properties), subclassing "
       "is appropriate.")]

class CIM_DiagnosticSettingData : CIM_SettingData {

      [Description (
          "When this flag is true, the test will halt after finding "
          "the first error.")]
   boolean HaltOnError;

      [Description (
          "When this flag is true, the test software should attempt to "
          "run in an accelerated fashion either by reducing the "
          "coverage or number of tests performed.")]
   boolean QuickMode;

      [Description (
          "Requests the diagnostic software to reduce test coverage to "
          "the specified percentage. For example, a hard drive scan "
          "test could be asked to run at 50%. The most effective way "
          "to accomplish this is for the test software to scan every "
          "other track, as opposed to only scanning the first half of "
          "a drive. It is assumed that the effectiveness of the test "
          "is impacted proportional to the percentage of testing "
          "requested. Permissible values for this property range from "
          "0 to 100."), 
       Units ( "Percent" ), MinValue ( 0 ), MaxValue ( 100 ), 
       ModelCorrespondence { 
          "CIM_DiagnosticServiceCapabilities.SupportedServiceModes" }]
   uint8 PercentOfTestCoverage;

      [Description (
          "Array entries contain parameters corresponding to entries "
          "in the LoopControl array, limiting the number of times a "
          "test should be repeated with a single invocation of a test "
          "method by a CIM client."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticSettingData.LoopControl" }]
   string LoopControlParameter[];

      [Description (
          "LoopControl, used in conjunction with LoopControlParameter, "
          "sets one or more loop control mechanisms that limits the "
          "number of times a test should be repeated with a single "
          "invocation of a test method by a CIM client. There is an "
          "array-positional correspondence between LoopControl entries "
          "& LoopControlParameter entries. The entries in these "
          "coupled arrays of loop controls can be used in a logical OR "
          "fashion to achieve the desired loop control. For example, "
          "if a client wants to loop a test 1000 times, but quit if a "
          "timer runs out, it could set both controls into the "
          "LoopControl array as two separate entries in each array. "
          "The looping test will terminate when the first of the two "
          "Ored conditions are met. \n"
          "The descriptions for each loop control are given below: \n"
          "Unknown (= 0) \n"
          "Other (= 1) : Additional detail may be found in "
          "OtherLoopControlDescriptions. \n"
          "Continuous (= 2) : The corresponding LoopControl Parameter "
          "is ignored and the test will execute continuously. Tests "
          "that use this control should also support DiscontinueTest. "
          "\nCount(=3) : The corresponding LoopControlParameter is "
          "interpreted as a loop count (uint32), indicating the number "
          "of times the test should be repeated with a single "
          "invocation of a test method by a CIM client. \n"
          "Timer (= 4) : The corresponding LoopControlParameter is "
          "interpreted as an initial value (uint32) for a test loop "
          "timer, given in seconds. The looping is terminated when "
          "this timer has lapsed. \n"
          "ErrorCount (= 5) : The corresponding LoopControl Parameter "
          "is interpreted as an error count (uint32). The loop will "
          "continue until the number of errors that have occurred "
          "exceeds the ErrorCount. Note: the ErrorCount only refers to "
          "hard test errors; it does not include soft errors or "
          "warnings."), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "Other", "Continuous", "Count", "Timer",
          "ErrorCount" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticSettingData.LoopControlParameter",
          "CIM_DiagnosticSettingData.OtherLoopControlDescriptions",
          "CIM_DiagnosticServiceCapabilities.SupportedLoopControl" }]
   uint16 LoopControl[];

      [Description (
          "This property provides additional information for "
          "LoopControl when the corresponding value is set to 1 "
          "('Other')."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticSettingData.LoopControlParameter",
          "CIM_DiagnosticSettingData.LoopControl" }]
   string OtherLoopControlDescriptions[];

      [Description (
          "The ResultPersistence property is a directive from a "
          "diagnostic client to a diagnostic provider. It allows the "
          "client to specify to the diagnostic service provider how "
          "long to persist the messages that result from execution of "
          "a diagnostic service. This applies to instances of "
          "DiagnosticResult as well as the preferred use of "
          "DiagnosticServiceRecord. The timeout period starts upon "
          "completion of the diagnostic action described by the "
          "DiagnosticService. \n"
          "\n"
          "Here is a summary of the choices and behaviors for "
          "different ResultPersistence values: \n"
          "0 = \"No Persistence\": \n"
          "Setting the timer to zero tells the provider not to persist "
          "the diagnostic result. The diagnostic information is only "
          "available while the diagnostic is executing or at its "
          "conclusion. \n"
          "Value > 0 and < 0xFFFFFFFF = \"Persist With TimeOut\": \n"
          "Setting the ResultPersistenceOption to a integer will cause "
          "the DiagnosticResult to be persisted for that number of "
          "seconds. At the end of that time, the DiagnosticResult may "
          "be deleted by the diagnostic service provider. \n"
          "0xFFFFFFFF = \"Persist Forever\": \n"
          "By setting the timeout value to the very large value, "
          "0xFFFFFFFF, the provider shall persist results forever. In "
          "this case, the client MUST bear the responsibility for "
          "deleting them."), 
       Units ( "Seconds" )]
   uint32 ResultPersistence;

      [Description (
          "The LogOptions property is used to specify the types of "
          "data that SHOULD be logged by the diagnostic service. Any "
          "number of values may be specified in the array. Note that "
          "the default behavior is for nothing to be logged. \n"
          "The AMOUNT of data to be logged can be controlled for each "
          "value selected by specifying a VerbosityLevel value. "
          "Verbosity may not apply to all LogOptions values, in which "
          "case the default VerbosityLevel of \"Standard\" SHOULD be "
          "used. \n"
          "The RecordForLog produced by running a service MUST be "
          "tagged with a RecordType that corresponds to one of these "
          "log option values. \n"
          "Following is a brief description of the available log "
          "options: \n"
          "* \"Other\" (value = 1): Details are given in the "
          "corresponding OtherLogOptionsDescriptions entry. \n"
          "* \"Results\" (value = 2): Log the results obtained by "
          "running the service. This is the most common value for "
          "reporting the service results. \n"
          "* \"Subtests\" (value = 3): Log a test summary report upon "
          "completion of each subtest and each loop iteration. The "
          "summary reports SHOULD state whether the individual subtest "
          "or iteration passed or failed and list relevant error codes "
          "and respective error counts. \n"
          "* \"Actions\" (value = 4): Log corrective action and "
          "instructional messages to guide service personnel; for "
          "example, a prioritized list of actions to perform in order "
          "to isolate a failure or correct a problem. When ordering "
          "steps or prioritizing actions, a number should proceed the "
          "text; for example, 1) Do this first, 2) Do this next, etc. "
          "\n* \"Warnings\" (value = 5): Log warning messages; for "
          "example, 'device will be taken off line', 'test is "
          "long-running' or 'available memory is low'. The "
          "VerbosityLevel value specified for the Warnings option is "
          "related to the severity of the warnings logged; for "
          "instance, one would specify a high level of verbosity to "
          "get all warnings logged, regardless of severity, and a low "
          "level of verbosity to have only the most severe warnings "
          "logged. \n"
          "* \"Status\" (value = 6): Log status messages; for example, "
          "state information for the driver, device, or system. \n"
          "* \"Device Errors\" (value = 7): Log errors related to the "
          "managed element being serviced. \n"
          "* \"Service Errors\" (value = 8): Log errors related to the "
          "service itself rather than the element being serviced, such "
          "as 'Resource Allocaton Failure'. \n"
          "* \"Setting Data\" (value=9): Log the property values of "
          "the DiagnosticSettingData object used to configure the "
          "service. \n"
          "* \"Statistics\" (value = 10): Log statistical messages; "
          "for example, packets sent per second. \n"
          "* \"Hardware Configuration\" (value = 11): Log messages "
          "that contain information about the hardware configuration "
          "as viewed by the service; for example, vendor, version, FRU "
          "identification, and location information. The format and "
          "contents of this property is element dependent. Examples "
          "are: SCSI ID, LPTx, PCI Slot Number, and Dimm#. \n"
          "* \"Software Configuration\" (value = 12): Log messages "
          "that contain information about the software environment as "
          "viewed by the service; for example, the name and version of "
          "all the critical software elements controlling the device "
          "under test. Each configuration message SHOULD have the "
          "following common format: Element name; element type; "
          "manufacturer name; version; for example, 'Miniport driver; "
          "SCSI; Intel; Version 1.2'. \n"
          "* \"Reference\" (value = 13): Log the keys of an CIM object "
          "of of interest; for example, the element under test, or a "
          "data file. \n"
          "* \"Debug\" (value = 14): Log debug messages. These "
          "messages are vendor specific."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "0x8000" }, 
       Values { "Unknown", "Other", "Results", "Subtests", "Actions",
          "Warnings", "Status", "Device Errors", "Service Errors",
          "Setting Data", "Statistics", "Hardware Configuration",
          "Software Configuration", "References", "Debug",
          "No Log Options" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticSettingData.OtherLogOptionsDescriptions",
          "CIM_DiagnosticServiceCapabilities.SupportedLogOptions",
          "CIM_DiagnosticServiceRecord.RecordType",
          "CIM_DiagnosticSettingData.VerbosityLevel" }]
   uint16 LogOptions[];

      [Description (
          "Provides additional information regarding the types of test "
          "messages that are logged when the property LogOptions "
          "includes the value 1 (\"Other\")."), 
       ModelCorrespondence { "CIM_DiagnosticSettingData.LogOptions" }]
   string OtherLogOptionsDescriptions[];

      [Description (
          "The LogStorage setting property indicates which types of "
          "supported storage should be used by the Diagnostic Service "
          "for logging of the data specified in LogOptions. \n"
          "The values are: \n"
          "\"DiagnosticLog\" (Value = 2): Use the DiagnosticLog and "
          "DiagnosticRecord classes. \n"
          "\"MessageLog\" (Value = 3): Use the MessageLog class and "
          "its methods. \n"
          "\"File\" (Value = 4): Write data to a file."), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Unknown", "Other", "DiagnosticLog", "MessageLog",
          "File" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticSettingData.OtherLogStorageDescriptions",
          "CIM_DiagnosticServiceCapabilities.SupportedLogStorage" }]
   uint16 LogStorage[];

      [Description (
          "This property provides additional information for "
          "LogStorage when the corresponding value is set to 1 "
          "(\"Other\")."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticSettingData.LogStorage" }]
   string OtherLogStorageDescriptions[];

      [Description (
          "A client may want to specify the desired volume or detail "
          "logged by a diagnostic service. This property is applied to "
          "a corresponding logging option, acting as a qualifier on "
          "its description. Three levels of verbosity are defined as "
          "follows: \n"
          "* \"Minimum\" (value=2): Specified if the least amount of "
          "information is desired; for example, Pass or Fail. \n"
          "* \"Standard\" (value=3): This is the standard level of "
          "messaging provided by the service. It is the form most "
          "likely to be used if no verbosity value is specified "
          "(default). \n"
          "* \"Full\" (value=4): Specified when all information, "
          "regardless of size, is desired. \n"
          "Note that VerbosityLevel is a subjective property and "
          "relates to the degree of detail, not an absolute metric. A "
          "client simply specifies its desired level of detail and the "
          "provider publishes its data in accordance with this desired "
          "level of detail. \n"
          "Verbosity may not apply to all LogOptions values, in which "
          "case the default VerbosityLevel of \"Standard\" SHOULD be "
          "used."), 
       ValueMap { "2", "3", "4" }, 
       Values { "Minimum", "Standard", "Full" },
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticSettingData.LogOptions" }]
   uint16 VerbosityLevel[];

      [Experimental, Description (
          "The time the Job should wait for a query response. before "
          "using a default response and continuing execution. A "
          "default response could result in a cancellation of the Job. "
          "The timeout value starts at the time the Job goes into the "
          "QueryPending state. \n"
          "0 = \"Do not query\": \n"
          "Setting the timer to zero tells the provider not to query "
          "but use the default response. \n"
          "Value > 0 and < 0xFFFFFFFF = \"Query With TimeOut\": \n"
          "Setting the QueryTimeout to a integer will cause the Job to "
          "wait for that number of seconds. At the end of that time, "
          "the Job will use the default response and continue "
          "execution. \n"
          "0xFFFFFFFF = \"Wait Forever\": \n"
          "By setting the timeout value to the very large value, "
          "0xFFFFFFFF, the job shall wait forever for a response. In "
          "this case, the client MUST bear the responsibility for "
          "responding to the query."), 
       Units ( "Seconds" )]
   uint32 QueryTimeout = 0;

      [Experimental, Description (
          "The test should only run non-destructive tests.")]
   boolean NonDestructive = FALSE;

};
	
// ==================================================================
//  CIM_DiagnosticSettingDataRecord
// ==================================================================
   [Abstract, Experimental, Version ( "2.11.0" ), 
    UMLPackagePath ( "CIM::System::Diagnostics" ), 
    Description ( 
       "This class contains a snapshot of the settings that were used "
       "when the associated Diagnostic service was run." )]
class CIM_DiagnosticSettingDataRecord : CIM_DiagnosticRecord {

      [Description ( 
          "A string containing an encoding of the "
          "DiagnosticSettingData instance that was used when the "
          "diagnostic service was run." ), 
       EmbeddedInstance ( "CIM_DiagnosticSettingData" )]
   string Settings;


};
// ==================================================================
//  CIM_DiagnosticSettingRecord
// ==================================================================
   [Abstract,  Version ( "2.11.0" ), Description ( 
       "A snapshot of the properties in the DiagnosticSetting instance "
       "that was used when the Diagnostic was run.")]
class CIM_DiagnosticSettingRecord : CIM_DiagnosticRecord {

      [Description (
          "When this flag is true, the test will halt after finding "
          "the first error.")]
   Boolean HaltOnError;

      [Description (
          "When this flag is true, the test software should attempt to "
          "run in an accelerated fashion either by reducing the "
          "coverage or number of tests performed.")]
   Boolean QuickMode;

      [Description (
          "The requested percentage of coverage for the diagnostic "
          "service. For example, a hard drive scan test could be asked "
          "to run at 50%. Permissible values for this property range "
          "from 0 to 100."), 
       Units ( "Percent" ), MinValue ( 0 ), MaxValue ( 100 )]
   uint8 PercentOfTestCoverage;

      [Description (
          "Array entries contain parameters corresponding to entries "
          "in the LoopControl array, limiting the number of times a "
          "test should be repeated with a single invocation of RunTest "
          "by a CIM client."), 
       ArrayType ( "Indexed" )]
   string LoopControlParameter[];

      [Description (
          "LoopControl, used in conjunction with LoopControlParameter, "
          "sets one or more loop control mechanisms that limits the "
          "number of times a test should be repeated with a single "
          "invocation of RunTest by a CIM client. There is an "
          "array-positional correspondence between LoopControl entries "
          "& LoopControlParameter entries. The entries in these "
          "coupled arrays of loop controls can be used in a logical OR "
          "fashion to achieve the desired loop control. For example, "
          "if a client wants to loop a test 1000 times, but quit if a "
          "timer runs out, it could set both controls into the "
          "LoopControl array as two separate entries in each array. "
          "The looping test will terminate when the first of the two "
          "Ored conditions are met. \n"
          "A brief description for each loop control can be found in "
          "the description of DiagnosticSetting.LoopControl."), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "Other", "Continuous", "Count", "Timer",
          "Error Count" }, ArrayType ( "Indexed" )]
   uint16 LoopControl[];

      [Description (
          "Provides additional information for LoopControl when its "
          "value is set to 1 ('Other')."), 
       ArrayType ( "Indexed" )]
   string OtherLoopControlDescriptions[];

      [Description (
          "The desired length of time to persist the messages that "
          "result from execution of a diagnostic service. Here is a "
          "summary of the choices and behaviors for different "
          "ResultPersistence values: \n"
          "0 = \"No Persistence\": \n"
          "Setting the timer to zero tells the provider not to persist "
          "the diagnostic result. The diagnostic information is only "
          "available while the diagnostic is executing or at its "
          "conclusion. \n"
          "Value > 0 and < 0xFFFFFFFF = \"Persist With TimeOut\": \n"
          "Setting the ResultPersistenceOption to a integer will cause "
          "the DiagnosticResult to be persisted for that number of "
          "seconds. At the end of that time, the DiagnosticResult may "
          "be deleted by the diagnostic service provider. \n"
          "0xFFFFFFFF = \"Persist Forever\": \n"
          "By setting the timeout value to the very large value, "
          "0xFFFFFFFF, the provider shall persist results forever. In "
          "this case, the client MUST bear the responsibility for "
          "deleting them."), 
       Units ( "Seconds" )]
   uint32 ResultPersistence;

      [Description (
          "The LogOptions property lists the log options that were "
          "requested for the Diagnostic Service. A brief summary of "
          "the various log options can be found in "
          "CIM_DiagnosticSetting.LogOptions."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "0x8000" }, 
       Values { "Unknown", "Other", "Results", "Subtests", "Actions",
          "Warnings", "Status", "Device Errors", "Service Errors",
          "Setting Data", "Statistics", "Hardware Configuration",
          "Software Configuration", "References", "Debug",
          "No Log Options" }, ArrayType ( "Indexed" )]
   uint16 LogOptions[];

      [Description (
          "Provides additional information regarding the types of test "
          "messages that are logged when the property LogOptions "
          "includes the value 1 (\"Other\").")]
   string OtherLogOptionsDescriptions[];

      [Description (
          "The LogStorage setting property indicates which types of "
          "supported storage should be used by the Diagnostic Service "
          "for logging of the data specified in LogOptions. \n"
          "The values are: \n"
          "\"DiagnosticRecordLog\" (Value = 2): Use the "
          "DiagnosticRecordLog and DiagnosticRecord classes. \n"
          "\"MessageLog\" (Value = 4): Use the MessageLog class and "
          "its methods. \n"
          "\"File\" (Value = 5): Write data to a file."), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Unknown", "Other", "DiagnosticRecordLog",
          "MessageLog", "File" }, ArrayType ( "Indexed" )]
   uint16 LogStorage[];

      [Description (
          "This property provides additional information for "
          "LogStorage when the corresponding value is set to 1 "
          "(\"Other\")."), 
       ArrayType ( "Indexed" )]
   string OtherLogStorageDescriptions[];

      [Description (
          "A client may want to specify the volume or detail of "
          "information logged by a diagnostic service. This metric is "
          "applied to a corresponding logging option, acting as a "
          "qualifier on its description. Three levels of verbosity are "
          "defined as follows: \n"
          "* \"Minimum\" (value=2): Specified if the least amount of "
          "information is desired; for example, Pass or Fail. \n"
          "* \"Standard\" (value=3): This is the standard level of "
          "messaging provided by the service. It is the form most "
          "likely to be used if no verbosity value is specified "
          "(default). \n"
          "* \"Full\" (value=4): Specified when all information, "
          "regardless of size, is desired. \n"
          "Verbosity may not apply to all LogOptions values, in which "
          "case the default VerbosityLevel of \"Standard\" SHOULD be "
          "used."), 
       ValueMap { "2", "3", "4" }, 
       Values { "Minimum", "Standard", "Full" },
       ArrayType ( "Indexed" )]
   uint16 VerbosityLevel[];

};

// ==================================================================
//  CIM_DiagnosticResult
// ==================================================================
   [Abstract, Deprecated { "CIM_DiagnosticServiceRecord" },  Version ( "2.7.0" ), 
    Description (
       "When a DiagnosticTest Service is running, test results are "
       "reported using a DiagnosticResult object, or one of its "
       "subclasses. A DiagnosticTest may be running because its "
       "Service is Started or due to an invocation of the RunTest "
       "method. Diagnostic Results are related to their Test via an "
       "instance of the DiagnosticResultsForMSE association. \n"
       "For every running of DiagnosticTest, a new instance of "
       "DiagnosticResult, or one of it's subclasses should be created.")]
class CIM_DiagnosticResult {

      [Deprecated { "No Value" }, Key,
          Propagated ( "CIM_DiagnosticTest.CreationClassName" ), 
       Description (
          "The scoping Test's CreationClassName."), 
       MaxLen ( 256 )]
   string DiagnosticCreationClassName;

      [Deprecated { "No Value" }, Key,
          Propagated ( "CIM_DiagnosticTest.Name" ), Description (
          "The scoping Test's Name."), 
       MaxLen ( 256 )]
   string DiagnosticName;

      [Deprecated { "No Value" }, Key,
          Propagated ( "CIM_DiagnosticTest.SystemCreationClassName" ), 
       Description (
          "The scoping Test's SystemCreationClassName."), 
       MaxLen ( 256 )]
   string DiagSystemCreationClassName;

      [Deprecated { "No Value" }, Key,
          Propagated ( "CIM_DiagnosticTest.SystemName" ), Description (
          "The scoping Test's SystemName."), 
       MaxLen ( 256 )]
   string DiagSystemName;

      [Deprecated { "CIM_DiagnosticRecord.InstanceID" }, Key, 
       Description (
          "The Unique identifier for an instance of Diagnostic "
          "Results."), 
       MaxLen ( 1024 )]
   string ExecutionID ;

      [Deprecated { "CIM_LogRecord.MessageTimestamp" }, Description (
          "The date and time the result was last updated.")]
   datetime TimeStamp;

      [Deprecated { "No Value" }, Description (
          "This property is being deprecated. Tests should be grouped "
          "at the test level, not by the model. /n If this property is "
          "TRUE, then this DiagnosticResult summarizes the results "
          "from the execution of a packaged set of DiagnosticTests. "
          "The Tests in the package can be identified by following the "
          "DiagnosticResultForTest association to the test and then "
          "using the DiagnosticTest InPackage aggregation. The "
          "individual Results can be broken out by instantiating "
          "DiagnosticResults for the individual lower level tests and "
          "aggregating into the 'summary' Result using the "
          "DiagnosticResultInPackage association.")]
   boolean IsPackage;

      [Deprecated { "CIM_Job.StartTime" }, Description (
          "The date and time when this test started.")]
   datetime TestStartTime;

      [Deprecated { "No Value" }, Description (
          "The date and time when this test completed.")]
   datetime TestCompletionTime;

      [Deprecated { "No Value" }, Description (
          "Describes how the test is progressing. For example, if the "
          "test was discontinued, the TestState will be \"Stopped\" "
          "(value=5), or if testing is currently executing, TestState "
          "will be \"In Progress\" (4)."), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "Other", "Passed", "Failed", "In Progress",
          "Stopped" }, 
       ModelCorrespondence { 
          "CIM_DiagnosticResult.OtherStateDescription" }]
   uint16 TestState;

      [Deprecated { "No Value" }, Description (
          "When \"Other\" (value=1) is entered in the TestState "
          "property, OtherStateDescription can be used to describe the "
          "test's state."), 
       ModelCorrespondence { "CIM_DiagnosticResult.TestState" }]
   string OtherStateDescription;

      [Deprecated { "No Value" }, Description (
          "Estimated number of seconds to perform the Diagnostic Test "
          "indicated by the DiagnosticCreationClassName and "
          "DiagnosticName properties. After the test has completed, "
          "the actual elapsed time can be determined by subtracting "
          "the TestStartTime from the TestCompletionTime. A similar "
          "property is defined in the association, DiagnosticTest "
          "ForMSE. The difference between the two properties is that "
          "the value stored in the association is a generic test "
          "execution time for the Element and the Test. But, the value "
          "here (in DiagnosticResult) is the estimated time that this "
          "instance with the given settings would take to run the "
          "test. A CIM Consumer can compare this value with the value "
          "in the association DiagnosticTestForMSE to get an idea what "
          "impact their settings have on test execution."), 
       Units ( "Seconds" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticTestForMSE.EstimatedTimeOfPerforming" }]
   uint32 EstimatedTimeOfPerforming;

      [Deprecated { "CIM_LogRecord.RecordData" }, Description (
          "TestResults stores one or more textual results from the "
          "execution of the DiagnosticTest(s) referenced by the "
          "DiagnosticCreationClassName and DiagnosticName properties. "
          "One entry is considered a cell location in the array. Each "
          "entry is time stamped and contains the following "
          "information, in the following format: \n"
          "LogOption|yyymmddhhttssoutc|TestName|message_text \n"
          "Where: \n"
          "LogOption = string identical to the LogOption value in "
          "DiagnosticSetting that was used to enable logging this "
          "message. \n"
          "yyyy = year, e.g. 2000 \n"
          "mm = month (01 - 12) \n"
          "dd = day (01 - 31) \n"
          "hh = hour (00 - 24) \n"
          "tt = minute (00-59) \n"
          "ss = second (00-59) \n"
          "o = \"+\" or \"-\" indicating the sign of the UTC "
          "correction field \n"
          "utc = offset from UTC (Universal Coordinated Time) in "
          "minutes \n"
          "TestName = Internal test name or current internal subtest "
          "name that sent the message. \n"
          "Textual message = free form string that is the 'test "
          "result'."), 
       ArrayType ( "Ordered" )]
   string TestResults[];

      [Deprecated { "CIM_Job.PercentComplete" }, Description (
          "The percentage of the test that has executed thus far, if "
          "the TestState property is set to \"In Progress\" or the "
          "percentage of the complete test that was executed if the "
          "TestState property is set to any of the completed states "
          "(\"Passed\", \"Failed\" or \"Stopped\"). Final results may "
          "be based on less than 100% coverage due to the parameters "
          "defined in DiagnosticSetting (such as QuickMode, "
          "PercentOfTestCoverage or HaltOnError)."), 
       Units ( "Percent" ), MinValue ( 0 ), MaxValue ( 100 )]
   uint8 PercentComplete;

      [Deprecated { "CIM_DiagnosticServiceRecord.ErrorCode" }, 
       Description (
          "If applicable, this string should contain one or more "
          "vendor specific error codes that the diagnostic service "
          "detected. These error codes may be used by the vendor for "
          "variety of purposes such as: fault data base indexing, "
          "field service trouble ticketing, product quality tracking, "
          "part failure history, etc. Since these codes are for vendor "
          "purposes they may assume any form. Details on suggested use "
          "cases will be left to white papers. The array of error "
          "codes has model correspondence with an ErrorCount array so "
          "the number of errors reported can be analyzed by individual "
          "error code."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticResult.ErrorCount" }]
   string ErrorCode[];

      [Deprecated { "CIM_DiagnosticServiceRecord.ErrorCount" }, 
       Description (
          "Since some tests may detect transient and correctable "
          "errors such as a network diagnostic or memory test, an "
          "error count is useful to indicate the severity of the "
          "failure. This field contains an integer value of the number "
          "of errors detected by the test. The ErrorCount is an array "
          "with model correspondence to ErrorCode so that the test can "
          "report an ErrorCount on each type of error encountered. It "
          "is recommended that hard errors and correctable or "
          "recoverable errors be given different codes so that clients "
          "with knowledge of the error codes can evaluate correctable, "
          "recoverable, and hard errors independently."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticResult.ErrorCode" }]
   uint32 ErrorCount[];

      [Deprecated { "CIM_DiagnosticServiceRecord.LoopsFailed" }, 
       Description (
          "Since some tests may be looped, it is useful to report how "
          "many iterations passed and failed. This is relevant in "
          "analyzing transitory failures. For example, if all the "
          "errors occurred in just one of 100 iterations, the device "
          "may be viewed as OK or marginal, to be monitored further "
          "rather then failed. Note: LoopsPassed & LoopsFailed should "
          "add up to the loops completed.")]
   uint32 LoopsFailed;

      [Deprecated { "CIM_DiagnosticServiceRecord.LoopsPassed" }, 
       Description (
          "Since some tests may be looped, it is useful to report how "
          "many iterations passed and failed. This is relevant in "
          "analyzing transitory failures. For example if all the "
          "errors occurred in just one of 100 iterations, the device "
          "may be viewed as OK or marginal, to be monitored further "
          "rather then failed. Note: LoopsPassed & LoopsFailed should "
          "add up to the loops completed.")]
   uint32 LoopsPassed;


// ---------  Properties below here are copied from  ------------------
// ---------  DiagnosticSetting                      ------------------
// Note that the DiagnosticSetting object can be modified at any time,
// and the current test settings can be lost. When RunTest starts
// execution the settings, which are time sensitive, should be evaluated
// and captured.

      [Deprecated { "CIM_DiagnosticSetting.LogOptions" }, Write, 
       Description (
          "Sets the level of warning messages to be logged. If for "
          "example no warning information is required, the level would "
          "be set to \"No Warnings\" (value=0). Using \"Missing "
          "Resources\" (value=1) will cause warnings to be generated "
          "when required resources or hardware are not found. Setting "
          "the value to 2, \"Testing Impacts\", results in both "
          "missing resources and 'test impact' warnings (for example, "
          "multiple retries required) to be reported."), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "No Warnings", "Missing Resources", "Testing Impacts",
          "All Warnings" }]
   uint16 TestWarningLevel;

      [Deprecated { "CIM_DiagnosticSetting.LogOptions" }, Write, 
       Description (
          "When this flag is true, the diagnostic test will report "
          "'soft errors'. In this context, a soft error is a message "
          "from the diagnostic reporting a known defect in the "
          "hardware or driver configuration, or execution environment. "
          "Examples are: 'Not enough memory', 'Driver IOCTL not "
          "implemented', 'Video RAM compare failed during polygon fill "
          "test (A known defect in the video chipset)', etc.")]
   boolean ReportSoftErrors;

      [Deprecated { "CIM_DiagnosticSetting.LogOptions" }, Write, 
       Description (
          "When this flag is true, the diagnostic test will report "
          "'status messages'. In this context, a status message "
          "indicates that the diagnostic code is at a checkpoint. "
          "Examples are: \"Completion of phase 1\", \"Complex "
          "pattern\", etc.")]
   boolean ReportStatusMessages;

      [Deprecated { "CIM_DiagnosticSettingRecord.HaltOnError" }, Write, 
       Description (
          "When this flag is true, the test will halt after finding "
          "the first error.")]
   boolean HaltOnError;

      [Deprecated { "CIM_DiagnosticSettingRecord.QuickMode" }, Write, 
       Description (
          "When this flag is true, the test software should attempt to "
          "run in an accelerated fashion either by reducing the "
          "coverage or number of tests performed.")]
   boolean QuickMode;

      [Deprecated { "CIM_DiagnosticSettingRecord.PercentOfTestCoverage" 
          }, Write, Description (
          "Requests the diagnostic software to reduce test coverage to "
          "the specified percentage. For example, a hard drive scan "
          "test could be asked to run at 50%. The most effective way "
          "to accomplish this is for the test software to scan every "
          "other track, as opposed to only scanning the first half of "
          "a drive. It is assumed that the effectiveness of the test "
          "is impacted proportional to the percentage of testing "
          "requested. Permissible values for this property range from "
          "0 to 100. \n"
          "This property may not be applicable to all tests. If it can "
          "be set for a test, the value 7 (\"Supports PercentOf "
          "TestCoverage\") should be entered into the DiagnosticTest's "
          "Characteristics array."), 
       Units ( "Percent" ), MinValue ( 0 ), MaxValue ( 100 ), 
       ModelCorrespondence { "CIM_DiagnosticTest.Characteristics" }]
   uint8 PercentOfTestCoverage;

};

// ==================================================================
//  CIM_DiagnosticTest
// ==================================================================
   [Abstract,  Version ( "2.11.0" ), Description (
       "The CIM_DiagnosticTest class represents the framework for "
       "running diagnostic tests. Specific diagnostic tests may be "
       "defined by subclassing and/or instantiating this object. To "
       "provide more detail for a type of test(s) (i.e, additional "
       "properties and methods), subclassing is appropriate. \n"
       "When a DiagnosticTest can be simultaneously executed against "
       "several elements, then DiagnosticTest may launch a ConcreteJob "
       "to represent each execution.")]
class CIM_DiagnosticTest : CIM_DiagnosticService {

      [Description (
          "The descriptions for each Characteristic are below: \n"
          "\n"
          "* \"Is Exclusive\" (value=2) is specified for the test "
          "module only if the diagnostic cannot run more than one test "
          "at a time, regardless of how many SystemElements are "
          "supported. Typically, this occurs when hardware or software "
          "constraints prevent the test from running as multiple, "
          "concurrent instances. If the diagnostic can be run against "
          "multiple SystemElements, but only once per Element, then "
          "set the IsExclusiveForMSE boolean property on the "
          "appropriate instances of DiagnosticTestForMSE. \n"
          "\n"
          "* If \"Is Interactive\" (value=3) is set, then the "
          "diagnostic displays a message either before, during or "
          "after testing. \n"
          "\n"
          "* Set \"Is Destructive\" (value=4) if the diagnostic will "
          "destroy data, or reconfigure the Element that is being "
          "tested. \n"
          "\n"
          "* \"Is Risky\" (value=5) indicates that data loss may occur "
          "if the test is interrupted. Some tests make copies of data, "
          "perform the test, and restore the data returning the tested "
          "entity to its previous configuration. If the test is "
          "interrupted, then loss of data or reconfiguration of the "
          "tested ManagedSystemElement may occur. \n"
          "\n"
          "* If \"Is Package\" (value=6) is set, this test is actually "
          "a set of lower level diagnostics, that are packaged "
          "together by the test. This packaging is implemented by the "
          "diagnostic test, not aggregated by CIM. Information and "
          "results associated with the individual tests in the package "
          "may be requested by using the \"Subtests\" value in the "
          "DiagnosticSetting.LogOptions array. \n"
          "\n"
          "(value=7) was \"Supports PercentOfTestCoverage\" in Version "
          "2.6. Value = 7 is being deprecated. Instead, it should be "
          "described in DiagnosticServiceCapabilities. \n"
          "\n"
          "\"Is Synchronous\" (value=8) indicates that this diagnostic "
          "service will complete before the RunDiagnostic method "
          "returns to the caller. A Job is still created that can be "
          "accessed by the client for accounting purposes, but the "
          "ability to track progress and status of the Job are lost. "
          "Additionally, in certain environments, the client may be "
          "\"blocked\" from further action until the service "
          "completes. \n"
          "\"Media Required\" (value=9) indicates that this diagnostic "
          "service requires that media be inserted into the device in "
          "order to perform the service. \"Additional Hardware "
          "Required\" (value=10) indicates that this diagnostic "
          "service requires that some additional hardware is installed "
          "(e.g., wrap plug) in order to perform the service."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10" }, 
       Values { "Unknown", "Other", "Is Exclusive", "Is Interactive",
          "Is Destructive", "Is Risky", "Is Package", "Reserved",
          "Is Synchronous", "Media Required",
          "Additional Hardware Required" }, 
       ModelCorrespondence { 
          "CIM_DiagnosticTest.OtherCharacteristicsDescriptions" }]
   uint16 Characteristics[];

      [Deprecated { 
          "CIM_DiagnosticTest.OtherCharacteristicsDescriptions" }, 
       Description (
          "Provides additional information for the Characteristic when "
          "its value is set to 1 (\"Other\")."), 
       ModelCorrespondence { "CIM_DiagnosticTest.Characteristics" }]
   string OtherCharacteristicDescription;

      [Description (
          "OtherCharacteristicsDescriptions is a Bag array that "
          "contains an element with additional information for each "
          "Characteristics element with a value of 1 (\"Other\")."), 
       ModelCorrespondence { "CIM_DiagnosticTest.Characteristics" }]
   string OtherCharacteristicsDescriptions[];


      [Deprecated { "CIM_Service.Started" }, Description (
          "This property is being deprecated. The boolean Started "
          "property inherited from CIM_Service should be used instead. "
          "\nIf this test is currently being performed, the InUse "
          "property is set to TRUE. To determine which ManagedSystem "
          "Element is being tested, query the DiagnosticResult objects "
          "associated with this test (query DiagnosticResultForTest), "
          "and for which the TestState equals 4 (\"In Progress\"). The "
          "DiagnosticResult object is associated with the System "
          "Element under test, using DiagnosticResultForMSE.")]
   boolean IsInUse;

      [Deprecated { "CIM_ServiceAffectsElement" }, Description (
          "This property is being deprecated and replaced with a more "
          "general method for indicating Managed Elements that are "
          "affected by this Test. The DiagnosticService parent has a "
          "ServiceAffectsElement association to a Managed Element for "
          "this purpose. \n"
          "The \"Expensive\" qualifier can be applied to this class "
          "and its RunTest method. If so, the ResourcesUsed property "
          "describes the resources that are capitalized, based on a "
          "default setup for the test. Multiple resources can be "
          "specified since the property is an array."), 
       ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
          "12", "13", "14", "15", "16", "17", "18", "19", "20", "21",
          "22", "23", "24", "25", "26", "27", "28" }, 
       Values { "CPU", "Memory", "Hard Disk", "CDROM", "Floppy",
          "PCI Bus", "USB Bus", "1394 Bus", "SCSI Bus", "IDE Bus",
          "Network", "ISA Bus", "EISA Bus", "VESA Bus", "PCMCIA Bus",
          "CardBus", "Access.bus", "NuBus", "AGP", "VME Bus",
          "Sbus IEEE 1396-1993", "MCA Bus", "GIO Bus", "XIO Bus",
          "HIO Bus", "PMC Bus", "SIO Bus" }]
   uint16 ResourcesUsed[];


      [Deprecated { "CIM_DiagnosticService.RunDiagnostic" }, 
       Description (
          "This method is being deprecated and replaced by the "
          "RunDiagnostic method in the DiagnosticService class. \n"
          "The RunTest method executes this test for the specified "
          "ManagedSystemElement. The use of this method has been "
          "deprecated. Instead, the RunDiagnostic method (inherited "
          "from DiagnosticService) should be used. \n"
          "The RunTest method executes this test for the specified "
          "ManagedSystemElement (defined using the SystemElement input "
          "parameter). Results of the test are stored in a Diagnostic "
          "Result object, a reference to which is returned as the "
          "Result output parameter. How the test should execute, i.e. "
          "its settings, is defined in a DiagnosticSetting object (or "
          "by a subclass of DiagnosticSetting). A reference to a "
          "Setting object is specified using the Setting input "
          "parameter. If a reference is not passed into the method, "
          "then a default DiagnosticSetting may be used. This default "
          "Setting is associated with the DiagnoticTest using the "
          "DefaultSetting relationship of the Core Model. \n"
          "When RunTest starts execution, the settings, which are time "
          "sensitive, should be evaluated and captured. This is "
          "suggested since the DiagnosticSetting object can be "
          "modified at any time, and therefore the current test "
          "settings could be lost. \n"
          "The method's return codes are expected to adhere to the XML "
          "return codes as they are introduced. Currently, the "
          "standard return values are: \n"
          "0 = OK (function succeeded, but the test itself may have "
          "failed \n"
          "1 = Unspecified Error (function failed for unspecified "
          "reasons) \n"
          "2 = Not Implemented (function is not implemented for this "
          "instance) \n"
          "3 = Out Of Resources (component could not allocate required "
          "resources, e.g. memory, disk space, etc.) \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 RunTest( 
         [IN, Description (
             "The ManagedSystemElement on which the test will run.")]
      CIM_ManagedSystemElement REF SystemElement, 
         [IN, Description (
             "How the test should execute, i.e. its settings, is "
             "defined in a DiagnosticSetting object (or by a subclass "
             "of DiagnosticSetting). A reference to a Setting object "
             "is specified using the Setting input parameter. If a "
             "reference is not passed into the method, then a default "
             "DiagnosticSetting may be used. This default Setting is "
             "associated with the DiagnoticTest using the "
             "DefaultSetting relationship of the Core Model.")]
      CIM_DiagnosticSetting REF Setting, 
         [IN ( false ), OUT, Description (
             "Results of the test are stored in a DiagnosticResult "
             "object, a reference to which is returned as the Result "
             "output parameter.")]
      CIM_DiagnosticResult REF Result); 


      [Deprecated { "CIM_Log.ClearLog" }, Description (
          "This method is deprecated in favor of using the "
          "corresponding functionality contained in the Log class, "
          "this is consistant with the deprecation of the Result class "
          "in favor of Log. \n"
          "Execution of this method will delete all instances of the "
          "DiagnosticResultForMSE object, for this DiagnosticTest and "
          "the specified ManagedSystemElement (defined using the "
          "SystemElement input parameter). The DiagnosticResults "
          "referenced in the DiagnosticResultForMSE instances will be "
          "deleted. Also the association DiagnosticResultForTest that "
          "refers to the DiagnosticResult object, and this test will "
          "be deleted. \n"
          "One output parameter is defined - ResultsNotCleared - which "
          "is a string array that lists the keys of the "
          "DiagnosticResults which could not be deleted. This "
          "information enables those Results to be revisited and "
          "either manually removed, or other corrective action taken. "
          "\nThe method's return codes are expected to adhere to the "
          "XML return codes as they are introduced. Currently, the "
          "standard return values are: \n"
          "0 = OK (function succeeded, but the test itself may have "
          "failed) \n"
          "1 = Unspecified Error (function failed for unspecified "
          "reasons) \n"
          "2 = Not Implemented (function is not implemented for this "
          "instance) \n"
          "3 = Out Of Resources (component could not allocate required "
          "resources, e.g. memory, disk space, etc.) \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 ClearResults( 
         [IN, Description (
             "The Managed System Element for which results will be "
             "cleared.")]
      CIM_ManagedSystemElement REF SystemElement, 
         [IN ( false ), OUT, Description (
             "A string array that lists the keys of the "
             "DiagnosticResults which could not be deleted.")]
      string ResultsNotCleared[]); 


      [Deprecated { "CIM_ConcreteJob.RequestStateChange" }, 
       Description (
          "After invocation of this method and its completion, the "
          "specified test(s) will be discontinued for the indicated "
          "ManagedSystemElement (defined by the SystemElement input "
          "parameter). The test to discontinue is specified using the "
          "Result input parameter. If all instances of this test "
          "should be stopped for the SystemElement, then the Result "
          "reference should be NULL. Upon completion of the method, "
          "test status and other information (such as PercentComplete) "
          "will be stored in the DiagnosticResult instance defined by "
          "the Result input parameter. The output parameter, "
          "TestingStopped, is used as follows: \n"
          "Set to TRUE if testing was successfully stopped. \n"
          "Set to FALSE if the current test(s) can not be stopped. \n"
          "If set to FALSE, testing will stop when the diagnostic is "
          "able to do so safely. To determine if/when the testing is "
          "stopped, check the TestState property in the "
          "DiagnosticResult instance defined by the Result parameter. "
          "TestState will change from \"In Progress\" to \"Stopped\" "
          "(from 4 to 5). \n"
          "The method's return codes are expected to adhere to the XML "
          "return codes as they are introduced. Currently, the "
          "standard return values are: \n"
          "0 = OK (function succeeded, but the test itself may have "
          "failed \n"
          "1 = Unspecified Error (function failed for unspecified "
          "reasons) \n"
          "2 = Not Implemented (function is not implemented for this "
          "instance) \n"
          "3 = Out Of Resources (component could not allocate required "
          "resources, e.g. memory, disk space, etc.) \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 DiscontinueTest( 
         [IN, Description (
             "Testing will be discontinued for the indicated "
             "ManagedSystemElement defined by the SystemElement input "
             "parameter.")]
      CIM_ManagedSystemElement REF SystemElement, 
         [IN, Description (
             "The test to discontinue is specified using the Result "
             "input parameter.")]
      CIM_DiagnosticResult REF Result, 
         [IN ( false ), OUT, Description (
             "TestingStopped, is set to TRUE if testing was "
             "successfully stopped. It is set to FALSE if the current "
             "test(s) can not be stopped. If set to FALSE, testing "
             "will stop when the diagnostic is able to do so safely. "
             "To determine if/when the testing is stopped, check the "
             "TestState property in the DiagnosticResult instance "
             "defined by the Result parameter. TestState will change "
             "from \"In Progress\" to \"Stopped\" (from 4 to 5).")]
      boolean TestingStopped); 

      [Description (
          "The descriptions for each test type are below: \n"
          "\n"
          "* If \"Functional\" (value=2) is set, this tests one, more "
          "or all the functionality of the element. \n"
          "\n"
          "* If \"Stress\" (value=3) is set, this test is a stress "
          "test or exerciser for the element. \n"
          "\n"
          "* If \"Health Check\" (value=4) is set, this test validates "
          "the current health of the element. \n"
          "\n"
          "* If \"Access Test\" (value=5) is set, this test verifies "
          "the element is accessible to the system and user. This "
          "would include access through the OS as a user would access "
          "the element. \n"
          "\n"
          "* If \"Media Verify\" (value=6) is set, this test verifies "
          "the media for the element. This does not validate that "
          "specific data is correctly written on the media or even if "
          "data can be written to the media, but verifies that the "
          "media itself has no faults."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x8000.." }, 
       Values { "Unknown", "Other", "Functional", "Stress",
          "Health Check", "Access Test", "Media Verify",
          "DMTF Reserved", "Vendor Reserved" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticTest.OtherTestTypesDescriptions" }]
   uint16 TestTypes[];

      [Description (
          "OtherTestTypesDescriptions is an array that contains an "
          "element with additional information for each TestTypes "
          "element with a value of 1 (\"Other\")."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticTest.TestTypes" }]
   string OtherTestTypesDescriptions[];

};

// ==================================================================
//  CIM_MediaAccessDevice
// ==================================================================
   [Abstract,  Version ( "2.6.0" ), Description (
       "A MediaAccessDevice represents the ability to access one or "
       "more media and use this media to store and retrieve data.")]
class CIM_MediaAccessDevice : CIM_LogicalDevice {

      [Description (
          "Capabilities of the MediaAccessDevice. For example, the "
          "Device may support \"Random Access\", removeable media and "
          "\"Automatic Cleaning\". In this case, the values 3, 7 and 9 "
          "would be written to the array. \n"
          "Several of the enumerated values require some explanation: "
          "1) Value 11, Supports Dual Sided Media, distinguishes a "
          "Device that can access both sides of dual sided Media, from "
          "a Device that reads only a single side and requires the "
          "Media to be flipped; and, 2) Value 12, Predismount Eject "
          "Not Required, indicates that Media does not have to be "
          "explicitly ejected from the Device before being accessed by "
          "a PickerElement."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12" }, 
       Values { "Unknown", "Other", "Sequential Access",
          "Random Access", "Supports Writing", "Encryption",
          "Compression", "Supports Removeable Media",
          "Manual Cleaning", "Automatic Cleaning", 
          // 10                
          "SMART Notification", "Supports Dual Sided Media",
          "Predismount Eject Not Required" }, 
       MappingStrings { "MIF.DMTF|Storage Devices|001.9",
          "MIF.DMTF|Storage Devices|001.11",
          "MIF.DMTF|Storage Devices|001.12", "MIF.DMTF|Disks|003.7",
          "MIF.DMTF|Host Disk|001.2", "MIF.DMTF|Host Disk|001.4" },
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_MediaAccessDevice.CapabilityDescriptions" }]
   uint16 Capabilities[];

      [Description (
          "An array of free-form strings providing more detailed "
          "explanations for any of the AccessDevice features indicated "
          "in the Capabilities array. Note, each entry of this array "
          "is related to the entry in the Capabilities array that is "
          "located at the same index."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_MediaAccessDevice.Capabilities" }]
   string CapabilityDescriptions[];

      [Description (
          "ErrorMethodology is a free-form string describing the "
          "type(s) of error detection and correction supported by this "
          "Device.")]
   string ErrorMethodology;

      [Description (
          "A free form string indicating the algorithm or tool used by "
          "the device to support compression. If it is not possible or "
          "not desired to describe the compression scheme (perhaps "
          "because it is not known), recommend using the following "
          "words: \"Unknown\" to represent that it is not known "
          "whether the device supports compression capabilities or "
          "not, \"Compressed\" to represent that the device supports "
          "compression capabilities but either its compression scheme "
          "is not known or not disclosed, and \"Not Compressed\" to "
          "represent that the devices does not support compression "
          "capabilities.")]
   string CompressionMethod;

      [Description (
          "When the MediaAccessDevice supports multiple individual "
          "Media, this property defines the maximum number which can "
          "be supported or inserted.")]
   uint32 NumberOfMediaSupported;

      [Description (
          "Maximum size, in KBytes, of media supported by this Device. "
          "KBytes is interpreted as the number of bytes multiplied by "
          "1000 (NOT the number of bytes multiplied by 1024)."), 
       MappingStrings { "MIF.DMTF|Sequential Access Devices|001.2",
          "MIF.DMTF|Host Disk|001.5" }]
   uint64 MaxMediaSize;

      [Description (
          "Default block size, in bytes, for this Device."), 
       Units ( "Bytes" )]
   uint64 DefaultBlockSize;

      [Description (
          "Maximum block size, in bytes, for media accessed by this "
          "Device."), 
       Units ( "Bytes" )]
   uint64 MaxBlockSize;

      [Description (
          "Minimum block size, in bytes, for media accessed by this "
          "Device."), 
       Units ( "Bytes" )]
   uint64 MinBlockSize;

      [Description (
          "Boolean indicating that the MediaAccessDevice needs "
          "cleaning. Whether manual or automatic cleaning is possible "
          "is indicated in the Capabilities array property.")]
   boolean NeedsCleaning;

      [Description (
          "True indicates that the media is locked in the Device and "
          "can not be ejected. For non-removeable Devices, this value "
          "should be true.")]
   boolean MediaIsLocked;

      [Description (
          "An enumeration indicating the operational security defined "
          "for the MediaAccessDevice. For example, information that "
          "the Device is \"Read Only\" (value=4) or \"Boot Bypass\" "
          "(value=6) can be described using this property."), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7" }, 
       Values { "Other", "Unknown", "None", "Read Only", "Locked Out",
          "Boot Bypass", "Boot Bypass and Read Only" }, 
       MappingStrings { "MIF.DMTF|Disks|003.22" }]
   uint16 Security;

      [Description (
          "The date and time on which the Device was last cleaned.")]
   datetime LastCleaned;

      [Description (
          "Time in milliseconds to move from the first location on the "
          "Media to the location that is furthest with respect to "
          "time. For a DiskDrive, this represents full seek + full "
          "rotational delay. For TapeDrives, this represents a search "
          "from the beginning of the tape to the most physically "
          "distant point. (The end of a tape may be at its most "
          "physically distant point, but this is not necessarily "
          "true.)"), 
       Units ( "MilliSeconds" )]
   uint64 MaxAccessTime;

      [Description (
          "The sustained data transfer rate in KB/sec that the Device "
          "can read from and write to a Media. This is a sustained, "
          "raw data rate. Maximum rates or rates assuming compression "
          "should not be reported in this property."), 
       Units ( "KiloBytes per Second" )]
   uint32 UncompressedDataRate;

      [Description (
          "Time in milliseconds from 'load' to being able to read or "
          "write a Media. For example, for DiskDrives, this is the "
          "interval between a disk not spinning to the disk reporting "
          "that it is ready for read/write (ie, the disk spinning at "
          "nominal speeds). For TapeDrives, this is the time from a "
          "Media being injected to reporting that it is ready for an "
          "application. This is usually at the tape's BOT area."), 
       Units ( "MilliSeconds" )]
   uint64 LoadTime;

      [Description (
          "Time in milliseconds from being able to read or write a "
          "Media to its 'unload'. For example, for DiskDrives, this is "
          "the interval between a disk spinning at nominal speeds and "
          "a disk not spinning. For TapeDrives, this is the time for a "
          "Media to go from its BOT to being fully ejected and "
          "accessible to a PickerElement or human operator."), 
       Units ( "MilliSeconds" )]
   uint64 UnloadTime;

      [Description (
          "For a MediaAccessDevice that supports removable Media, the "
          "number of times that Media have been mounted for data "
          "transfer or to clean the Device. For Devices accessing "
          "nonremovable Media, such as hard disks, this property is "
          "not applicable and should be set to 0."), 
       Counter]
   uint64 MountCount;

      [Description (
          "For a MediaAccessDevice that supports removable Media, the "
          "most recent date and time that Media was mounted on the "
          "Device. For Devices accessing nonremovable Media, such as "
          "hard disks, this property has no meaning and is not "
          "applicable.")]
   datetime TimeOfLastMount;

      [Description (
          "For a MediaAccessDevice that supports removable Media, the "
          "total time (in seconds) that Media have been mounted for "
          "data transfer or to clean the Device. For Devices accessing "
          "nonremovable Media, such as hard disks, this property is "
          "not applicable and should be set to 0.")]
   uint64 TotalMountTime;

      [Description (
          "Defines 'Units' relative to its use in the property, "
          "MaxUnitsBeforeCleaning. This describes the criteria used to "
          "determine when the MediaAccessDevice should be cleaned."), 
       ModelCorrespondence { 
          "CIM_MediaAccessDevice.MaxUnitsBeforeCleaning",
          "CIM_MediaAccessDevice.UnitsUsed" }]
   string UnitsDescription;

      [Description (
          "An unsigned integer indicating the maximum 'units' that can "
          "be used, with respect to the AccessDevice, before the "
          "Device should be cleaned. The property, UnitsDescription, "
          "defines how 'units' should be interpreted."), 
       ModelCorrespondence { "CIM_MediaAccessDevice.UnitsDescription" }]
   uint64 MaxUnitsBeforeCleaning;

      [Description (
          "An unsigned integer indicating the currently used 'units' "
          "of the AccessDevice, helpful to describe when the Device "
          "may require cleaning. The property, UnitsDescription, "
          "defines how 'units' should be interpreted."), 
       Gauge, 
       ModelCorrespondence { "CIM_MediaAccessDevice.UnitsDescription",
          "CIM_MediaAccessDevice.MaxUnitsBeforeCleaning" }]
   uint64 UnitsUsed;

      [Description (
          "Method to lock and unlock the media in a removeable Access "
          "Device. The method takes one parameter as input - a boolean "
          "indicating whether to lock or unlock. TRUE indicates that "
          "the media should be locked in the Device, FALSE indicates "
          "that the media should be unlocked. The method returns 0 if "
          "successful, 1 if not supported, and any other value if an "
          "error occurred. The set of possible return codes should be "
          "specified in a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' "
          "should be specified as a Values array qualifier on the "
          "method.")]
   uint32 LockMedia ( 
         [IN, Description (
             "If TRUE, lock the media. If FALSE release the media.")]
      boolean Lock); 
};

// ==================================================================
//  CIM_DiskDrive
// ==================================================================
   [Abstract,  Version ( "2.6.0" ), Description (
       "Capabilities and managment of a DiskDrive, a subtype of "
       "MediaAccessDevice.")]
class CIM_DiskDrive : CIM_MediaAccessDevice {
};

// ==================================================================
//  CIM_MediaPartition
// ==================================================================
   [Abstract,  Version ( "2.6.0" ), Description (
       "A MediaPartition is a presentation of a contiguous range of "
       "logical blocks and has identifying data written on/to it. It "
       "may include a signature written by the OS or by an "
       "application. This class is a common superclass for Disk and "
       "TapePartions. Partitions are directly realized by Physical "
       "Media (indicated by the RealizesExtent association) or built "
       "on StorageVolumes (indicated by the BasedOn association).")]
class CIM_MediaPartition : CIM_StorageExtent {

      [Description (
          "Boolean indicating that the Partition is labeled as "
          "bootable. (Note that this does not mean that an Operating "
          "System is actually loaded on the Partition.) With the "
          "advent of bootable Tape and other bootable media, this "
          "property is included in the higher level MediaPartition "
          "class, rather than in a subclass such as DiskPartition.")]
   boolean Bootable;

      [Description (
          "Boolean indicating that the Partition is available and may "
          "be allocated for use.")]
   boolean Allocatable;

      [Description (
          "An identifying string written to the Partition. Additional "
          "information related to this 'Signature' may be found in the "
          "properties, SignatureState and SignatureAlgorithm."), 
       ModelCorrespondence { "CIM_MediaPartition.SignatureState",
          "CIM_MediaPartition.SignatureAlgorithm" }]
   string Signature;

      [Description (
          "A free-form string describing the algorithm used to define "
          "the Partition Signature. The value of this property is "
          "dependent on the Signature's State."), 
       ModelCorrespondence { "CIM_MediaPartition.Signature",
          "CIM_MediaPartition.SignatureState" }]
   string SignatureAlgorithm;

      [Description (
          "An enumeration describing the state of the Partition's "
          "identifying Signature string. Information such as "
          "\"Uninitialized\" (value=2), or \"Assigned by Owning "
          "Application\" (value=5) are possible entries."), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "Unimplemented", "Uninitialized",
          "Calculated by Operating System",
          "Calculated by a Media Manager",
          "Assigned by Owning Application" }, 
       ModelCorrespondence { "CIM_MediaPartition.Signature",
          "CIM_MediaPartition.SignatureAlgorithm" }]
   string SignatureState;

      [Description (
          "Boolean indicating that the Partition can be grown/extended "
          "without reformatting.")]
   boolean Extendable;
};

// ==================================================================
//  CIM_GenericDiskPartition
// ==================================================================
   [Abstract, Experimental,  Version ( "2.8.1000" ), Description (
       "A DiskPartition is a presentation of a contiguous range of "
       "logical blocks that is identifiable by the Operating System by "
       "the associated DiskPartitionConfigurationCapabilities and by "
       "the properties of the subclasses of this class. \n"
       "\n"
       "Each concrete partition style (the subclasses of "
       "GenericDiskPartition) has some way of tracking a starting "
       "block number and either the ending block or number of blocks. "
       "CIM models this with the StartingAddress and EndingAddress "
       "properties of the BasedOn association between the partition "
       "and its underlying volume/extent. The NumberOfBlocks and "
       "ConsumableBlocks properties inherited from StorageExtent also "
       "need to be consistent or omitted by the instrumentation. "
       "Partition numbers are modeled as BasedOn.OrderIndex. \n"
       "\n"
       "Note that all the concrete DiskPartition instances BasedOn the "
       "same underlying extent) MUST share the same partition style "
       "(i.e. all must have the same subclass type). \n"
       "\n"
       "The abstract qualifier can not be used on this class because "
       "its superclass is not abstract. But instances of subclasses "
       "this class should be instantiated, not instances of "
       "GenericDiskPartition itself.")]
class CIM_GenericDiskPartition : CIM_MediaPartition {
};

// ==================================================================
//  CIM_DiskPartition
// ==================================================================
   [Abstract,  Version ( "2.8.1000" ), Description (
       "A DiskPartition is a presentation of a contiguous range of "
       "logical blocks that is identifiable by the Operating System "
       "via the Partition's type and subtype fields. Disk Partitions "
       "should be directly realized by PhysicalMedia (indicated by the "
       "RealizesDiskPartition association) or built on StorageVolumes "
       "(indicated by the PartitionBasedOnVolume association.")]
class CIM_DiskPartition : CIM_GenericDiskPartition {

      [Description ( 
          "Boolean indicating that the DiskPartition is labelled as "
          "the primary partition for a ComputerSystem." )]
   boolean PrimaryPartition;

      [Description ( "The type of Partition." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Unknown", "Primary", "Extended", "Logical" }]
   uint16 PartitionType;

      [Description ( 
          "The \'sub\' type of a primary, extended, or logical "
          "Partition. The list of possible values corresponds to "
          "the decimal representation of the typical values in the "
          "Partition record." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "14", "15", "16", "17", "18", "20", 
          "22", "23", "27", "28", "33", "35", "36", "38", "49", 
          "51", "52", "53", "54", "55", "60", "64", "65", "66", 
          "67", "80", "81", "82", "83", "84", "85", "86", "97", 
          "99", "100", "101", "102", "103", "104", "105", "113", 
          "115", "116", "117", "118", "119", "120", "121", "128", 
          "129", "130", "131", "132", "134", "135", "147", "148", 
          "161", "163", "164", "165", "166", "177", "179", "180", 
          "182", "183", "184", "193", "196", "198", "199", "216", 
          "219", "225", "227", "228", "229", "230", "239", "240", 
          "241", "242", "243", "244", "246", "254", "255", "65535" }, 
       Values { "Empty | Microsoft", "DOS 12-bit FAT", "XENIX root", 
          "XENIX usr", "DOS 16-bit FAT", "DOS Extended", 
          "DOS 16-bit FAT (> 32MB)", 
          "OS/2 HPFS | Win NTFS | QNX Ver 2 | Adv UNIX", 
          "AIX Boot | OS /2 | Dell (Array) | Commodore DOS", 
          "AIX Data, Coherent", "OS/2 Boot Manager", "32-bit FAT", 
          "32-bit FAT", "Microsoft 16-bit FAT", 
          "Microsoft DOS Extended", "OPUS | OS/2 2.0", 
          "OS/2 (MOSS) Inactive Type 1", 
          "Compaq Diagnostics Partition | Microsoft", 
          "OS/2 (MOSS) Inactive Type 4", 
          "OS/2 (MOSS) Inactive Type 6", 
          "OS/2 (MOSS) Inactive Type 7", 
          "OS/2 (MOSS) Inactive Type B", 
          "OS/2 (MOSS) Inactive Type C", "Microsoft", "Microsoft", 
          "Microsoft", "Microsoft", "Microsoft", "Microsoft", 
          "Microsoft", "OS/2 Logical Volume Manager", "Microsoft", 
          "OS/2 JFS Log", "PowerQuest", 
          "VENIX 80286 | Series/1 Disk", "Personal RISC Boot", 
          "Veritas", "Veritas", 
          "OnTrack Disk Manager Read Only DOS", 
          "OnTrack Disk Manager Read/Write DOS", 
          "CPM | Microport System V/386 | OnTrack Disk Mgr | Microsoft", 
          "OnTrack Disk Manager", "OnTrack Disk Manager Non-DOS", 
          "Micro House EZ-Drive Non-DOS", 
          "Golden Bow Vfeature | Microsoft", 
          "Storage Dimensions SpeedStor | Microsoft", 
          "UNIX - AT&T System V/386 | SCO UNIX", 
          "Novell NetWare | Speedstore", "Novell NetWare", 
          "Novell NetWare", "Novell", "Novell", "Novell", 
          "Microsoft", "Microsoft", "Microsoft", "PC/IX IBM", 
          "Microsoft", "QNX POSIX", "QNX POSIX (Secondary)", 
          "QNX POSIX (Secondary)", 
          "Minix (<=1.4a) | Linux | Microsoft", 
          "Minix (>=1.4b) | Microsoft", "Linux Swap | Prime", 
          "Linux Native | Apple", "System Hibernation for APM", 
          "Microsoft", "HPFS FT mirror", "Amoeba | Microsoft", 
          "Amoeba BBT | Microsoft", "Microsoft", "Microsoft", 
          "Microsoft", "BSD/386", "Microsoft", "Microsoft", 
          "Microsoft", "Microsoft", "Microsoft", 
          "BSDI fs | Microsoft", "BSDI Swap | Microsoft", 
          "Microsoft", "Microsoft", "Microsoft", 
          "Syrinx | HPFS FT Disabled Mirror", "CP/M 86", 
          "Digital Research CPM-86 | Concurrent DOS | OUTRIGGER", 
          "SpeedStor 12-bit FAT Extended", 
          "DOS Read-Only | Storage Dimensions", 
          "SpeedStor 16-bit FAT Extended", "Microsoft", "Microsoft", 
          "Intel", "OS/2 Raw Data", "Storage Dimensions", 
          "DOS (Secondary)", "Microsoft", 
          "SpeedStor Large | Storage Dimensions", "Microsoft", 
          "Lan Step | SpeedStor | IBM PS/2 IML", "Bad Block Tables", 
          "Unknown" }]
   uint16 PartitionSubtype;

      [Override ( "NameFormat" ), 
       Description ( 
          "DiskPartition names MUST use OS Device Name format. In "
          "cases where the partition names can not be used by "
          "applications programmatically (for example, open()) the "
          "NameFormat SHOULD be \'Other\'." ), 
       ValueMap { "1", "12" }, 
       Values { "Other", "OS Device Name" }]
   uint16 NameFormat = 12;

      [Override ( "NameNamespace" ), 
       Description ( 
          "DiskPartition names MUST use OS Device Namespace." ), 
       ValueMap { "1", "8" }, 
       Values { "Other", "OS Device Namespace" }]
   uint16 NameNamespace = 8;
};

// ==================================================================
//  CIM_StorageVolume
// ==================================================================
   [Abstract,  Version ( "2.13.0" ), Description (
       "A StorageVolume is an Extent that is presented to the "
       "Operating System (for example, by a hardware RAID cabinet), to "
       "a File System (for example, by a software volume manager) or "
       "to another entity. StorageVolumes do NOT participate in "
       "StorageRedundancy Groups. They are directly Realized in "
       "hardware or are the end result of assembling lower level "
       "Extents.")]
class CIM_StorageVolume : CIM_StorageExtent {

      [Override ( "Name" ), Description (
          "A unique identifier for the Volume."), 
       MappingStrings { "ANSI|T10|SCSI SPC-3|8.6" }, 
       ModelCorrespondence { "CIM_StorageVolume.NameFormat" }]
   string Name;

      [Override ( "NameFormat" ), Description (
          "A subset of StorageExtent name formats apply to "
          "StorageVolumes."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11" }, 
       Values { "Unknown", "Other", "VPD83NAA6", "VPD83NAA5",
          "VPD83Type2", "VPD83Type1", "VPD83Type0", "SNVM", "NodeWWN",
          "NAA", "EUI64", "T10VID" }]
   uint16 NameFormat;

      [Override ( "NameNamespace" ), Description (
          "A subset of StorageExtent name spaces apply to "
          "StorageVolume."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7" }, 
       Values { "Unknown", "Other", "VPD83Type3", "VPD83Type2",
          "VPD83Type1", "VPD80", "NodeWWN", "SNVM" }]
   uint16 NameNamespace;
};

// ==================================================================
//  CIM_DiskPartitionBasedOnVolume
// ==================================================================
   [Association, Abstract,  Version ( "2.8.1000" ), Description (
       "DiskPartitions should be BasedOn a single StorageVolume (for "
       "example, exposed by a hardware RAID cabinet), an SCC "
       "VolumeSet, or realized directly in PhysicalMedia. The first "
       "two relationships are made explicit in this association. The "
       "latter is conveyed by the RealizesDiskPartition association.")]
class CIM_DiskPartitionBasedOnVolume : CIM_BasedOn {

      [Override ( "Antecedent" ), Max ( 1 ), Description (
          "The StorageVolume.")]
   CIM_StorageVolume REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The DiskPartition which is built on the Volume.")]
   CIM_GenericDiskPartition REF Dependent;
};

// ==================================================================
//  CIM_ElementCapabilities
// ==================================================================
   [Association, Abstract,  Version ( "2.24.0" ), Description (
       "ElementCapabilities represents the association between "
       "ManagedElements and their Capabilities. Note that the "
       "cardinality of the ManagedElement reference is Min(1), Max(1). "
       "This cardinality mandates the instantiation of the "
       "ElementCapabilities association for the referenced instance of "
       "Capabilities. ElementCapabilities describes the existence "
       "requirements and context for the referenced instance of "
       "ManagedElement. Specifically, the ManagedElement MUST exist "
       "and provides the context for the Capabilities.")]
class CIM_ElementCapabilities {

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

      [Key, Description ( 
          "The Capabilities object associated with the element." )]
   CIM_Capabilities REF Capabilities;

      [Description ( 
          "Characteristics provides descriptive information about "
          "the Capabilities. when the value 2 \"Default\" is "
          "specified, the associated Capabilities shall represent "
          "the default capabilities of the associated Managed "
          "Element \n"
          "when the value 2 \"Default\" is not specified, the "
          "Capabilities instance may represent the default "
          "capabilities of the Managed Element\n"
          "When the value 3 \"Current\" is specified, the "
          "associated Capabilities shall represent the current "
          "capabilities of the associated Managed Element\n"
          "When the value 3 \"Current\" is not specified, the "
          "Capabilities instance may represent the current "
          "capabilities of the Managed Element." ), 
       ValueMap { "2", "3", "..", "32768..65535" }, 
       Values { "Default", "Current", "DMTF Reserved", 
          "Vendor Specific" }]
   uint16 Characteristics[];
};

// ==================================================================
//  CIM_ElementSettingData
// ==================================================================
   [Association, Abstract,  Version ( "2.19.1" ), 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 that is associated with the element."
           )]
   CIM_SettingData REF SettingData;

      [Description ( 
          "An enumerated integer that indicates 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 that indicates that the referenced "
          "SettingData represents the last requested values for "
          "attributes of the Managed Element or that this "
          "information is unknown. \n"
          "Attributes of the SettingData itself indicate whether it "
          "represents the last configuration applied to the "
          "ManagedElement or is a transient snapshot of the "
          "requested settings. Current operational characteristics "
          "of a ManagedElement should be represented with "
          "properties of the ManagedElement. element or that this "
          "information is unknown. \n"
          "For a given ManagedElement and all instances of a "
          "SettingData subclass, there shall be at most one "
          "instance of ElementSettingData which references the "
          "ManagedElement and an instance of the SettingData "
          "sub-class where there is a specified non-null, non-key "
          "property of the SettingData sub-class, and the IsMaximum "
          "property on the referencing ElementSettingData instance "
          "has a value of \"Is Maximum\" or the IsMinimum property "
          "on the referencing ElementSettingData instance has a "
          "value of \"Is Minimum\" and the IsCurrent property on "
          "the referencing ElementSettingData instance has a value "
          "of \"Is Current\". There shall be at most one instance "
          "of ElementSettingData which references a ManagedElement "
          "and an instance of a SettingData sub-class where the "
          "IsCurrent property has a value of \"Is Current\" and the "
          "IsMinimum property does not have a value of \"Is "
          "Minimum\" and the IsMaximum property does not have a "
          "value of \"Is Maximum\"." ), 
       ValueMap { "0", "1", "2" }, 
       Values { "Unknown", "Is Current", "Is Not Current" }]
   uint16 IsCurrent;

      [Description ( 
          "An enumerated integer indicating whether or not the "
          "referenced setting is the next setting to be applied. "
          "For example, the application could take place on a "
          "re-initialization, reset, reconfiguration request. This "
          "could be a permanent setting, or a setting used only one "
          "time, as indicated by the flag. If it is a permanent "
          "setting then the setting is applied every time the "
          "managed element reinitializes, until this flag is "
          "manually reset. However, if it is single use, then the "
          "flag is automatically cleared after the settings are "
          "applied. Also note that if this flag is specified (i.e. "
          "set to value other than \"Unknown\"), then this takes "
          "precedence over any SettingData that may have been "
          "specified as Default. For example: If the managed "
          "element is a computer system, and the value of this flag "
          "is \"Is Next\", then the setting will be effective next "
          "time the system resets. And, unless this flag is "
          "changed, it will persist for subsequent system resets. "
          "However, if this flag is set to \"Is Next For Single "
          "Use\", then this setting will only be used once and the "
          "flag would be reset after that to \"Is Not Next\". So, "
          "in the above example, if the system reboots in a quick "
          "succession, the setting will not be used at the second "
          "reboot." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Unknown", "Is Next", "Is Not Next", 
          "Is Next For Single Use" }]
   uint16 IsNext;

      [Experimental, Description ( 
          "This property affects the interpretation of all "
          "non-null, non-enumerated, non-binary, numeric, non-key "
          "properties of the associated SettingData instance. All "
          "other properties of the associated SettingData instance "
          "are not affected by this property. \n"
          "Note: It is assumed that the semantics of each property "
          "of this set are designed to be compared mathematically. \n"
          "When IsMinimum = \"Is Miniumum\", this property "
          "indicates that the affected property values specified in "
          "the associated SettingData instance shall define desired "
          "minimum setting values. The operational minimum values "
          "should be modeled as a properties of the "
          "CIM_ManagedElement instance.\n"
          "When IsMinimum = \"Is Not Miniumum\", this property "
          "indicates that the affected property values specified in "
          "the associated SettingData instance shall not define "
          "desired minimum setting values. \n"
          "When IsMinimum = \"Unknown\", this property indicates "
          "that the affected property values specified in the "
          "associated SettingData instance may correspond to "
          "minimum desired setting values. \n"
          "When IsMinimum = \"Not Applicable\", this property "
          "indicates that the affected property values specified in "
          "the associated SettingData instance shall not be "
          "interpreted with respect to whether each defines a "
          "desired minimum." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Unknown", "Not Applicable", "Is Minimum", 
          "Is Not Minimum" }]
   uint16 IsMinimum = 0;

      [Experimental, Description ( 
          "This property affects the interpretation of all "
          "non-null, non-enumerated, non-binary, numeric, non-key "
          "properties of the associated SettingData instance. All "
          "other properties of the associated SettingData instance "
          "are not affected by this property. \n"
          "Note: It is assumed that the semantics of each property "
          "of this set are designed to be compared mathematically. \n"
          "When IsMaximum = \"Is Maxiumum\", this property "
          "indicates that the affected property values specified in "
          "the associated SettingData instance shall define desired "
          "maximum setting values. The operational maximum values "
          "should be modeled as a properties of the "
          "CIM_ManagedElement instance.\n"
          "When IsMaximum = \"Is Not Maxiumum\", this property "
          "indicates that the affected property values specified in "
          "the associated SettingData instance shall not define "
          "desired maximum setting values. \n"
          "When IsMaximum = \"Unknown\", this property indicates "
          "that the affected property values specified in the "
          "associated SettingData instance may correspond to "
          "maximum desired setting values. \n"
          "When IsMaximum = \"Not Applicable\", this property "
          "indicates that the affected property values specified in "
          "the associated SettingData instance shall not be "
          "interpreted with respect to whether each defines a "
          "desired maximum." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Unknown", "Not Applicable", "Is Maximum", 
          "Is Not Maximum" }]
   uint16 IsMaximum = 0;

      [Experimental, Description ( 
          "An enumerated integer that indicates whether or not the "
          "referenced CIM_SettingData instance represents "
          "outstanding changes to the configuration of the "
          "referenced CIM_ManagedElement that are known to be "
          "pending and are in the process of being applied. A value "
          "of 0 \"Unknown\" indicates that the referenced instance "
          "of CIM_SettingData may represent the last configuration "
          "applied to the referenced CIM_ManagedElement. A value of "
          "2 \"Is Pending\" shall indicate that the referenced "
          "instance of CIM_SettingData represents outstanding "
          "changes to the configuration of the referenced "
          "CIM_ManagedElement that are known to be pending. A value "
          "of 3 \"Is Not Pending\" shall indicate that the "
          "referenced instance of CIM_SettingData does not "
          "represent outstanding changes to the configuration of "
          "the referenced CIM_ManagedElement." ), 
       ValueMap { "0", "2", "3", "..", "32768.." }, 
       Values { "Unknown", "Is Pending", "Is Not Pending", 
          "DMTF Reserved", "Vendor Reserved" }]
   uint16 IsPending = 0;
};

// ==================================================================
//  CIM_SoftwareIdentity
// ==================================================================
   [Abstract,  Version ( "2.23.0" ), Description (
       "SoftwareIdentity provides descriptive information about a "
       "software component for asset tracking and/or installation "
       "dependency management. When the IsEntity property has the "
       "value TRUE, the instance of SoftwareIdentity represents an "
       "individually identifiable entity similar to Physical Element. "
       "SoftwareIdentity does NOT indicate whether the software is "
       "installed, executing, etc. This extra information may be "
       "provided through specialized associations to Software "
       "Identity. For instance, both InstalledSoftwareIdentity and "
       "ElementSoftwareIdentity may be used to indicate that the "
       "software identified by this class is installed. "
       "SoftwareIdentity is used when managing the software components "
       "of a ManagedElement that is management focus. Since software "
       "may be acquired, SoftwareIdentity can be associated with a "
       "Product using the ProductSoftwareComponent relationship. The "
       "Application Model manages the deployment and installation of "
       "software via the classes, SoftwareFeatures and "
       "SoftwareElements. SoftwareFeature and SoftwareElement are used "
       "when the software component is the management focus. The "
       "deployment/installation concepts are related to the "
       "asset/identity one. In fact, a SoftwareIdentity may correspond "
       "to a Product, or to one or more SoftwareFeatures or "
       "SoftwareElements - depending on the granularity of these "
       "classes and the deployment model. The correspondence of "
       "Software Identity to Product, SoftwareFeature or "
       "SoftwareElement is indicated using the ConcreteIdentity "
       "association. Note that there may not be sufficient detail or "
       "instrumentation to instantiate ConcreteIdentity. And, if the "
       "association is instantiated, some duplication of information "
       "may result. For example, the Vendor described in the instances "
       "of Product and SoftwareIdentity MAY be the same. However, this "
       "is not necessarily true, and it is why vendor and similar "
       "information are duplicated in this class. \n"
       "Note that ConcreteIdentity can also be used to describe the "
       "relationship of the software to any LogicalFiles that result "
       "from installing it. As above, there may not be sufficient "
       "detail or instrumentation to instantiate this association.")]
class CIM_SoftwareIdentity : CIM_LogicalElement {

      [Key, Override ( "InstanceID" ), 
       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;

      [Description ( 
          "The major number component of the software\'s version "
          "information - for example, \'12\' from version 12.1(3)T. "
          "This property is defined as a numeric value to allow the "
          "determination of \'newer\' vs. \'older\' releases. A "
          "\'newer\' major release is indicated by a larger numeric "
          "value." )]
   uint16 MajorVersion;

      [Description ( 
          "The minor number component of the software\'s version "
          "information - for example, \'1\' from version 12.1(3)T. "
          "This property is defined as a numeric value to allow the "
          "determination of \'newer\' vs. \'older\' releases. A "
          "\'newer\' minor release is indicated by a larger numeric "
          "value." )]
   uint16 MinorVersion;

      [Description ( 
          "The revision or maintenance release component of the "
          "software\'s version information - for example, \'3\' "
          "from version 12.1(3)T. This property is defined as a "
          "numeric value to allow the determination of \'newer\' "
          "vs. \'older\' releases. A \'newer\' revision is "
          "indicated by a larger numeric value." )]
   uint16 RevisionNumber;

      [Description ( "The build number of the software." ), 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.LargeBuildNumber", 
          "CIM_SoftwareIdentity.IsLargeBuildNumber" }]
   uint16 BuildNumber;

      [Description ( 
          "The build number of the software if IsLargeBuildNumber "
          "is TRUE. TheLargeBuildNumber property should be used for "
          "all future implementations." ), 
       ModelCorrespondence { "CIM_SoftwareIdentity.BuildNumber", 
          "CIM_SoftwareIdentity.IsLargeBuildNumber" }]
   uint64 LargeBuildNumber;

      [Description ( 
          "The IsLargeBuildNumber property is used to indicate if "
          "the BuildNumber of LargeBuildNumber property contains "
          "the value of the software build. A value of TRUE shall "
          "indicate that the build number is represented by the "
          "LargeBuildNumber property. A value of FALSE shall "
          "indicate that the build number is represented by the "
          "BuildNumber property." ), 
       ModelCorrespondence { "CIM_SoftwareIdentityBuildNumber", 
          "CIM_SoftwareIdentity.LargeBuildNumber" }]
   boolean IsLargeBuildNumber = false;

      [Description ( 
          "A string representing the complete software version "
          "information - for example, \'12.1(3)T\'. This string and "
          "the numeric major/minor/revision/build properties are "
          "complementary. Since vastly different representations "
          "and semantics exist for versions, it is not assumed that "
          "one representation is sufficient to permit a client to "
          "perform computations (i.e., the values are numeric) and "
          "a user to recognize the software\'s version (i.e., the "
          "values are understandable and readable). Hence, both "
          "numeric and string representations of version are "
          "provided." )]
   string VersionString;

      [Description ( 
          "Specifies the target operating systems of the software. "
          "This property should be used when a target operating "
          "system is not listed in the TargetOSTypes array values." )]
   string TargetOperatingSystems[];

      [Description ( "Manufacturer of this software." )]
   string Manufacturer;

      [Description ( 
          "The language editions supported by the software. The "
          "language codes defined in ISO 639 should be used." )]
   string Languages[];

      [Description ( 
          "An array of enumerated integers that classify this "
          "software. For example, the software MAY be "
          "instrumentation (value=5) or firmware and diagnostic "
          "software (10 and 7). The use of value 6, Firmware/BIOS, "
          "is being deprecated. Instead, either the value 10 "
          "(Firmware) and/or 11 (BIOS/FCode) SHOULD be used. The "
          "value 13, Software Bundle, identifies a software package "
          "consisting of multiple discrete software instances that "
          "can be installed individually or together.\n"
          "Each contained software instance is represented by an "
          "instance of SoftwareIdentity that is associated to this "
          "instance of SoftwareIdentityinstance via a Component "
          "association." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "13", "..", "0x8000..0xFFFF" }, 
       Values { "Unknown", "Other", "Driver", 
          "Configuration Software", "Application Software", 
          "Instrumentation", "Firmware/BIOS", "Diagnostic Software", 
          "Operating System", "Middleware", "Firmware", 
          "BIOS/FCode", "Support/Service Pack", "Software Bundle", 
          "DMTF Reserved", "Vendor Reserved" }, 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.ClassificationDescriptions" }]
   uint16 Classifications[];

      [Description ( 
          "An array of free-form strings providing more detailed "
          "explanations for any of the entries in the "
          "Classifications array. Note that each entry is related "
          "to one in the Classifications array located at the same "
          "index." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_SoftwareIdentity.Classifications" }]
   string ClassificationDescriptions[];

      [Description ( 
          "A manufacturer-allocated number used to identify the software."
           )]
   string SerialNumber;

      [Description ( 
          "An array of strings that describes the compatible "
          "installer(s). The purpose of the array elements is to "
          "establish compatibility between a SoftwareIdentity and a "
          "SoftwareInstallationService that can install the "
          "SoftwareIdentity by comparing the values of the array "
          "elements of this property to the values of "
          "SoftwareInstallationServiceCapabilities.SupportedTargetTypes[] "
          "property\'s array elements." ), 
       ModelCorrespondence { 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedTargetTypes" }]
   string TargetTypes[];

      [Description ( 
          "IdentityInfoValue captures additional information that "
          "MAY be used by an organization to describe or identify a "
          "software instance within the context of the "
          "organization. For example, large organizations may have "
          "several ways to address or identify a particular "
          "instance of software depending on where it is stored; a "
          "catalog, a web site, or for whom it is intended; "
          "development, customer service, etc. The indexed array "
          "property IdentityInfoValue contains 0 or more strings "
          "that contain a specific identity info string value. "
          "IdentityInfoValue is mapped and indexed to "
          "IdentityInfoType. When the IdentityInfoValue property is "
          "implemented, the IdentityInfoType property MUST be "
          "implemented and shall be formatted using the algorithm "
          "provided in the IdentityInfoType property Description." ), 
       ArrayType ( "Indexed" ), 
       MaxLen ( 256 ), 
       ModelCorrespondence { "CIM_SoftwareIdentity.IdentityInfoType" }]
   string IdentityInfoValue[];

      [Description ( 
          "An indexed array of fixed-form strings that provide the "
          "description of the type of information that is stored in "
          "the corresponding component of the IdentityInfoValue "
          "array. The elements of this property array describe the "
          "type of the value in the corresponding elements of the "
          "IndetityInfoValue array. When the IdentityInfoValue "
          "property is implemented, the IdentityInfoType property "
          "MUST be implemented. To insure uniqueness the "
          "IdentityInfoType property SHOULD be formatted using the "
          "following algorithm: < OrgID > : < LocalID > 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 that is creating or defining the "
          "IdentityInfoType or that is a registered ID assigned to "
          "the business entity by a recognized global authority. "
          "(This requirement 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 IdentityInfoType MUST appear "
          "between < OrgID > and < LocalID > . < LocalID > is "
          "chosen by the business entity and SHOULD NOT be reused "
          "to identify different underlying software elements." ), 
       ArrayType ( "Indexed" ), 
       MaxLen ( 256 ), 
       ModelCorrespondence { "CIM_SoftwareIdentity.IdentityInfoValue" }]
   string IdentityInfoType[];

      [Description ( "The date the software was released." )]
   datetime ReleaseDate;

      [Description ( 
          "The IsEntity property is used to indicate whether the "
          "SoftwareIdentity corresponds to a discrete copy of the "
          "software component or is being used to convey "
          "descriptive and identifying information about software "
          "that is not present in the management domain.A value of "
          "TRUE shall indicate that the SoftwareIdentity instance "
          "corresponds to a discrete copy of the software "
          "component. A value of FALSE shall indicate that the "
          "SoftwareIdentity instance does not correspond to a "
          "discrete copy of the Software." )]
   boolean IsEntity = false;

      [Description ( 
          "The binary format type of the installation package of "
          "the software. This property can be used to locate a "
          "SoftwareInstallationService capable of installing this "
          "software." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "..", "0x8000.." }, 
       Values { "Unknown", "Other", "Not Applicable", "Linux RPM", 
          "HP-UX Depot", "Windows MSI", "Solaris Package", 
          "Macintosh Disk Image", "Debian linux Package", 
          "VMware vSphere Installation Bundle", 
          "VMware Software Bulletin", "DMTF Reserved", 
          "Vendor Reserved" }, 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.OtherExtendedResource", 
          "CIM_SoftwareIdentity.MinExtendedResourceTypeMajorVersion", 
          "CIM_SoftwareIdentity.MinExtendedResourceTypeMinorVersion", 
          "CIM_SoftwareIdentity.MinExtendedResourceTypeRevisionNumber", 
          "CIM_SoftwareIdentity.MinExtendedResourceTypeBuildNumber", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]" }]
   uint16 ExtendedResourceType;

      [Description ( 
          "A string describing the binary format type of the "
          "installation package of the software when the "
          "ExtendedResourceType property has a value of 1 (Other)." ), 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.ExtendedResourceType", 
          "CIM_SoftwareIdentity.MinExtendedResourceTypeMajorVersion", 
          "CIM_SoftwareIdentity.MinExtendedResourceTypeMinorVersion", 
          "CIM_SoftwareIdentity.MinExtendedResourceTypeRevisionNumber", 
          "CIM_SoftwareIdentity.MinExtendedResourceTypeBuildNumber", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]" }]
   string OtherExtendedResourceTypeDescription;

      [Description ( 
          "This property represents the major number component of "
          "the minimum version of the installer, represented by the "
          "ExtendedResourceType property, that is required to "
          "install this software." ), 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.ExtendedResourceType", 
          "CIM_SoftwareIdentity.OtherExtendedResourceTypeDescription", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesMajorVersions[]" }]
   uint16 MinExtendedResourceTypeMajorVersion;

      [Description ( 
          "This property represents the minor number component of "
          "the minimum version of the installer, represented by "
          "theExtendedResourceType property, that is required to "
          "install this software." ), 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.ExtendedResourceType", 
          "CIM_SoftwareIdentity.OtherExtendedResourceTypeDescription", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesMinorVersions[]" }]
   uint16 MinExtendedResourceTypeMinorVersion;

      [Description ( 
          "This property represents the Revision number component "
          "of the minimum version of the installer, represented by "
          "theExtendedResourceType property, that is required to "
          "install this software." ), 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.ExtendedResourceType", 
          "CIM_SoftwareIdentity.OtherExtendedResourceTypeDescription", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesRevisionNumbers[]" }]
   uint16 MinExtendedResourceTypeRevisionNumber;

      [Description ( 
          "This property represents the Build number component of "
          "the minimum version of the installer, represented by "
          "theExtendedResourceType property, that is required to "
          "install this software." ), 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.ExtendedResourceType", 
          "CIM_SoftwareIdentity.OtherExtendedResourceTypeDescription", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesBuildNumbers[]" }]
   uint16 MinExtendedResourceTypeBuildNumber;

      [Description ( 
          "The TargetOSTypes property specifies the target "
          "operating systems supported by the software. When the "
          "target operating system of the software is not listed in "
          "the enumeration values, TargetOperatingSystems[] "
          "property should be used to specify the target operating "
          "system." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "11", "12", "13", "14", "15", "16", "17", "18", 
          "19", "20", "21", "22", "23", "24", "25", "26", "27", 
          "28", "29", "30", "31", "32", "33", "34", "35", "36", 
          "37", "38", "39", "40", "41", "42", "43", "44", "45", 
          "46", "47", "48", "49", "50", "51", "52", "53", "54", 
          "55", "56", "57", "58", "59", "60", "61", "62", "63", 
          "64", "65", "66", "67", "68", "69", "70", "71", "72", 
          "73", "74", "75", "76", "77", "78", "79", "80", "81", 
          "82", "83", "84", "85", "86", "87", "88", "89", "90", 
          "91", "92", "93", "94", "95", "96", "97", "98", "99", 
          "100", "101", "102", "103", "104", "105", "106", "107", 
          "108", "109", "110" }, 
       Values { "Unknown", "Other", "MACOS", "ATTUNIX", "DGUX", 
          "DECNT", "Tru64 UNIX", "OpenVMS", "HPUX", "AIX", 
          //10 
          "MVS", "OS400", "OS/2", "JavaVM", "MSDOS", 
          "WIN3x", "WIN95", "WIN98", "WINNT", "WINCE", 
          //20 
          "NCR3000", "NetWare", "OSF", "DC/OS", 
          "Reliant UNIX", "SCO UnixWare", "SCO OpenServer", 
          "Sequent", "IRIX", "Solaris", //30 
          "SunOS", 
          "U6000", "ASERIES", "HP NonStop OS", "HP NonStop OSS", 
          "BS2000", "LINUX", "Lynx", "XENIX", "VM", 
          //40 
          "Interactive UNIX", "BSDUNIX", "FreeBSD", 
          "NetBSD", "GNU Hurd", "OS9", "MACH Kernel", "Inferno", 
          "QNX", "EPOC", //50 
          "IxWorks", "VxWorks", 
          "MiNT", "BeOS", "HP MPE", "NextStep", "PalmPilot", 
          "Rhapsody", "Windows 2000", "Dedicated", 
          //60 
          "OS/390", "VSE", "TPF", "Windows (R) Me", 
          "Caldera Open UNIX", "OpenBSD", "Not Applicable", 
          "Windows XP", "z/OS", "Microsoft Windows Server 2003", 
          //70
          "Microsoft Windows Server 2003 64-Bit", 
          "Windows XP 64-Bit", "Windows XP Embedded", 
          "Windows Vista", "Windows Vista 64-Bit", 
          "Windows Embedded for Point of Service", 
          "Microsoft Windows Server 2008", 
          "Microsoft Windows Server 2008 64-Bit", "FreeBSD 64-Bit", 
          "RedHat Enterprise Linux", 
          //80
          "RedHat Enterprise Linux 64-Bit", 
          "Solaris 64-Bit", "SUSE", "SUSE 64-Bit", "SLES", 
          "SLES 64-Bit", "Novell OES", "Novell Linux Desktop", 
          "Sun Java Desktop System", "Mandriva", 
          //90
          "Mandriva 64-Bit", "TurboLinux", 
          "TurboLinux 64-Bit", "Ubuntu", "Ubuntu 64-Bit", "Debian", 
          "Debian 64-Bit", "Linux 2.4.x", "Linux 2.4.x 64-Bit", 
          "Linux 2.6.x", //100
          "Linux 2.6.x 64-Bit", 
          "Linux 64-Bit", "Other 64-Bit", 
          "Microsoft Windows Server 2008 R2", "VMware ESXi", 
          "Microsoft Windows 7", "CentOS 32-bit", "CentOS 64-bit", 
          "Oracle Enterprise Linux 32-bit", 
          "Oracle Enterprise Linux 64-bit", 
          //110 
          "eComStation 32-bitx" }, 
       ModelCorrespondence { "CIM_OperatingSystem.OSType" }]
   uint16 TargetOSTypes[];
};

// ==================================================================
//  CIM_ElementSoftwareIdentity
// ==================================================================
   [Association, Abstract,  Version ( "2.20.0" ), Description (
       "ElementSoftwareIdentity allows a Managed Element to report its "
       "software related asset information (firmware, drivers, "
       "configuration software, and etc.)")]
class CIM_ElementSoftwareIdentity : CIM_Dependency {

      [Override ( "Antecedent" ), 
       Description ( "A LogicalElement\'s Software Asset." )]
   CIM_SoftwareIdentity REF Antecedent;

      [Override ( "Dependent" ), 
       Description ( 
          "The ManagedElement that requires or uses the software." )]
   CIM_ManagedElement REF Dependent;

      [Description ( 
          "Indicates the element\'s ability to upgrade this "
          "software asset.\n"
          "\'Resides off element\'(2), indicates the persistence of "
          "the software is outside of the element. Typically for a "
          "element this software is part of the OperatingSystem is "
          "typically upgradeable.\n"
          "\'Owner Upgradeable\' (3), indicates the persistence of "
          "the software is on the element and is upgradeable by the owner.\n"
          "\'FactoryUpgradeable\' (4),indicates the persistence of "
          "the software is on the element and is upgradeable by the manufacturer.\n"
          "\'Not Upgradeable\' (5), indicates the presistence of "
          "the software is on the element and is not upgradeable. "
          "(i.e. burned into a non replaceable ROM chip." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", 
          "0x8000..0xFFFF" }, 
       Values { "Unknown", "Other", "Resides off device", 
          "Owner Upgradeable", "Factory Upgradeable", 
          "Not Upgradeable", "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { 
          "CIM_ElementSoftwareIdentity.OtherUpgradeCondition" }]
   uint16 UpgradeCondition;

      [Description ( 
          "Describes the upgrade condition, when UpgradeCondition "
          "is set to 1 (\"Other\")." ), 
       ModelCorrespondence { 
          "CIM_ElementSoftwareIdentity.UpgradeCondition" }]
   string OtherUpgradeCondition;

      [Description ( 
          "A collection of properties describing the status of the "
          "software on the managed element. Multiple properties "
          "could be set at the same time. For example a "
          "ElementSoftwareStatus could have \"Installed\", "
          "\"Default\", \"Current\" and \"FallBack\" set at the "
          "same time. \n"
          "\"Current\" indicates that the software is currently "
          "running on or for the Managed Element. \n"
          "\"Next\" indicates that the software will run after the "
          "next reset or reboot unless superseded by a software "
          "with a status of \"SingleUse\". \n"
          "\"FallBack\" indicates that the software will be run if "
          "the software which has a status of \"Next\" or "
          "\"SingleUse\" fails to run. \n"
          "\"Default\" indicates the default version of the "
          "software that was originally shipped by the "
          "manufacturer. \n"
          "\"Installed\" indicates that the software is "
          "persistently located and is available for use on the "
          "Managed Element. \n"
          "\"SingleUse\" indicates that the software will run only "
          "after the next reset or reboot but will not run after "
          "the subsequent reset or reboot. \n"
          "\"Available\" indicates that the software is available "
          "for installation on the Managed Element. \n"
          "\"Supports\"indicates that the software will work with "
          "or operate the Managed Element but is or will be "
          "installed on a different Managed Element." ), 
       ValueMap { "0", "2", "3", "4", "5", "6", "7", "8", "9", "..", 
          "32768..65535" }, 
       Values { "Unknown", "Current", "Next", "FallBack", "Default", 
          "Installed", "Single Use", "Available", "Supports", 
          "DMTF Reserved", "Vendor Reserved" }]
   uint16 ElementSoftwareStatus[];
};

// ==================================================================
//  CIM_EnabledLogicalElementCapabilities
// ==================================================================
   [Abstract,  Version ( "2.14.0" ), Description (
       "EnabledLogicalElementCapabilities describes the capabilities "
       "supported for changing the state of the associated "
       "EnabledLogicalElement.")]
class CIM_EnabledLogicalElementCapabilities : CIM_Capabilities {

      [Description (
          "Boolean indicating whether the ElementName can be modified."), 
       MappingStrings { 
          "FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|EditName" }, 
       ModelCorrespondence { "CIM_ManagedElement.ElementName" }]
   boolean ElementNameEditSupported;

      [Description (
          "Maximum supported ElementName length."), 
       MaxValue ( 256 ), 
       MappingStrings { 
          "FC-SWAPI.INCITS-T11|SWAPI_UNIT_CONFIG_CAPS_T|MaxNameChars" }, 
       ModelCorrespondence { 
          "CIM_FCSwitchCapabilities.ElementNameEditSupported" }]
   uint16 MaxElementNameLen;

      [Description (
          "RequestedStatesSupported indicates the possible states that "
          "can be requested when using the method RequestStateChange "
          "on the EnabledLogicalElement."), 
       ValueMap { "2", "3", "4", "6", "7", "8", "9", "10", "11" }, 
       Values { "Enabled", "Disabled", "Shut Down", "Offline", "Test",
          "Defer", "Quiesce", "Reboot", "Reset" }, 
       ModelCorrespondence { 
          "CIM_EnabledLogicalElement.RequestStateChange" }]
   uint16 RequestedStatesSupported[];
};

// ==================================================================
//  CIM_Fan
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "Capabilities and management of a Fan CoolingDevice.")]
class CIM_Fan : CIM_CoolingDevice {

      [Description (
          "Indication of whether the fan supports variable speeds.")]
   boolean VariableSpeed;

      [Description (
          "DesiredSpeed is the currently requested fan speed, defined "
          "in revolutions per minute, when a variable speed fan is "
          "supported (VariableSpeed Boolean = TRUE). The current speed "
          "is determined using a sensor (CIM_Tachometer) that is "
          "associated with the Fan using the CIM_AssociatedSensor "
          "relationship."), 
       Punit ( "revolution / minute" ), Units ( ""
          "Revolutions per Minute" )]
   uint64 DesiredSpeed;


      [Experimental, Description (
          "ControlModesSupported indicates the supported control modes "
          "of the Fan: automatic or manual. In Automatic mode the Fan "
          "is controlled automatically in management function below "
          "the CIM. In Manual mode, the fan speed may be controlled by "
          "the CIM user by the SetSpeed method. Changing from "
          "Automatic to Manual, would not generally cause the speed to "
          "change. Changing from Manual to Automatic may cause the fan "
          "speed to change depending on the Thermal conditions of the "
          "system and the thermal management function."), 
       ValueMap { "0", "2", "3", "4..32767", "32768..65535" }, 
       Values { "Unknown", "Automatic", "Manual", "DMTF Reserved",
          "Vendor Specified" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_Fan.ControlMode",
          "CIM_Fan.DesiredControlMode" }]
   uint16 ControlModesSupported[] ;

      [Experimental, Description (
          "ControlMode indicates the mode in which management of the "
          "Fan is operating. When in Manual mode, the SetSpeed method "
          "can be used to control the fan speed."), 
       ValueMap { "0", "2", "3", "4..32767", "32768..65535" }, 
       Values { "Unknown", "Automatic", "Manual", "DMTF Reserved",
          "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_Fan.ControlModesSupported",
          "CIM_Fan.DesiredControlMode" }]
   uint16 ControlMode;

      [Experimental, Write, Description (
          "DesiredControlMode is an integer enumeration indicating the "
          "last requested or desired control mode for the fan. The "
          "actual control mode is represented by ControlMode. The "
          "property is provided to compare the last requested and the "
          "current control mode. Refer to the ControlMode property "
          "Description for explanations of the values in the "
          "DesiredControlMode enumeration."), 
       ValueMap { "0", "2", "3", "4..32767", "32768..65535" }, 
       Values { "Unknown", "Automatic", "Manual", "DMTF Reserved",
          "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_Fan.ControlModesSupported" }]
   uint16 DesiredControlMode;

      [Description (
          "Method that requests that the Fan speed be set to the value "
          "specified in the input parameter of the method. The return "
          "value should be: \n"
          "0 if the request was successfully executed \n"
          "1 if the request is not supported \n"
          "2 if the request is not valid for the current mode \n"
          "3 if the requested speed is not currently valid \n"
          "Some other value if an error occurred. In a subclass, the "
          "set of possible return codes could be specified, using a "
          "ValueMap qualifier on the method. The strings to which the "
          "ValueMap contents are 'translated' can also be specified in "
          "the subclass as a Values array qualifier."), 
       ValueMap { "0", "1", "2", "3", "4..32767", "32768..65535" }, 
       Values { "Completed with No Errors", "Not Supported",
          "Invalid ControlMode for Setting Speed", "Invalid Speed",
          "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_Fan.DesiredSpeed" }]
   uint32 SetSpeed ( 
         [IN, Description (
             "The desired speed for the fan.")]
      uint64 DesiredSpeed); 
};

// ==================================================================
//  CIM_HelpService
// ==================================================================
   [Abstract,  Version ( "2.9.0" ), Description (
       "HelpService provides the ability for a managed element to "
       "describe and provide access to its Help information. Support "
       "for various delivery mechanisms and data formats can be "
       "specified so that the most suitable data representation can be "
       "chosen. In adddition, a request can be made to launch a "
       "\"Help\" program, if available.")]
class CIM_HelpService : CIM_Service {

      [Description (
          "Defines the delivery methods supported by this help "
          "service./n \"File Contents\" indicates that the contents of "
          "the Help file is returned by the GetHelp method. \n"
          "\"File Pointer\" indicates that a fully specified path to "
          "the Help file is returned by the GetHelp method. \n"
          "\"Associated File\" indicates that associations to "
          "CIM_LogicalFile instance(s) is available. \n"
          "\"URL\" indicates that a URL to a website is returned by "
          "the GetHelp method. \n"
          "\"Program\" indicates that a Help program is launched (on "
          "the local system) by the GetHelp method."), 
       ValueMap { "1", "2", "3", "4", "5", "6" }, 
       Values { "Other", "File Contents", "File Pointer",
          "Associated File", "URL", "Program" }, 
       ModelCorrespondence { 
          "CIM_HelpService.OtherDeliveryOptionDescription",
          "CIM_HelpServiceAvailableToFile" }]
   uint16 DeliveryOptions[];

      [Description (
          "Describes the nature of the delivery method when "
          "DeliveryOptions = \"Other\" is specified."), 
       ModelCorrespondence { "CIM_HelpService.DeliveryOptions" }]
   string OtherDeliveryOptionDescription;

      [Description (
          "List of all of the document names/ids that are available "
          "via this help service and NOT exposed by the "
          "HelpServiceAvailableToFile association."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_HelpService.DocumentDescriptions",
          "CIM_HelpService.DocumentFormat" }]
   string DocumentsAvailable[];

      [Description (
          "List of descriptions for the corresponding documents."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_HelpService.DocumentsAvailable",
          "CIM_HelpService.DocumentFormat" }]
   string DocumentDescriptions[];

      [Description (
          "List of document formats for the corresponding documents."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6" }, 
       Values { "Unknown", "Other", "XML", "HTML", "Binary",
          "Executable", ".hlp" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_HelpService.OtherDocumentFormatDescription",
          "CIM_HelpService.DocumentDescriptions",
          "CIM_HelpService.DocumentsAvailable" }]
   uint16 DocumentFormat[];

      [Description (
          "Describes the format of the document when DocumentFormat= "
          "\"Other\" is specified."), 
       ModelCorrespondence { "CIM_HelpService.DocumentFormat" }]
   string OtherDocumentFormatDescription;

      [Description (
          "The GetHelp method produces, as an OUT parameter, a string "
          "containing document information as specified by the input "
          "parameters. The input parameters are expected to be valid "
          "sets of values from the corresponding indexed properties of "
          "this class."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "0x1000",
          "0x1001", "0x1002..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Document returned with no error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "DMTF Reserved", "Busy",
          "Requested Document not found", "Method Reserved",
          "Vendor Reserved" }]
   uint32 GetHelp(
      
         [IN, Description (
             "The name/id of the requested document or the reference "
             "to the associated document."), 
          ModelCorrespondence { "CIM_HelpService.DocumentsAvailable",
             "CIM_HelpServiceAvailableToFile.UserOfService" }]
      string RequestedDocument,
      
         [IN, OUT, Description (
             "The requested document format is passed in. The actual "
             "document format is returned."), 
          ValueMap { "0", "1", "2", "3", "4", "5", "6" }, 
          Values { "Don't Care", "Other", "XML", "HTML", "Binary",
             "Executable", ".hlp" }, 
          ModelCorrespondence { "CIM_HelpService.DocumentFormat" }]
      uint16 Format,
      
         [IN, Description (
             "The requested delivery mechanism."), 
          ValueMap { "1", "2", "3", "5", "6" }, 
          Values { "Other", "File Contents", "File Pointer", "URL",
             "Program" }, 
          ModelCorrespondence { "CIM_HelpService.DeliveryOptions" }]
      uint16 RequestedDelivery,
      
         [IN ( false ), OUT, Description (
             "If RequestedDelivery = \n"
             "File Contents, then the string contains the contents. \n"
             "File Pointer, then the string contains a pointer to the "
             "file. \n"
             "File Reference, then the string contains a REF to a "
             "CIM_LogicalFile instance. \n"
             "URL, then then the string contains a URL to the help "
             "site. \n"
             "Program, then the string is empty; the program was "
             "launched.")]
      string DocumentInfo ); 
};

// ==================================================================
//  CIM_HostedDependency
// ==================================================================
   [Association, Abstract,  Version ( "2.8.0" ), Description (
       "HostedDependency defines a ManagedElement in the context of "
       "another ManagedElement in which it resides.")]
class CIM_HostedDependency : CIM_Dependency {

      [Override ( "Antecedent" ), Max ( 1 ), Description (
          "The scoping ManagedElement.")]
   CIM_ManagedElement REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The hosted ManagedElement.")]
   CIM_ManagedElement REF Dependent;
};

// ==================================================================
//  CIM_HostedAccessPoint
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "CIM_HostedAccessPoint is an association between a Service "
       "AccessPoint and the System on which it is provided. The "
       "cardinality of this association is one-to-many and is weak "
       "with respect to the System. Each System can host many "
       "ServiceAccessPoints. Heuristic: If the implementation of the "
       "ServiceAccessPoint is modeled, it must be implemented by a "
       "Device or SoftwareFeature that is part of the System that is "
       "hosting the ServiceAccessPoint.")]
class CIM_HostedAccessPoint : CIM_HostedDependency {

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

      [Override ( "Dependent" ), Weak, Description (
          "The SAPs that are hosted on this System.")]
   CIM_ServiceAccessPoint REF Dependent;
};

// ==================================================================
//  CIM_HostedCollection
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "HostedCollection defines a SystemSpecificCollection in the "
       "context of a scoping System. It represents a Collection that "
       "has meaning only in the context of a System, a Collection "
       "whose elements are restricted by the definition of the System, "
       "or both of these types of Collections.")]
class CIM_HostedCollection : CIM_HostedDependency {

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

      [Override ( "Dependent" ), Description (
          "The collection defined in the context of a system.")]
   CIM_SystemSpecificCollection REF Dependent;
};

// ==================================================================
//  CIM_HostedService
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "CIM_HostedService is an association between a Service and the "
       "System on which the functionality is located. The cardinality "
       "of this association is one-to-many. A System can host many "
       "Services. Services are weak with respect to their hosting "
       "System. Heuristic: A Service is hosted on the System where the "
       "LogicalDevices or SoftwareFeatures that implement the Service "
       "are located. The model does not represent Services hosted "
       "across multiple systems. The model is as an ApplicationSystem "
       "that acts as an aggregation point for Services that are each "
       "located on a single host.")]
class CIM_HostedService : CIM_HostedDependency {

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

      [Override ( "Dependent" ), Weak, Description (
          "The Service hosted on the System.")]
   CIM_Service REF Dependent;
};

// ===================================================================
// CIM_HostedResourcePool
// ===================================================================
   [Association, Abstract, Experimental, Aggregation, Composition,
        Version ( "2.15.0" ), 
    Description (
       "HostedResourcePool is a specialization of the SystemComponent "
       "association that establishes that the ResourcePool is defined "
       "in the context of the System")]
class CIM_HostedResourcePool : CIM_SystemComponent {

      [Aggregate, Override ( "GroupComponent" ), Min ( 1 ), Max ( 1 ), 
       Description (
          "The parent system in the association")]
   CIM_System REF GroupComponent;

      [Override ( "PartComponent" ), Description (
          "The ResourcePool that is a component of the system")]
   CIM_ResourcePool REF PartComponent;

};

// ==================================================================
//  CIM_HostedStoragePool
// ==================================================================
   [Association, Abstract, Aggregation, Composition,  Version ( "2.15.0" ), 
    Description (
       "HostedStoragePool is a specialization of HostedResourcePool "
       "association that establishes that the StoragePool is defined "
       "in the context of the System.")]
class CIM_HostedStoragePool : CIM_HostedResourcePool {

      [Aggregate, Override ( "GroupComponent" ), Min ( 1 ), Max ( 1 ), 
       Description (
          "The parent system in the Association.")]
   CIM_System REF GroupComponent;

      [Override ( "PartComponent" ), Description (
          "The StoragePool that is a component of a System.")]
   CIM_StoragePool REF PartComponent;
};

// ==================================================================
//  CIM_InstalledSoftwareIdentity
// ==================================================================
   [Association, Abstract,  Version ( "2.8.0" ), Description (
       "The InstalledSoftwareIdentity association identifies the "
       "System on which a SoftwareIdentity is installed. This class is "
       "a corollary to InstalledSoftwareElement, but deals with the "
       "asset aspects of software (as indicated by SoftwareIdentity), "
       "versus the deployment aspects (as indicated by "
       "SoftwareElement).")]
class CIM_InstalledSoftwareIdentity {

      [Key, Description (
          "The system on which the software is installed.")]
   CIM_System REF System;

      [Key, Description (
          "The SoftwareIdentity that is installed.")]
   CIM_SoftwareIdentity REF InstalledSoftware;
};

// ==================================================================
//  CIM_RedundancySet
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "A class derived from SystemSpecificCollection that is a "
       "special collection of ManagedElements. This collection "
       "indicates that the aggregated elements together provide "
       "redundancy, or that redundancy is provided via sparing. All "
       "elements collected in a RedundancySet SHOULD be instantiations "
       "of the same object class.")]
class CIM_RedundancySet : CIM_SystemSpecificCollection {

      [Description (
          "RedundancyStatus provides information on the state of the "
          "RedundancyGroup. 'Fully Redundant' (value=2) means that all "
          "of the configured redundancy is still available; 'Degraded "
          "Redundancy' (3) means that some configured elements are "
          "degraded, missing or failed but that the number of elements "
          "in the set is still greater than the minimum required "
          "('MinNumberNeeded'); 'Redundancy Lost' (4) means that "
          "sufficient configured elements are missing or failed that "
          "no redundancy is available and the next failure experienced "
          "will cause overall failure. 'Overall Failure' (5) means "
          "that there has been an overall failure of the "
          "RedundancySet."), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "DMTF Reserved", "Fully Redundant",
          "Degraded Redundancy", "Redundancy Lost", "Overall Failure" }, 
       ModelCorrespondence { "CIM_RedundancySet.MinNumberNeeded" }]
   uint16 RedundancyStatus;

      [Description (
          "TypeOfSet provides information on the type of redundancy. - "
          "N+1 (=2) indicates all members are active, are unaware and "
          "function independent of one another. However, there exist "
          "at least one extra member to achieve functionality. "
          "'Sparing' is implied (i.e. each member can be a spare for "
          "the other(s). An example of N+1 is a system that has 2 "
          "power supplies, but needs only 1 power supply to "
          "functioning properly. \n"
          "- Load Balanced (=3) indicates all members are active. "
          "However, there functionality is not independent of each "
          "other. Their functioning is determined by some sort of load "
          "balancing algrothim (implemented in hardware and/or "
          "software). 'Sparing' is implied (i.e. each member can be a "
          "spare for the other(s). \n"
          "- Sparing (=4) indicates that all members are active and "
          "are aware of each others. However, their functionality is "
          "independent until failover. Each member can be a spare for "
          "the other(s). \n"
          "- Limited Sparing (=5) indicates that all members are "
          "active, and they may or may not be aware of each and they "
          "are not spares for each other. Instead, their redundancy is "
          "indicated by the IsSpare relationship."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "0x8000.." }, 
       Values { "Unknown", "Other", "N+1", "Load Balanced", "Sparing",
          "Limited Sparing", "DMTF Reserved", "Vendor Reserved" },
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_RedundancySet.OtherTypeOfSet" }]
   uint16 TypeOfSet[];

      [Description (
          "MinNumberNeeded indicates the smallest number of elements "
          "that MUST be operational in order to function. For example, "
          "in an N+1 redundancy relationship, the MinNumberNeeded "
          "property is set equal to N. In a 'LimitedSparing' "
          "environment, this property is meaningless and SHOULD be set "
          "to zero."), 
       MinValue ( 0 )]
   uint32 MinNumberNeeded;

      [Description (
          "MaxNumberSupported indicates the largest number of elements "
          "that can participate in the RedundancySet. A value of 0 "
          "indicates there is no limit on the number of elements.")]
   uint32 MaxNumberSupported;

      [Description (
          "This method forces a failover from one ManagedElement to "
          "another. There are two parameters to the Failover method. \n"
          "- FailoverFrom is a reference to an 'active' ManagedElement "
          "that will become inactive after the method. This element "
          "SHOULD be part of the RedundancySet via a "
          "MemberOfCollection relationship. \n"
          "- FailoverTo is a reference to the ManagedElement that will "
          "take over for the FailoverFrom element. This element SHOULD "
          "either be a member of the RedundancySet or be associated "
          "with the RedundancySet via an IsSpare relationship. \n"
          "\n"
          "Upon sucessful completion: \n"
          "- the FailoverTo element SHOULD be associated to the "
          "RedundancySet via MemberOfCollection. \n"
          "- the FailFrom element SHOULD either still be associated to "
          "the RedundandySet via MemberOfCollection with a "
          "OperationalStatus or EnableState that indicates it not "
          "active, or it SHOULD be associated to the 'Spared' "
          "collection via the MemberOfCollection association."), 
       ValueMap { "0", "1", "2", "3", "4", "..", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported",
          "Unknown/Unspecified Error", "Busy/In Use", "Paramter Error",
          "DMTF Reserved", "Vendor Reserved" }]
   uint32 Failover( 
         [IN, Description (
             "The primary ManagedSystemElement that will become "
             "inactive after the method.")]
      CIM_ManagedElement REF FailoverFrom, 
         [IN, Description (
             "The ManagedSystemElement that will take over from the "
             "primary MSE.")]
      CIM_ManagedElement REF FailoverTo); 

      [Description (
          "VendorIdentifyingInfo captures the vendor identifying data "
          "for the RedundancySet. One example is the product name for "
          "a cluster.")]
   string VendorIdentifyingInfo;

      [Description (
          "When the corresponding array entry in TypeOfSet[] is "
          "'Other', this entry provides a string describing the type "
          "of set."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_RedundancySet.TypeOfSet" }]
   string OtherTypeOfSet[];

      [Write, Description (
          "The current load balance algorithm. \n"
          "Least Blocks, Least IO, and Address Region are used in "
          "storage device path redundancy drivers to optimize load "
          "balancing by routing requests to a path with the least "
          "queued blocks or IO requests, or based on locality of "
          "reference. \n"
          "'Product Specific' indicates that the algorithm is "
          "optimized for a particular type of product. Information "
          "about that product SHOULD be provided in an associated "
          "CIM_Product instance."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7" }, 
       Values { "Unknown", "Other", "No Load Balancing", "Round Robin",
          "Least Blocks", "Least IO", "Address Region",
          "Product Specific" }, 
       ModelCorrespondence { 
          "CIM_RedundancySet.OtherLoadBalanceAlgorithm" }]
   uint16 LoadBalanceAlgorithm = 2;

      [Write, Description (
          "When LoadBalanceAlgorithm is Other, this property describes "
          "the algorithm."), 
       ModelCorrespondence { "CIM_RedundancySet.LoadBalanceAlgorithm" }]
   string OtherLoadBalanceAlgorithm;
};

// ==================================================================
//  CIM_IsSpare
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "The IsSpare association indicates an element that can spare or "
       "replace any of the elements in the referenced RedundancySet. "
       "If the 'spare' is itself a Collection, this indicates that "
       "each of the 'spare' members can replace any of the elements in "
       "the RedundancySet. In the case of a collection all of the "
       "values in the properties of this association MUST apply to all "
       "members of the Collection. \n"
       "If this is not true, then the Collection SHOULD be broken down "
       "into smaller sets (and the IsSpare association defined for "
       "each of these smaller sets), such that the properties of this "
       "association apply to all collected members.")]
class CIM_IsSpare : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "A ManagedElement or Collection of elements acting as a "
          "spare.")]
   CIM_ManagedElement REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The set of elements that ARE spared.")]
   CIM_RedundancySet REF Dependent;

      [Description (
          "Indicates the state of the 'spare'. \n"
          "- Hot Standby. The element is available 'immediately' to "
          "become a functioning member of the set. Such an element is "
          "powered on and has been initialized for it's role as a "
          "spare. \n"
          "- Cold Standby. The element is not available to join the "
          "set without action to prepare it."), 
       ValueMap { "0", "2", "3" }, 
       Values { "Unknown", "Hot Standby", "Cold Standby" }]
   uint16 SpareStatus;

      [Description (
          "Indicates whether or not the failover to the spare is a "
          "manual or automatic action."), 
       ValueMap { "0", "2", "3", "4" }, 
       Values { "Unknown", "Automatic", "Manual",
          "Both Manual and Automatic" }]
   uint16 FailoverSupported;
};

// ==================================================================
//  CIM_MediaPresent
// ==================================================================
   [Association, Abstract,  Version ( "2.6.0" ), Description (
       "Where a StorageExtent must be accessed through a MediaAccess "
       "Device, this relationship is described by the MediaPresent "
       "association."), 
    MappingStrings { "MIF.DMTF|Storage Devices|001.8" }]
class CIM_MediaPresent : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The MediaAccessDevice.")]
   CIM_MediaAccessDevice REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The StorageExtent accessed using the MediaAccessDevice.")]
   CIM_StorageExtent REF Dependent;

      [Description (
          "Boolean indicating that the accessed StorageExtent is fixed "
          "in the MediaAccessDevice and can not be ejected.")]
   boolean FixedMedia;
};

// ==================================================================
//  CIM_MemberOfCollection
// ==================================================================
   [Association, Abstract, Aggregation,  Version ( "2.6.0" ), Description (
       "CIM_MemberOfCollection is an aggregation used to establish "
       "membership of ManagedElements in a Collection.")]
class CIM_MemberOfCollection {

      [Key, Aggregate, Description (
          "The Collection that aggregates members.")]
   CIM_Collection REF Collection;

      [Key, Description (
          "The aggregated member of the Collection.")]
   CIM_ManagedElement REF Member;
};

// ==================================================================
//  CIM_Log
// ==================================================================
   [Abstract,  Version ( "2.14.0" ), Description (
       "Log represents any type of event, error or informational "
       "register or chronicle. The object describes the existence of "
       "the log and its characteristics. Log does not dictate the form "
       "of the data represented or how records/messages are stored in "
       "the log and/or accessed. Subclasses will define the "
       "appropriate methods and behavior.")]
class CIM_Log : CIM_EnabledLogicalElement {

      [Description (
          "Maximum number of records that can be captured in the Log. "
          "If undefined, a value of zero should be specified.")]
   uint64 MaxNumberOfRecords;

      [Description (
          "Current number of records in the Log."), 
       Gauge]
   uint64 CurrentNumberOfRecords;

      [Description (
          "Requests that the Log be cleared of all entries. \n"
          "The return value should be 0 if the request was "
          "successfully executed, 1 if the request is not supported, "
          "and some other value, as indicated by the ValueMap/Values "
          "qualifiers, if an error occurred."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6..0x0FFF",
          "0x1000..0x7FFF", "0x8000.." }, 
       Values { "Completed with no error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "DMTF_Reserved", "Method_Reserved",
          "Vendor_Reserved" }]
   uint32 ClearLog(); 

      [Description (
          "OverwritePolicy is an integer enumeration that indicates "
          "whether the log, represented by the CIM_Log subclasses, can "
          "overwrite its entries. Unknown (0) indicates the log's "
          "overwrite policy is unknown. \n"
          "Wraps when Full (2) indicates that the log overwrites its "
          "entries with new entries when the log has reached its "
          "maximum capacity. \n"
          "Never Overwrites (7) indicates that the log never "
          "overwrites its entries by the new entries."), 
       ValueMap { "0", "2", "7", "..", "32768..65535" }, 
       Values { "Unknown", "Wraps When Full", "Never Overwrites",
          "DMTF Reserved", "Vendor Reserved" }]
   uint16 OverwritePolicy = 0;
};

// ==================================================================
//  CIM_MessageLog
// ==================================================================
   [Abstract,  Version ( "2.14.0" ), Description (
       "MessageLog represents any type of event, error or "
       "informational register or chronicle. The object describes the "
       "existence of the log and its characteristics. Several methods "
       "are defined for retrieving, writing and deleting log entries, "
       "and maintaining the log. This type of log uses iterators to "
       "access the log records, whereas its peer class, RecordLog, "
       "uses more abstracted access mechanisms.")]
class CIM_MessageLog : CIM_Log {

      [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 ( "Name" ), Description (
          "The inherited Name serves as part of the key (a unique "
          "identifier) for the MessageLog instance."), 
       MaxLen ( 256 )]
   string Name;

      [Description (
          "An array of integers indicating the Log capabilities. "
          "Information such as \"Write Record Supported\" (value= 2) "
          "or \"Variable Length Records Supported\" (8) is specified "
          "in this property."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10" }, 
       Values { "Unknown", "Other", "Write Record Supported",
          "Delete Record Supported", "Can Move Backward in Log",
          "Freeze Log Supported", "Clear Log Supported",
          "Supports Addressing by Ordinal Record Number",
          "Variable Length Records Supported",
          "Variable Formats for Records",
          "Can Flag Records for Overwrite" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_MessageLog.CapabilitiesDescriptions" 
          }]
   uint16 Capabilities[];

      [Description (
          "An array of free-form strings providing more detailed "
          "explanations for any of the Log features indicated in the "
          "Capabilities array. Note, each entry of this array is "
          "related to the entry in the Capabilities array that is "
          "located at the same index."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_MessageLog.Capabilities" }]
   string CapabilitiesDescriptions[];

      [Description (
          "The maximum size, in bytes, to which the Log can grow. If "
          "there is no maximum, then MaxLogSize should be set to 0."), 
       Units ( "Bytes" )]
   uint64 MaxLogSize;

      [Description (
          "The size of the Log header, in bytes, if one is present. If "
          "there is no Log header, then this property should be set to "
          "0. Headers may include general information about the Log "
          "such as the current number of records, time of last update, "
          "or a pointer to the location of the first Log entry. Note "
          "that this property is NOT the size of the header for an "
          "individual Log entry. The latter is described by the "
          "property, SizeOfRecordHeader."), 
       Units ( "Bytes" )]
   uint64 SizeOfHeader;

      [Description (
          "If the SizeOfHeader property is non-zero, this property "
          "describes the structure and format of the Log header. It is "
          "a free-form string. If the SizeOfHeader property is 0, then "
          "the information in this property is undefined.")]
   string HeaderFormat;

      [Description (
          "Maximum size, in bytes, to which an individual Log entry "
          "(record) can grow - if the Capabilities array includes a "
          "value of 7 (\"Variable Length Records Supported\"). If the "
          "Capabilities array does not include a 7, then the Log only "
          "supports fixed length entries. The size of these entries is "
          "described by this property."), 
       Units ( "Bytes" )]
   uint64 MaxRecordSize;

      [Description (
          "The size of the header for the Log's individual entries, in "
          "bytes, if record headers are defined. If there are no "
          "record headers, then this property should be set to 0. "
          "Record headers may include information such as the type of "
          "the Log entry, the date/time that the entry was last "
          "updated, or a pointer to the start of optional data. Note "
          "that this property defines the header size for individual "
          "records in the Log, while the SizeOfHeader property "
          "describes the Log's overall header, typically located at "
          "the start of the MessageLog."), 
       Units ( "Bytes" )]
   uint64 SizeOfRecordHeader;

      [Description (
          "If the SizeOfRecordHeader property is non-zero, this "
          "property describes the structure and format of the record "
          "headers. It is a free-form string. If the "
          "SizeOfRecordHeader property is 0, then the information in "
          "this property is undefined.")]
   string RecordHeaderFormat;

      [Override ( "OverwritePolicy" ), Description (
          "An enumeration describing the behavior of the Log, when it "
          "becomes full or near full. For example, the Log may wrap "
          "(value=2) or may simply stop recording entries (value =7). "
          "\n\n"
          "Some of the property's possible values need further "
          "explanation: \n"
          "3=\"Clear When Near Full\" indicates that all of the Log's "
          "entries will be deleted when a specified record capacity is "
          "reached. The capacity is specified in percentage, using the "
          "property, PercentageNearFull. 'Near Full' may be less than "
          "100% if the Log takes time to clear, and a position should "
          "always be available for new records. \n"
          "4=\"Overwrite Outdated When Needed\" describes that Log "
          "entries (timestamped later than the date/time specified in "
          "the property, TimeWhenOutdated) can be overwritten. \n"
          "5=\"Remove Outdated Records\" specifies that records "
          "(timestamped later than the date/time specified in the "
          "property, TimeWhenOutdated) are logically and/or physically "
          "removed from the Log. \n"
          "6=\"Overwrite Specific Records\" indicates that specially "
          "flagged records may be overwritten. This property only "
          "makes sense when the Capabilities array includes a value of "
          "10, \"Can Flag Records for Overwrite\"."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7" }, 
       Values { "Unknown", "Other", "Wraps When Full",
          "Clear When Near Full", "Overwrite Outdated When Needed",
          "Remove Outdated Records", "Overwrite Specific Records",
          "Never Overwrite" }, 
       ModelCorrespondence { "CIM_MessageLog.OtherPolicyDescription",
          "CIM_MessageLog.TimeWhenOutdated",
          "CIM_MessageLog.PercentageNearFull" }]
   uint16 OverwritePolicy;

      [Description (
          "When the OverwritePolicy specifies a value of 1 "
          "(\"Other\"), the Log's behavior can be explained using this "
          "property. If OverwritePolicy is not 1, then this property's "
          "contents are undefined."), 
       ModelCorrespondence { "CIM_MessageLog.OverwritePolicy" }]
   string OtherPolicyDescription;

      [Description (
          "If the OverwritePolicy is based on 'outdated' records "
          "(values 4 or 5), this property defines when a Log entry is "
          "considered to be outdated - either by time interval or at a "
          "specific date and time."), 
       ModelCorrespondence { "CIM_MessageLog.OverwritePolicy" }]
   datetime TimeWhenOutdated;

      [Description (
          "If the OverwritePolicy is based on clearing records when "
          "the Log is near full (value=3), this property defines the "
          "record capacity (in percentage) that is considered to be "
          "'near full'."), 
       Units ( "Percent" ), 
       ModelCorrespondence { "CIM_MessageLog.OverwritePolicy" }]
   uint8 PercentageNearFull;

      [Description (
          "An enumeration describing the last change to the "
          "MessageLog."), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Unknown", "Add", "Delete", "Modify", "Log Cleared" }]
   uint16 LastChange;

      [Description (
          "When a change is made to the Log, the date/time of that "
          "modification is captured. This property could be used to "
          "event against any update to the MessageLog.")]
   datetime TimeOfLastChange;

      [Description (
          "When a change is made to the Log, the record number that "
          "was modified is captured.")]
   uint64 RecordLastChanged;

      [Description (
          "Boolean indicating that the Log is currently frozen and "
          "modifications are not allowed.")]
   boolean IsFrozen;

      [Description (
          "An enumeration describing the character set used to record "
          "data in the individual Log entries. For example, the Log "
          "records may contain ASCII data (value=2), or be raw octet "
          "strings (value=10)."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11" }, 
       Values { "Unknown", "Other", "ASCII", "Unicode", "ISO2022",
          "ISO8859", "Extended UNIX Code", "UTF-8", "UCS-2",
          "Bitmapped Data", "OctetString",
          "Defined by Individual Records" }]
   uint16 CharacterSet;

      [Description (
          "Requests that an iteration of the MessageLog be established "
          "and that the iterator be set to the first entry in the Log. "
          "An identifier for the iterator is returned as an output "
          "parameter of the method. \n"
          "\n"
          "Regarding iteration, you have 2 choices: 1) Embed iteration "
          "data in the method call, and allow implementations to "
          "track/ store this data manually; or, 2) Iterate using a "
          "separate object (for example, class ActiveIterator) as an "
          "iteration agent. The first approach is used here for "
          "interoperability. The second requires an instance of the "
          "Iterator object for EACH iteration in progress. 2's "
          "functionality could be implemented underneath 1. \n"
          "\n"
          "The return value from PositionToFirstRecord should be 0 if "
          "the request was successfully executed, 1 if the request is "
          "not supported and some other value if an error occurred. In "
          "a subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 PositionToFirstRecord ( 
         [IN ( false ), OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier); 

      [Description (
          "Requests that the Log's iteration identifier be advanced or "
          "retreated a specific number of records, or set to the entry "
          "at a specified numeric location. These two different "
          "behaviors are accomplished using the input parameters of "
          "the method. Advancing or retreating is achieved by setting "
          "the MoveAbsolute boolean to FALSE, and then specifying the "
          "number of entries to advance or retreat as positive or "
          "negative values in the RecordNumber parameter. Moving to a "
          "specific record number is accomplished by setting the "
          "MoveAbsolute input parameter to TRUE, and then placing the "
          "record number into the RecordNumber parameter. This can "
          "only be done if the Capabilities array includes a value of "
          "7, \"Supports Addressing by Ordinal Record Number\". \n"
          "\n"
          "After the method completes and if ordinal record numbers "
          "are supported (the Capabilities array includes a 7), the "
          "current record number is returned in the RecordNumber "
          "output parameter. Otherwise, the value of the parameter is "
          "undefined. \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from PositionAtRecord should be 0 if the "
          "request was successfully executed, 1 if the request is not "
          "supported and some other value if an error occurred. If the "
          "request is not supported, check the Capabilities array "
          "regarding support for ordinal record number addressing and "
          "backward movement in the Log (values 7 and 4, "
          "respectively). \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 PositionAtRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Advancing or retreating the IterationIdentifier is "
             "achieved by setting the MoveAbsolute boolean to FALSE, "
             "and specifying the number of entries to advance or "
             "retreat as positive or negative values in the "
             "RecordNumber parameter. Moving to a specific record "
             "number is accomplished by setting the MoveAbsolute "
             "parameter to TRUE, and placing the record number into "
             "the RecordNumber parameter.")]
      boolean MoveAbsolute, 
         [IN, OUT, Description (
             "The relative or absolute record number.")]
      sint64 RecordNumber); 

      [Description (
          "Requests that the record indicated by the "
          "IterationIdentifier be retrieved from the MessageLog. After "
          "retrieval, the IterationIdentifier may be advanced to the "
          "next record by setting the PositionToNext input parameter "
          "to TRUE. Two output parameters are defined for the method - "
          "RecordData which holds the contents of the Log entry (as an "
          "array of bytes that can be recast to an appropriate "
          "format), and RecordNumber which returns the current record "
          "number addressed via the Iteration Identifier. The "
          "RecordNumber parameter is only defined/valid when the "
          "Capabilities array indicates that ordinal record number "
          "addressing is supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from GetRecord should be 0 if the request "
          "was successfully executed, 1 if the request is not "
          "supported, and some other value if an error occurred. In a "
          "subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 GetRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean indicating that the Iteration Identifier should "
             "be advanced to the next record, after retrieving the "
             "current Log entry.")]
      boolean PositionToNext, 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber, 
         [IN ( false ), OUT, Description (
             "The record data.")]
      uint8 RecordData[]); 

      [Description (
          "Requests that the record indicated by the "
          "IterationIdentifier be deleted from the MessageLog. After "
          "deletion, the Iteration Identifier may be advanced to the "
          "next record by setting the PositionToNext input parameter "
          "to TRUE. If set to FALSE, then the IterationIdentifier will "
          "be positioned at the previous record. Two output parameters "
          "are defined for the method - RecordData which holds the "
          "contents of the deleted Log entry (as an array of bytes "
          "that can be recast to an appropriate format or discarded), "
          "and RecordNumber which returns the current record number "
          "addressed via the IterationIdentifier. The RecordNumber "
          "parameter is only defined/valid when the Capabilities array "
          "indicates that ordinal record number addressing is "
          "supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from DeleteRecord should be 0 if the "
          "request was successfully executed, 1 if the request is not "
          "supported, and some other value if an error occurred. If "
          "the request is not supported, check the Capabilities array "
          "that a value of 3 (\"Delete Record Supported\") is "
          "specified. \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 DeleteRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean that when set to TRUE requests the "
             "IterationIdentifier to be advanced to the next record, "
             "after the current entry is deleted. If set to FALSE, "
             "IterationIdentifier is set to the previous record.")]
      boolean PositionToNext, 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber, 
         [IN ( false ), OUT, Description (
             "The record data.")]
      uint8 RecordData[]); 

      [Description (
          "Requests that a record be inserted at the Log position "
          "indicated by the IterationIdentifier. The entry's data is "
          "provided in the RecordData input parameter. After "
          "insertion, the IterationIdentifier may be advanced to the "
          "next record by setting the PositionToNext input parameter "
          "to TRUE. The output parameter, RecordNumber, returns the "
          "current record number addressed via the "
          "IterationIdentifier. This parameter is only defined/valid "
          "when the Capabilities array indicates that ordinal record "
          "number addressing is supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from WriteRecord should be 0 if the "
          "request was successfully executed, 1 if the request is not "
          "supported, and some other value if an error occurred. If "
          "the request is not supported, check the Capabilities array "
          "that a value of 2 (\"Write Record Supported\") is "
          "specified. \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 WriteRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean indicating that the Iteration Identifier should "
             "be advanced to the next record, after writing the Log "
             "entry.")]
      boolean PositionToNext, 
         [IN, Description (
             "The record data.")]
      uint8 RecordData[], 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber); 

      [Description (
          "Requests that an iteration of the Log, identified by the "
          "IterationIdentifier input parameter, be stopped. The return "
          "value from CancelIteration should be 0 if the request was "
          "successfully executed, 1 if the request is not supported "
          "and some other value if an error occurred. In a subclass, "
          "the set of possible return codes could be specified, using "
          "a ValueMap qualifier on the method. The strings to which "
          "the ValueMap contents are 'translated' may also be "
          "specified in the subclass as a Values array qualifier.")]
   uint32 CancelIteration ( 
         [IN, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier); 

      [Description (
          "Requests that the MessageLog be placed in a frozen state "
          "(\"Freeze\" input parameter = TRUE) or 'unfrozen' (= "
          "FALSE). If frozen, modifications to the Log will not be "
          "allowed. If successful, the Log's IsFrozen boolean property "
          "will be updated to reflect the desired state. \n"
          "\n"
          "The method's return code should be 0 if the request was "
          "successfully executed, 1 if the request is not supported "
          "and some other value if an error occurred. If the request "
          "is not supported, check the Capabilities array that a value "
          "of 5 (\"Freeze Log Supported\") is specified. \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 FreezeLog( 
         [IN, Description (
             "If TRUE then freeze the log, if FALSE 'unfreeze' the "
             "log.")]
      boolean Freeze); 

      [Description (
          "Requests that the record indicated by the "
          "IterationIdentifier be flagged as overwriteable. This "
          "method is only supported when the Capabilities array "
          "includes a value of 10, \"Can Flag Records for Overwrite\". "
          "After updating the entry, the IterationIdentifier may be "
          "advanced to the next record by setting the PositionToNext "
          "input parameter to TRUE. One output parameter is defined "
          "for the method RecordNumber. It returns the current record "
          "number addressed via the Iteration Identifier. This "
          "parameter is only defined/valid when the Capabilities array "
          "indicates that ordinal record number addressing is "
          "supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from FlagRecordForOverwrite should be 0 if "
          "the request was successfully executed, 1 if the request is "
          "not supported, and some other value if an error occurred. "
          "In a subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 FlagRecordForOverwrite ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean indicating that the Iteration Identifier should "
             "be advanced to the next record, after updating the "
             "current Log entry.")]
      boolean PositionToNext, 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber); 
};

// ==================================================================
//  CIM_LogManagesRecord
// ==================================================================
   [Association, Aggregation, Abstract, Composition,  Version ( "2.9.0" ), Description (
       "LogManagesRecord describes the aggregation or location of "
       "Records managed by a Log.")]
class CIM_LogManagesRecord {

      [Key, Aggregate, Min ( 1 ), Max ( 1 ), Description (
          "The Log.")]
   CIM_Log REF Log;

      [Key, Description (
          "The record managed by the Log.")]
   CIM_RecordForLog REF Record;

};

// ==================================================================
//  CIM_CorrespondingSettingDataRecord
// ==================================================================
   [Association, Abstract, Experimental,  Version ( "2.11.0" ), Description (
       "CorrespondingSettingDataRecord is used to tie a log record to "
       "its corresponding setting data record.")]
class CIM_CorrespondingSettingDataRecord {

      [Key, Description (
          "The record containing the result data.")]
   CIM_DiagnosticRecord REF DataRecord;

      [Key, Description (
          "The record containing the DiagnosticSettingData that were "
          "used when the result was created.")]
   CIM_DiagnosticSettingDataRecord REF SettingsRecord;

};


// ==================================================================
//  LSIESG_StorageSetting
// ==================================================================
   [Abstract, Description (
       "Vendor extension to add Volume cache parameters to Volume"
       "Settings.")]
class LSIESG_StorageSetting : CIM_StorageSetting {
   [Write, Description (
          "Enumeration indicating the CacheUsage. Read-Write "
          "means Cache is used for Read and Write requests. " 
          "Read means Cache is only used for Read requests. "
          "Write means Cache is only used for Write requests. "
          "None indicates Cache is not used for IO requests. "), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Read-Write", "Read", "Write", "None" }]
   uint16 CacheUsage;

   [Write, Description (
          "Enumeration indicating the type of read cache usage.  Note that "
          "this value is used in conjunction with the CacheUsage property.  "
          "The two properties must have complimentary values to affect volume "
          "cache settings."), 
       ValueMap {"0", "1","2"}, 
       Values {"Read ahead nonadaptive", "Read ahead adaptive", "No read ahead"}]
   uint16 ReadCacheUsage;

   [Write, Description (
          "Enumeration indicating the type of write cache usage.  Note that "
          "this value is used in conjunction with the CacheUsage property.  "
          "The two properties must have complimentary values to affect volume "
          "cache settings.  Also note that Write through bad battery implies that "
          "write back is used unless the battery is in a failed state in which case "
          "write through is used."),
       ValueMap {"0", "1", "2"}, 
       Values {"Always write back", "Write back bad battery", "Always write through"}]
   uint16 WriteCacheUsage;
};


// ==================================================================
//  CIM_OwningCollectionElement
// ==================================================================
   [Association, Abstract, Experimental,  Version ( "2.10.0" ), 
    Description (
       "OwningCollectionElement represents an association between a "
       "Collection and the ManagedElement responsible for the control "
       "or ownership of the Collection.")]
class CIM_OwningCollectionElement {

      [Key, Max ( 1 ), Description (
          "The ManagedElement acting as the 'owner' or object that is "
          "responsible for the control of the Collection.")]
   CIM_ManagedElement REF OwningElement;

      [Key, Description (
          "The Collection owned or controlled by the ManagedElement.")]
   CIM_Collection REF OwnedElement;
};

// ==================================================================
//  CIM_OwningJobElement
// ==================================================================
   [Association, Abstract,  Version ( "2.7.0" ), Description (
       "OwningJobElement represents an association between a Job and "
       "the ManagedElement responsible for the creation of the Job. "
       "This association may not be possible, given that the execution "
       "of jobs can move between systems and that the lifecycle of the "
       "creating entity may not persist for the total duration of the "
       "job. However, this can be very useful information when "
       "available. This association defines a more specific 'owner' "
       "than is provided by the CIM_Job.Owner string."), 
    ModelCorrespondence { "CIM_Job.Owner" }]
class CIM_OwningJobElement {

      [Key, Max ( 1 ), Description (
          "The ManagedElement responsible for the creation of the Job.")]
   CIM_ManagedElement REF OwningElement;

      [Key, Description (
          "The Job created by the ManagedElement.")]
   CIM_Job REF OwnedElement;
};

// ==================================================================
//  CIM_PackageInChassis
// ==================================================================
   [Association, Abstract, Aggregation,  Version ( "2.6.0" ), Description (
       "A Chassis can contain other Packages, such as other Chassis "
       "and Cards. The PackageInChassis association makes explicit "
       "this relationship.")]
class CIM_PackageInChassis : CIM_Container {

      [Aggregate, Override ( "GroupComponent" ), Max ( 1 ), 
       Description (
          "The Chassis that contains other PhysicalPackages.")]
   CIM_Chassis REF GroupComponent;

      [Override ( "PartComponent" ), Description (
          "The PhysicalPackage which is contained in the Chassis.")]
   CIM_PhysicalPackage REF PartComponent;
};

// ==================================================================
//  CIM_PCIController
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "PCIController is a superclass for the PCIBridge and PCIDevice "
       "classes. These classes model adapters and bridges on a PCI "
       "bus. The properties in PCIController and its subclasses are "
       "defined in the various PCI Specifications that are published "
       "by the PCI SIG.")]
class CIM_PCIController : CIM_Controller {

      [Description (
          "Current contents of the register that provides basic "
          "control over the ability of the device to respond to or "
          "perform PCI accesses.")]
   uint16 CommandRegister;

      [Description (
          "An array of integers that indicates controller "
          "capabilities. Information such as \"Supports 66MHz\" "
          "(value=2) is specified in this property. The data in the "
          "Capabilities array is gathered from the PCI Status Register "
          "and the PCI Capabilities List as defined in the PCI "
          "Specification."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12" }, 
       Values { "Unknown", "Other", "Supports 66MHz",
          "Supports User Definable Features",
          "Supports Fast Back-to-Back Transactions", "PCI-X Capable",
          "PCI Power Management Supported",
          "Message Signaled Interrupts Supported",
          "Parity Error Recovery Capable", "AGP Supported", 
          // 10                     
          "Vital Product Data Supported",
          "Provides Slot Identification", "Hot Swap Supported" },
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_PCIController.CapabilityDescriptions" 
          }]
   uint16 Capabilities[];

      [Description (
          "An array of free-form strings that provides more detailed "
          "explanations for any of the PCIController features that are "
          "indicated in the Capabilities array. Note, each entry of "
          "this array is related to the entry in the Capabilities "
          "array that is located at the same index."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_PCIController.Capabilities" }]
   string CapabilityDescriptions[];

      [Description (
          "The slowest device-select timing for a target device."), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "Other", "Fast", "Medium", "Slow",
          "Reserved" }]
   uint16 DeviceSelectTiming;

      [Description (
          "Register of 8 bits that identifies the basic function of "
          "the PCI device. This property is only the upper byte "
          "(offset 0Bh) of the 3-byte ClassCode field. Note that the "
          "ValueMap array of the property specifies the decimal "
          "representation of this information."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17", "18..254",
          "255" }, 
       Values { "Pre 2.0", "Mass Storage", "Network", "Display",
          "Multimedia", "Memory", "Bridge", "Simple Communications",
          "Base Peripheral", "Input", 
          // 10                     
          "Docking Station", "Processor", "Serial Bus", "Wireless",
          "Intelligent I/O", "Satellite Communication",
          "Encryption/Decryption",
          "Data Acquisition and Signal Processing", 
          // 18 - 255                     
          "PCI Reserved", "Other" }]
   uint8 ClassCode;

      [Description (
          "Specifies the system cache line size in doubleword "
          "increments (for example, a 486-based system would store the "
          "value 04h, indicating a cache line size of four "
          "doublewords."), 
       Units ( "DoubleWords" )]
   uint8 CacheLineSize;

      [Description (
          "Defines the minimum amount of time, in PCI clock cycles, "
          "that the bus master can retain ownership of the bus."), 
       Units ( "PCI clock cycles" )]
   uint8 LatencyTimer;

      [Description (
          "Defines the PCI interrupt request pin (INTA# to INTD#) to "
          "which a PCI functional device is connected."), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "None", "INTA#", "INTB#", "INTC#", "INTD#", "Unknown" }]
   uint16 InterruptPin;

      [Description (
          "Doubleword Expansion ROM-base memory address."), 
       Units ( "DoubleWords" )]
   uint32 ExpansionROMBaseAddress;

      [Description (
          "Reports if the PCI device can perform the self-test "
          "function. Returns bit 7 of the BIST register as a Boolean.")]
   boolean SelfTestEnabled;

      [Description (
          "Method to invoke PCI device self-test. This method sets bit "
          "6 of the BIST register. The return result is the lower 4 "
          "bits of the BIST register where 0 indicates success and "
          "non-zero is a device-dependent failure. Support for this "
          "method is optional in the PCI Specification.")]
   uint8 BISTExecution( ); 
};

// ==================================================================
//  CIM_PCIDevice
// ==================================================================
   [Abstract,  Version ( "2.16.0" ), Description (
       "Capabilities and management of a PCI device controller on an "
       "adapter card.")]
class CIM_PCIDevice : CIM_PCIController {

      [Description ( "Array of doubleword base-memory addresses." )]
   uint32 BaseAddress[];

      [Description ( "Subsystem identifier code." )]
   uint16 SubsystemID;

      [Description ( 
          "Subsystem vendor ID. ID information is reported from a "
          "PCIDevice through protocol-specific requests. The "
          "correct place in the CIM Schema for this information is "
          "in CIM_Physical Element (the Manufacturer property) for "
          "hardware, and CIM_Product (the Vendor property) if the "
          "information is related to Product acquisition. This data "
          "is also reported here, because it is part of the "
          "standard output from the Device and is an optimization." )]
   uint16 SubsystemVendorID;

      [Description ( 
          "Register that indicates how long the master would like "
          "to retain PCI bus ownership whenever it initiates a "
          "transaction. A 0 value indicates no requirement." ), 
       Units ( "250 nanoseconds" )]
   uint8 MinGrantTime;

      [Description ( 
          "Register that specifies how often the device needs "
          "access to the PCI bus in 250ns. A 0 value indicates no "
          "requirement." ), 
       Units ( "250 nanoseconds" )]
   uint8 MaxLatency;

      [Experimental, Description ( 
          "The bus number where this PCI device resides." )]
   uint8 BusNumber;

      [Experimental, Description ( 
          "The device number assigned to this PCI device for this bus."
           )]
   uint8 DeviceNumber;

      [Experimental, Description ( 
          "The function number for this PCI device." )]
   uint8 FunctionNumber;

      [Experimental, Description ( 
          "Register that contains a value assigned by the device "
          "manufacturer used to identify the type of device." )]
   uint16 PCIDeviceID;

      [Experimental, Description ( 
          "Register that contains a value assigned by the PCI SIG "
          "used to identify the manufacturer of the device." )]
   uint16 VendorID;

      [Experimental, Description ( 
          "Register that contains a value assigned by the device "
          "manufacturer used to identify the revision number of the "
          "device." )]
   uint8 RevisionID;


};

// ==================================================================
//  CIM_PhysicalAssetCapabilities
// ==================================================================
   [Abstract, Experimental,  Version ( "2.12.0" ), Description (
       "PhysicalAssetCapabilities describes the capabilities of "
       "representing the FRU related information of the associated "
       "instance of the CIM_PhysicalElement subclass.")]
class CIM_PhysicalAssetCapabilities : CIM_Capabilities {

      [Description (
          "Boolean indicating whether the PartNumber, Serial Number, "
          "Model, Manufacturer, and SKU properties of PhysicalElement "
          "are non-null, non-blank values, and the availability of the "
          "complete FRU information."), 
       ModelCorrespondence { "CIM_PhysicalElement.PartNumber",
          "CIM_PhysicalElement.SerialNumber",
          "CIM_PhysicalElement.Model",
          "CIM_PhysicalElement.Manufacturer",
       "CIM_PhysicalElement.SKU" }]
   boolean FRUInfoSupported;

};


// ==================================================================
//  CIM_PortController
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "PortController is a logical device corresponding to a hardware "
       "network port controller. Port controllers provide various "
       "features depending on their types and versions.")]
class CIM_PortController : CIM_Controller {

      [Description (
          "The type or model of the port controller. Specific values "
          "will be enumerated in a later release of this schema. When "
          "set to 1 (\"Other\"), the related property "
          "OtherControllerType contains a string description of the "
          "type of the controller."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8" }, 
       Values { "Unknown", "Other", "Ethernet", "IB", "FC", "FDDI",
          "ATM", "Token Ring", "Frame Relay" }, 
       ModelCorrespondence { "CIM_PortController.OtherControllerType" }]
   uint16 ControllerType;

      [Description (
          "A string value for controller types that is not captured by "
          "the ControllerType enumeration. This property should be "
          "used only when the value of the ControllerType property is "
          "set to 1, \"Other\"."), 
       ModelCorrespondence { "CIM_PortController.ControllerType" }]
   string OtherControllerType;

      [Description (
          "The revision number of the controller.")]
   uint16 ControllerVersion;
};

// ==================================================================
//  CIM_PowerSupply
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "Capabilities and management of the PowerSupply LogicalDevice.")]
class CIM_PowerSupply : CIM_LogicalDevice {

      [Description (
          "Boolean indicating that the PowerSupply is a switching "
          "(instead of linear) supply.")]
   boolean IsSwitchingSupply;

      [Description (
          "The low voltage of Input Voltage Range 1 for this Power "
          "Supply, in millivolts. A value of 0 denotes 'unknown'."), 
       Units ( "MilliVolts" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.7" }]
   uint32 Range1InputVoltageLow;

      [Description (
          "The high voltage of Input Voltage Range 1 for this Power "
          "Supply, in millivolts. A value of 0 denotes 'unknown'."), 
       Units ( "MilliVolts" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.8" }]
   uint32 Range1InputVoltageHigh;

      [Description (
          "The frequency (in hertz) at the low end of the Input "
          "Frequency Range 1 of this Power Supply. A value of 0 "
          "implies DC."), 
       Units ( "Hertz" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.17" }]
   uint32 Range1InputFrequencyLow;

      [Description (
          "The frequency (in hertz) at the high end of the Input "
          "Frequency Range 1 of this Power Supply. A value of 0 "
          "implies DC."), 
       Units ( "Hertz" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.18" }]
   uint32 Range1InputFrequencyHigh;

      [Description (
          "The low voltage of Input Voltage Range 2 for this Power "
          "Supply, in millivolts. A value of 0 denotes 'unknown'."), 
       Units ( "MilliVolts" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.11" }]
   uint32 Range2InputVoltageLow;

      [Description (
          "The high voltage of Input Voltage Range 2 for this Power "
          "Supply, in millivolts. A value of 0 denotes 'unknown'."), 
       Units ( "MilliVolts" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.12" }]
   uint32 Range2InputVoltageHigh;

      [Description (
          "The frequency (in hertz) at the low end of the Input "
          "Frequency Range 2 of this Power Supply. A value of 0 "
          "implies DC."), 
       Units ( "Hertz" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.19" }]
   uint32 Range2InputFrequencyLow;

      [Description (
          "The frequency (in hertz) at the high end of the Input "
          "Frequency Range 2 of this Power Supply. A value of 0 "
          "implies DC."), 
       Units ( "Hertz" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.20" }]
   uint32 Range2InputFrequencyHigh;

      [Description (
          "ActiveInputVoltage indicates which input voltage range is "
          "currently in use. Range 1, 2, or both can be specified "
          "using the values 3, 4, or 5, respectively. If the Supply is "
          "not currently drawing power, the value 6 (\"Neither\") can "
          "be specified. This information is necessary in the case of "
          "a UPS, a subclass of PowerSupply."), 
       ValueMap { "1", "2", "3", "4", "5", "6" }, 
       Values { "Other", "Unknown", "Range 1", "Range 2", "Both",
          "Neither" }, 
       MappingStrings { "MIF.DMTF|Power Supply|004.15" }]
   uint16 ActiveInputVoltage;

      [Description (
          "TypeOfRangeSwitching describes the kind of input voltage "
          "range switching that is implemented in this PowerSupply. "
          "For example, autoswitching can be specified (value=4)."), 
       ValueMap { "1", "2", "3", "4", "5", "6" }, 
       Values { "Other", "Unknown", "Manual", "Autoswitch",
          "Wide Range", "Not Applicable" }, 
       MappingStrings { "MIF.DMTF|Power Supply|004.16" }]
   uint16 TypeOfRangeSwitching;

      [Description (
          "Represents the total output power of the PowerSupply in "
          "milliWatts. 0 denotes 'unknown'."), 
       Units ( "MilliWatts" ), 
       MappingStrings { "MIF.DMTF|Power Supply|004.21" }]
   uint32 TotalOutputPower;
};

// ==================================================================
//  CIM_Product
// ==================================================================
   [Abstract,  Version ( "2.8.1000" ), Description (
       "CIM_Product is a concrete class that aggregates "
       "PhysicalElements, software (SoftwareIdentity and "
       "SoftwareFeatures), Services and/or other Products, and is "
       "acquired as a unit. Acquisition implies an agreement between "
       "supplier and consumer which may have implications to Product "
       "licensing, support and warranty. Non-commercial (e.g., "
       "in-house developed Products) should also be identified as an "
       "instance of CIM_Product. \n"
       "Note that software is handled a bit differently in the list of "
       "aggregated entities, above. This is because software can be "
       "viewed as a tangible asset (similar to PhysicalElements) AND/ "
       "OR as a set of features that make up a Product and are "
       "deployed. These are two different concepts, usually managed by "
       "different units in a business' organization. When software "
       "'features' are described, the CIM_SoftwareFeature class from "
       "the Application Model is instantiated (where Features are Weak "
       "to/scoped by a Product). When a specific piece of software is "
       "acquired and perhaps warrantied as part of a Product, this is "
       "addressed by the class, SoftwareIdentity.")]
class CIM_Product : CIM_ManagedElement {

      [Key, Description ( "Commonly used Product name." ), 
       MaxLen ( 256 ), 
       MappingStrings { "MIF.DMTF|ComponentID|001.2" }, 
       ModelCorrespondence { "PRS_Product.ProductName" }]
   string Name;

      [Key, Description ( 
          "Product identification such as a serial number on "
          "software, a die number on a hardware chip, or (for "
          "non-commercial Products) a project number." ), 
       MaxLen ( 64 ), 
       MappingStrings { "MIF.DMTF|ComponentID|001.4" }]
   string IdentifyingNumber;

      [Key, Description ( 
          "The name of the Product\'s supplier, or entity selling "
          "the Product (the manufacturer, reseller, OEM, etc.). "
          "Corresponds to the Vendor property in the Product object "
          "in the DMTF Solution Exchange Standard." ), 
       MaxLen ( 256 ), 
       MappingStrings { "MIF.DMTF|ComponentID|001.1" }, 
       ModelCorrespondence { "PRS_Product.Vendor" }]
   string Vendor;

      [Key, Description ( "Product version information." ), 
       MaxLen ( 64 ), 
       MappingStrings { "MIF.DMTF|ComponentID|001.3" }, 
       ModelCorrespondence { "PRS_Product.Version" }]
   string Version;

      [Description ( "Product SKU (stock keeping unit) information." ), 
       MaxLen ( 64 )]
   string SKUNumber;

      [Description ( 
          "If this Product is under warranty, the start date of the warranty."
           ), 
       MappingStrings { "MIF.DMTF|FRU|002.9" }, 
       ModelCorrespondence { "CIM_Product.WarrantyDuration" }]
   datetime WarrantyStartDate;

      [Description ( 
          "If this Product is under warranty, the duration of the "
          "warranty in days." ), 
       Units ( "Days" ), 
       MappingStrings { "MIF.DMTF|FRU|002.10" }, 
       ModelCorrespondence { "CIM_Product.WarrantyStartDate" }, 
       PUnit ( "day" )]
   uint32 WarrantyDuration;

      [Experimental, Description ( 
          "Family that the product belongs to. A family refers to a "
          "set of products that are similar but not identical from "
          "a hardware or software point of view. Typically, a "
          "family is composed of different products, which have "
          "different configurations and pricing points. Products in "
          "the same family often have similar branding and cosmetic "
          "features." ), 
       MaxLen ( 64 )]
   string Family;
};

// ==================================================================
//  CIM_ProductPhysicalComponent
// ==================================================================
   [Association, Abstract, Aggregation, Composition,  Version ( "2.7.0" ), 
    Description (
       "Indicates that the referenced PhysicalElement is acquired as "
       "part of a Product.")]
class CIM_ProductPhysicalComponent : CIM_Component {

      [Override ( "GroupComponent" ), Max ( 1 ), Description (
          "The Product.")]
   CIM_Product REF GroupComponent;

      [Override ( "PartComponent" ), Description (
          "The PhysicalElement which is a part of the Product.")]
   CIM_PhysicalElement REF PartComponent;
};

// ==================================================================
//  CIM_ProtocolController
// ==================================================================
   [Abstract,  Version ( "2.8.0" ), Description (
       "ProtocolController is a superclass for grouping controllers "
       "that are used to control the operation and function of "
       "sophisticated devices that instantiate a protocol such as "
       "SCSI. Simpler 'bus' and device controllers are modeled using "
       "the CIM_Controller class.")]
class CIM_ProtocolController : CIM_LogicalDevice {

      [Description (
          "Maximum number of Units that can be controlled by or "
          "accessed through this ProtocolController.")]
   uint32 MaxUnitsControlled;
};

// ==================================================================
//  CIM_ProtocolControllerForDevice
// ==================================================================
   [Association, Abstract,  Version ( "2.8.0" ), Description (
       "This association indicates a subclass of LogicalDevice (for "
       "example a Storage Volume) is connected through a specific "
       "ProtocolController. In many situations (for example storage "
       "LUN masking), there may be many of these associations used to "
       "relate to different objects. Therefore subclasses have been "
       "defined to optimize enumeration of the associations.")]
class CIM_ProtocolControllerForDevice : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The ProtocolController.")]
   CIM_ProtocolController REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The controlled Device.")]
   CIM_LogicalDevice REF Dependent;

      [Description (
          "Address of the associated Device in the context of the "
          "Antecedent Controller.")]
   string DeviceNumber;

      [Description (
          "This property describes the priority given to accesses of "
          "the device through this Controller. The highest priority "
          "path will have the lowest value for this parameter.")]
   uint16 AccessPriority;

      [Description (
          "The State property indicates whether the Controller is "
          "actively commanding or accessing the device (value=2) or "
          "not (value=3). Also, the value, \"Unknown\" (0), can be "
          "defined. This information is necessary when a LogicalDevice "
          "can be commanded by, or accessed through, multiple "
          "ProtocolControllers."), 
       ValueMap { "0", "2", "3" }, 
       Values { "Unknown", "Active", "Inactive" }]
   uint16 AccessState;
};

// ==================================================================
//  CIM_ProtocolControllerForUnit
// ==================================================================
   [Association, Abstract,  Version ( "2.8.0" ), Description (
       "This association is used to define a relationship between a "
       "ProtocolController and an exposed Logical Unit (for example a "
       "Storage Volume or a MediaAccessDevice such as a tape drive). "
       "An example of the use of this association is SCSI, where it "
       "link the target controller and Logical Units. This subclass is "
       "provided so that an enumeration of related controllers and "
       "units can be performed without retrieving any connected ports "
       "or other controllers.")]
class CIM_ProtocolControllerForUnit : CIM_ProtocolControllerForDevice {

      [Override ( "Antecedent" ), Description (
          "The ProtocolController.")]
   CIM_ProtocolController REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The logical unit (eg StorageVolume) 'behind' the "
          "ProtocolController.")]
   CIM_LogicalDevice REF Dependent;

      [Description (
          "The access rights granted to the referenced logical unit as "
          "exposed through referenced ProtocolController. The 'No "
          "Access' value is used in implementations where the "
          "DeviceNumber is reserved, but no access is granted. \n"
          "If the instrumentation exposes PrivilegeManagementService, "
          "this property MUST be synchronized with the Activities "
          "property of any Privilege instances associated with "
          "StorageHardwareIDs associated to the referenced "
          "ProtocolController and the referenced LogicalDevice. In "
          "particular, when this property is 'Read Write', "
          "Privilege.Activities MUST include entries for 'Read' and "
          "'Write'. When this property is 'Read-Only', "
          "Privilege.Activities MUST include an entry for 'Read'. The "
          "corresponding entries for Privilege.ActivityQualifiers MUST "
          "be 'CDB=*' and the corresponding entries for "
          "Privilege.QualifierFormat MUST be 'SCSI Command'."), 
       ValueMap { "0", "2", "3", "4", "5..15999", "16000.." }, 
       Values { "Unknown", "Read Write", "Read-Only", "No Access",
          "DMTF Reserved", "Vendor Reserved" }]
   uint16 DeviceAccess;
};

// ==================================================================
//  CIM_Realizes
// ==================================================================
   [Association, Abstract,  Version ( "2.6.0" ), Description (
       "CIM_Realizes is the association that defines the mapping "
       "between LogicalDevices and the PhysicalElements that implement "
       "them.")]
class CIM_Realizes : CIM_Dependency {
      [Override ( "Antecedent" ), Description (
          "The physical component that implements the Device.")]
   CIM_PhysicalElement REF Antecedent;
      [Override ( "Dependent" ), Description (
          "The LogicalDevice.")]
   CIM_LogicalDevice REF Dependent;
};

// ==================================================================
//  CIM_RemoteServiceAccessPoint
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "RemoteServiceAccessPoint describes access or addressing "
       "information or a combination of this information for a remote "
       "connection that is known to a local network element. This "
       "information is scoped or contained by the local network "
       "element, because this is the context in which the connection "
       "is remote. \n"
       "The relevance of the remote access point and information on "
       "its use are described by subclassing RemoteServiceAccessPoint "
       "or by associating to it.")]
class CIM_RemoteServiceAccessPoint : CIM_ServiceAccessPoint {

      [Description (
          "Access or addressing information or a combination of this "
          "information for a remote connection. This information can "
          "be a host name, network address, or similar information."), 
       ModelCorrespondence { "CIM_RemoteServiceAccessPoint.InfoFormat" 
          }]
   string AccessInfo;

      [Description (
          "An enumerated integer that describes the format and "
          "interpretation of the AccessInfo property."), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
          "11", "12", "13", "100", "101", "102", "103", "104", "200",
          "201", "202", "203", "204", "205", "..", "32768..65535" }, 
       Values { "Other", "Host Name", "IPv4 Address", "IPv6 Address",
          "IPX Address", "DECnet Address", "SNA Address",
          "Autonomous System Number", "MPLS Label",
          "IPv4 Subnet Address", "IPv6 Subnet Address",
          "IPv4 Address Range", "IPv6 Address Range", "Dial String",
          "Ethernet Address", "Token Ring Address", "ATM Address",
          "Frame Relay Address", "URL", "FQDN", "User FQDN",
          "DER ASN1 DN", "DER ASN1 GN", "Key ID", "DMTF Reserved",
          "Vendor Reserved" }, 
       ModelCorrespondence { 
          "CIM_RemoteServiceAccessPoint.OtherInfoFormatDescription" }]
   uint16 InfoFormat;

      [Description (
          "Describes the format when the property InfoFormat is set to "
          "1 (Other)."), 
       ModelCorrespondence { "CIM_RemoteServiceAccessPoint.InfoFormat" 
          }]
   string OtherInfoFormatDescription;
};

// ==================================================================
//  CIM_SAPAvailableForElement
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "CIM_SAPAvailableForElement conveys the semantics of a Service "
       "Access Point that is available for a ManagedElement. When "
       "CIM_SAPAvailableForElement is not instantiated, then the SAP "
       "is assumed to be generally available. If instantiated, the SAP "
       "is available only for the associated ManagedElements. For "
       "example, a device might provide management access through a "
       "URL. This association allows the URL to be advertised for the "
       "device.")]
class CIM_SAPAvailableForElement {

      [Key, Description (
          "The Service Access Point that is available.")]
   CIM_ServiceAccessPoint REF AvailableSAP;

      [Key, Description (
          "The ManagedElement for which the SAP is available.")]
   CIM_ManagedElement REF ManagedElement;
};

// ==================================================================
//  CIM_NetworkPort
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), 
    Description (
       "NetworkPort is the logical representation of network "
       "communications hardware such as a physical connector and the "
       "setup or operation of the network chips, at the lowest layers "
       "of a network stack.")]
class CIM_NetworkPort : CIM_LogicalPort {

      [Override ( "Speed" ), Description (
          "The current bandwidth of the Port in Bits per Second. For "
          "ports that vary in bandwidth or for those where no accurate "
          "estimation can be made, this property should contain the "
          "nominal bandwidth."), 
       Punit ( "bit / second" ), Units ( "Bits per Second" ), 
       MappingStrings { "MIB.IETF|MIB-II.ifSpeed",
          "MIF.DMTF|Network Adapter 802 Port|001.5" }]
   uint64 Speed;

      [Deprecated { "CIM_NetworkPort.OtherPortType" }, Description (
          "Note: The use of this property is deprecated in lieu of "
          "CIM_LogicalPort.PortType. \n"
          "Deprecated description: The type of module, when PortType "
          "is set to 1 (\"Other\".)"), 
       ModelCorrespondence { "CIM_LogicalPort.PortType" }]
   string OtherNetworkPortType;

      [Description (
          "NetworkPorts are often numbered relative to either a "
          "logical module or a network element.")]
   uint16 PortNumber;

      [Description (
          "An enumeration of the types of links. When set to 1 "
          "(\"Other\"), the related property OtherLinkTechnology "
          "contains a string description of the type of link."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11" }, 
       Values { "Unknown", "Other", "Ethernet", "IB", "FC", "FDDI",
          "ATM", "Token Ring", "Frame Relay", "Infrared", "BlueTooth",
          "Wireless LAN" }, 
       ModelCorrespondence { "CIM_NetworkPort.OtherLinkTechnology" }]
   uint16 LinkTechnology;

      [Description (
          "A string value that describes LinkTechnology when it is set "
          "to 1, \"Other\"."), 
       ModelCorrespondence { "CIM_NetworkPort.LinkTechnology" }]
   string OtherLinkTechnology;

      [Description (
          "PermanentAddress defines the network address that is "
          "hardcoded into a port. This 'hardcoded' address can be "
          "changed using a firmware upgrade or a software "
          "configuration. When this change is made, the field should "
          "be updated at the same time. PermanentAddress should be "
          "left blank if no 'hardcoded' address exists for the "
          "NetworkAdapter."), 
       MaxLen ( 64 ), 
       MappingStrings { "MIF.DMTF|Network Adapter 802 Port|001.2" }]
   string PermanentAddress;

      [Description (
          "An array of strings that indicates the network addresses "
          "for the port."), 
       MaxLen ( 64 ), 
       MappingStrings { "MIF.DMTF|Network Adapter 802 Port|001.3" }]
   string NetworkAddresses[];

      [Description (
          "Boolean that indicates that the port is operating in full "
          "duplex mode.")]
   boolean FullDuplex;

      [Description (
          "A Boolean that indicates whether the NetworkPort is capable "
          "of automatically determining the speed or other "
          "communications characteristics of the attached network "
          "media.")]
   boolean AutoSense;

      [Description (
          "The maximum transmission unit (MTU) that can be supported."), 
       Punit ( "byte" ), Units ( "Bytes" )]
   uint64 SupportedMaximumTransmissionUnit;

      [Description (
          "The active or negotiated maximum transmission unit (MTU) "
          "that can be supported."), 
       Punit ( "byte" ), Units ( "Bytes" )]
   uint64 ActiveMaximumTransmissionUnit;
};

// ==================================================================
//  CIM_SASSATAPort
// ==================================================================

   [Abstract, Experimental,  Version ( "2.13.0" ), Description (
       "Represents a port that can support both Serial ATA and Serial "
       "Attached SCSI. This port can support both protocols (ATA and "
       "SCSI) at the same time. This is not the same as a SAS only "
       "port. SASPort is subclassed from NetworkPort showing it "
       "supports switches and a network topology.")]
class CIM_SASSATAPort : CIM_LogicalPort {
      [Override ( "PortType" ), Description (
          "The type of port."), 
       ValueMap { "0", "1", "95", "..", "32768..65535" }, 
       Values { "Unknown", "Other", "SASSATA", "DMTF Reserved",
          "Vendor Reserved" }]
   uint16 PortType;
};

// ==================================================================
//  CIM_ATAPort 
// ==================================================================
   [Abstract, Experimental,  Version ( "2.8.1000" ), 
    Description ( 
       "Represents the port of an ATA device to system connection." )]
class CIM_ATAPort : CIM_LogicalPort {

      [Override ( "PortType" ), 
       Description ( "The type of port." ), 
       ValueMap { "0", "1", "91", "92", "93", "16000.." }, 
       Values { "Unknown", "Other", "ATA", "SATA", "SATA2", 
          "Vendor Reserved" }]
   uint16 PortType;
};

// ==================================================================
//  CIM_SASPort
// ==================================================================
   [Abstract, Experimental,  Version ( "2.10.0" ), 
    Description ( 
       "Represents the port of a Serial Attached SCSI device to system "
       "connection." )]
class CIM_SASPort : CIM_NetworkPort {

      [Override ( "PortType" ), 
       Description ( "The type of port." ), 
       ValueMap { "0", "1", "94", "16000.." }, 
       Values { "Unknown", "Other", "SAS", "Vendor Reserved" }]
   uint16 PortType;
};

// ==================================================================
//  CIM_SCSIProtocolEndpoint
// ==================================================================
   [Abstract,  Version ( "2.11.0" ), Description (
       "A SCSIProtocolEndpoint represents the protocol (command) "
       "aspects of a logical SCSI port, independent of the "
       "connection/transport. SCSIProtocolEndpoint is either directly "
       "or indirectly associated to one or more instances of "
       "LogicalPort (via PortImplementsEndpoint) depending on the "
       "underlying transport. Indirect associations aggregate one or "
       "more LogicalPorts using intermediate ProtocolEndpoints (iSCSI, "
       "etc). SCSIProtocolEndpoint is also associated to a "
       "SCSIProtocolController, representing the SCSI device.")]

class CIM_SCSIProtocolEndpoint : CIM_ProtocolEndpoint {

      [Override ( "Name" ), Description (
          "The SCSI identifier for the target or initiator device, in "
          "the format appropriate for the ConnectionType. If a "
          "ConnectionType specific subclass is defined, the subclass "
          "may override Name to define the format. For other "
          "ConnectionTypes, the format (and content) should match that "
          "of PermamnentAddress of the corresponding LogicalPort."), 
       MaxLen ( 256 ), 
       MappingStrings { "SPC.INCITS-T10 |Protocol Specific Parameters | "
           "Name" }, 
       ModelCorrespondence { "CIM_SCSIProtocolEndpoint.ConnectionType",
          "CIM_SCSIProtocolEndpoint.OtherConnectionType" }]
   string Name;

      [Description (
          "The supported connection type for this endpoint. The "
          "connection type may be needed before the port(s) are "
          "associated and also is used in some SCSI commands."), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9" }, 
       Values { "Other", "Fibre Channel", "Parallel SCSI", "SSA",
          "IEEE 1394", "RDMA", "iSCSI", "SAS", "ADT" }, 
       MappingStrings { "SPC.INCITS-T10 | Protocol Identifier | Values" 
          }, 
       ModelCorrespondence { "CIM_SCSIProtocolEndpoint.Name",
          "CIM_SCSIProtocolEndpoint.OtherConnectionType" }]
   uint16 ConnectionType;

      [Description (
          "For iSCSI, each SCSIProtocolEndpoint MUST act as either a "
          "target or an initiator endpoint. Other transports allow a "
          "SCSI PE to act as both an initiator and target endpoint. "
          "This property indicates which role this ProtocolEndpoint "
          "implements."), 
       ValueMap { "0" , "2", "3", "4" }, 
       Values { "Unknown", "Initiator", "Target",
          "Both Initiator and Target" }]
   uint16 Role;

      [Description (
          "For ports on a target device, the port number, relative to "
          "the storage system. 0 is reserved by T10, 1 is port A, 2 is "
          "port B, etc. These numbers are used in SCSI commands that "
          "operate on target port groups."), 
       MinValue ( 1 ), 
       MappingStrings { "SPC.INCITS-T10 | RelativeTargetPort | " 
          "IdentifierFormat" }]
   uint32 TargetRelativePortNumber;

      [Description (
          "The connection type, if ConnectionType is \"Other\"."), 
       ModelCorrespondence { "CIM_SCSIProtocolEndpoint.Name",
          "CIM_SCSIProtocolEndpoint.ConnectionType" }]
   string OtherConnectionType;
};

// ==================================================================
//  CIM_InitiatorTargetLogicalUnitPath
// ==================================================================
   [Association, Abstract, Experimental,  Version ( "2.15.0" ),
       Description (
       "An association that models a host driver path to a logical "
       "unit. Each permutation of initiator and target "
       "ProtocolEndpoints and logical units is considered a separate "
       "path.")]
class CIM_InitiatorTargetLogicalUnitPath {

      [Key, Description (
          "An initiator endpoint.")]
   CIM_ProtocolEndpoint REF Initiator;

      [Key, Description (
          "A target endpoint.")]
   CIM_ProtocolEndpoint REF Target;

      [Key, Description (
          "A subclass of LogicalDevice representing a Logical Unit "
          "(such as StorageVolume or TapeDrive). Refer to the Logical "
          "Unit Number section of ANSI INCITS 402-2005 , the SCSI-3 "
          "Architecture Model (SAM).")]
   CIM_LogicalDevice REF LogicalUnit;

      [Write, Description (
          "The state of this path. Values are defined as follows: \n"
          "Unknown - the path is unavailable,but the cause is not "
          "known. \n"
          "Active - The path is okay and active. \n"
          "Passive - The path is okay, but is associated with a target "
          "port of target port group in standby access state. Only "
          "applies to devices with asymmetric access. \n"
          "Disabled - The path is disabled by administrative request "
          "(DisablePathLU). \n"
          "Path Error - The path is unusable due to an error on this "
          "path and no SCSI status was received. \n"
          "Logical Unit Error - A SCSI status was received for an I/O "
          "through this path indicating a logical unit error. \n"
          "Reserved - The path is unavailable due to a reservation. \n"
          "Removed - The path is unavailable because the OS or drivers "
          "marked the pathunusable. \n"
          "Transitioning - the path is transitioning between two valid "
          "states. \n"
          "The only valid values a client can specify are Disabled and "
          "Active. All other states are determined by the underlying "
          "implementation; attempts to set them should be given an "
          "error response."), 
       ValueMap { "0", "2", "3", "4", "5", "6", "7", "8", "9" }, 
       Values { "Unknown", "Active", "Passive", "Disabled",
          "Path Error", "Logical Unit Error", "Reserved", "Removed",
          "Transitioning" }, 
       MappingStrings { 
          "MP_API.SNIA|MP_PATH_LOGICAL_UNIT_PROPERTIES|pathState" }]
   uint32 State;

};

// ==================================================================
//  CIM_SCSIInitiatorTargetLogicalUnitPath
// ==================================================================
   [Association, Abstract,  Version ( "2.15.0" ), Description (
       "An association that models a host driver path to a SCSI "
       "logical unit. Each permutation of initiator and target "
       "ProtocolEndpoints and logical units is considered a separate "
       "path. This class describes end-to-end path behavior such as "
       "properties and operations commonly used in multipath "
       "management.")]
class CIM_SCSIInitiatorTargetLogicalUnitPath : CIM_InitiatorTargetLogicalUnitPath {

      [Description ( 
          "The OS Device Name for this path. Only applicable if the "
          "ExposedPathDeviceFiles property is true in the instance "
          "of SCSIMultipathConfigurationCapabilities associated "
          "with the LogicalDevice/RedundancySet this instance is a "
          "member of." ), 
       MappingStrings { 
          "MP_API.SNIA|MP_PATH_LOGICAL_UNIT_PROPERTIES|deviceFileName" }]
   string OSDeviceName;

      [Write, Description ( 
          "A value assigned by an administrator specifying a "
          "preference to assign to a path. The drivers will "
          "actively use all available paths with the highest "
          "weight. This allows an administrator to assign a subset "
          "of available paths for load balanced access and reserve "
          "the others as backup paths. For symmetric access "
          "devices, all paths are considered \'available\'. For "
          "asymmetric access devices, all paths in active target "
          "port groups are considered available." ), 
       MappingStrings { 
          "MP_API.SNIA|MP_PATH_LOGICAL_UNIT_PROPERTIES|weight" }]
   uint32 AdministrativeWeight;

      [Description ( 
          "AdministrativeOverride allows an administrator to select "
          "a single path, force all I/O to this path, and disables "
          "load balancing. The steady-state value is \'No override "
          "in effect\'. When an administrator sets an override for "
          "a particular path, that path\'s AdministrativeOverride "
          "is set to \'Overridding\' and all other paths to same "
          "logical unit are assigned a value of \'Overridden\'. "
          "This property is changed using the OverridePath method "
          "in SCSIPathConfigurationService." ), 
       ValueMap { "2", "3", "4" }, 
       Values { "Overriding", "Overridden", "No override in effect" }, 
       MappingStrings { 
          "MP_API.SNIA|MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES|overridePath" }, 
       ModelCorrespondence { 
          "CIM_SCSIPathConfigurationService.SetOverridePath" }]
   uint16 AdministrativeOverride;

      [Description ( 
          "The SCSI Logical Unit Number. This is the unit number "
          "with values below 16,384 used in management "
          "applications. It is not the full SCSI SAM 8-byte logical "
          "unit number structure. Using the terminology from the "
          "T10 SCSI specifications, this is the LU number with a "
          "value between 0 and 255 using the Peripheral device "
          "addressing method with Bus Identifier zero or a LU "
          "number between 0 and 16,383 using the Flat space (AKA "
          "volume set) addressing method." ), 
       MaxValue ( 16383 ), 
       MappingStrings { 
          "MP_API.SNIA|MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES|overridePathMP_API.SNIA|MP_CancelOverridePath", 
          "MP_API.SNIA|MP_SetOverridePath" }]
   uint16 LogicalUnitNumber;
};
// ==================================================================
//  CIM_SCSIProtocolController
// ==================================================================
   [Abstract,  Version ( "2.8.1000" ), Description (
       "SCSIProtocolController is a type of ProtocolController, "
       "managing a SCSI interface.")]
class CIM_SCSIProtocolController : CIM_ProtocolController {

      [Description (
          "The NameFormat property identifies how the Name of the "
          "SCSIProtocolController is selected. \n"
          "For Fibre Channel, the NameFormat is 'FC Port WWN'. \n"
          "For iSCSI, Name can use any of the 3 iSCSI formats (iqn, "
          "eui, naa) which include the iSCSI format as as a prefix in "
          "the name, so they are not ambiguous."), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Unknown", "Other", "FC Port WWN", "iSCSI Name" }, 
       ModelCorrespondence { "CIM_SCSIProtocolController.Name",
          "CIM_SCSIProtocolController.OtherNameFormat" }]
   uint16 NameFormat;

      [Description (
          "A string describing how the ProtocolController is "
          "identified when the NameFormat is \"Other\"."), 
       ModelCorrespondence { "CIM_SCSIProtocolController.Name",
          "CIM_SCSIProtocolController.NameFormat" }]
   string OtherNameFormat;
};

// ==================================================================
//  CIM_ServiceAffectsElement
// ==================================================================
   [Association, Abstract,  Version ( "2.14.0" ), Description (
       "ServiceAffectsElement represents an association between a "
       "Service and the ManagedElements that might be affected by its "
       "execution. Instantiating this association indicates that "
       "running the service may change, manage, provide functionality "
       "for,or pose some burden on the ManagedElement. This burden "
       "might affect performance, throughput, availability, and so on.")]
class CIM_ServiceAffectsElement {

      [Key, Description (
          "The Managed Element that is affected by the Service.")]
   CIM_ManagedElement REF AffectedElement;

      [Key, Description (
          "The Service that is affecting the ManagedElement.")]
   CIM_Service REF AffectingElement;

      [Description (
          "An enumeration that describes the effect on the "
          "ManagedElement. This array corresponds to the "
          "OtherElementEffectsDescriptions array, where the latter "
          "provides details that are related to the high-level effects "
          "enumerated by this property. Additional detail is required "
          "if the ElementEffects array contains the value 1 (Other). "
          "The values are defined as follows: \n"
          "- Exclusive Use (2): No other Service may have this "
          "association to the element. \n"
          "- Performance Impact (3): Deprecated in favor of "
          "\"Consumes\", \"Enhances Performance\", or \"Degrades "
          "Performance\". Execution of the Service may enhance or "
          "degrade the performance of the element. This may be as a "
          "side-effect of execution or as an intended consequence of "
          "methods provided by the Service. \n"
          "- Element Integrity (4): Deprecated in favor of "
          "\"Consumes\", \"Enhances Integrity\", or \"Degrades "
          "Integrity\". Execution of the Service may enhance or "
          "degrade the integrity of the element. This may be as a "
          "side-effect of execution or as an intended consequence of "
          "methods provided by the Service. \n"
          "- Manages (5): The Service manages the element. \n"
          "- Consumes (6): Execution of the Service consumes some or "
          "all of the associated element as a consequence of running "
          "the Service. For example, the Service may consume CPU "
          "cycles, which may affect performance, or Storage which may "
          "affect both performance and integrity. (For instance, the "
          "lack of free storage can degrade integrity by reducing the "
          "ability to save state. ) \"Consumes\" may be used alone or "
          "in conjunction with other values, in particular, \"Degrades "
          "Performance\" and \"Degrades Integrity\". \n"
          "\"Manages\" and not \"Consumes\" should be used to reflect "
          "allocation services that may be provided by a Service. \n"
          "- Enhances Integrity (7): The Service may enhance integrity "
          "of the associated element. \n"
          "- Degrades Integrity (8): The Service may degrade integrity "
          "of the associated element. \n"
          "- Enhances Performance (9): The Service may enhance "
          "performance of the associated element. \n"
          "- Degrades Performance (10): The Service may degrade "
          "performance of the associated element."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "..", "0x8000..0xFFFF" }, 
       Values { "Unknown", "Other", "Exclusive Use",
          "Performance Impact", "Element Integrity", "Manages",
          "Consumes", "Enhances Integrity", "Degrades Integrity",
          "Enhances Performance", "Degrades Performance",
          "DMTF Reserved", "Vendor Reserved" }, ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_ServiceAffectsElement.OtherElementEffectsDescriptions" }]
   uint16 ElementEffects[];

      [Description (
          "Provides details for the effect at the corresponding array "
          "position in ElementEffects. This information is required if "
          "ElementEffects contains the value 1 (Other)."), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_ServiceAffectsElement.ElementEffects" 
          }]
   string OtherElementEffectsDescriptions[];
};

// ==================================================================
//  CIM_Slot
// ==================================================================
   [Abstract,  Version ( "2.7.0" ), Description (
       "The Slot class represents Connectors into which Packages are "
       "inserted. For example, a PhysicalPackage that is a DiskDrive "
       "may be inserted into an SCA 'Slot'. As another example, a Card "
       "(subclass of PhysicalPackage) may be inserted into a 16-, 32-, "
       "or 64-bit expansion 'Slot' on a HostingBoard. PCI or PCMCIA "
       "Type III Slots are examples of the latter.")]
class CIM_Slot : CIM_PhysicalConnector {

      [Override ( "ConnectorType" ), 
       MappingStrings { "MIF.DMTF|System Slot|005.2" }]
   uint16 ConnectorType[];

      [Override ( "PoweredOn" ), 
       MappingStrings { "MIF.DMTF|System Slot|005.13" }]
   boolean PoweredOn;

      [Description (
          "Boolean indicating whether the Slot supports hot-plug of "
          "adapter Cards.")]
   boolean SupportsHotPlug;

      [Description (
          "Maximum height of an adapter Card that can be inserted into "
          "the Slot, in inches."), 
       Units ( "Inches" )]
   real32 HeightAllowed;

      [Description (
          "Maximum length of an adapter Card that can be inserted into "
          "the Slot, in inches."), 
       Units ( "Inches" )]
   real32 LengthAllowed;

      [Description (
          "Maximum bus width of adapter Cards that can be inserted "
          "into this Slot, in bits. If the value is 'unknown', enter "
          "0. If the value is other than 8, 16, 32, 64 or 128, enter "
          "1."), 
       Units ( "Bits" ), 
       ValueMap { "0", "1", "8", "16", "32", "64", "128" }, 
       MappingStrings { "MIF.DMTF|System Slot|005.3" }]
   uint16 MaxDataWidth;

      [Description (
          "An array of enumerated integers indicating the Vcc voltage "
          "supported by this Slot."), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Unknown", "Other", "3.3V", "5V" }, 
       MappingStrings { "MIF.DMTF|System Slot|005.9" }]
   uint16 VccMixedVoltageSupport[];

      [Description (
          "An array of enumerated integers indicating the Vpp voltage "
          "supported by this Slot."), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Unknown", "Other", "3.3V", "5V", "12V" }, 
       MappingStrings { "MIF.DMTF|System Slot|005.10" }]
   uint16 VppMixedVoltageSupport[];

      [Description (
          "Maximum thermal dissipation of the Slot in milliwatts."), 
       Units ( "MilliWatts" ), 
       MappingStrings { "MIF.DMTF|System Slot|005.11" }]
   uint32 ThermalRating;

      [Description (
          "Boolean indicating that this Slot is physically unique and "
          "may hold special types of hardware, e.g. a graphics "
          "processor slot. If set to TRUE, then the property, Special "
          "PurposeDescription (a string), should specify the nature of "
          "the uniqueness or purpose of the Slot."), 
       ModelCorrespondence { "CIM_Slot.PurposeDescription" }]
   boolean SpecialPurpose;

      [Description (
          "A free-form string describing that this Slot is physically "
          "unique and may hold special types of hardware. This "
          "property only has meaning when the corresponding boolean "
          "property, SpecialPurpose, is set to TRUE."), 
       ModelCorrespondence { "CIM_Slot.SpecialPurpose" }]
   string PurposeDescription;

      [Description (
          "The Number property indicates the physical slot number, "
          "which can be used as an index into a system slot table, "
          "whether or not that slot is physically occupied."), 
       MappingStrings { "MIF.DMTF|System Slot|005.1" }]
   uint16 Number;

      [Deprecated { "CIM_PhysicalElement.PoweredOn" }, Description (
          "A boolean indicating whether the Slot is currently powered "
          "(TRUE) or not (FALSE)."), 
       MappingStrings { "MIF.DMTF|System Slot|005.13" }]
   boolean Powered;

      [Description (
          "A boolean indicating whether the switch state of the Slot "
          "is currently open (TRUE) or closed (FALSE). This switch "
          "state determines whether the contents of the Slot can be "
          "hot-plugged."), 
       MappingStrings { "MIF.DMTF|System Slot|005.15" }]
   boolean OpenSwitch;
};

// ==================================================================
// FailoverStorageExtents
// ==================================================================
   [Abstract, Experimental,  Version ( "2.9.1000" ), Description (
       "The FailoverStorageExtents class aggregates StorageExtents "
       "which have been failed over by the RedundancySet.Failover "
       "method. The StorageExtents are no longer a member of a "
       "RedundancySet and are no longer associated to "
       "any StoragePool.")]
class SNIA_FailoverStorageExtentsCollection : CIM_SystemSpecificCollection {

};


// ==================================================================
// SpareConfigurationCapabilities
// ==================================================================
   [Abstract, Experimental,  Version ( "2.9.1000" ), Description (
       "A subclass of Capabilities that defines the Capabilities of a "
       "SpareConfigurationService.  An instance of "
       "SpareConfigurationCapabilities is associated with a "
       "top level ComputerSystem using ElementCapabilities.  This "
       "allows systems that automatically manage sparing to "
       "describe their capabilities without implementing a "
       "SpareConfigurationService instance.")]
class SNIA_SpareConfigurationCapabilities : CIM_Capabilities {

      [Description (
          "Enumeration indicating what operations will be executed as "
          "asynchronous jobs. If an operation is included in both this "
          "and SupportedSynchronousActions then the underlying "
          "implementation is indicating that it may or may not create "
          "a job."),
       ValueMap { "2", "3", "4", "5", "6", "7" },
       Values { "Assign Spares", "Unassign Spares",
          "Rebuild Storage Extent", "Check Parity Consistency",
          "Repair Parity", "Fail Over" },
       ModelCorrespondence {
          "CIM_SpareConfigurationCapabilities.SupportedSynchronousActions"
          }]
   uint16 SupportedAsynchronousActions[];

      [Description (
          "Enumeration indicating what operations will be executed "
          "without the creation of a job. If an operation is included "
          "in both this and SupportedAsynchronousActions then the "
          "underlying instrumentation is indicating that it may or may "
          "not create a job."),
       ValueMap { "2", "3", "4", "5", "6", "7" },
       Values { "Assign Spares", "Unassign Spares",
          "Rebuild Storage Extent", "Check Parity Consistency",
          "Repair Parity", "Fail Over" },
       ModelCorrespondence { "CIM_SpareConfigurationCapabilities."
          "SupportedAsynchronousActions" }]
   uint16 SupportedSynchronousActions[];

      [Description (
          "Set to true if this storage system automatically configures "
          "spares.  If set to false, "
          "the client must use the extinsic methods AssignSpares and "
          "UnassignSpares.")]
   boolean SystemConfiguredSpares = FALSE;

      [Description (
          "Set to true if this storage system automatically fails over. "
          "If set to false, the client must use the FailOver extinsic "
        "method, although that method may not be supported. ")]
   boolean AutomaticFailOver = FALSE;

      [Description (
         "The maximum number of StorageExtents that can be "
          "configured as spares.  A value of 0 indicates that "
          "all primordial StorageExtents can be configured as spares.")]
   uint16 MaximumSpareStorageExtents = 0;

};


// ==================================================================
//  CIM_StorageRedundancySet
// ==================================================================
   [Abstract,  Version ( "2.8.1000" ), Description (
       "A class derived from RedundancySet describing storage-related "
       "redundancy information. StorageRedundancySets are used to "
       "protect user data. They aggregate one or more underlying "
       "StorageExtents, associated via MemberOfCollection, and produce "
       "one or more higher-level Extents. The Extents are related to "
       "each other via a BasedOn association. And, the higher level "
       "Extent is related to the StorageRedundancy Set via the "
       "LogicalIdentity association. \n"
       "Note that StorageRedundancySets may overlap in their "
       "aggregation of members. If this occurs, the overlapping "
       "Extents SHOULD NOT contain any check data.")]
class CIM_StorageRedundancySet : CIM_RedundancySet {

      [Description (
          "TypeOfAlgorithm specifies the algorithm used for storage "
          "data redundancy and reconstruction. For example, 'P+Q' (=5) "
          "or 'P+S' (=7) may be specified."), 
       ValueMap { "0", "1", "3", "4", "5", "6", "7" }, 
       Values { "Unknown", "Other", "Copy", "XOR", "P+Q", "S", "P+S" }, 
       MappingStrings { "MIF.DMTF|Redundancy Group|001.2" }, 
       ModelCorrespondence { "CIM_StorageRedundancySet.OtherAlgorithm" 
          }]
   uint16 TypeOfAlgorithm;

      [Description (
          "A string describing the redundancy algorithm when the "
          "TypeOfAlgorithm is set to 1 'Other'."), 
       ModelCorrespondence { "CIM_StorageRedundancySet.TypeOfAlgorithm" 
          }]
   string OtherAlgorithm;
};

// ==================================================================
// SpareConfigurationService
// ==================================================================
   [Abstract, Experimental,  Version ( "2.9.1000" ), Description (
       "This service allows the active management of spares in a "
       "Storage Server.  It allows jobs to be started for the adding and "
       "removing of spares, replacing a failed storage extent with a "
       "spare and rebuilding a storage extent in a StorageRedundancySet.")]
class SNIA_SpareConfigurationService : CIM_Service {

      [Description (
          "This method assigns one or more primordial StorageExtents "
          "as spares.  Once a spare is assigned, the storage system "
          "can use it to spare a failed StorageExtent associated to a "
          "StorageRedundancySet.  Depending on the capabilities of the "
          "storage system, the spare may failover the failed extent "
          "or may remain a spare.  \n"
          "The spare extents may be designated to spare for a "
          "specific StorageRedundancySet (dedicated) or may be used "
          "to spare for any compatible StorageRedundancySet (global)."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100", "4101..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Multiple Primordial StoragePools",
          "Spares Are Not Compatible",
          "StorageExtent is in use",
          "Method Reserved", "Vendor Specific" }]
   uint32 AssignSpares (
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
         [IN, OUT (false), Description (
             "The primordial StoragePool that contains the "
             "StorageExtents.  This parameter "
             "does not need to be specified if there is only one "
             "primordial StoragePool.")]
      CIM_StoragePool REF InPool,
         [Required, IN, OUT (false), Description (
             "An array of references to StorageExtents that are to be "
             "assigned as spares.")]
      CIM_StorageExtent REF InExtents[],
         [IN, OUT (false), Description (
             "If specified, the spares will only spare for "
             "StorageExtents in this StorageRedundancySet (dedicated). "
             "If no reference is specified, the spares can "
             "spare for any compatible StorageRedundancySet (global).")]
      CIM_StorageRedundancySet REF RedundancySet);

      [Description (
          "This method unassigns spares and returns the StorageExtents "
          "to the primordial StoragePool."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Multiple Primordial StoragePools",
          "Spares Are Not Compatible",
          "Method Reserved", "Vendor Specific" }]
   uint32 UnassignSpares (
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
         [IN, OUT (false), Description (
             "The primordial StoragePool to which the unassigned "
             "StorageExtents are to be returned.  This parameter "
             "does not need to be specified if there is only one "
             "primordial StoragePool.")]
      CIM_StoragePool REF InPool,
         [Required, IN, OUT (false), Description (
             "An array of references to StorageExtents that are spares.")]
      CIM_StorageExtent REF InExtents[]);

      [Description (
          "This method causes the data in the StorageExtent to be "
          "rebuilt from the other members of the StorageRedundancySet."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100", "4101..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Target is Not a Member of a StorageRedundancySet",
          "Rebuild already in Progress",
          "Method Reserved", "Vendor Specific" }]
   uint32 RebuildStorageExtent (
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
         [Required, IN, OUT (false), Description (
             "The StorageExtent that will be rebuilt.")]
      CIM_StorageExtent REF Target);

      [Description (
          "This method checks the parity data in the "
          "StorageRedundancySet to ensure that it is consistent with "
          "the real data. \n"
          "If no StorageRedundancySet is specified, all "
          "StorageRedundancySets are checked."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Consistency Check Already in Progress",
        "No Parity to Check",
          "Method Reserved", "Vendor Specific" }]
   uint32 CheckParityConsistency (
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
         [Required, IN, OUT (false), Description (
             "The StorageExtent that will be rebuilt.")]
      CIM_StorageExtent REF Target);

      [Description (
          "This method repairs parity consistency problems found "
          "by the CheckParityConsistency method."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Method Reserved", "Vendor Specific" }]
   uint32 RepairParity (
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
         [Required, IN, OUT (false), Description (
             "The StorageExtent that will be rebuilt.")]
      CIM_StorageExtent REF Target);
};

// ==================================================================
// SoftwareIdentityCollection
// ==================================================================
   [Abstract, Experimental,  Version ( "2.10.0" ), Description (
       "A subclass of SystemSpecificCollection which collects together "
       "Software Identities for a single system, to be managed or "
       "manipulated together. The collection MAY be populated as "
       "software is downloaded using the SoftwareInstallationService "
       "or MAY be automatically populated by the management system "
       "from, say, a web service.")]
class CIM_SoftwareIdentityCollection : CIM_SystemSpecificCollection {
};

// ==================================================================
// CIM_SoftwareInstallationService
// ==================================================================
   [Abstract, Experimental,  Version ( "2.22.0" ), Description (
       "A subclass of service which provides methods to install (or "
       "update) Software Identities in ManagedElements.")]
class CIM_SoftwareInstallationService : CIM_Service {


      [Description ( 
          "This method allows a client application to determine "
          "whether a specific SoftwareIdentity can be installed (or "
          "updated) on a ManagedElement. It also allows other "
          "characteristics to be determined such as whether install "
          "will require a reboot. In addition a client can check "
          "whether the SoftwareIdentity can be added "
          "simulataneously to a specified "
          "SofwareIndentityCollection. A client MAY specify either "
          "or both of the Collection and Target parameters. The "
          "Collection parameter is only supported if "
          "SoftwareInstallationServiceCapabilities.CanAddToCollection "
          "is TRUE." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096", 
          "4097", "4098", "4099", "4100", "4101", "4102", "4103", 
          "4104", "4105", "4106", "4107", "4108", "4109", 
          "4110..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported", 
          "Unspecified Error", "Timeout", "Failed", 
          "Invalid Parameter", "Target In Use", "DMTF Reserved", 
          "Method Reserved", "Unsupported TargetType", 
          "Unattended/silent installation not supported", 
          "Downgrade/reinstall not supported", "Not enough memory", 
          "Not enough swap-space", "Unsupported version transition", 
          "Not enough disk space", 
          "Software and target operating system mismatch", 
          "Missing dependencies", "Not applicable to target", 
          "No supported path to image", "Cannot add to Collection", 
          "Asynchronous Job already in progress", "Method Reserved", 
          "Vendor Specific" }]
   uint32 CheckSoftwareIdentity(
         [IN, Description ( 
             "Reference to the SoftwareIdentity to be checked." )]
      CIM_SoftwareIdentity REF Source, 
         [IN, Description ( 
             "Reference to the ManagedElement that the Software "
             "Identity is going to be installed in (or updated)." )]
      CIM_ManagedElement REF Target, 
         [IN, Description ( 
             "Reference to the Collection to which the Software "
             "Identity will be added." )]
      CIM_Collection REF Collection, 
         [IN ( false ), OUT, Description ( 
             "The parameter describes the characteristics of the "
             "installation/update that will take place if the "
             "Source Software Identity is installed: \n"
             "Target automatic reset: The target element will "
             "automatically reset once the installation is "
             "complete. \n"
             "System automatic reset: The containing system of "
             "the target ManagedElement (normally a logical "
             "device or the system itself) will automatically "
             "reset/reboot once the installation is complete. \n"
             "Separate target reset required: "
             "EnabledLogicalElement.RequestStateChange MUST be "
             "used to reset the target element after the "
             "SoftwareIdentity is installed. \n"
             "Separate system reset required: "
             "EnabledLogicalElement.RequestStateChange MUST be "
             "used to reset/reboot the containing system of the "
             "target ManagedElement after the SoftwareIdentity "
             "is installed. \n"
             "Manual Reboot Required: The system MUST be "
             "manually rebooted by the user. \n"
             "No reboot required : No reboot is required after "
             "installation. \n"
             "User Intervention Recomended : It is recommended "
             "that a user confirm installation of this "
             "SoftwareIdentity. Inappropriate application MAY "
             "have serious consequences. \n"
             "MAY be added to specified collection : The "
             "SoftwareIndentity MAY be added to specified "
             "Collection." ), 
          ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", 
             "..", "0x7FFF..0xFFFF" }, 
          Values { "Target automatic reset", 
             "System automatic reset", 
             "Separate target reset Required", 
             "Separate system reset Required", 
             "Manual Reboot Required", "No Reboot Required", 
             "User Intervention recommended", 
             "MAY be added to specified Collection", 
             "DMTF Reserved", "Vendor Specific" }]
      uint16 InstallCharacteristics[]);

      [Description ( 
          "Start a job to install or update a SoftwareIdentity "
          "(Source) on a ManagedElement (Target). \n"
          "In addition the method can be used to add the "
          "SoftwareIdentity simulataneously to a specified "
          "SofwareIndentityCollection. A client MAY specify either "
          "or both of the Collection and Target parameters. The "
          "Collection parameter is only supported if "
          "SoftwareInstallationService.CanAddToCollection is TRUE. \n"
          "If 0 is returned, the function completed successfully "
          "and no ConcreteJob instance was required. If 4096/0x1000 "
          "is returned, a ConcreteJob will be started to perform "
          "the install. The Job\'s reference will be returned in "
          "the output parameter Job." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096", 
          "4097", "4098", "4099", "4100", "4101", "4102", "4103", 
          "4104", "4105", "4106", "4107", "4108", "4109..32767", 
          "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported", 
          "Unspecified Error", "Timeout", "Failed", 
          "Invalid Parameter", "Target In Use", "DMTF Reserved", 
          "Method Parameters Checked - Job Started", 
          "Unsupported TargetType", 
          "Unattended/silent installation not supported", 
          "Downgrade/reinstall not supported", "Not enough memory", 
          "Not enough swap-space", "Unsupported version transition", 
          "Not enough disk space", 
          "Software and target operating system mismatch", 
          "Missing dependencies", "Not applicable to target", 
          "No supported path to image", "Cannot add to Collection", 
          "Method Reserved", "Vendor Specific" }]
   uint32 InstallFromSoftwareIdentity(
         [IN ( false ), OUT, Description ( 
             "Reference to the job (may be null if job completed)."
              )]
      CIM_ConcreteJob REF Job, 
         [IN, Description ( 
             "Options to control the install process.\n"
             "Defer target/system reset : do not automatically "
             "reset the target/system.\n"
             "Force installation : Force the installation of the "
             "same or an older SoftwareIdentity. Install: "
             "Perform an installation of this software on the "
             "managed element.\n"
             "Update: Perform an update of this software on the "
             "managed element.\n"
             "Repair: Perform a repair of the installation of "
             "this software on the managed element by forcing "
             "all the files required for installing the software "
             "to be reinstalled.\n"
             "Reboot: Reboot or reset the system immediately "
             "after the install or update of this software, if "
             "the install or the update requires a reboot or reset.\n"
             "Password: Password will be specified as clear text "
             "without any encryption for performing the install "
             "or update.\n"
             "Uninstall: Uninstall the software on the managed element.\n"
             "Log: Create a log for the install or update of the software.\n"
             "SilentMode: Perform the install or update without "
             "displaying any user interface.\n"
             "AdministrativeMode: Perform the install or update "
             "of the software in the administrative mode. "
             "ScheduleInstallAt: Indicates the time at which "
             "theinstall or update of the software will occur." ), 
          ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", 
             "10", "11", "12", "13", "..", "32768..65535" }, 
          Values { "Defer target/system reset", 
             "Force installation", "Install", "Update", "Repair", 
             "Reboot", "Password", "Uninstall", "Log", 
             "SilentMode", "AdministrativeMode", 
             "ScheduleInstallAt", "DMTF Reserved", 
             "Vendor Specific" }, 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_SoftwareInstallationService.InstallOptionsValues[]", 
             "CIM_SoftwareInstallationServiceCapabilities.SupportedInstallOptions[]" }]
      uint16 InstallOptions[], 
         [IN, Description ( 
             "InstallOptionsValues is an array of strings "
             "providing additional information to InstallOptions "
             "for the method to install the software. Each entry "
             "of this array is related to the entry in "
             "InstallOptions that is located at the same index "
             "providing additional information for "
             "InstallOptions. \n"
             "If the index in InstallOptions has the value "
             "\"Password \" then a value at the corresponding "
             "index of InstallOptionValues shall not be NULL. \n"
             "If the index in InstallOptions has the value "
             "\"ScheduleInstallAt\" then the value at the "
             "corresponding index of InstallOptionValues shall "
             "not be NULL and shall be in the datetime type "
             "format. \n"
             "If the index in InstallOptions has the value \"Log "
             "\" then a value at the corresponding index of "
             "InstallOptionValues may be NULL. \n"
             "If the index in InstallOptions has the value "
             "\"Defer target/system reset\", \"Force "
             "installation\",\"Install\", \"Update\", \"Repair\" "
             "or \"Reboot\" then a value at the corresponding "
             "index of InstallOptionValues shall be NULL." ), 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_SoftwareInstallationService.InstallOptions[]" }]
      string InstallOptionsValues[], 
         [IN, Description ( 
             "Reference to the source of the install." )]
      CIM_SoftwareIdentity REF Source, 
         [IN, Description ( 
             "The installation target. If NULL then the "
             "SOftwareIdentity will be added to Collection only. "
             "The underlying implementation is expected to be "
             "able to obtain any necessary metadata from the "
             "Software Identity." )]
      CIM_ManagedElement REF Target, 
         [IN, Description ( 
             "Reference to the Collection to which the Software "
             "Identity SHALL be added. If NULL then the SOftware "
             "Identity will not be added to a Collection." )]
      CIM_Collection REF Collection);

      [Experimental, Description ( 
          "Start a job to download a series of bytes containing a "
          "software image to a ManagedElement. \n"
          "Note that this method is provided to support existing, "
          "alternative download mechanisms (such as used for "
          "firmware download). The \'normal\' mechanism will be to "
          "use the InstallFromSoftwareIdentity method. \n"
          "If 0 is returned, the function completed successfully "
          "and no ConcreteJob instance was required. If 4096/0x1000 "
          "is returned, a ConcreteJob will be started to to perform "
          "the install. The Job\'s reference will be returned in "
          "the output parameter Job." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096", 
          "4097", "4098", "4099", "4100", "4101", "4102", "4103", 
          "4104", "4105", "4106", "4107", "4108..32767", 
          "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported", 
          "Unspecified Error", "Timeout", "Failed", 
          "Invalid Parameter", "Target In Use", "DMTF Reserved", 
          "Method Parameters Checked - Job Started", 
          "Unsupported TargetType", 
          "Unattended/silent installation not supported", 
          "Downgrade/reinstall not supported", "Not enough memory", 
          "Not enough swap-space", "Unsupported version transition", 
          "Not enough disk space", 
          "Software and target operating system mismatch", 
          "Missing dependencies", "Not applicable to target", 
          "No supported path to image", "Method Reserved", 
          "Vendor Specific" }]
   uint32 InstallFromByteStream(
         [IN ( false ), OUT, Description ( 
             "Reference to the job (may be null if job completed)."
              )]
      CIM_ConcreteJob REF Job, 
         [IN, Description ( 
             "A array of bytes containing the install image." ), 
          OctetString]
      uint8 Image[], 
         [IN, Description ( "The installation target." )]
      CIM_ManagedElement REF Target, 
         [IN, Description ( 
             "Options to control the install process. \n"
             "See the InstallOptions parameter of the "
             "SoftwareInstallationService.InstallFromSoftwareIdentity "
             "method for the description of these values." ), 
          ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", 
             "10", "11", "12", "13", "..", "32768..65535" }, 
          Values { "Defer target/system reset", 
             "Force installation", "Install", "Update", "Repair", 
             "Reboot", "Password", "Uninstall", "Log", 
             "SilentMode", "AdministrativeMode", 
             "ScheduleInstallAt", "DMTF Reserved", 
             "Vendor Specific" }, 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_SoftwareInstallationService.InstallFromByteStream.InstallOptionsValues[]", 
             "CIM_SoftwareInstallationServiceCapabilities.SupportedInstallOptions[]" }]
      uint16 InstallOptions[], 
         [IN, Description ( 
             "InstallOptionsValues is an array of strings "
             "providing additional information to InstallOptions "
             "for the method to install the software. Each entry "
             "of this array is related to the entry in "
             "InstallOptions that is located at the same index "
             "providing additional information for "
             "InstallOptions. \n"
             "\n"
             "For further information on the use of "
             "InstallOptionsValues parameter, see the "
             "description of the InstallOptionsValues parameter "
             "of the "
             "SoftwareInstallationService.InstallFromSoftwareIdentity "
             "method." ), 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_SoftwareInstallationService.InstallFromByteStream.InstallOptions[]" }]
      string InstallOptionsValues[]);

      [Description ( 
          "Start a job to install software from a specific URI in a "
          "ManagedElement. \n"
          "Note that this method is provided to support existing, "
          "alternative download mechanisms (such as used for "
          "firmware download). The \'normal\' mechanism will be to "
          "use the InstallFromSoftwareIdentity method.\n"
          "If 0 is returned, the function completed successfully "
          "and no ConcreteJob instance was required. If 4096/0x1000 "
          "is returned, a ConcreteJob will be started to to perform "
          "the install. The Job\'s reference will be returned in "
          "the output parameter Job." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096", 
          "4097", "4098", "4099", "4100", "4101", "4102", "4103", 
          "4104", "4105", "4106", "4107", "4108..32767", 
          "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported", 
          "Unspecified Error", "Timeout", "Failed", 
          "Invalid Parameter", "Target In Use", "DMTF Reserved", 
          "Method Parameters Checked - Job Started", 
          "Unsupported TargetType", 
          "Unattended/silent installation not supported", 
          "Downgrade/reinstall not supported", "Not enough memory", 
          "Not enough swap-space", "Unsupported version transition", 
          "Not enough disk space", 
          "Software and target operating system mismatch", 
          "Missing dependencies", "Not applicable to target", 
          "URI not accessible", "Method Reserved", "Vendor Specific" }]
   uint32 InstallFromURI(
         [IN ( false ), OUT, Description ( 
             "Reference to the job (may be null if job completed)."
              )]
      CIM_ConcreteJob REF Job, 
         [IN, Description ( 
             "A URI for the software based on RFC 2079." )]
      string URI, 
         [IN, Description ( "The installation target." )]
      CIM_ManagedElement REF Target, 
         [IN, Description ( 
             "Options to control the install process. \n"
             "See the InstallOptions parameter of the "
             "SoftwareInstallationService.InstallFromSoftwareIdentity "
             "method for the description of these values." ), 
          ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", 
             "10", "11", "12", "13", "..", "32768..65535" }, 
          Values { "Defer target/system reset", 
             "Force installation", "Install", "Update", "Repair", 
             "Reboot", "Password", "Uninstall", "Log", 
             "SilentMode", "AdministrativeMode", 
             "ScheduleInstallAt", "DMTF Reserved", 
             "Vendor Specific" }, 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_SoftwareInstallationService.InstallFromURI.InstallOptionsValues[]", 
             "CIM_SoftwareInstallationServiceCapabilities.SupportedInstallOptions[]" }]
      uint16 InstallOptions[], 
         [IN, Description ( 
             "InstallOptionsValues is an array of strings "
             "providing additionalinformation to InstallOptions "
             "for the method to install the software. Each entry "
             "of this array is related to the entry in "
             "InstallOptions that is located at the same index "
             "providing additional information for "
             "InstallOptions. \n"
             "For further information on the use of "
             "InstallOptionsValues parameter, see the "
             "description of the InstallOptionsValues parameter "
             "of the "
             "SoftwareInstallationService.InstallFromSoftwareIdentity "
             "method." ), 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_SoftwareInstallationService.InstallFromByteStream.InstallOptions[]" }]
      string InstallOptionsValues[]);
};
// ==================================================================
// CIM_SoftwareInstallationServiceCapabilities
// ==================================================================
   [Abstract, Experimental,  Version ( "2.22.0" ), Description (
       "A subclass of capabilities that defines the capabilities of a "
       "SoftwareInstallationService. A single instance of "
       "SoftwareInstallationServiceCapabilities is associated with a "
       "SoftwareInstallationService using ElementCapabilities.")]
class CIM_SoftwareInstallationServiceCapabilities : CIM_Capabilities {

      [Required, Description ( 
          "Enumeration indicating what operations will be executed "
          "as asynchronous jobs. If an operation is included in "
          "both this and SupportedSynchronousActions then the "
          "underlying implementation is indicating that it may or "
          "may not create a job. If a Job is created, then the "
          "methods in SoftwareInstallationService return a "
          "reference to that Job as the Job parameter." ), 
       ValueMap { "2", "3", "4", "5" }, 
       Values { "None supported", "Install From Software Identity", 
          "Install from ByteStream", "Install from URI" }, 
       ModelCorrespondence { 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedSynchronousActions" }]
   uint16 SupportedAsynchronousActions[];

      [Required, Description ( 
          "Enumeration indicating what operations will be executed "
          "without the creation of a job. If an operation is "
          "included in both this and SupportedAsynchronousActions "
          "then the underlying instrumentation is indicating that "
          "it may or may not create a job." ), 
       ValueMap { "2", "3", "4", "5" }, 
       Values { "None supported", "Install From Software Identity", 
          "Install from ByteStream", "Install from URI" }, 
       ModelCorrespondence { 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedAsynchronousActions" }]
   uint16 SupportedSynchronousActions[];

      [Required, Description ( 
          "An array containing a list of "
          "SoftwareIdentity.TargetType properties that this service "
          "\'knows\' how to install. TargetType is an application "
          "specific string which is invariant across version or "
          "name changes of the SoftwareIdentity and so can be used "
          "by a client to select Software Identities compatible "
          "with this service. \n"
          "If the service is generic (for example an OS installer), "
          "this array will be empty." ), 
       ModelCorrespondence { "CIM_SoftwareIdentity.TargetType" }]
   string SupportedTargetTypes[];

      [Required, Description ( 
          "An array containing a list of the binary format types "
          "that this service \'knows\' how to install. The Values "
          "for this property are the subset of "
          "CIM_SoftwareIdentityResource.ExtendedResourceTypes that "
          "apply to the \'Installer and Payload\', \'Installer\' "
          "and \' Installability Checker\' ResourceTypes. For "
          "example, an a Windows system, this property may be set "
          "to \'4\' indicating \'Windows MSI\'. This property "
          "should be set to \'2\' (Not Applicable) if this service "
          "is not OS specific." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", 
          "9..0x7FFF", "0x8000.." }, 
       Values { "Unknown", "Other", "Not Applicable", "Linux RPM", 
          "HP-UX Depot", "Windows MSI", "Solaris Package", 
          "Macintosh Disk Image", "Debian linux Package", 
          "DMTF Reserved", "Vendor Reserved" }, 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.ExtendedResourceType", 
          "CIM_SoftwareInstallationServiceCapabilities.OtherSupportedExtendedResourceTypeDescriptions[]", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesMajorVersions[]", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesMinorVersions[]", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesRevisionNumbers[]", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesbuildNumbers[]" }]
   uint16 SupportedExtendedResourceTypes[];

      [Required, Description ( 
          "This property indicates whether "
          "SoftwareInstallationService.InstallFromSoftwareIdentity "
          "supports adding a SoftwareIdentity to a Collection." )]
   boolean CanAddToCollection;

      [Description ( 
          "An enumeration indicating the specific install related "
          "optionssupported by this service. Since this is an "
          "array, multiple values may be specified. See the "
          "InstallOptions parameter of "
          "theSoftwareInstallationService.InstallFromSoftwareIdentity "
          "method for the description of these values." ), 
       ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "..", "32768..65535" }, 
       Values { "Defer target/system reset", "Force installation", 
          "Install", "Update", "Repair", "Reboot", "Password", 
          "Uninstall", "Log", "SilentMode", "AdministrativeMode", 
          "ScheduleInstallAt", "DMTF Reserved", "Vendor Specific" }, 
       ModelCorrespondence { 
          "CIM_SoftwareInstallationService.InstallFromSoftwareIdentity" }]
   uint16 SupportedInstallOptions[];

      [Description ( 
          "A string describing the binary format types that this "
          "service \'knows\' how to install when the corresponding "
          "SupportedExtendedResourceTypes array includes the value "
          "1 (Other)." ), 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.ExtendedResourceType", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesMajorVersions[]", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesMinorVersions[]", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesRevisionNumbers[]", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesbuildNumbers[]" }]
   string OtherSupportedExtendedResourceTypeDescriptions[];

      [Description ( 
          "This property represents the major number component of "
          "the installer version supported by the "
          "SoftwareInstallationService.The installer format is "
          "represented by the element at the same index in the "
          "SupportedExtendedResourceTypes array." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.ExtendedResourceType", 
          "CIM_SoftwareIdentity.MinExtendedResourceTypeMajorVersion", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]" }]
   uint16 SupportedExtendedResourceTypesMajorVersions[];

      [Description ( 
          "This property represents the minor number component of "
          "the installer version supported by the "
          "SoftwareInstallationService.The installer format is "
          "represented by the element at the same index in the "
          "SupportedExtendedResourceTypes array." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.ExtendedResourceType", 
          "CIM_SoftwareIdentity.MinExtendedResourceTypeMinorVersion", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]" }]
   uint16 SupportedExtendedResourceTypesMinorVersions[];

      [Description ( 
          "This property represents the revision number component "
          "of the installer version supported by the "
          "SoftwareInstallationService.The installer format is "
          "represented by the element at the same index in the "
          "SupportedExtendedResourceTypes array." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.ExtendedResourceType", 
          "CIM_SoftwareIdentity.MinExtendedResourceTypeRevisionNumber", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]" }]
   uint16 SupportedExtendedResourceTypesRevisionNumbers[];

      [Description ( 
          "This property represents the build number component of "
          "the installer version supported by the "
          "SoftwareInstallationService.The installer format is "
          "represented by the element at the same index in the "
          "SupportedExtendedResourceTypes array." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_SoftwareIdentity.ExtendedResourceType", 
          "CIM_SoftwareIdentity.MinExtendedResourceTypeBuildNumber", 
          "CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]" }]
   uint16 SupportedExtendedResourceTypesBuildNumbers[];

      [Description ( 
          "This property lists the URI schemes supported by the "
          "SoftwareInstallationService." ), 
       ValueMap { "2", "3", "4", "5", "6", "7", "8", "..", 
          "0x8000..0xFFFF" }, 
       Values { "data", "file", "ftp", "http", "https", "nfs", 
          "tftp", "DMTF Reserved", "Vendor Specific" }]
   uint16 SupportedURISchemes[];
};

// ==================================================================
//  CIM_StorageCapabilities
// ==================================================================
   [Abstract,  Version ( "2.11.0" ), Description (
       "A subclass of Capabilities that defines the Capabilities of a "
       "StorageService or StoragePool. For example, an instance of "
       "StorageCapabilities could be associated with either a "
       "StorageConfigurationService or StoragePool by using "
       "ElementCapabilities.")]
class CIM_StorageCapabilities : CIM_Capabilities {

      [Description ( 
          "Enumeration indicating the type of element to which this "
          "StorageCapabilities applies." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7" }, 
       Values { "Unknown", "Reserved", "Any Type", "StorageVolume", 
          "StorageExtent", "StoragePool", 
          "StorageConfigurationService", "LogicalDisk" }]
   uint16 ElementType;

      [Description ( 
          "Indicates whether or not the associated element supports "
          "no single point of failure. Values are: FALSE = does not "
          "support no single point of failure, and TRUE = supports "
          "no single point of failure." ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.NoSinglePointOfFailureDefault" }]
   boolean NoSinglePointOfFailure;

      [Description ( 
          "Indicates the default value for the "
          "NoSinglePointOfFailure property." ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.NoSinglePointOfFailure" }]
   boolean NoSinglePointOfFailureDefault;

      [Description ( 
          "DataRedundancyMax describes the maximum number of "
          "complete copies of data that can be maintained. Examples "
          "would be RAID 5 (where 1 copy is maintained) and RAID 1 "
          "(where 2 or more copies are maintained). Possible values "
          "are 1 to n. The default redundancy is specified using "
          "DataRedundancyDefault, while the minimum is defined by "
          "DataRedundancyMin." ), 
       MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.DataRedundancyMin", 
          "CIM_StorageCapabilities.DataRedundancyDefault" }]
   uint16 DataRedundancyMax;

      [Description ( 
          "DataRedundancyMin describes the minimum number of "
          "complete copies of data that can be maintained. Examples "
          "would be RAID 5 where 1 copy is maintained and RAID 1 "
          "where 2 or more copies are maintained). Possible values "
          "are 1 to n. The default redundancy is specified using "
          "DataRedundancyDefault, while the maximum is defined by "
          "DataRedundancyMax." ), 
       MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.DataRedundancyMax", 
          "CIM_StorageCapabilities.DataRedundancyDefault" }]
   uint16 DataRedundancyMin;

      [Description ( 
          "DataRedundancyDefault describes the default number of "
          "complete copies of data that can be maintained. Examples "
          "would be RAID 5 where 1 copy is maintained and RAID 1 "
          "where 2 or more copies are maintained. Possible values "
          "are 1 to n. The bounds for the redundancy (max and min) "
          "are defined by DataRedundancyMax and DataRedundancyMin." ), 
       MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.DataRedundancyMax", 
          "CIM_StorageCapabilities.DataRedundancyMin" }]
   uint16 DataRedundancyDefault;

      [Description ( 
          "PackageRedundancyMax describes the maximum number of "
          "redundant packages that can be used. For example, in the "
          "storage domain, package redundancy describes how many "
          "disk spindles can fail without data loss including, at "
          "most, one spare. An example would be RAID5 with a spare "
          "disk which would have a PackageRedundancy of 2. Possible "
          "values are 0 to n. The default redundancy is specified "
          "using PackageRedundancyDefault, while the maximum is "
          "defined by PackageRedundancyMax." ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.PackageRedundancyMin", 
          "CIM_StorageCapabilities.PackageRedundancyDefault" }]
   uint16 PackageRedundancyMax;

      [Description ( 
          "PackageRedundancyMin describes the minimum number of "
          "redundant packages that can be used. For example, in the "
          "storage domain, package redundancy describes how many "
          "disk spindles can fail without data loss including, at "
          "most, one spare. An example would be RAID5 with a spare "
          "disk which would have a PackageRedundancy of 2. Possible "
          "values are 0 to n. The default redundancy is specified "
          "using PackageRedundancyDefault, while the minimum is "
          "defined by PackageRedundancyMin." ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.PackageRedundancyMax", 
          "CIM_StorageCapabilities.PackageRedundancyDefault" }]
   uint16 PackageRedundancyMin;

      [Description ( 
          "PackageRedundancyDefault describes the default number of "
          "redundant packages that will be used. For example, in "
          "the storage domain, package redundancy describes how "
          "many disk spindles can fail without data loss including, "
          "at most, one spare. An example would be RAID5 with a "
          "spare disk which would have a PackageRedundancy of 2. "
          "Possible values are 0 to n. The bounds for redundancy "
          "are specified using the properties, PackageRedundancyMax "
          "and PackageRedundancyMin." ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.PackageRedundancyMin", 
          "CIM_StorageCapabilities.PackageRedundancyMax" }]
   uint16 PackageRedundancyDefault;

      [Description ( 
          "DeltaReservatioMax is a number between 1 (1%) and a 100 "
          "(100%) that specifies the maximum amount of space "
          "reserved in a replica for caching changes. For a "
          "complete copy this would be 100%, but it can be lower in "
          "some implementations. This parameter sets the upper "
          "limit, while DeltaReservationMin sets the lower limit." ), 
       Units ( "Percentage" ), 
       MinValue ( 0 ), 
       MaxValue ( 100 ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.DeltaReservationMin", 
          "CIM_StorageCapabilities.DeltaReservationDefault" }, 
       PUnit ( "percent" )]
   uint16 DeltaReservationMax;

      [Description ( 
          "DeltaReservationMin is a number between 1 (1%) and a 100 "
          "(100%) that specifies the minimum amount of space that "
          "should be reserved in a replica for caching changes. For "
          "a complete copy this would be 100%, but it can be lower "
          "in some implementations. This parameter sets the lower "
          "limit, while DeltaReservationMax sets the upper limit." ), 
       Units ( "Percentage" ), 
       MinValue ( 0 ), 
       MaxValue ( 100 ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.DeltaReservationMax", 
          "CIM_StorageCapabilities.DeltaReservationDefault" }, 
       PUnit ( "percent" )]
   uint16 DeltaReservationMin;

      [Description ( 
          "Delta reservation is a number between 1 (1%) and a 100 "
          "(100%) that specifies how much space should be reserved "
          "by default in a replica for caching changes. For a "
          "complete copy this would be 100%, but it can be lower in "
          "some implementations. This parameter sets the default "
          "value, while DeletaReservationMax and DeltReservationMin "
          "set the upper and lower bounds." ), 
       Units ( "Percentage" ), 
       MinValue ( 0 ), 
       MaxValue ( 100 ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.DeltaReservationMax", 
          "CIM_StorageCapabilities.DeltaReservationMin" }, 
       PUnit ( "percent" )]
   uint16 DeltaReservationDefault;

      [Description ( 
          "Extent Stripe Length describes the number of underlying "
          "StorageExtents across which data is striped in the "
          "common striping-based storage organizations. This is "
          "also known as the number of \'members\' or \'columns\'. \n"
          "A NULL value for ExtentStripeLengthDefault indicates "
          "that the system does not support configuration of "
          "storage by specifying Stripe Length. \n"
          "If Extent Stripe Length is supported, and this "
          "Capabilities instance is associated with a pool that was "
          "created with a range of QOS then "
          "ExtentStripeLengthDefault represents the default value. "
          "Other available values(such as min, max, and discrete "
          "values) can be determined by using the "
          "\'GetSupportedStripeLengths\' and "
          "\'GetSupportedStripeLengthRange\' methods. \n"
          "If Extent Stripe Length is supported and the pool was "
          "created with a single specific QOS, representing a Raid "
          "group, set, or rank, then this property represents the "
          "current/fixed value for the pool, and Extent Stripe "
          "Length is not supported in subsequent creation of "
          "elements from this pool. Consequently, the "
          "\'GetSupportedStripeLength\' methods cannot be used, and "
          "in a StorageSetting instance used as a goal when "
          "creating or modifying a child element of the pool, "
          "ExtentStripeLengthGoal, ExtentStripeLengthMin, and "
          "ExtentStripeLengthMax MUST be set to NULL." ), 
       MinValue ( 1 )]
   uint16 ExtentStripeLengthDefault;

      [Description ( 
          "ParityLayout specifies whether a parity-based storage "
          "organization is using rotated or non-rotated parity. If "
          "this capabilities instance is associated with a pool "
          "that was created with a range of QOS then "
          "ParityLayoutDefault represents the default value. Other "
          "available values can be determined by using the "
          "\'GetSupportedParityLayouts\' method. If the pool was "
          "created with a single specific QOS, representing a Raid "
          "group, set, or rank, then this property represents the "
          "current/fixed value for the pool, and ParityLayout is "
          "not supported in subsequent creation of elements from "
          "this pool. Consequently, the \'GetSupportedParityLayouts\' "
          "method cannot be used, and the ParityLayoutGoal property "
          "in StorageSetting instances used in child element "
          "operations on this pool MUST be set to NULL. A NULL "
          "value for ParityLayoutDefault indicates that the system "
          "does not support configuration of storage by specifying "
          "ParityLayout." ), 
       ValueMap { "2", "3" }, 
       Values { "Non-Rotated Parity", "Rotated Parity" }]
   uint16 ParityLayoutDefault;

      [Description ( 
          "User Data Stripe Depth describes the number of bytes "
          "forming a strip in common striping-based storage "
          "organizations. The strip is defined as the size of the "
          "portion of a stripe that lies on one extent. Thus, "
          "ExtentStripeLength * UserDataStripeDepth will yield the "
          "size of one stripe of user data. A NULL value for "
          "UserDataStripeDepthDefault indicates that the system "
          "does not support configuration of storage by specifying "
          "Stripe Depth. \n"
          "If User Data Stripe Depth is supported, and this "
          "Capabilities instance is associated with a pool that was "
          "created with a range of QOS then "
          "UserDataStripeDepthDefault represents the default value. "
          "Other available values(such as min, max, and discrete "
          "values) can be determined by using the "
          "\'GetSupportedStripeDepths\' and "
          "\'GetSupportedStripeDepthRange\' methods. \n"
          "If User Data Stripe Depth is supported and the pool was "
          "created with a single specific QOS, representing a Raid "
          "group, set, or rank, then this property represents the "
          "current/fixed value for the pool, and User Data Stripe "
          "Depth is not supported in subsequent creation of "
          "elements from this pool. Consequently, the "
          "\'GetSupportedStripeDepth\' methods cannot be used, and "
          "in a StorageSetting instance used as a goal when "
          "creating or modifying a child element of the pool, "
          "UserDataStripeDepthGoal, UserDataStripeDepthMin, and "
          "UserDataStripeDepthMax MUST be set to NULL." ), 
       Units ( "Bytes" ), 
       MinValue ( 1 ), 
       PUnit ( "byte" )]
   uint64 UserDataStripeDepthDefault;


      [Description ( 
          "Method to create and populate a StorageSetting instance "
          "from a StorageCapability instance. This removes the need "
          "to populate default settings and other settings in the "
          "context of each StorageCapabilities (which could be "
          "numerous). If the underlying instrumentation supports "
          "the StorageSettingWithHints subclass, then an instance "
          "of that class will be created instead." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error", 
          "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", 
          "Vendor Specific" }]
   uint32 CreateSetting(
         [IN, Description ( 
             "If \'Default\' is passed for the CreateDefault "
             "parameter, the Max, Goal, and Min setting "
             "attributes are set to the Default values of the "
             "parent StorageCapabilities when the instance is "
             "created. \n"
             "If set to \'Goal\' the new StorageSetting "
             "attributes are set to the related attributes of "
             "the parent StorageCapabilities, e.g. Min to Min, "
             "Goal to Default, and Max to Max. \n"
             "\n"
             "This method maybe deprecated in lieu of intrinsics "
             "once limitations in the CIM Operations are "
             "addressed." ), 
          ValueMap { "2", "3" }, 
          Values { "Default", "Goal" }]
      uint16 SettingType, 
         [IN ( false ), OUT, Description ( 
             "Reference to the created StorageSetting instance." )]
      CIM_StorageSetting REF NewSetting);

      [Experimental, Description ( 
          "For systems that support discrete ExtentStripeLengths "
          "for volume or pool creation, this method can be used to "
          "retrieve a list of supported values. Note that different "
          "implementations may support either the "
          "GetSupportedStripeLengths or the "
          "GetSupportedStripeLengthRange method. Also note that the "
          "advertised sizes may change after the call due to "
          "requests from other clients. If the system only supports "
          "a range of sizes, then the return value will be set to "
          "3." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Method completed OK", "Method not supported", 
          "Choices not available for this Capability", 
          "Use GetSupportedStripeLengthRange instead" }]
   uint32 GetSupportedStripeLengths(
         [IN ( false ), OUT, Description ( 
             "List of supported ExtentStripeLengths for a "
             "Volume/Pool creation or modification." ), 
          ArrayType ( "Indexed" )]
      uint16 StripeLengths[]);

      [Experimental, Description ( 
          "For systems that support a range of ExtentStripeLengths "
          "for volume or pool creation, this method can be used to "
          "retrieve the supported range. Note that different "
          "implementations may support either the "
          "GetSupportedExtentLengths or the "
          "GetSupportedExtentLengthRange method. Also note that the "
          "advertised sizes may change after the call due to "
          "requests from other clients. If the system only supports "
          "discrete values, then the return value will be set to 3." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Method completed OK", "Method not supported", 
          "Choices not available for this Capability", 
          "Use GetSupportedStripeLengths instead" }]
   uint32 GetSupportedStripeLengthRange(
         [IN ( false ), OUT, Description ( 
             "The minimum ExtentStripeDepth for a volume/pool in bytes."
              )]
      uint16 MinimumStripeLength, 
         [IN ( false ), OUT, Description ( 
             "The maximum ExtentStripeLength for a volume/pool in bytes."
              )]
      uint16 MaximumStripeLength, 
         [IN ( false ), OUT, Description ( 
             "A volume/pool ExtentStripeLength must be a "
             "multiple of this value which is specified in "
             "bytes." )]
      uint32 StripeLengthDivisor);

      [Description ( 
          "For systems that support Parity-based storage "
          "organizations for volume or pool creation, this method "
          "can be used to the supported parity layouts." ), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported", 
          "Choice not aavailable for this capability" }]
   uint32 GetSupportedParityLayouts(
         [IN ( false ), OUT, Description ( 
             "List of supported Parity for a Volume/Pool "
             "creation or modification." ), 
          ValueMap { "2", "3" }, 
          Values { "Non-Rotated Parity", "Rotated Parity" }, 
          ArrayType ( "Indexed" )]
      uint16 ParityLayout[]);

      [Experimental, Description ( 
          "For systems that support discrete UserDataStripeDepths "
          "for volume or pool creation, this method can be used to "
          "retrieve a list of supported values. Note that different "
          "implementations may support either the "
          "GetSupportedStripeDepths or the "
          "GetSupportedStripeDepthRange method. If the system only "
          "supports a range of sizes, then the return value will be "
          "set to 2." ), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported", 
          "Use GetSupportedStripeDepthRange instead" }]
   uint32 GetSupportedStripeDepths(
         [IN ( false ), OUT, Description ( 
             "List of supported UserDataStripeDepths for a "
             "Volume/Pool creation or modification." ), 
          Units ( "Bytes" ), 
          ArrayType ( "Indexed" ), 
          PUnit ( "byte" )]
      uint64 StripeDepths[]);

      [Experimental, Description ( 
          "For systems that support a range of UserDataStripeDepths "
          "for volume or pool creation, this method can be used to "
          "retrieve the supported range. Note that different "
          "implementations may support either the "
          "GetSupportedStripeDepths or the "
          "GetSupportedStripeDepthRange method. If the system only "
          "supports discrete values, then the return value will be "
          "set to 2." ), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported", 
          "Use GetSupportedStripeDepths instead" }]
   uint32 GetSupportedStripeDepthRange(
         [IN ( false ), OUT, Description ( 
             "The minimum UserDataStripeDepth for a volume/pool in bytes."
              ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 MinimumStripeDepth, 
         [IN ( false ), OUT, Description ( 
             "The maximum UserDataStripeDepth for a volume/pool in bytes."
              ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 MaximumStripeDepth, 
         [IN ( false ), OUT, Description ( 
             "A volume/pool UserDataStripeDepth must be a "
             "multiple of this value which is specified in "
             "bytes." ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 StripeDepthDivisor);
};

// ==================================================================
//  CIM_RegisteredSpecification
// ==================================================================
   [Abstract, Experimental,Version ( "2.22.0" ),
    Description (
       "A RegisteredSpecification is used to advertise the "
       "implementation of a specification within a WBEM server. The "
       "specification may be authored by the DMTF or another standards "
       "organization. In this context, specification is used to "
       "describe a named and versioned set of constraints. There may "
       "be a one to one correspondence between the set of constraints "
       "and the document in which they are published. An example of a "
       "one to one correspondence is the mechanism used by the DMTF to "
       "publish its profiles. An example of one to many documents to "
       "specifications is an SMI-S book published by SNIA." )]
class CIM_RegisteredSpecification : CIM_ManagedElement {

      [Key, Override ( "InstanceID" ), 
       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 shall be constructed "
          "using the following \'preferred\' algorithm: \n"
          ": \n"
          "Where and are separated by a colon \':\', and where "
          "shall 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 _ structure of "
          "Schema class names.) In addition, to ensure uniqueness, "
          "shall not contain a colon (\':\'). The first colon to "
          "appear in InstanceID shall appear between and . is "
          "chosen by the organizational entity and should not be "
          "re-used to identify different underlying (real-world) "
          "elements. \n"
          "For DMTF defined instances, shall be set to \'CIM\'." )]
   string InstanceID;

      [Description ( "The type of specification." ), 
       ValueMap { "1", "2", "3", "4", ".." }, 
       Values { "Other", "Profile", "Initiative Wrapper", "Mapping", 
          "DMTF Reserved" }, 
       ModelCorrespondence { 
          "CIM_RegisteredSpecification.OtherSpecificationType" }]
   uint16 SpecificationType;

      [Description ( 
          "OtherSpecificationType shall be a a free-form string "
          "providing a description of the specification type if 1, "
          "\"Other\" is specified for the SpecificationType." ), 
       MaxLen ( 256 ), 
       ModelCorrespondence { 
          "CIM_RegisteredSpecification.SpecificationType" }]
   string OtherSpecificationType;

      [Required, Description ( 
          "The organization that defines this specification. \n"
          "\"The Green Grid\" identifies \"The Green Grid "
          "Association\"" ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "14", "15", "16", "17", "18", "19", 
          "20", "21", ".." }, 
       Values { "Other", "DMTF", "CompTIA", 
          "Consortium for Service Innovation", "FAST", "GGF", 
          "INTAP", "itSMF", "NAC", 
          //10 
          "Northwest Energy Efficiency Alliance", 
          "SNIA", "TM Forum", "The Open Group", "ANSI", "IEEE", 
          "IETF", "INCITS", "ISO", "W3C", "OGF", "The Green Grid", 
          "DMTF Reserved" }, 
       ModelCorrespondence { 
          "CIM_RegisteredSpecification.OtherRegisteredOrganization" }]
   uint16 RegisteredOrganization;

      [Description ( 
          "OtherRegisteredOrganization shall be a a free-form "
          "string providing a description of the organization if 1, "
          "\"Other\" is specified for the RegisteredOrganization." ), 
       MaxLen ( 256 ), 
       ModelCorrespondence { 
          "CIM_RegisteredSpecification.RegisteredOrganization" }]
   string OtherRegisteredOrganization;

      [Required, Description ( 
          "The name of this registered specification. Since "
          "multiple versions can exist for the same RegisteredName, "
          "the combination of RegisteredName, "
          "RegisteredOrganization, and RegisteredVersion shall "
          "uniquely identify the registered specification within "
          "the scope of the organization. \n"
          "The value of this property shall correspond to the name "
          "given to the set of versioned constraings by a "
          "specification or standard. The value does not identify "
          "the name of the document or publishing media, unless it "
          "happens to be the same as the name given to the "
          "versioned constraints." ), 
       MaxLen ( 256 )]
   string RegisteredName;

      [Required, Description ( 
          "The version describing the creation or last "
          "modificationof the specification. The string "
          "representing the version shall be in the form: \n"
          "M + \".\" + N + \".\" + U \n"
          "Where: \n"
          "M - The major version (in numeric form). \n"
          "N - The minor version (in numeric form). \n"
          "U - The update (e.g. errata, patch, ..., in numeric "
          "form)." )]
   string RegisteredVersion;

      [Required, Description ( 
          "This property signifies the requested network "
          "advertisement for specification information. It is used "
          "by the advertising services of the WBEM infrastructure "
          "to determine what should be advertised, via what "
          "mechanisms. The property is an array so that the "
          "specification may be advertised using several "
          "mechanisms. Note: If this property is "
          "null/uninitialized, shall be equivalent to specifying "
          "the value 2, \"Not Advertised\"." ), 
       ValueMap { "1", "2", "3", "4" }, 
       Values { "Other", "Not Advertised", "SLP", "WS-Identify" }, 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_RegisteredSpecification.AdvertiseTypeDescriptions" }]
   uint16 AdvertiseTypes[];

      [Description ( 
          "A free-form string providing additional information "
          "related to the AdvertiseTypes. A description shall be "
          "provided for each occurrence of AdvertiseTypes. entry in "
          "this array corresponds to the entry in the "
          "AdvertiseTypes array at the same index. It is not "
          "expected that additional descriptions are needed if the "
          "Type is set to \"Not Advertised\" or \"SLP\". However, "
          "as the SLP template expands, or as other advertisement "
          "mechanisms are defined, support for additional "
          "descriptions may be needed. This array is defined to "
          "support this." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_RegisteredSpecification.AdvertiseTypes" }]
   string AdvertiseTypeDescriptions[];
};


// ==================================================================
//  CIM_RegisteredProfile
// ==================================================================
   [Abstract, Version ( "2.22.0" ), Description (
       "A RegisteredProfile describes a set of CIM Schema classes with "
       "required properties and/or methods, necessary to manage a "
       "real-world entity or to support a usage scenario, in an "
       "interoperable fashion. RegisteredProfiles can be defined by "
       "the DMTF or other standards organizations. Note that this "
       "class should not be confused with CIM_Profile, which collects "
       "SettingData instances, to be applied as a 'configuration "
       "profile' for an element. \n"
       "A RegisteredProfile is a named 'standard' for CIM-based "
       "management of a particular System, subsystem, Service or other "
       "entity, for a specified set of uses. It is a complete, "
       "standalone definition, as opposed to the subclass "
       "RegisteredSubProfile, which requires a scoping profile for "
       "context. \n"
       "The uses for a RegisteredProfile or SubProfile MUST be "
       "specified in the document that defines the profile. Examples "
       "of Profiles are to manage various aspects of an Operating "
       "System, Storage Array, or Database. The name of the profile is "
       "defined and scoped by its authoring organization.")]
class CIM_RegisteredProfile : CIM_RegisteredSpecification {

      [Override ( "SpecificationType" ), 
       Description ( 
          "If this property has a value other than null, the value shall be 2"
           ), 
       ValueMap { "2" }, 
       Values { "Profile" }]
   uint16 SpecificationType;

      [Experimental, Description ( 
          "Profiles may gather a set of provisions together that "
          "are implemented, (or not implemented), as a whole by a "
          "conformant implementation. Such sets are known as "
          "profile features.\n"
          "If a profile does not define features, then this "
          "property shall be null. \n"
          "If not null, an implementation shall put the profile "
          "defined feature name of each implemented feature in a "
          "separate entry of this array." )]
   string ImplementedFeatures[];


      [EXPERIMENTAL, Description ( 
          "This operation is used to close a session to enumerate "
          "central and scoping class instances." ), 
       VALUEMAP { "0", "1", ".." }, 
       VALUES { "Completed with No Error", "Not Supported", 
          "DMTF Reserved" }]
   uint32 CloseConformantInstances(
         [IN, Description ( 
             "The EnumerationContext parameter is the "
             "enumeration context value representing the "
             "enumeration session to be used." )]
      string EnumerationContext);

      [EXPERIMENTAL, Description ( 
          "This operation is used to establish and open a session "
          "to enumerate central and scoping class instances of this "
          "registered profile instance and optionally to retrieve a "
          "first set of such instances." ), 
       VALUEMAP { "0", "1", "22", "26", ".." }, 
       VALUES { "Completed with No Error", "Not Supported", 
          "CIM_ERR_INVALID_OPERATION_TIMEOUT", 
          "CIM_ERR_CONTINUATION_ON_ERROR_NOT_SUPPORTED", 
          "DMTF Reserved" }]
   uint32 OpenConformantInstances(
         [IN, Description ( 
             "NULL, or a class name that acts as a filter to "
             "select only those central or scoping instances "
             "that a kind of the specified class. This is useful "
             "to select particular subclasses or to select a "
             "particular instances when more than one is defined "
             "for a profile." )]
      string ResultClass, 
         [IN, Description ( 
             "NULL, or unordered set of property names, acting "
             "as a restricting filter on the properties included "
             "in the returned instance. An empty list specifies "
             "to return no properties. The instance path shall "
             "always be returned." )]
      string IncludedPropertyList[], 
         [IN, Description ( 
             "The operation timeout is the minimum time the CIM "
             "Server shall maintain the open enumeration session "
             "after the last OpenConformantInstances or "
             "PullConformantInstances invocation, (unless the "
             "enumeration session was closed during that last "
             "invocation). If the operation timeout is exceeded, "
             "the enumeration session may be closed at any time, "
             "releasing any possibly allocated resources related "
             "to the enumeration session. \n"
             "An OperationTimeout of 0 means that there is no "
             "operation timeout, i.e. the enumeration session is "
             "never closed based on time.\n"
             "If OperationTimeout is NULL, the operation timeout "
             "is implementation dependent. \n"
             "All other values for OperationTimeout specify the "
             "operation timeout in seconds.\n"
             "The implementation may restrict the set of "
             "allowable values for OperationTimeout. This "
             "specifically includes the possibility to not allow "
             "0 (no timeout).\n"
             "If the specified value is not an allowable value, "
             "the method shall return failure with return code "
             "CIM_ERR_INVALID_OPERATION_TIMEOUT." )]
      uint32 OperationTimeout, 
         [IN, Description ( 
             "TRUE requests continuation on error. Continuation "
             "on error is the ability to resume an enumeration "
             "session successfully after an invocation of this "
             "method that returned an error. A conformant "
             "implementation may support continuation on error.\n"
             "If ContinueOnError is true and the method does not "
             "support continuation on error, it shall return "
             "failure with return code "
             "CIM_ERR_CONTINUATION_ON_ERROR_NOT_SUPPORTED \n"
             "If the implementation supports continuation on "
             "error, it shall support it as follows: If "
             "ContinueOnErroris true, the enumeration session "
             "shall remain open when this or a subsequent "
             "PullConformantInstances invocation returns "
             "failure, and any subsequent successful "
             "PullConformantInstances operations process the set "
             "of instances that would have remained if the "
             "failing invocation had been successful, subject to "
             "the consistency rules defined for pulled "
             "enumerations, see DSP0223.\n"
             "If ContinueOnError is false, the enumeration "
             "session shall be closed when this method returns "
             "failure." )]
      boolean ContinueOnError, 
         [IN, Description ( 
             "The MaxObjectCount input parameter defines the "
             "maximum number of elements that may be returned by "
             "this Pull operation. Any uint32 number is valid, "
             "including 0. The implementation may deliver any "
             "number of elements up to MaxObjectCount but shall "
             "not deliver more than MaxObjectCount.elements. The "
             "CIM Client may use a MaxObjectCount value of 0 as "
             "a means of restarting the OperationTimeout for the "
             "enumeration session, while it wishes to not "
             "retrieve any elements." )]
      uint32 MaxObjectCount, 
         [IN ( false ), OUT, Description ( 
             "The EnumerationContext parameter is the "
             "enumeration context value representing the "
             "enumeration session to be used.\n"
             "If the session is closed as a result of this "
             "invocation, the output EnumerationContext shall be "
             "NULL. Otherwise, the output EnumerationContext "
             "shall provide the information necessary for a "
             "subsequent PullConformantInstances call." )]
      string EnumerationContext, 
         [IN ( false ), OUT, Description ( 
             "The EndOfSequence output parameter indicates to "
             "the CIM Client whether the enumeration session is "
             "exhausted. If EndOfSequence is true upon "
             "successful completion of this invocation, no more "
             "elements are available and the implmeentation "
             "shall close the enumeration session, releasing any "
             "possibly allocated resources related to the "
             "enumeration session. If EndOfSequence is false, "
             "there may be additional elements available and "
             "implementation shall not close the enumeration "
             "session." )]
      boolean EndOfSequence, 
         [IN ( false ), OUT, Description ( 
             "On successful completion, an array corresponding "
             "to the InstanceWithPathList that indicates whether "
             "the entry is a scoping instance, a central "
             "instance, or both." ), 
          ValueMap { "2", "3", "4", ".." }, 
          Values { "Central Instance", "Scoping Instance", 
             "Central and Scoping Instance", "DMTF Reserved" }, 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_ProfileRegistration.OpenConformantInstances(InstanceWithPathList)" }]
      uint16 InstanceType[], 
         [IN ( false ), OUT, Description ( 
             "On successful completion, an correlated, but "
             "unordered set of the enumerated instances and "
             "their addresses, with a number of entries from 0, "
             "up to a maximum defined by MaxObjectCount, that "
             "meet the criteria defined in the Open operation "
             "that established this enumeration session. Note "
             "that returning no entries in the array does not "
             "imply that the enumeration session has been "
             "exhausted. Only the EndOfSequence output parameter "
             "indicates whether the enumeration session has been "
             "exhausted." ), 
          EmbeddedInstance ( "CIM_ManagedElement" ), 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_ProfileRegistration.OpenConformantInstances(InstanceType)" }]
      string InstanceWithPathList[]);

      [EXPERIMENTAL, Description ( 
          "This operation is used to continue enumeration central "
          "class instances in the context of a session established "
          "by OpenConformantInstances." ), 
       VALUEMAP { "0", "1", "21", ".." }, 
       VALUES { "Completed with No Error", "Not Supported", 
          "CIM_ERR_INVALID_ENUMERATION_CONTEXT", "DMTF Reserved" }]
   uint32 PullConformantInstances(
         [IN, Description ( 
             "The MaxObjectCount input parameter defines the "
             "maximum number of elements that may be returned by "
             "this method. Any uint32 number is valid, including "
             "0. The implementation may deliver any number of "
             "elements up to MaxObjectCount but shall not "
             "deliver more than MaxObjectCount elements. The CIM "
             "Client may use a MaxObjectCount value of 0 as a "
             "means of restarting the OperationTimeout for the "
             "enumeration session, while it wishes to not "
             "retrieve any elements." )]
      uint32 MaxObjectCount, 
         [IN, OUT, Description ( 
             "The EnumerationContext parameter is the "
             "enumeration context value representing the "
             "enumeration session to be used.\n"
             "On input, it shall be the EnumerationContext ouput "
             "value from the previous invocation of "
             "OpenConformantInstances or PullConformantInstances "
             "within an open enumeration session.If the session "
             "is closed as a result of this invocation, the "
             "output EnumerationContext shall be NULL. "
             "Otherwise, the output EnumerationContext shall "
             "provide the information necessary for a subsequent "
             "PullConformantInstances call." )]
      string EnumerationContext, 
         [IN ( false ), OUT, Description ( 
             "The EndOfSequence output parameter indicates to "
             "the CIM Client whether the enumeration session is "
             "exhausted. If EndOfSequence is true upon "
             "successful completion of this method, no more "
             "elements are available and the enumeration session "
             "shall be closed, releasing any possibly allocated "
             "resources related to the enumeration session. If "
             "EndOfSequence is false, there may be additional "
             "elements available and enumeration session shall "
             "be remain open unless there is an error in which "
             "case, ContinueOnError governs whether or not the "
             "session is closed or not." )]
      boolean EndOfSequence, 
         [IN ( false ), OUT, Description ( 
             "On successful completion, an array corresponding "
             "to the InstanceWithPathList that indicates whether "
             "the entry is a scoping instance, a central "
             "instance, or both." ), 
          ValueMap { "2", "3", "4", ".." }, 
          Values { "Central Instance", "Scoping Instance", 
             "Central and Scoping Instance", "DMTF Reserved" }, 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_ProfileRegistration.PullConformantInstances(InstanceWithPathList)" }]
      uint16 InstanceType[], 
         [IN ( false ), OUT, Description ( 
             "On successful completion, a correlated, but "
             "unordered set of the enumerated instances and "
             "their addresses, with a number of entries from 0, "
             "up to a maximum defined by MaxObjectCount, that "
             "meet the criteria defined in the "
             "OpenConformantInstances operation that established "
             "this enumeration session. Note that returning no "
             "entries in the array does not imply that the "
             "enumeration session has been exhausted. Only the "
             "EndOfSequence output parameter indicates whether "
             "the enumeration session has been exhausted." ), 
          EmbeddedInstance ( "CIM_ManagedElement" ), 
          ArrayType ( "Indexed" ), 
          ModelCorrespondence { 
             "CIM_ProfileRegistration.PullConformantInstances(InstanceType)" }]
      string InstanceWithPathList[]);
};

// ==================================================================
//  CIM_PackageInConnector
// ==================================================================
   [Association, Abstract,  Version ( "2.6.0" ), Description (
       "Adapter cards and other 'packaging' are plugged into System "
       "Connectors for power and/or to transfer data. This "
       "relationship is defined by PackageInConnector. For example, it "
       "would be used to describe the insertion of a daughtercard onto "
       "another Card. Various subclasses of PackageInConnector are "
       "also defined. PackageInSlot and its subclass, CardInSlot, are "
       "two examples of subclasses.")]
class CIM_PackageInConnector : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The Connector into which the Package is inserted.")]
   CIM_PhysicalConnector REF Antecedent;

      [Override ( "Dependent" ), Max ( 1 ), Description (
          "The Package in the Connector.")]
   CIM_PhysicalPackage REF Dependent;
};

// ==================================================================
//  CIM_StorageConfigurationCapabilities
// ==================================================================
   [Abstract,  Version ( "2.23.0" ), Description (
       "A subclass of Capabilities that defines the Capabilities of a "
       "StorageConfigurationService. An instance of "
       "StorageConfigurationCapabilities is associated with a "
       "StorageConfigurationService using ElementCapabilities. The "
       "properties in this class specify the envelope of capabilites "
       "for storage configuration in the context of the Service or "
       "Pool with which the instance is associated. These properties "
       "correspond to the properties of the same base names in "
       "StorageSetting and StorageSettingWithHints when either is used "
       "as a goal parameter to the StorageConfigurationService methods "
       "(CreateOrModifyStoragePool, "
       "CreateOrModifyElementFromStoragePool, or "
       "CreateOrModifyElementFromElements).")]
class CIM_StorageConfigurationCapabilities : CIM_Capabilities {

      [Description ( 
          "Enumeration indicating what operations will be executed "
          "as asynchronous jobs. If an operation is included in "
          "both this and SupportedSynchronousActions then the "
          "underlying implementation is indicating that it may or "
          "may not create a job. \n"
          "\n"
          "The following values have been deprecated and replaced "
          "by values in StorageReplicationCapabilities. "
          "SupportedAsynchronousActions: \n"
          "Replica Creation(8) to Local Replica Creation(2) and "
          "Remote Replica Creation(3) \n"
          "Replica Modification(9) to Local Replica "
          "Modification(4), Remote Replica Modification(5) and \n"
          "Replica Attachment(10) to Local Replica Attachment(6) "
          "and Remote Replica Attachment(7)." ), 
       ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "14", "15", "16", ".." }, 
       Values { "Storage Pool Creation", "Storage Pool Deletion", 
          "Storage Pool Modification", "Storage Element Creation", 
          "Storage Element Return", "Storage Element Modification", 
          "Replica Creation", "Replica Modification", 
          "Replica Attachment", "SCSI Scan", 
          "Storage Element from Element Creation", 
          "Storage Element from Element Modification", 
          "Element Usage Modification", 
          "StoragePool Usage Modification", 
          "Storage Resource Affinity Assignment", "DMTF Reserved" }, 
       ModelCorrespondence { 
          "CIM_StorageConfigurationCapabilities.SupportedSynchronousActions" }]
   uint16 SupportedAsynchronousActions[];

      [Description ( 
          "Enumeration indicating what operations will be executed "
          "without the creation of a job. If an operation is "
          "included in both this and SupportedAsynchronousActions "
          "then the underlying instrumentation is indicating that "
          "it may or may not create a job. \n"
          "\n"
          "The following values have been deprecated and replaced "
          "by values in "
          "StorageReplicationCapabilities.SupportedSynchronousActions: \n"
          "Replica Creation(8) to Local Replica Creation(2) and "
          "Remote Replica Creation(3) \n"
          "Replica Modification(9) to Local Replica "
          "Modification(4), Remote Replica Modification(5) and \n"
          "Replica Attachment(10) to Local Replica Attachment(6) "
          "and Remote Replica Attachment(7)." ), 
       ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "14", "15", "16", ".." }, 
       Values { "Storage Pool Creation", "Storage Pool Deletion", 
          "Storage Pool Modification", "Storage Element Creation", 
          "Storage Element Return", "Storage Element Modification", 
          "Replica Creation", "Replica Modification", 
          "Replica Attachment", "SCSI Scan", 
          "Storage Element from Element Creation", 
          "Storage Element from Element Modification", 
          "Element Usage Modification", 
          "StoragePool Usage Modification", 
          "Storage Resource Affinity Assignment", "DMTF Reserved" }, 
       ModelCorrespondence { 
          "CIM_StorageConfigurationCapabilities.SupportedAsynchronousActions" }]
   uint16 SupportedSynchronousActions[];

      [Description ( 
          "Enumeration indicating the type of storage elements that "
          "are supported by the associated "
          "StorageConfigurationService." ), 
       ValueMap { "2", "3", "4", "..", "0x8000..0xFFFF" }, 
       Values { "StorageVolume", "StorageExtent", "LogicalDisk", 
          "DMTF Reserved", "Vendor Specific" }, 
       ModelCorrespondence { 
          "CIM_StorageConfigurationService.CreateOrModifyElementFromStoragePool.ElementType", 
          "CIM_StorageConfigurationService", 
          "CreateOrModifyElementFromElements.ElementType" }]
   uint16 SupportedStorageElementTypes[];

      [Description ( 
          "Enumeration indicating features supported by the "
          "StoragePool methods." ), 
       ValueMap { "2", "3", "4", "5", "6", "7", "..", 
          "0x8000..0xFFFF" }, 
       Values { "InExtents", "Single InPool", "Multiple InPools", 
          "Storage Pool QoS Change", 
          "Storage Pool Capacity Expansion", 
          "Storage Pool Capacity Reduction", "DMTF Reserved", 
          "Vendor Specific" }, 
       ModelCorrespondence { 
          "CIM_StorageConfigurationService.CreateOrModifyStoragePool.InPools", 
          "CIM_StorageConfigurationService", 
          "CreateOrModifyStoragePool.InExtents" }]
   uint16 SupportedStoragePoolFeatures[];

      [Description ( 
          "Enumeration indicating features supported by the Storage "
          "Element methods." ), 
       ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "..", "0x8000..0xFFFF" }, 
       Values { "StorageExtent Creation", "StorageVolume Creation", 
          "StorageExtent Modification", 
          "StorageVolume Modification", "Single InPool", 
          "Multiple InPools", "LogicalDisk Creation", 
          "LogicalDisk Modification", "InElements", 
          "Storage Element QoS Change", 
          "Storage Element Capacity Expansion", 
          "Storage Element Capacity Reduction", "DMTF Reserved", 
          "Vendor Specific" }, 
       ModelCorrespondence { 
          "CIM_StorageConfigurationService.CreateOrModifyElementFromStoragePool.ElementType", 
          "CIM_StorageConfigurationService.CreateOrModifyElementFromStoragePool.InPool", 
          "CIM_StorageConfigurationService", 
          "CreateOrModifyElementFromElements.InElements" }]
   uint16 SupportedStorageElementFeatures[];

      [Description ( 
          "SupportedCopyTypes describes the replication "
          "capabilities supported by the associated "
          "StorageConfigurationServices. Values are: \n"
          "Async: asynchronous copies may be created and "
          "maintained. \n"
          "Sync: synchronous copies may be created and maintained. \n"
          "UnSyncAssoc: unsynchronized copies may be created and "
          "maintained. \n"
          "UnSyncUnAssoc: a \'straight copy\' may be created." ), 
       ValueMap { "2", "3", "4", "5", "..", "0x8000..0xFFFF" }, 
       Values { "Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", 
          "DMTF Reserved", "Vendor Specific" }, 
       ModelCorrespondence { 
          "CIM_StorageConfigurationService.CreateReplica.CopyType" }]
   uint16 SupportedCopyTypes[];

      [Description ( 
          "InitialReplicationState specifies which initial "
          "ReplicationState is supported by a particular provider. "
          "Values are: \n"
          "Initialized: The replication relationship is known and "
          "unsynchronized, but time required to synchronize may be "
          "long. \n"
          "Prepared: The replication relationship is known and "
          "unsynchronized and the time required to synchronize will "
          "be short. \n"
          "Synchronized: The replicas are synchronized." ), 
       ValueMap { "2", "3", "4", "..", "0x8000..0xFFFF" }, 
       Values { "Initialized", "Prepared", "Synchronized", 
          "DMTF Reserved", "Vendor Specific" }, 
       ModelCorrespondence { 
          "CIM_StorageConfigurationService.AttachReplica", 
          "CIM_StorageConfigurationService.CreateReplica" }]
   uint16 InitialReplicationState;

      [Experimental, Description ( 
          "Indicates the intended usage or any restrictions that "
          "may have been imposed on the usage of Supported Storage "
          "Elements. For example, an element may be reserved for "
          "use by the block server. In that case the Usage of the "
          "element is marked as \"Reserved for the ComputerSystem\". "
          "In the case of \"Other\", see OtherUsageDescription for "
          "more information. For additional information on "
          "variousvalues, see the classes noted in "
          "ModelCorrespondence." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "14", "15", "16", "17", "..", 
          "32768..65535" }, 
       Values { "Other", "Unrestricted", 
          "Reserved for ComputerSystem (the block server)", 
          "Reserved by Replication Services", 
          "Reserved by Migration Services", "Local Replica Source", 
          "Remote Replica Source", "Local Replica Target", 
          "Remote Replica Target", "Local Replica Source or Target", 
          "Remote Replica Source or Target", "Delta Replica Target", 
          "Element Component", "Reserved as Pool Contributor", 
          "Composite Volume Member", "Composite LogicalDisk Member", 
          "Reserved for Sparing", "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_StorageExtent.Usage", 
          "CIM_StorageVolume.Usage", "CIM_LogicalDisk.Usage", 
          "CIM_StorageExtent.OtherUsageDescription", 
          "CIM_StorageVolume.OtherUsageDescription", 
          "CIM_LogicalDisk.OtherUsageDescription" }]
   uint16 SupportedStorageElementUsage[];

      [Experimental, Description ( 
          "Indicates the intended usage or any restrictions that "
          "may have been imposed on the usage of Client Settable "
          "Elements. For example, an element may be reserved for "
          "use by the block server. In that case the Usage of the "
          "element is marked as \"Reserved for the ComputerSystem\". "
          "In the case of \"Other\", see OtherUsageDescription for "
          "more information. For additional information on "
          "variousvalues, see the classes noted in "
          "ModelCorrespondence." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "14", "15", "16", "17", "..", 
          "32768..65535" }, 
       Values { "Other", "Unrestricted", 
          "Reserved for ComputerSystem (the block server)", 
          "Reserved by Replication Services", 
          "Reserved by Migration Services", "Local Replica Source", 
          "Remote Replica Source", "Local Replica Target", 
          "Remote Replica Target", "Local Replica Source or Target", 
          "Remote Replica Source or Target", "Delta Replica Target", 
          "Element Component", "Reserved as Pool Contributor", 
          "Composite Volume Member", "Composite LogicalDisk Member", 
          "Reserved for Sparing", "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_StorageExtent.Usage", 
          "CIM_StorageVolume.Usage", "CIM_LogicalDisk.Usage", 
          "CIM_StorageExtent.OtherUsageDescription", 
          "CIM_StorageVolume.OtherUsageDescription", 
          "CIM_LogicalDisk.OtherUsageDescription" }]
   uint16 ClientSettableElementUsage[];

      [Experimental, Description ( 
          "Indicates the intended usage or any restrictions that "
          "may have been imposed on the usage a supported storage "
          "pool. For example, a storage pool may be reserved for "
          "use by the block server. In that case the Usage of the "
          "storage pool is marked as \"Reserved for the "
          "ComputerSystem\". In the case of \"Other\", see "
          "OtherUsageDescription for more information." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "..", 
          "32768..65535" }, 
       Values { "Other", "Unrestricted", 
          "Reserved for ComputerSystem (the block server),", 
          "Reserved as a Delta Replica Container", 
          "Reserved for Migration Services", 
          "Reserved for Local Replication Services", 
          "Reserved for Remote Replication Services", 
          "Reserved for Sparing", "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_StoragePool.OtherUsageDescription" }]
   uint16 SupportedStoragePoolUsage[];

      [Experimental, Description ( 
          "Indicates the intended usage or any restrictions thatmay "
          "have been imposed on the usage a client settable storage "
          "pool. For example, a storage pool may be reserved for "
          "use by the block server.In that case the Usage of the "
          "storage pool is marked as \"Reserved for the "
          "ComputerSystem\". In the case of \"Other\", see "
          "OtherUsageDescription for more information." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "..", 
          "32768..65535" }, 
       Values { "Other", "Unrestricted", 
          "Reserved for ComputerSystem (the block server)", 
          "Reserved as a Delta Replica Container", 
          "Reserved for Migration Services", 
          "Reserved for Local Replication Services", 
          "Reserved for Remote Replication Services", 
          "Reserved for Sparing", "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_StoragePool.OtherUsageDescription" }]
   uint16 ClientSettablePoolUsage[];
};

// ==================================================================
//  CIM_Synchronized
// ==================================================================
   [Association, Abstract,  Version ( "2.8.0" ), Description (
       "Indicates that two ManagedElements were aligned or made to be "
       "equivalent at the specified point in time. If the boolean "
       "property SyncMaintained is TRUE, then synchronization of the "
       "Elements is preserved. Both like and unlike objects may be "
       "synchronized. For example, two WatchDog timers may be aligned, "
       "or the contents of a LogicalFile may be synchronized with the "
       "contents of a StorageExtent.")]
class CIM_Synchronized {

      [Key, Description (
          "SystemElement represents one ManagedElement that is "
          "synchronized with the entity referenced as SyncedElement.")]
   CIM_ManagedElement REF SystemElement;

      [Key, Description (
          "SyncedElement represents another ManagedElement that is "
          "synchronized with the entity referenced as SystemElement.")]
   CIM_ManagedElement REF SyncedElement;

      [Description (
          "The point in time that the Elements were synchronized.")]
   datetime WhenSynced;

      [Description (
          "Boolean indicating whether synchronization is maintained.")]
   boolean SyncMaintained;
};

// ==================================================================
//  CIM_StorageSynchronized
// ==================================================================
   [Association, Abstract,  Version ( "2.23.0" ), Description (
       "Indicates that two Storage objects were replicated at the "
       "specified point in time. If the CopyType property is set to "
       "'Sync' (=3), then synchronization of the Storage objects is "
       "preserved.")]
class CIM_StorageSynchronized : CIM_Synchronized {

      [Override ( "SystemElement" ), 
       Description ( 
          "SystemElement represents the Storage that is the source "
          "of the replication." )]
   CIM_ManagedElement REF SystemElement;

      [Override ( "SyncedElement" ), 
       Description ( 
          "SyncedElement represents the Storage that is the target "
          "of the replication." )]
   CIM_ManagedElement REF SyncedElement;

      [Description ( 
          "CopyType describes the Replication Policy. Values are: \n"
          "Async: create and maintain an asynchronous copy of the "
          "source. \n"
          "Sync: create and maintain a synchronized copy of the "
          "source. \n"
          "UnSyncAssoc: create an unsynchronized copy and maintain "
          "an association to the source. \n"
          "UnSyncUnAssoc: create an unsynchronized copy with a "
          "temporary association that is deleted upon completion of "
          "the copy operation." ), 
       ValueMap { "2", "3", "4", "5", "..", "0x8000.." }, 
       Values { "Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc", 
          "DMTF Reserved", "Vendor Specific" }]
   uint16 CopyType;

      [Description ( 
          "ReplicaType provides information on how the Replica is "
          "being maintained. Values are: \n"
          "Full Copy: This indicates that a full copy of the source "
          "object is (or will be) generated . \n"
          "Before Delta: This indicates that the source object will "
          "be maintained as a delta data from the replica. \n"
          "After Delta: This indicates that the replica will be "
          "maintained as delta data from the source object. \n"
          "Log: This indicates that the replica object is being "
          "maintained as a log of changes to the source. \n"
          "Not Specified: The method of maintaining the copy is not "
          "specified." ), 
       ValueMap { "0", "2", "3", "4", "5", "..", "0x8000.." }, 
       Values { "Not Specified", "Full Copy", "Before Delta", 
          "After Delta", "Log", "DMTF Reserved", "Vendor Specific" }]
   uint16 ReplicaType;

      [Description ( 
          "SyncState describes the state of the association with "
          "respect to Replication activity. Values are: \n"
          "Initialized: The link to enable replication is "
          "established. \n"
          "and source/replica elements are associated, but the Copy "
          "engine has not started. \n"
          "PrepareInProgress: Preparation for Replication is in "
          "progress and the Copy engine has started. \n"
          "Prepared: All necessary preparation has completed. \n"
          "ResyncInProgress: Synchronization or Resynchronization "
          "is in progress. \n"
          "This may be the initial \'copy\' or subsequent changes "
          "being copied. \n"
          "Synchronized: An Async or Sync replication is currently "
          "synchronized. When this value is set, SyncMaintained "
          "will be true. \n"
          "FractureInProgress: An operation to fracture an Async or "
          "Sync replication is in progress. \n"
          "Fractured: An Async or Sync replication is fractured. \n"
          "QuiesceInProgress: A quiesce operation is in progress. \n"
          "Quiesced: The replication has been quiesced and is ready "
          "for a change. \n"
          "RestoreInProgress: An operation is in progress to copy "
          "the Synced object to the System object. \n"
          "Idle: The \'normal\' state for an UnSyncAssoc replica. \n"
          "Frozen: All blocks copied from source to an UnSyncAssoc "
          "replica and the copy engine is stopped. \n"
          "CopyInProgress: A deferred background copy operation is "
          "in progress to copy the source to the replica target for "
          "an UnSyncAssoc association. \n"
          "Broken: The relationship is non-functional due to errors "
          "in the source, the target, the path between the two or "
          "space constraints." ), 
       ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "14", "15", "..", "0x8000.." }, 
       Values { "Initialized", "PrepareInProgress", "Prepared", 
          "ResyncInProgress", "Synchronized", 
          "Fracture In Progress", "QuiesceInProgress", "Quiesced", 
          "Restore In Progresss", "Idle", "Broken", "Fractured", 
          "Frozen", "Copy In Progress", "DMTF Reserved", 
          "Vendor Specific" }]
   uint16 SyncState;

      [Experimental, Write, Description ( 
          "CopyPriority allows the priority of background copy "
          "engine I/O to be managed relative to host I/O operations "
          "during a sequential background copy operation. \n"
          "Values are: Low: copy engine I/O lower priority than "
          "host I/O. Same: copy engine I/O has the same priority as "
          "host I/O. High: copy engine I/O has higher priority than "
          "host I/O." ), 
       ValueMap { "0", "1", "2", "3", "..", "0x8000.." }, 
       Values { "Not Managed", "Low", "Same", "High", 
          "DMTF Reserved", "Vendor Specific" }]
   uint16 CopyPriority;

      [Experimental, Description ( 
          "CopyMethodology specifies what copy methodology the "
          "service uses to create and/or maintain the target "
          "element. \n"
          "Values are: \n"
          "Not Specified: The method of maintaining the copy is not "
          "specified. \n"
          "Full Copy: This indicates that a full copy of the source "
          "object is (or will be) generated . \n"
          "Incremental-Copy: Only changed data from source element "
          "is copied to target element. \n"
          "Differential-Copy: Only the new writes to source element "
          "are copied to the target element. \n"
          "Copy-On-Write: Affected data is copied on the first "
          "write to the source or to the target elements. \n"
          "Copy-On-Access: Affected data is copied on the first "
          "access to the source element. \n"
          "Delta-Update: Difference based replication where after "
          "the initial copy, only updates to source are copied to "
          "target. \n"
          "Snap-And-Clone: The service creates a snapshot of the "
          "source element first, then uses the the snapshot as the "
          "source of the copy operation to the target element." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "..", "0x8000.." }, 
       Values { "Not Specified", "Other", "Implementation decides", 
          "Full Copy", "Incremental-Copy", "Differential-Copy", 
          "Copy-On-Write", "Copy-On-Access", "Delta-Update", 
          "Snap-And-Clone", "DMTF Reserved", "Vendor Specific" }]
   uint16 CopyMethodology;

      [Experimental, Description ( 
          "This property specifies whether the source, the target, "
          "or both elements involved in a copy operation are "
          "undiscovered. An element is considered undiscovered if "
          "its object model is not known to the service performing "
          "the copy operation. The values are: \n"
          "SystemElement: The source element. \n"
          "SyncedElement: The target element. \n"
          "Both: Both the source and the target elements. If both "
          "the source and the target elements are discovered, the "
          "value of this property shall be NULL." ), 
       ValueMap { "2", "3", "4", "..", "0x8000.." }, 
       Values { "SystemElement", "SyncedElement", "Both", 
          "DMTF Reserved", "Vendor Specific" }]
   uint16 UndiscoveredElement;
};

// ==================================================================
//  CIM_PhysicalComponent
// ==================================================================
   [Abstract,  Version ( "2.8.0" ), Description (
       "The PhysicalComponent class represents any low-level or basic "
       "Component within a Package. A Component object either can not "
       "or does not need to be decomposed into its constituent parts. "
       "For example, an ASIC (or Chip) can not be further decomposed. "
       "A tape for data storage (PhysicalMedia) does not need to be "
       "decomposed. Any PhysicalElement that is not a Link, Connector, "
       "or Package is a descendent (or member) of this class. For "
       "example, the UART chipset on an internal modem Card would be a "
       "subclass (if additional properties or associations are "
       "defined) or an instance of PhysicalComponent.")]
class CIM_PhysicalComponent : CIM_PhysicalElement {

      [Description (
          "The RemovalCapabilites property is used to describe the "
          "conditions under which a PhysicalPackage can be removed. "
          "Since all PhysicalPackages are not removable, this property "
          "defaults to 2, 'Not Applicable'."), 
       ValueMap { "0", "2", "3", "4" }, 
       Values { "Unknown", "Not Applicable", "Removable when off",
          "Removable when on or off" }]
   uint16 RemovalConditions = 2;

      [Deprecated { "CIM_PhysicalComponent.RemovalConditions" }, 
       Description (
          "The use of this property is being deprecated. Instead "
          "RemovalConditions should be used. The RemovalConditions "
          "property addresses whether a PhysicalComponent is removable "
          "with or without power being applied. \n"
          "\n"
          "A PhysicalComponent is Removable if it is designed to be "
          "taken in and out of the physical container in which it is "
          "normally found, without impairing the function of the "
          "overall packaging. A Component can still be Removable if "
          "power must be 'off' in order to perform the removal. If "
          "power can be 'on' and the Component removed, then the "
          "Element is both Removable and HotSwappable. For example, an "
          "upgradeable Processor chip is Removable.")]
   boolean Removable;

      [Deprecated { "No Value" }, Description (
          "The use of this property is being deprecated because it is "
          "redundant with the FRU class and its associations. A "
          "PhysicalComponent is Replaceable if it is possible to "
          "replace (FRU or upgrade) the Element with a physically "
          "different one. For example, some ComputerSystems allow the "
          "main Processor chip to be upgraded to one of a higher clock "
          "rating. In this case, the Processor is said to be "
          "Replaceable. All Removable Components are inherently "
          "Replaceable.")]
   boolean Replaceable;

      [Deprecated { "CIM_PhysicalComponent.RemovalConditions" }, 
       Description (
          "The use of this property is being deprecated. Instead "
          "RemovalConditions should be used. The RemovalConditions "
          "property addresses whether a PhysicalComponent is removable "
          "with or without power being applied. \n"
          "\n"
          "A PhysicalComponent is HotSwappable if it is possible to "
          "replace the Element with a physically different but "
          "equivalent one while the containing Package has power "
          "applied to it (ie, is 'on'). For example, a fan Component "
          "may be designed to be HotSwappable. All HotSwappable "
          "Components are inherently Removable and Replaceable.")]
   boolean HotSwappable;
};

// ==================================================================
//  CIM_Chip
// ==================================================================
   [Abstract,  Version ( "2.6.0" ), Description (
       "The Chip class represents any type of integrated circuit "
       "hardware, including ASICs, processors, memory chips, etc.")]
class CIM_Chip : CIM_PhysicalComponent {

      [Description (
          "The implementation form factor for the Chip. For example, "
          "values such as SIMM (7), TSOP (9) or PGA (10) can be "
          "specified."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
          "20", "21", "22", "23" }, 
       Values { "Unknown", "Other", "SIP", "DIP", "ZIP", "SOJ",
          "Proprietary", "SIMM", "DIMM", "TSOP", 
          // 10                
          "PGA", "RIMM", "SODIMM", "SRIMM", "SMD", "SSMP", "QFP",
          "TQFP", "SOIC", "LCC", 
          // 20                
          "PLCC", "BGA", "FPBGA", "LGA" }]
   uint16 FormFactor;
};

// ==================================================================
//  CIM_PackagedComponent
// ==================================================================
   [Association, Aggregation, Abstract,  Version ( "2.6.0" ),
       Description (
       "A Component is typically contained by a PhysicalPackage, such "
       "as a Chassis or Card. The PackagedComponent association makes "
       "this relationship explicit. In the first sentence, the word, "
       "'typically', is used. This is because a Component may be "
       "removed from, or not yet inserted into, its containing Package "
       "(ie, the Removable boolean is TRUE). Therefore, a Component "
       "may not always be associated with a container.")]
class CIM_PackagedComponent : CIM_Container {

      [Aggregate, Override ( "GroupComponent" ), Max ( 1 ), 
       Description (
          "The PhysicalPackage that contains Component(s).")]
   CIM_PhysicalPackage REF GroupComponent;

      [Override ( "PartComponent" ), Description (
          "The PhysicalComponent which is contained in the Package.")]
   CIM_PhysicalComponent REF PartComponent;
};

// ==================================================================
//  CIM_StorageConfigurationService
// ==================================================================
   [Abstract,  Version ( "2.13.0" ), Description (
       "This service allows the active management of a Storage Server. "
       "It allows jobs to be started for the creation, modification "
       "and deletion of storage objects (StoragePools, StorageVolumes "
       "and LogicalDisks).")]
class CIM_StorageConfigurationService : CIM_Service {

      [Description (
          "Starts a job to create (or modify) a StoragePool. The "
          "StoragePool will be (or must be) scoped to the same System "
          "as this Service. One of the parameters for this method is "
          "Size. As an input parameter, Size specifies the desired "
          "size of the pool. As an output parameter, it specifies the "
          "size achieved. Space is taken from either or both of the "
          "specified input StoragePools and StorageExtents (InPools "
          "and InExtents). The capability requirements that the Pool "
          "must support are defined using the Goal parameter. If the "
          "requested pool size cannot be created, no action will be "
          "taken, the Return Value will be 4097/0x1001, and the output "
          "value of Size will be set to the nearest possible size. If "
          "0 is returned, then the task completed successfully and the "
          "use of ConcreteJob was not required. If the task will take "
          "some time to complete, a ConcreteJob will be created and "
          "its reference returned in the output parameter Job."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Size Not Supported", "Method Reserved", "Vendor Specific" }]
   uint32 CreateOrModifyStoragePool ( 
         [IN, Description (
             "A end user relevant name for the pool being created. If "
             "NULL, then a system supplied default name can be used. "
             "The value will be stored in the 'ElementName' property "
             "for the created pool. If not NULL, this parameter will "
             "supply a new name when modifying an existing pool.")]
      string ElementName, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "Reference to an instance of StorageSetting that defines "
             "the desired capabilities of the StoragePool. If set to a "
             "null value, the default configuration from the source "
             "pool will be used. If not NULL, this parameter will "
             "supply a new Goal setting when modifying an existing "
             "pool.")]
      CIM_StorageSetting REF Goal, 
         [IN, OUT, Description (
             "As an input parameter this specifies the desired pool "
             "size in bytes. As an output parameter this specifies the "
             "size achieved."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 Size, 
         [IN, Description (
             "Array of strings containing representations of "
             "references to CIM_StoragePool instances, that are used "
             "to create the Pool or modify the source pools.")]
      string InPools[], 
         [IN, Description (
             "Array of strings containing representations of "
             "references to CIM_StorageExtent instances, that are used "
             "to create the Pool or modify the source extents.")]
      string InExtents[], 
         [IN, OUT, Description (
             "As an input parameter: if null, creates a new "
             "StoragePool. If not null, modifies the referenced Pool. "
             "When returned, it is a reference to the resulting "
             "StoragePool.")]
      CIM_StoragePool REF Pool); 

      [Description (
          "Start a job to create (or modify) a specified element (for "
          "example a StorageVolume or StorageExtent) from a "
          "StoragePool. One of the parameters for this method is Size. "
          "As an input parameter, Size specifies the desired size of "
          "the element. As an output parameter, it specifies the size "
          "achieved. Space is taken from the input StoragePool. The "
          "desired settings for the element are specified by the Goal "
          "parameter. If the requested size cannot be created, no "
          "action will be taken, and the Return Value will be "
          "4097/0x1001. Also, the output value of Size is set to the "
          "nearest possible size. If 0 is returned, the function "
          "completed successfully and no ConcreteJob instance was "
          "required. If 4096/0x1000 is returned, a ConcreteJob will be "
          "started to create the element. The Job's reference will be "
          "returned in the output parameter Job."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Size Not Supported", "Method Reserved", "Vendor Specific" }]
   uint32 CreateOrModifyElementFromStoragePool( 
         [IN, Description (
             "A end user relevant name for the element being created. "
             "If NULL, then a system supplied default name can be "
             "used. The value will be stored in the 'ElementName' "
             "property for the created element. If not NULL, this "
             "parameter will supply a new name when modifying an "
             "existing element.")]
      string ElementName, 
         [IN, Description (
             "Enumeration indicating the type of element being created "
             "or modified. If the input parameter TheElement is "
             "specified when the operation is a 'modify', this type "
             "value must match the type of that instance."), 
          ValueMap { "0", "1", "2", "3", "4", "..", "32768..65535" }, 
          Values { "Unknown", "Reserved", "StorageVolume",
             "StorageExtent", "LogicalDisk", "DMTF Reserved",
             "Vendor Specific" }]
      uint16 ElementType, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "The requirements for the element to maintain. If set to "
             "a null value, the default configuration from the source "
             "pool will be used. This parameter should be a reference "
             "to a Setting or Profile appropriate to the element being "
             "created. If not NULL, this parameter will supply a new "
             "Goal when modifying an existing element.")]
      CIM_ManagedElement REF Goal, 
         [IN, OUT, Description (
             "As an input parameter Size specifies the desired size. "
             "If not NULL, this parameter will supply a new size when "
             "modifying an existing element. As an output parameter "
             "Size specifies the size achieved."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 Size, 
         [IN, Description (
             "The Pool from which to create the element. This "
             "parameter must be set to null if the input parameter "
             "TheElement is specified (in the case of a 'modify' "
             "operation).")]
      CIM_StoragePool REF InPool, 
         [IN, OUT, Description (
             "As an input parameter: if null, creates a new element. "
             "If not null, then the method modifies the specified "
             "element. As an output parameter, it is a reference to "
             "the resulting element.")]
      CIM_LogicalElement REF TheElement); 

      [Description (
          "Start a job to delete a StoragePool. The freed space is "
          "returned source StoragePools (indicated by AllocatedFrom "
          "StoragePool) or back to underlying storage extents. If 0 is "
          "returned, the function completed successfully, and no "
          "ConcreteJob was required. If 4096/0x1000 is returned, a "
          "ConcreteJob will be started to delete the StoragePool. A "
          "reference to the Job is returned in the Job parameter."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 DeleteStoragePool ( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "Reference to the pool to delete.")]
      CIM_StoragePool REF Pool); 

      [Description (
          "Start a job to delete an element previously created from a "
          "StoragePool. The freed space is returned to the source "
          "StoragePool. If 0 is returned, the function completed "
          "successfully and no ConcreteJob was required. If "
          "4096/0x1000 is returned, a ConcreteJob will be started to "
          "delete the element. A reference to the Job is returned in "
          "the Job parameter."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 ReturnToStoragePool( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "Reference to the element to return to the StoragePool.")]
      CIM_LogicalElement REF TheElement); 

      [Description (
          "Start a job to create a new storage object which is a "
          "replica of the specified source storage object. "
          "(SourceElement). Note that using the input paramter, "
          "CopyType, this function can be used to instantiate the "
          "replica, and to create an ongoing association between the "
          "source and replica. If 0 is returned, the function "
          "completed successfully and no ConcreteJob instance is "
          "created. If 4096/0x1000 is returned, a ConcreteJob is "
          "started, a reference to which is returned in the Job output "
          "parameter."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 CreateReplica( 
         [IN, Description (
             "A end user relevant name for the element being created. "
             "If NULL, then a system supplied default name can be "
             "used. The value will be stored in the 'ElementName' "
             "property for the created element.")]
      string ElementName, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [Required, IN, Description (
             "The source storage object which may be a StorageVolume "
             "or storage object.")]
      CIM_LogicalElement REF SourceElement, 
         [IN ( false ), OUT, Description (
             "Reference to the created target storage element (i.e., "
             "the replica).")]
      CIM_LogicalElement REF TargetElement, 
         [IN, Description (
             "The definition for the StorageSetting to be maintained "
             "by the target storage object (the replica).")]
      CIM_StorageSetting REF TargetSettingGoal, 
         [IN, Description (
             "The underlying storage for the target element (the "
             "replica) will be drawn from TargetPool if specified, "
             "otherwise the allocation is implementation specific.")]
      CIM_StoragePool REF TargetPool, 
         [IN, Description (
             "CopyType describes the type of copy that will be made. "
             "Values are: \n"
             "Async: Create and maintain an asynchronous copy of the "
             "source. \n"
             "Sync: Create and maintain a synchronized copy of the "
             "source. \n"
             "UnSyncAssoc: Create an unsynchronized copy and maintain "
             "an association to the source. \n"
             "UnSyncUnAssoc: Create unassociated copy of the source "
             "element."), 
          ValueMap { "2", "3", "4", "5", "..", "32768..65535" }, 
          Values { "Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 CopyType); 

      [Description (
          "Modify (or start a job to modify) the synchronization "
          "association between two storage objects. If 0 is returned, "
          "the function completed successfully and no ConcreteJob "
          "instance was created. If 0x1000 is returned, a ConcreteJob "
          "was started and a reference to this Job is returned in the "
          "Job output parameter. A return value of 1 indicates the "
          "method is not supported. All other values indicate some "
          "type of error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 ModifySynchronization( 
         [IN, Description (
             "Operation describes the type of modification to be made "
             "to the replica. Values are: \n"
             "Detach: 'Forget' the synchronization between two storage "
             "objects. Start to treat the objects as independent. \n"
             "Fracture: Suspend the synchronization between two "
             "storage objects using Sync or Async replication. \n"
             "The association and (typically) changes are remembered "
             "to allow a fast resynchronization. This may be used "
             "during a backup cycle to allow one of the objects to be "
             "copied while the other remains in production. \n"
             "Resync Replica: Re-establish the synchronization of a "
             "Sync or Async replication. This will negate the action "
             "of a previous Fracture operation. Recreate a Point In "
             "Time image for an UnSyncAssoc replication. \n"
             "Restore from Replica: Renew the contents of the original "
             "storage object from a replica. \n"
             "Prepare: Get the link ready for a Resync operation to "
             "take place. Some implementations will require this "
             "operation to be invoked to keep the Resync operation as "
             "fast as possible. May start the copy engine. \n"
             "Unprepare: Clear a prepared state if a Prepare is not to "
             "be followed by a Resync operation. \n"
             "Quiesce: Some applications require notification so that "
             "they can ready the link for an operation. For example "
             "flush any cached data or buffered changes. The copy "
             "engine is stopped for UnSyncAssoc replications. \n"
             "Unquiesce: Take the link from the quiesced state "
             "(without executing the intended operation. \n"
             "Start Copy: initiate a full background copy of the "
             "source to the UnSyncAssoc replica. Replica enters Frozen "
             "state when copy operation is completed. \n"
             "Stop Copy: stop the background copy previously started. "
             "Reset To Sync: Change the CopyType of the association to "
             "Sync (e.g., from the Async CopyType). \n"
             "Reset To Async: Change the CopyType of the association "
             "to Async (e.g., from the Sync CopyType)."), 
          ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
             "10", "11", "12", "13", "..", "0x8000..0xFFFF" }, 
          Values { "DMTF Reserved", "DMTF Reserved", "Detach",
             "Fracture", "Resync Replica", "Restore from Replica",
             "Prepare", "Unprepare", "Quiesce", "Unquiesce",
             "Reset To Sync", "Reset To Async", "Start Copy",
             "Stop Copy", "DMTF Reserved", "Vendor Specific" }]
      uint16 Operation, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if the task "
             "completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "The referenced to the StorageSynchronized association "
             "describing the storage source/replica relationship.")]
      CIM_StorageSynchronized REF Synchronization); 

      [Description (
          "Create (or start a job to create) a StorageSynchronized "
          "relationship between two existing storage objects. Note "
          "that using the input parameter, CopyType, this function can "
          "be used to to create an ongoing association between the "
          "source and replica. If 0 is returned, the function "
          "completed successfully and no ConcreteJob instance is "
          "created. If 0x1000 is returned, a ConcreteJob is started, a "
          "reference to which is returned in the Job output parameter. "
          "A return value of 1 indicates the method is not supported. "
          "All other values indicate some type of error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 AttachReplica( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if the task "
             "completed).")]
      CIM_ConcreteJob REF Job, 
         [Required, IN, Description (
             "The source storage object which may be a StorageVolume "
             "or other storage object.")]
      CIM_ManagedElement REF SourceElement, 
         [IN, Description (
             "Reference to the target storage element (i.e., the "
             "replica).")]
      CIM_ManagedElement REF TargetElement, 
         [IN, Description (
             "CopyType describes the type of Synchronized relationship "
             "that will be created. Values are: \n"
             "Async: Create and maintain an asynchronous copy of the "
             "source. \n"
             "Sync: Create and maintain a synchronized copy of the "
             "source. \n"
             "UnSyncAssoc: Create an unsynchronized copy and maintain "
             "an association to the source. \n"
             "UnSyncUnAssoc: Create unassociated copy of the source "
             "element."), 
          ValueMap { "2", "3", "4", "5", "..", "0x8000..0xFFFF" }, 
          Values { "Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 CopyType); 

      [Experimental, Description (
          "Create (or start a job to create) a StorageSynchronized "
          "mirror relationship between two storage elements. The "
          "target element may be a local or a remote storage element. "
          "A remote mirror pair may be scoped by a peer-to-peer "
          "connection modeled as a NetworkPipe between peers. \n"
          "\n"
          "If Job Completed with No Error (0) is returned, the "
          "function completed successfully and a ConcreteJob instance "
          "is not created. \n"
          "\n"
          "If Method Parameters Checked - Job Started (0x1000) is "
          "returned, a ConcreteJob is started, a reference to which is "
          "returned in the Job output parameter. \n"
          "\n"
          "A return value of Not Supported (1) indicates the method is "
          "not supported. \n"
          "\n"
          "All other values indicate some type of error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]

   uint32 AttachOrModifyReplica(
      
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if the task "
             "completed).")]
      CIM_ConcreteJob REF Job,
      
         [Required, IN, Description (
             "The source storage element which may be a StorageVolume, "
             "StorageExtent, LogicalFile, FileSystem, CommonDatabase, "
             "or any other storage object. For this reason, the type "
             "is made very generic.")]
      CIM_ManagedElement REF SourceElement,
      
         [Required, IN, Description (
             "Reference to the target storage element (i.e., the "
             "replica). The target storage element which may be a "
             "StorageVolume, StorageExtent, LogicalFile, FileSystem, "
             "CommonDatabase, or any other storage object. For this "
             "reason, the type is made very generic.")]
      CIM_ManagedElement REF TargetElement,
      
         [Required, IN, Description (
             "CopyType describes the type of Synchronized relationship "
             "that will be created. Values are: Async: Create and "
             "maintain an asynchronous copy of the source. Sync: "
             "Create and maintain a synchronized copy of the source. "
             "UnSyncAssoc: Create an unsynchronized copy and maintain "
             "an association to the source element. \n"
             "UnSyncUnAssoc: Create an unassociated copy of the source "
             "element. \n"
             "UnSyncAssoc and UnSyncUnAssoc are not supported for "
             "remote mirror replicas."), 
          ValueMap { "2", "3", "4", "5", "6..4095", "0x1000..0xFFFF" }, 
          Values { "Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 CopyType,
      
         [IN, Description (
             "The StorageSetting properties to be created or modified "
             "for the target element."), 
          EmbeddedInstance ( "CIM_SettingData" )]
      string Goal,
      
         [IN, Description (
             "The NetworkPipe element that scopes the remote mirror "
             "pair. If the value is null, remote mirrors do not "
             "require a pre-established connection.")]
      CIM_NetworkPipe REF ReplicationPipe); 

      [Experimental, Description (
          "This method establishes a peer-to-peer connection "
          "identified by a NetworkPipe element and two "
          "ProtocolEndpoint elements created by the method provider. "
          "The NetworkPipe is associated to a special peer-to-peer "
          "Network element. The provider will verify that two systems "
          "are capable of a peer relationship. If endpoints are "
          "assigned to the pipe, the same number of source and target "
          "endpoints must be supplied by the client to form a set of "
          "endpoint pairs. If ReplicationPipe is not supplied as an "
          "input parameter, a new pipe is created. If a pipe is "
          "supplied, a new set of endpoints is assigned to the "
          "existing pipe. \n"
          "\n"
          "If Success (0) is returned, the function completed "
          "successfully. \n"
          "\n"
          "A return value of Not Supported (1) indicates the method is "
          "not supported. \n"
          "\n"
          "A return value of Busy (0x1000) indicates the method is not "
          "supported. \n"
          "\n"
          "All other values indicate some type of error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
          "Busy", "Method Reserved", "Vendor Specific" }]
   uint32 CreateOrModifyReplicationPipe (
      
         [IN, Description (
             "A user-friendly name for the element created.")]
      string PipeElementName,
      
         [Required, IN, Description (
             "One of the two peer systems participating in the "
             "established peer-to-peer connection. If the provider "
             "supports uni-directional connections, this must identify "
             "the system hosting replica source elements.")]
      CIM_ComputerSystem REF SourceSystem,
      
         [Required, IN, Description (
             "One of the two peer systems participating in the "
             "established peer-to-peer connection. If the provider "
             "supports uni-directional connections, this must identify "
             "the system hosting replica target elements.")]
      CIM_ComputerSystem REF TargetSystem,
      
         [IN, Description (
             "References to source system endpoints/ports assigned to "
             "the pipe. If a new pipe is created, this is the initial "
             "set of endpoints assigned. If an existing pipe is "
             "modified, this set replaces the previous set. The list "
             "must be null if a provider does not allow the client to "
             "manage port assignment.")]
      CIM_ProtocolEndpoint REF SourceEndpoint[],
      
         [IN, Description (
             "References to target system endpoints/ports assigned to "
             "the pipe. If a new pipe is created, this is the initial "
             "set of endpoints assigned. If an existing pipe is "
             "modified, this set replaces the previous set. The list "
             "must be null if a provider does not allow the client to "
             "manage port assignment.")]
      CIM_ProtocolEndpoint REF TargetEndpoint[],
      
         [IN, Description (
             "The setting properties to be maintained for the "
             "peer-to-peer connection."), 
          EmbeddedInstance ( "CIM_SettingData" )]
      string Goal,
      
         [IN, OUT, Description (
             "Reference to the created or modified NetworkPipe.")]
      CIM_NetworkPipe REF ReplicationPipe); 

      [Experimental, Description (
          "Create (or start a job to create) a replication buffer that "
          "buffers asynchronous write operations for remote mirror "
          "pairs. The buffer is an instance of CIM_Memory with an "
          "AssociatedMemory association to a hosting system or to a "
          "replication network pipe. The buffer element may be created "
          "based on a StorageExtent, in a pool or in a manner opaque "
          "to a client. If 0 is returned, the function completed "
          "successfully and no ConcreteJob instance is created. If "
          "0x1000 is returned, a ConcreteJob is started, a reference "
          "to which is returned in the Job output parameter. A return "
          "value of 1 indicates the method is not supported. All other "
          "values indicate some type of error condition. \n"
          "\n"
          "If Job Completed with No Error (0) is returned, the "
          "function completed successfully and a ConcreteJob instance "
          "is not created. \n"
          "\n"
          "If Method Parameters Checked - Job Started (0x1000) is "
          "returned, a ConcreteJob is started, a reference to which is "
          "returned in the Job output parameter. \n"
          "\n"
          "A return value of Not Supported (1) indicates the method is "
          "not supported. \n"
          "\n"
          "All other values indicate some type of error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 CreateReplicationBuffer(
      
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if the task "
             "completed).")]
      CIM_ConcreteJob REF Job,
      
         [Required, IN, Description (
             "The hosting system or replication pipe that will be "
             "antecedent to the created buffer.")]
      CIM_ManagedElement REF Host,
      
         [IN, Description (
             "Reference to a component extent for the buffer element.")]
      CIM_StorageExtent REF TargetElement,
      
         [IN, Description (
             "Reference to a container pool for the buffer element.")]
      CIM_StoragePool REF TargetPool,
      
         [OUT, Description (
             "Reference to the created replica buffer element.")]
      CIM_Memory REF ReplicaBuffer); 

      [Description (
          "Start a job to create (or modify) a specified storage "
          "element from specified input StorageExtents. The created or "
          "modified storage element can be a StorageExtent, "
          "StorageVolume, LogicalDisk, or StoragePool. An input list "
          "of InElements must be specified. The GetAvailableExtents "
          "method can be used to get a list of valid extents that can "
          "be used to achieve a desired goal. Validity of the extents "
          "is determined by the implementation. As an input parameter, "
          "Size specifies the desired size of the element. As an "
          "output parameter, it specifies the size achieved. Space is "
          "taken from the input InElements. The desired Settings for "
          "the element are specified by the Goal parameter. If the "
          "size of Extents passed is less than the size requested, "
          "then the capacity is drawn from the extents in the order, "
          "left to right, that the Extents were specified. The partial "
          "consumption of an Extent is represented by an Extent for "
          "the capacity used and an Extent for the capacity not used. "
          "If the Size is NULL, then a configuration using all Extents "
          "passed will be attempted. If the requested size cannot be "
          "created, no action will be taken, and the Return Value will "
          "be 4097/0x1001. Also, the output value of Size is set to "
          "the nearest possible size. If 0 is returned, the function "
          "completed successfully and no ConcreteJob instance was "
          "required. If 4096/0x1000 is returned, a ConcreteJob will be "
          "started to create the element. The Job's reference will be "
          "returned in the output parameter Job."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", "Unknown",
          "Timeout", "Failed", "Invalid Parameter", "In Use",
          "DMTF Reserved", "Method Parameters Checked - Job Started",
          "Size Not Supported", "Method Reserved", "Vendor Specific" }]
   uint32 CreateOrModifyElementFromElements( 
         [IN, Description (
             "A end user relevant name for the element being created. "
             "If NULL, then a system-supplied default name can be "
             "used. The value will be stored in the 'ElementName' "
             "property for the created element. If not NULL, this "
             "parameter will supply a new name when modifying an "
             "existing element.")]
      string ElementName, 
         [Required, IN, Description (
             "Enumeration indicating the type of element being created "
             "or modified. If the input parameter TheElement is "
             "specified when the operation is a 'modify', this type "
             "value must match the type of that instance. The actual "
             "CIM class of the created TheElement can be "
             "vendor-specific, but it must be a derived class of the "
             "appropriate CIM class -- i.e., CIM_StorageVolume, "
             "CIM_StorageExtent, CIM_LogicalDisk, or CIM_StoragePool."), 
          ValueMap { "0", "1", "2", "3", "4", "5", "..",
          "32768..65535" }, 
          Values { "Unknown", "Reserved", "Storage Volume",
             "Storage Extent", "Storage Pool", "Logical Disk",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 ElementType, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "The requirements for the element to maintain. If set to "
             "a null value, the default configuration associated with "
             "the Service will be used. This parameter should be a "
             "reference to a Setting, SettingData, or Profile "
             "appropriate to the element being created. If not NULL, "
             "this parameter will supply a new Goal when modifying an "
             "existing element.")]
      CIM_ManagedElement REF Goal, 
         [IN, OUT, Description (
             "As an input parameter Size specifies the desired size. "
             "If not NULL, this parameter will supply a new size when "
             "modifying an existing element. As an output parameter "
             "Size specifies the size achieved."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 Size, 
         [Required, IN, Description (
             "Array of references to storage element instances that "
             "are used to create or modify TheElement.")]
      CIM_StorageExtent REF InElements[], 
         [IN, OUT, Description (
             "As an input parameter: if null, creates a new element. "
             "If not null, then the method modifies the specified "
             "element. As an output parameter, it is a reference to "
             "the resulting element.")]
      CIM_LogicalElement REF TheElement); 

      [Experimental, Description (
          "This method requests that the system rescan SCSI devices "
          "for changes in their configuration. If called on a "
          "general-purpose host, the changes are reflected in the list "
          "of devices available to applications (for example, the UNIX "
          "'device tree'. This method may also be used on a storage "
          "appliance to force rescanning of attached SCSI devices. \n"
          "\n"
          "This operation can be disruptive; optional parameters allow "
          "the caller to limit the scan to a single or set of SCSI "
          "device elements. All parameters are optional; if parameters "
          "other Job are passed in as null, a full scan is invoked."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6..4095", "4096",
          "4097", "4098", "4099", "4100", "..", "32768..65535" }, 
       Values { "Success", "Not Supported", "Unknown", "Timeout",
          "Failed", "Invalid Parameter", "DMTF Reserved",
          "Invalid connection type", "Invalid Initiator",
          "No matching target found", "No matching LUs found",
          "Prohibited by name binding configuration", "DMTF Reserved",
          "Vendor Specific" }]
   uint32 ScsiScan ( 
         [IN, OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
      
         [IN, OUT, Description (
             "The type of connection, constrains the scan to initiator "
             "ports of this type. Only used if the Initiators "
             "parameter is null."), 
          ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9" }, 
          Values { "Other", "Fibre Channel", "Parallel SCSI", "SSA",
             "IEEE 1394", "RDMA", "iSCSI", "SAS", "ADT" }, 
          ModelCorrespondence { 
             "CIM_SCSIProtocolEndpoint.ConnectionType" }]
      uint16 ConnectionType,
      
         [IN, OUT, Description (
             "The connection type, if the ConnectionType parameter is "
             "\"Other\".")]
      string OtherConnectionType,
      
         [IN, OUT, Description (
             "A list of references to initiators. Scanning will be "
             "limited to SCSI targets attached to these initiators. If "
             "this parameter is null and connection is specified, all "
             "initiators of that connection type are scanned. If this "
             "parameter and ConnectionType are null, all targets on "
             "all system initiators are probed.")]
      CIM_SCSIProtocolEndpoint REF Initiators[],
      
         [IN, OUT, Description (
             "A list of names or numbers for targets. These should be "
             "formatted to match the appropriate connection type, For "
             "example, PortWWNs would be specified for Fibre Channel "
             "targets.")]
      string Targets[],
      
         [IN, OUT, Description (
             "A list of SCSI logical unit numbers representing logical "
             "units hosted on the targets specified in the Targets "
             "argument.")]
      string LogicalUnits[]); 

      [Experimental, Description (
          "Allows a client to request the Usage to be set if the "
          "client has access to the element supplied and the request "
          "is valid."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", "Unknown",
          "Timeout", "Failed", "Invalid Parameter", "Not Authorized",
          "DMTF Reserved", "Method Parameters Checked - Job Started",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestUsageChange(
      
         [IN, Description (
             "The action to perform."), 
          ValueMap { "2", "3", "..", "32768..65535" }, 
          Values { "Set", "Modify \"Other\" description only",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 Operation,
      
         [IN, Description (
             "Applicable requested usage/restriction -- see the "
             "appropriate Usage ValueMap."), 
          ModelCorrespondence { "CIM_StoragePool.Usage",
             "CIM_StorageExtent.Usage" }]
      uint16 UsageValue,
      
         [IN, Description (
             "New description text. Applicable when the usage value "
             "includes \"Other\"."), 
          ModelCorrespondence { 
             "CIM_StorageConfigurationService.RequestUsageChange.UsageValue" 
             }]
      string OtherUsageDescription,
      
         [OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
      
         [IN, Description (
             "The storage element to modify.")]
      CIM_LogicalElement REF TheElement ); 


      [Experimental, Description (
          "Allows retrieving elements that meet the specified Usage. "
          "The criteria can be \"available only\", \"in use only\", or "
          "both."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..",
          "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", "Unknown",
          "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
          "Vendor Specific" }]
   uint32 GetElementsBasedOnUsage (
      
         [IN, Description (
             "Enumeration indicating the type of elements to get."), 
          ValueMap { "0", "2", "3", "4", "5", "..", "32768..65535" }, 
          Values { "Unknown", "StorageVolume", "StorageExtent",
             "StoragePool", "Logical Disk", "DMTF Reserved",
             "Vendor Specific" }]
      uint16 ElementType,
      
         [IN, Description (
             "The specific Usage to be retrieved."), 
          ModelCorrespondence { "CIM_StoragePool.Usage",
             "CIM_StorageExtent.Usage" }]
      uint16 Usage,
      
         [IN, Description (
             "Specifies whether to retrieve all elements, available "
             "elements only, or the elements that are in use."), 
          ValueMap { "0", "2", "3", "4", "..", "32768..65535" }, 
          Values { "Unknown", "All", "Available Only", "In Use Only",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 Criteria,
      
         [IN, Description (
             "Limit the search for the elements that satisfy the "
             "criteria to this StoragePool only. If null, all "
             "appropriate StoragePools will be considered.")]
      CIM_StoragePool REF ThePool,
      
         [OUT, Description (
             "Array of references to storage element instances "
             "retrieved.")]
      CIM_ManagedSystemElement REF TheElements[] ); 
};

// ===================================================================
// CIM_SettingAssociatedToCapabilities
// ===================================================================
   [Association, Abstract,  Version ( "2.11.0" ), Description (
       "This association defines settings that can be used to create "
       "or modify elements. Unlike ElementSettingData, these settings "
       "are not used to express the characteristics of existing "
       "managed elements. \n"
       "Typically, the capabilities associated with this class define "
       "the characteristics of a service in creating or modifying "
       "elements that are dependent on the service directly or "
       "indirectly. A CIM Client may use this association to find "
       "SettingData instances that can be used to create or modify "
       "these dependent elements.")]
class CIM_SettingAssociatedToCapabilities : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The Capabilities.")]
   CIM_Capabilities REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The Setting.")]
   CIM_SettingData REF Dependent;

      [Required, Description (
          "If an element whose characteristics are described by the "
          "associated Capabilities instance has a dependent element "
          "created or modified without specifying an associated "
          "SettingData instance, then the default SettingData will be "
          "used in that operation.")]
   boolean DefaultSetting = FALSE;

};


// ==================================================================
//  CIM_StorageSettingsAssociatedToCapabilities
// ==================================================================
   [Association, Abstract,  Version ( "2.11.0" ), Description (
       "This association define StorageSettings that reflect the "
       "capabilities of the associated StorageCapabilities. The "
       "associated StorageSetting may not define the operational "
       "characteristics (through settings properties) of any storage "
       "element. Certain StorageSetting instances can be defined as "
       "\"Fixed = Not Changeable\" by using the \"ChangeableType\" "
       "attribute. \"Fixed\" settings have this special association. "
       "This association should be defined between \"Fixed - Not "
       "Changeable\" instances of StorageSetting with the "
       "StorageCapabilities instances that are associated with the "
       "StoragePools which support the storage characteristics "
       "described by the StorageSetting instance. \n"
       "Fixed settings may be associated to many StorageCapabilities.")]
class CIM_StorageSettingsAssociatedToCapabilities : CIM_SettingAssociatedToCapabilities {

      [Override ( "Antecedent" ), Description (
          "The StorageCapabilities.")]
   CIM_StorageCapabilities REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The fixed and predefined StorageSetting.")]
   CIM_StorageSetting REF Dependent;

};

// ==================================================================
//  CIM_StorageSettingsGeneratedFromCapabilities
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "This association define StorageSettings that reflect the "
       "capabilities of the associated StorageCapabilities. The "
       "associated StorageSetting may not define the operational "
       "characteristics (through settings properties) of any storage "
       "element. StorageSettingsGeneratedFromCapabilities is the "
       "association between instances of StorageCapabilities and those "
       "instances of StorageSetting that have been created from the "
       "StorageCapabilities instance using the StorageCapabilities "
       "\"CreateSetting\" method. These settings have a "
       "StorageSetting.ChangeableType of \"Changeable - Transient\" or "
       "\"Changeable - Persistent\" The settings associated by this "
       "class reflect the capabilities from which they are generated. "
       "These setting SHALL be associated with one "
       "StorageCapabilities. \n"
       "A generated setting can be deleted by the implementation at "
       "any time if it is a a StorageSetting of \"Changed - "
       "Transient\" ChangeableType. \n"
       "A client should not use this association to find transient "
       "Settings to subsequently modify and/or use because that would "
       "increase the likelihood of setting contention across clients. "
       "Instead the implementation uses this association to define "
       "transient settings, which can be located through any means, "
       "that have special temporal based life cycle. \n"
       "DefaultSetting is meaningless in this class.")]
class CIM_StorageSettingsGeneratedFromCapabilities : CIM_SettingAssociatedToCapabilities {

      [Override ( "Antecedent" ), Max ( 1 ), Description (
          "The StorageCapabilities.")]
   CIM_StorageCapabilities REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The temporary and client generated StorageSetting.")]
   CIM_StorageSetting REF Dependent;
};

// ==================================================================
//  CIM_SuppliesPower
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "The SuppliesPower relationship indicates that a Device is in "
       "the power domain of the referenced PowerSupply or UPS. It "
       "indicates which Devices are dependent on the PowerSupply, and "
       "therefore, which Devices are affected if the Supply is lost.")]
class CIM_SuppliesPower : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The Supply that is providing power.")]
   CIM_PowerSupply REF Antecedent;

      [Override ( "Dependent" ), Description (
          "A LogicalDevice in the power domain of the Supply.")]
   CIM_LogicalDevice REF Dependent;
};

// ==================================================================
//  CIM_SystemDevice
// ==================================================================
   [Association, Abstract, Aggregation, Composition,  Version ( "2.10.0" ), 
    Description (
       "LogicalDevices can be aggregated by a System. This "
       "relationship is made explicit by the SystemDevice association.")]
class CIM_SystemDevice : CIM_SystemComponent {

      [Aggregate, Override ( "GroupComponent" ), Min ( 1 ), Max ( 1 ), 
       Description (
          "The parent system in the Association.")]
   CIM_System REF GroupComponent;

      [Override ( "PartComponent" ), Weak, Description (
          "The LogicalDevice that is a component of a System.")]
   CIM_LogicalDevice REF PartComponent;
};

// ==================================================================
//  CIM_SystemPackaging
// ==================================================================
   [Association, Abstract,  Version ( "2.10.0" ), Description (
       "Similar to the way that LogicalDevices are 'Realized' by "
       "PhysicalElements, Systems can be associated with specific "
       "packaging or PhysicalElements. This association explicitly "
       "defines the relationship between a System and its packaging.")]
class CIM_SystemPackaging : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The PhysicalElements that provide the packaging of a "
          "System.")]
   CIM_PhysicalElement REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The System whose packaging is described.")]
   CIM_System REF Dependent;
};
// Copyright (c) 2005 DMTF.  All rights reserved.
// <change cr="CIMCoreCR00774" type ="change">Remove reference to
// UnitaryComputerSystem. </change>
// <change cr="ArchCR00066.004" type="add">Add UmlPackagePath
// qualifier values to CIM Schema.</change>
// ==================================================================
//  CIM_SystemPackage
// ==================================================================
   [Association, Version ( "2.13.0" ), 
    UMLPackagePath ( "CIM::System::SystemElements" ), 
    Description ( 
       "Similar to the way that LogicalDevices are \'Realized\' by "
       "PhysicalElements, ComputerSystem may be realized realized in "
       "one or more PhysicalPackages. The SystemPackage "
       "association explicitly defines this relationship." )]
class CIM_SystemPackage : CIM_SystemPackaging {

      [Override ( "Antecedent" ), 
       Description ( 
          "The PhysicalPackage(s) that realize a Unitary ComputerSystem."
           )]
   CIM_PhysicalPackage REF Antecedent;

      [Override ( "Dependent" ), 
       Description ( "The UnitaryComputerSystem." )]
   CIM_ComputerSystem REF Dependent;

     
};


// ==================================================================
//  CIM_UseOfLog
// ==================================================================
   [Association, Abstract,  Version ( "2.9.0" ), Description (
       "ManagedSystemElements may record their event, error or "
       "informational data within Logs. The use of a Log to hold a "
       "ManagedSystemElement's data is described by this association. "
       "The type of Element data captured by the Log can be specified "
       "using the RecordedData string property.")]
class CIM_UseOfLog : CIM_Dependency {

      [Override ( "Antecedent" ), Description (
          "The Log.")]
   CIM_Log REF Antecedent;

      [Override ( "Dependent" ), Description (
          "The ManagedSystemElement whose information is recorded in "
          "the Log.")]
   CIM_ManagedSystemElement REF Dependent;

      [Description (
          "A free-form string describing the use of the Log by the "
          "ManagedSystemElement.")]
   string RecordedData;
};

// ==================================================================
//  CIM_AlarmDeviceCapabilities
// ==================================================================
   [Experimental, Abstract,  Version ( "2.15.0" ), Description (
       "AlarmDeviceCapabilities describes the capabilities supported "
       "for changing the state OF THE ASSOCIATED AlarmDevice.")]
class CIM_AlarmDeviceCapabilities : CIM_EnabledLogicalElementCapabilities {

      [Description (
          "RequestedAlarmStatesSupported indicates the possible states "
          "that can be requested when using the method SetAlarmState "
          "on the AlarmDevice. A value of 1 indicates that AlarmDevice "
          "indicators may be inactivated, a value of 2 or 3 indicates "
          "that AlarmDevice indicators may be activated."), 
       ValueMap { "0", "1", "2", "3", "..", "32768..65535" }, 
       Values { "Unknown", "Off", "Steady", "Alternating",
          "DMTF Reserved", "Vendor Specific" }, 
       ModelCorrespondence { "CIM_AlarmDevice.SetAlarmState" }]
   uint16 RequestedAlarmStatesSupported[];

      [Description (
          "AlarmIndicatorTypesConfigurable indicates the possible "
          "indicators that can be enabled or disabled when using the "
          "method SetAlarmIndicator on the AlarmDevice. An indicator "
          "is a device that emits sound (Audio), emits light or "
          "changes color (Visual), or emits vibrations (Motion) to "
          "indicate some condition. Indicators may include the audible "
          "alarm on a RAID controller, the location LED on a chassis, "
          "or the vibration of a cell phone."), 
       ValueMap { "1", "2", "3", "..", "32768..65535" }, 
       Values { "Audio", "Visual", "Motion", "DMTF Reserved",
          "Vendor Specific" }, 
       ModelCorrespondence { "CIM_AlarmDevice.SetAlarmIndicator" }]
   uint16 AlarmIndicatorTypesConfigurable[];

};

// ==================================================================
//  CIM_PhysicalMemory
// ==================================================================
   [Abstract,  Version ( "2.14.0" ), Description (
       "PhysicalMemory is a subclass of CIM_Chip, representing low "
       "level memory devices - SIMMS, DIMMs, raw memory chips, etc.")]
class CIM_PhysicalMemory : CIM_Chip {

      [Override ( "FormFactor" ), 
       MappingStrings { "MIF.DMTF|Memory Device|005.6" }]
   uint16 FormFactor;

      [Description (
          "The type of PhysicalMemory. \n"
          "\n"
          "Synchronous DRAM is also known as SDRAM \n"
          "Cache DRAM is also known as CDRAM \n"
          "CDRAM is also known as Cache DRAM \n"
          "SDRAM is also known as Synchronous DRAM \n"
          "BRAM is also known as Block RAM"), 
//#pragma inLine ("Includes\MemoryType.inc") 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
          "20", "21", "22", "23", "24..32567", "32568..65535" }, 
       Values { "Unknown", "Other", "DRAM", "Synchronous DRAM",
          "Cache DRAM", "EDO", "EDRAM", "VRAM", "SRAM", "RAM", 
          //10 
          "ROM", "Flash", "EEPROM", "FEPROM", "EPROM", "CDRAM",
          "3DRAM", "SDRAM", "SGRAM", "RDRAM", 
          // 20               
          "DDR", "DDR-2", "BRAM", "FB-DIMM", "DMTF Reserved",
             "Vendor Reserved" }, 
//#pragma inLine
         MappingStrings { "MIF.DMTF|Memory Device|005.9" }]
   uint16 MemoryType;

      [Description (
          "Total width, in bits, of the PhysicalMemory, including "
          "check or error correction bits. If there are no error "
          "correction bits, the value in this property should match "
          "that specified for DataWidth."), 
       Units ( "Bits" ), 
       MappingStrings { "MIF.DMTF|Memory Device|005.7" }]
   uint16 TotalWidth;

      [Description (
          "Data width of the PhysicalMemory, in bits. A data width of "
          "0 and a TotalWidth of 8 would indicate that the Memory is "
          "solely used to provide error correction bits."), 
       Units ( "Bits" ), 
       MappingStrings { "MIF.DMTF|Memory Device|005.8" }]
   uint16 DataWidth;

      [Description (
          "The speed of the PhysicalMemory, in nanoseconds."), 
       Units ( "NanoSeconds" ), 
       MappingStrings { "MIF.DMTF|Memory Device|005.24" }]
   uint32 Speed;

      [Description (
          "The total capacity of this PhysicalMemory, in bytes."), 
       Units ( "Bytes" ), 
       MappingStrings { "MIF.DMTF|Memory Device|005.5" }]
   uint64 Capacity;

      [Description (
          "A string identifying the physically labeled bank where the "
          "Memory is located - for example, 'Bank 0' or 'Bank A'."), 
       MaxLen ( 64 ), 
       MappingStrings { "MIF.DMTF|Memory Device|005.4" }]
   string BankLabel;

      [Description (
          "Specifies the position of the PhysicalMemory in a 'row'. "
          "For example, if it takes two 8-bit memory devices to form a "
          "16- bit row, then a value of '2'means that this Memory is "
          "the second device. 0 is an invalid value for this property."), 
       MappingStrings { "MIF.DMTF|Memory Device Mapped Addresses|001.6" 
          }]
   uint32 PositionInRow;

      [Description (
          "The position of this PhysicalMemory in an interleave. 0 "
          "indicates non-interleaved. 1 indicates the first position, "
          "2 the second position and so on. For example, in a 2:1 "
          "interleave, a value of '1' would indicate that the Memory "
          "is in the 'even' position."), 
       MappingStrings { "MIF.DMTF|Memory Device Mapped Addresses|001.7" 
          }]
   uint32 InterleavePosition;
};


// ==================================================================
//  CIM_MemoryOnCard
// ==================================================================
   [Association, Aggregation, Abstract,  Version ( "2.6.0" ),
       Description (
       "PhysicalMemory can be located on HostingBoards, adapter Cards, "
       "etc. This association explicitly defines this relationship of "
       "Memory to Cards.")]
class CIM_MemoryOnCard : CIM_PackagedComponent {

      [Aggregate, Override ( "GroupComponent" ), Max ( 1 ), 
       Description (
          "The Card that includes or 'contains' Memory.")]
   CIM_Card REF GroupComponent;

      [Override ( "PartComponent" ), Description (
          "The PhysicalMemory which is located on the Card.")]
   CIM_PhysicalMemory REF PartComponent;
};

// ==================================================================
// CIM_OrderedComponent
// ==================================================================
   [Association, Experimental, Aggregation, Abstract,  Version ( "2.10.0" ),
    Description (
       "CIM_OrderedComponent is a generic association used to "
       "establish 'part of' relationships between ManagedElements. It "
       "arranges the PartComponents in a specific assigned order. The "
       "semantics of the order depends on the context and use by the "
       "referencing classes. For example, if this association is used "
       "to arrange settings in a hierarchical order, then this "
       "specifies the sequence in which the settings are applied.")]
class CIM_OrderedComponent : CIM_Component {

      [Description (
          "AssignedSequence is an unsigned integer 'n' that indicates "
          "the relative order of ManagedElement instances. When 'n' is "
          "a positive integer, it indicates a place in the sequence of "
          "members, with smaller integers indicating earlier positions "
          "in the sequence. The special value '0' indicates 'don't "
          "care'. If two or more members have the same non-zero "
          "sequence number, then the ordering between those members is "
          "irrelevant, but they must all be ordered at the appropriate "
          "place in the overall sequence. \n"
          "\n"
          "A series of examples will make ordering of members clearer: "
          "\nIf all members have the same sequence number, \n"
          "regardless of whether it is '0' or non-zero, any \n"
          "order is acceptable. \n"
          "o The values: \n"
          "1:MEMBER A \n"
          "2:MEMBER B \n"
          "1:MEMBER C \n"
          "3:MEMBER D \n"
          "indicate two acceptable orders: A,C,B,D or C,A,B,D, \n"
          "since A and C can be ordered in either sequence, but \n"
          "only at the '1' position. \n"
          "\n"
          "Note that the non-zero sequence numbers need not start with "
          "'1', and they need not be consecutive. All that matters is "
          "their relative magnitude.")]
   uint64 AssignedSequence;
};


// ==================================================================
//  CIM_RecordLog 
// ==================================================================
   [Abstract,  Version ( "2.19.0" ), Description ( 
       "RecordLog serves as an aggregation point for LogRecord "
       "objects. This class presents a higher level view of a log than "
       "its peer class MessageLog (which uses iterators) and "
       "introduces a new key structure. Access to records in this log "
       "is achieved through the use of the standard CIM Operations "
       "defined as part of WBEM." )]
class CIM_RecordLog : CIM_Log {

      [Key, Override ( "InstanceID" ), 
       Description ( 
          "Within the scope of the instantiating Namespace, "
          "InstanceID opaquely and uniquely identifies an instance "
          "of this class. \n"
          "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;
};

// ==================================================================
// DiagnosticCompletionRecord
// ==================================================================
   [Abstract,  Version ( "2.11.0" ), Description ( 
       "When a DiagnosticService has completed, results generated by "
       "the service will be recorded in a DiagnosticCompletionRecord "
       "object. This class is used when a DiagnosticRecord.RecordType "
       "value = \"Results\", to contain completion information." )]
class CIM_DiagnosticCompletionRecord : CIM_DiagnosticServiceRecord {

      [Description ( 
          "This property is used when a DiagnosticRecord.RecordType "
          "value = \"Results\", to record how the test has "
          "completed. It is expected that additional "
          "DiagnosticServiceRecords of RecordType \"Service "
          "Errors\", \"Warning\" or \"Device Errors\" would be "
          "created by the test to describe the details of a "
          "\"Warning\", \"Incomplete\" or \"Failed\" "
          "CompletionState, respectively. \n"
          "\" Stopped\" and \"Aborted\" are similar, although the "
          "former implies a clean and orderly stop, while the "
          "latter implies an abrupt stop where the element\'s state "
          "and configuration may need to be updated. \n"
          "\"Warning\" means the element had a problem but did not "
          "fail the test. \n"
          "\"Failed\" and \"Incomplete\" are similar, although the "
          "former means the test on the element failed, while the "
          "latter means the test itself had a problem and could not "
          "complete execution." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7" }, 
       Values { "Unknown", "Other", "OK", "Warning", "Incomplete", 
          "Failed", "Aborted", "Stopped" }, 
       ModelCorrespondence { 
          "CIM_DiagnosticCompletionRecord.OtherCompletionStateDescription" }]
   uint16 CompletionState;

      [Description ( 
          "When \"Other\" (value=1) is entered in the "
          "CompletionState property, "
          "OtherCompletionStateDescription can be used to describe "
          "the test\'s state." ), 
       ModelCorrespondence { 
          "CIM_DiagnosticCompletionRecord.CompletionState" }]
   string OtherCompletionStateDescription;


};

// ==================================================================
//  CIM_MethodParameters
// ==================================================================
   [Abstract,  Version ( "2.10.0" ), Description (
       "CIM_MethodParameters represents a set of values to be used as "
       "the parameters of a method. These parameters can be passed to "
       "the method, directly used by the method in its invocation, or "
       "accessed by the method when it is called. The properties of a "
       "concrete subclass of MethodParameters are mapped to the "
       "parameters of a method by the method itself or by the method "
       "caller. This mapping is an implementation detail that is "
       "independent of the definition of the class. For ease of use, "
       "property names should match parameter names. \n"
       "Property values should be set before the method is invoked. "
       "The ModelCorrespondence qualifier can be used to indicate if "
       "the property value should come from the property of another "
       "class. The instances that the property values should be "
       "gleaned from should be associated with MethodParameters using "
       "the Parameter ValueSources association. \n"
       "If the property is declared as an array, then the same "
       "property value (identified by the Model Correspondence) will "
       "be retrieved from all appropriate ParameterValueSources "
       "instances and stored in the array. \n"
       "If the property is declared as an array and the Model "
       "Correspondence is to an array property, then only one instance "
       "of the array will be copied from one ParameterValueSource. \n"
       "If the property is not declared as an array and there are "
       "multiple instances of the class and property associated with "
       "it through ModelCorrespondence where the values are not all "
       "the same, then an error will occur and the value of the "
       "property will not be set. \n"
       "Several MethodParameters instances can be associated with any "
       "of the ManagedElement methods. This association allows the "
       "maintenance of 'canned' method invocation and reduces the "
       "overhead of re-creating all method parameters for every method "
       "invocation.")]
class CIM_MethodParameters : CIM_ManagedElement {

      [Description (
          "The identifier by which the MethodParameters object is "
          "known."), 
       MaxLen ( 256 )]
   string MethodParametersId;

      [Description (
          "The resetValues method updates the values of the properties "
          "of MethodParameters, which have ModelCorrespondence to the "
          "SourceME ManagedElement. This update allows several source "
          "candidates to be associated with the MethodParameters and "
          "one candidate to be selected as the source for this set of "
          "values. If resetValues is invoked and sourceME is null, "
          "then all associated ManagedElements in "
          "ParameterValueSources will be used to set the values of the "
          "MethodParameters properties.")]
   uint32 ResetValues( 
         [IN, Description (
             "The source ManagedElement.")]
      CIM_ManagedElement REF SourceME); 
};


// ==================================================================
//  CIM_InstMethodCall
// ==================================================================
   [Indication,  Version ( "2.6.0" ), Description (
       "CIM_InstMethodCall notifies when an instance's method is "
       "invoked.")]
class CIM_InstMethodCall : CIM_InstIndication {

      [Required, Description (
          "The name of the method invoked.")]
   string MethodName;

      [Description (
          "The parameters of the method, formatted as an "
          "EmbeddedObject (with a predefined class name of "
          "\"__MethodParameters\"."), 
       EmbeddedObject]
   string MethodParameters;

      [Description (
          "ReturnValue's data is dependent on the PreCall property. "
          "When PreCall is TRUE, this property is NULL describing that "
          "there is no method return value (since the method has not "
          "yet executed). When PreCall is FALSE, ReturnValue contains "
          "a string representation of the method's return value."), 
       ModelCorrespondence { "CIM_InstMethodCall.PreCall" }]
   string ReturnValue;

      [Required, Description (
          "Boolean indicating whether the Indication is sent before "
          "the method begins executing (TRUE) or when the method "
          "completes (FALSE). When TRUE, the inherited property "
          "SourceInstance contains the value of the instance (the "
          "properties defined by the Filter's Query clause), before "
          "execution of the method. When PreCall is FALSE, "
          "SourceInstance embeds the instance as it appears after the "
          "completion of the method.")]
   boolean PreCall;
};

// ==================================================================
//  CIM_MethodResult
// ==================================================================
   [Abstract, Experimental,  Version ( "2.8.1000" ), Description (
       "Jobs are sometimes used to represent extrinsic method "
       "invocations that execute for times longer than the length of "
       "time is reasonable to require a client to wait. The method "
       "executing continues beyond the method return to the client. "
       "The class provides the result of the execution of a Job that "
       "was itself started by the side-effect of this extrinsic method "
       "invocation. \n"
       "The indication instances embedded an instance of this class "
       "MUST be the same indications delivered to listening clients or "
       "recorded, all or in part, to logs. Basically, this approach is "
       "a corollary to the functionality provided by an instance of "
       "ListenerDestinationLog (as defined in the Interop Model). The "
       "latter provides a comprehensive, persistent mechanism for "
       "recording Job results, but is also more resource-intensive and "
       "requires supporting logging functionality. Both the extra "
       "resources and logging MAY NOT be available in all environments "
       "(for example, embedded environments). Therefore, this "
       "instance-based approach is also provided. \n"
       "The MethodResult instances MUST NOT exist after the associated "
       "ConcreteJob is deleted.")]
class CIM_MethodResult : 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;

      [Description (
          "This property contains a CIM_InstMethodCall Indication that "
          "describes the pre-execution values of the extrinisic method "
          "invocation."), 
       EmbeddedInstance ( "CIM_InstMethodCall" )]
   string PreCallIndication;

      [Description (
          "This property contains a CIM_InstMethodCall Indication that "
          "describes the post-execution values of the extrinisic "
          "method invocation."), 
       EmbeddedInstance ( "CIM_InstMethodCall" )]
   string PostCallIndication;

};

// ==================================================================
//  CIM_AssociatedJobMethodResult
// ==================================================================
[Association, Abstract, Experimental, Version ( "2.8.1000" ),
       UMLPackagePath ( "CIM::System::Processing" ), Description (
       "AssociatedJobMethodResult represents an association between a "
       "ConcreteJob and the MethodResult expressing the parameters for "
       "the Job when the job was created by side-effect of the "
       "execution of an extrinsic method.")]
class CIM_AssociatedJobMethodResult {

      [Key, Max ( 1 ), Description (
          "The associated ConcreteJob.")]
   CIM_ConcreteJob REF Job;

      [Key, Max ( 1 ), Description (
          "The associated MethodResult.")]
   CIM_MethodResult REF JobParameters;
};

// ==================================================================
//  CIM_ElementConformsToProfile
// ==================================================================
   [Abstract, Association, Version ( "2.8.0" ), 
    Description (
       "The CIM_ElementConformsToProfile association defines the "
       "RegisteredProfiles to which the referenced ManagedElement is "
       "conformant. Note: This association may apply to any Managed "
       "Element. Typical usage will apply it to a higher level "
       "instance, such as a System, NameSpace, or Service. When "
       "applied to a higher level instance, all constituent parts MUST "
       "behave appropriately in support of the ManagedElement's "
       "conformance to the named RegisteredProfile.")]
class CIM_ElementConformsToProfile {

      [Key, Description (
          "The RegisteredProfile to which the ManagedElement conforms.")]
   CIM_RegisteredProfile REF ConformantStandard;

      [Key, Description (
          "The ManagedElement that conforms to the RegisteredProfile.")]
   CIM_ManagedElement REF ManagedElement;
};


// ==================================================================
//  SNIA_ErasureSetting
// ==================================================================
 
[Abstract, Experimental,  Version ( "2.10.0" ), Description (
       "This setting is associated to a storage element and indicates"
       " default behavior to use when the element is returned to the "
       " storage pool")]
class SNIA_ErasureSetting : CIM_SettingData {
 
   [Description("Erasure method to use. Must be one of the erasure "
    "methods listed in SNIA_ErasureCapabilities.ErasureMethodsSupported")]
    string ErasureMethod;
    
    [Description("Indicates if this volume should be erased when "
       "deleted. Default is false")]
    boolean EraseOnReturnToPool =  false;
};

// ==================================================================
//  SNIA_ErasureService
// ==================================================================
[Abstract, Experimental,  Version ( "2.10.0" ), Description (
       "This service contains the Erase method used to erase storage "
       "elements (StorageVolumes or LogicalDisks)")]
class SNIA_ErasureService : CIM_Service {

    [Description("Erase the contents of a storage element by using "
           "one of the supported erasure methods."),
    ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
            "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
    Values { "Job Completed with No Error", "Not Supported",
            "Unspecified Error", "Timeout", "Failed",
            "Invalid Parameter", "In Use", "DMTF Reserved",
            "Method Parameters Checked - Job Started", "Method Reserved",
            "Vendor Specific" }]
    uint32 Erase(
      [OUT, Description("Reference to the job created, if any")]
      CIM_Job REF Job,
      
      [IN, Description ("StorageVolume or LogicalDisk to be erased")] 
      CIM_StorageExtent REF Element,
      
      [IN, Description("Enumeration indicating the type of element "
          "being erased. \n"
          " 1: StorageVolume\n"
          " 2: LogicalDisk\n"
          " 3: DiskExtent\n"),
          ValueMap { "1", "2", "3"}, 
          Values { "StorageVolume", "LogicalDisk", "DiskExtent"}]
      uint16 ElementType,
      
      [IN, Description("Erasure method to use. This must match one of the"
          " methods listed in the ErasureConfigurationService's "
          "SupportedErasureMethods property. If NULL, then the "
          "DefaultErasureMethod from the ErasureCapabilites will be "
          "used as the erasure method")]
      string ErasureMethod);

};

// ==================================================================
//  SNIA_ErasureCapabilities
// ==================================================================
[Abstract, Experimental,  Version ( "2.10.0" ), Description (
       "Capabilities for the storage element protection functionality")]
class SNIA_ErasureCapabilities : CIM_Capabilities {

    [Description("List of erasure methods supported")]
    string ErasureMethod;
    
    [Description("Erasure method to use if none is specified for the "
        " storage element being returned to the storage pool")]
    string DefaultErasureMethod;
    
    [Description("Indicates that a storage elements can be erased when"
       " returning to the storage pool. Whether they are erased or not"
       " is dependent upon the ErasureSetting associated to that "
       " storage element")]
    boolean CanEraseOnReturnToStoragePool;
    
   [Description("List of supported element types for ErasureService.Erase "
      "method ."),
     ValueMap { "1", "2", "3"},
     Values { "StorageVolume", "StorageExtent", "LogicalDisk"}]  
     uint16 ElementTypesSupported[];

};


//------------------------------------------------------------------
// Define extensions
// -----------------------------------------------------------------
//Package -cim::prov::smi13::hhr::disksparing::SpareConfigurationCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_SpareConfigurationCapabilities : SNIA_SpareConfigurationCapabilities {

     [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string Name;

[Description (
          "Enumeration indicating what operations will be executed as "
          "asynchronous jobs. If an operation is included in both this "
          "and SupportedSynchronousActions then the underlying "
          "implementation is indicating that it may or may not create "
          "a job."),
       ValueMap { "2", "3", "4", "5", "6", "7", "8" },
       Values { "Assign Spares", "Unassign Spares",
          "Rebuild Storage Extent", "Check Parity Consistency",
          "Repair Parity", "Fail Over", "Copyback" },
       ModelCorrespondence {
          "CIM_SpareConfigurationCapabilities.SupportedSynchronousActions"}]
   uint16 SupportedAsynchronousActions[];
};

//Package -cim::prov::smi13::hhr::physical::MegaRAIDProductProvider
[ Version ("1.0.0")]
class LSIESG_MegaRAIDProduct : CIM_Product {

};

//Package -cim::prov::smi13::hhr::physical::EnclosureProductProvider
[ Version ("1.0.0")]
class LSIESG_EnclosureProduct : CIM_Product {
   [ Description (
          "Field replaceable unit.")]
    string FRUPartNumber;
	 [ Description (
          "Serial number of ESM.")]
    string SerialNumber;
	 [ Description (
          "Zoning information.")]
    string Zoning;
	
};

//Package -cim::prov::smi13::hhr::physical::DiskDriveProductProvider
[ Version ("1.0.0")]
class LSIESG_DiskDriveProduct : CIM_Product {

};

//Package -cim::prov::smi13::hhr::diagnostics::DiagnosticResultsLogProvider
[ Version ("1.0.0")]
class LSIESG_DiagnosticResultsLog : CIM_MessageLog {
	[Implemented, Description (
          "Requests that the Log's iteration identifier be advanced or "
          "retreated a specific number of records, or set to the entry "
          "at a specified numeric location. These two different "
          "behaviors are accomplished using the input parameters of "
          "the method. Advancing or retreating is achieved by setting "
          "the MoveAbsolute boolean to FALSE, and then specifying the "
          "number of entries to advance or retreat as positive or "
          "negative values in the RecordNumber parameter. Moving to a "
          "specific record number is accomplished by setting the "
          "MoveAbsolute input parameter to TRUE, and then placing the "
          "record number into the RecordNumber parameter. This can "
          "only be done if the Capabilities array includes a value of "
          "7, \"Supports Addressing by Ordinal Record Number\". \n"
          "\n"
          "After the method completes and if ordinal record numbers "
          "are supported (the Capabilities array includes a 7), the "
          "current record number is returned in the RecordNumber "
          "output parameter. Otherwise, the value of the parameter is "
          "undefined. \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from PositionAtRecord should be 0 if the "
          "request was successfully executed, 1 if the request is not "
          "supported and some other value if an error occurred. If the "
          "request is not supported, check the Capabilities array "
          "regarding support for ordinal record number addressing and "
          "backward movement in the Log (values 7 and 4, "
          "respectively). \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 PositionAtRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Advancing or retreating the IterationIdentifier is "
             "achieved by setting the MoveAbsolute boolean to FALSE, "
             "and specifying the number of entries to advance or "
             "retreat as positive or negative values in the "
             "RecordNumber parameter. Moving to a specific record "
             "number is accomplished by setting the MoveAbsolute "
             "parameter to TRUE, and placing the record number into "
             "the RecordNumber parameter.")]
      boolean MoveAbsolute, 
         [IN, OUT, Description (
             "The relative or absolute record number.")]
      sint64 RecordNumber); 

	[Implemented, Description (
          "Requests that the record indicated by the "
          "IterationIdentifier be retrieved from the MessageLog. After "
          "retrieval, the IterationIdentifier may be advanced to the "
          "next record by setting the PositionToNext input parameter "
          "to TRUE. Two output parameters are defined for the method - "
          "RecordData which holds the contents of the Log entry (as an "
          "array of bytes that can be recast to an appropriate "
          "format), and RecordNumber which returns the current record "
          "number addressed via the Iteration Identifier. The "
          "RecordNumber parameter is only defined/valid when the "
          "Capabilities array indicates that ordinal record number "
          "addressing is supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from GetRecord should be 0 if the request "
          "was successfully executed, 1 if the request is not "
          "supported, and some other value if an error occurred. In a "
          "subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 GetRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean indicating that the Iteration Identifier should "
             "be advanced to the next record, after retrieving the "
             "current Log entry.")]
      boolean PositionToNext, 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber, 
         [IN ( false ), OUT, Description (
             "The record data.")]
      uint8 RecordData[]); 

	[Implemented, Description (
          "Requests that the record indicated by the "
          "IterationIdentifier be deleted from the MessageLog. After "
          "deletion, the Iteration Identifier may be advanced to the "
          "next record by setting the PositionToNext input parameter "
          "to TRUE. If set to FALSE, then the IterationIdentifier will "
          "be positioned at the previous record. Two output parameters "
          "are defined for the method - RecordData which holds the "
          "contents of the deleted Log entry (as an array of bytes "
          "that can be recast to an appropriate format or discarded), "
          "and RecordNumber which returns the current record number "
          "addressed via the IterationIdentifier. The RecordNumber "
          "parameter is only defined/valid when the Capabilities array "
          "indicates that ordinal record number addressing is "
          "supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from DeleteRecord should be 0 if the "
          "request was successfully executed, 1 if the request is not "
          "supported, and some other value if an error occurred. If "
          "the request is not supported, check the Capabilities array "
          "that a value of 3 (\"Delete Record Supported\") is "
          "specified. \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 DeleteRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean that when set to TRUE requests the "
             "IterationIdentifier to be advanced to the next record, "
             "after the current entry is deleted. If set to FALSE, "
             "IterationIdentifier is set to the previous record.")]
      boolean PositionToNext, 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber, 
         [IN ( false ), OUT, Description (
             "The record data.")]
      uint8 RecordData[]); 

	[Implemented, Description (
          "Requests that a record be inserted at the Log position "
          "indicated by the IterationIdentifier. The entry's data is "
          "provided in the RecordData input parameter. After "
          "insertion, the IterationIdentifier may be advanced to the "
          "next record by setting the PositionToNext input parameter "
          "to TRUE. The output parameter, RecordNumber, returns the "
          "current record number addressed via the "
          "IterationIdentifier. This parameter is only defined/valid "
          "when the Capabilities array indicates that ordinal record "
          "number addressing is supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from WriteRecord should be 0 if the "
          "request was successfully executed, 1 if the request is not "
          "supported, and some other value if an error occurred. If "
          "the request is not supported, check the Capabilities array "
          "that a value of 2 (\"Write Record Supported\") is "
          "specified. \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 WriteRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean indicating that the Iteration Identifier should "
             "be advanced to the next record, after writing the Log "
             "entry.")]
      boolean PositionToNext, 
         [IN, Description (
             "The record data.")]
      uint8 RecordData[], 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber); 

	[Implemented, Description (
          "Requests that an iteration of the Log, identified by the "
          "IterationIdentifier input parameter, be stopped. The return "
          "value from CancelIteration should be 0 if the request was "
          "successfully executed, 1 if the request is not supported "
          "and some other value if an error occurred. In a subclass, "
          "the set of possible return codes could be specified, using "
          "a ValueMap qualifier on the method. The strings to which "
          "the ValueMap contents are 'translated' may also be "
          "specified in the subclass as a Values array qualifier.")]
   uint32 CancelIteration ( 
         [IN, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier); 

	[Implemented, Description (
          "Requests that the MessageLog be placed in a frozen state "
          "(\"Freeze\" input parameter = TRUE) or 'unfrozen' (= "
          "FALSE). If frozen, modifications to the Log will not be "
          "allowed. If successful, the Log's IsFrozen boolean property "
          "will be updated to reflect the desired state. \n"
          "\n"
          "The method's return code should be 0 if the request was "
          "successfully executed, 1 if the request is not supported "
          "and some other value if an error occurred. If the request "
          "is not supported, check the Capabilities array that a value "
          "of 5 (\"Freeze Log Supported\") is specified. \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 FreezeLog( 
         [IN, Description (
             "If TRUE then freeze the log, if FALSE 'unfreeze' the "
             "log.")]
      boolean Freeze); 

	[Implemented, Description (
          "Requests that the record indicated by the "
          "IterationIdentifier be flagged as overwriteable. This "
          "method is only supported when the Capabilities array "
          "includes a value of 10, \"Can Flag Records for Overwrite\". "
          "After updating the entry, the IterationIdentifier may be "
          "advanced to the next record by setting the PositionToNext "
          "input parameter to TRUE. One output parameter is defined "
          "for the method RecordNumber. It returns the current record "
          "number addressed via the Iteration Identifier. This "
          "parameter is only defined/valid when the Capabilities array "
          "indicates that ordinal record number addressing is "
          "supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from FlagRecordForOverwrite should be 0 if "
          "the request was successfully executed, 1 if the request is "
          "not supported, and some other value if an error occurred. "
          "In a subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 FlagRecordForOverwrite ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean indicating that the Iteration Identifier should "
             "be advanced to the next record, after updating the "
             "current Log entry.")]
      boolean PositionToNext, 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber); 

	[Implemented, Description (
          "Requests that an iteration of the MessageLog be established "
          "and that the iterator be set to the first entry in the Log. "
          "An identifier for the iterator is returned as an output "
          "parameter of the method. \n"
          "\n"
          "Regarding iteration, you have 2 choices: 1) Embed iteration "
          "data in the method call, and allow implementations to "
          "track/ store this data manually; or, 2) Iterate using a "
          "separate object (for example, class ActiveIterator) as an "
          "iteration agent. The first approach is used here for "
          "interoperability. The second requires an instance of the "
          "Iterator object for EACH iteration in progress. 2's "
          "functionality could be implemented underneath 1. \n"
          "\n"
          "The return value from PositionToFirstRecord should be 0 if "
          "the request was successfully executed, 1 if the request is "
          "not supported and some other value if an error occurred. In "
          "a subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 PositionToFirstRecord ( 
         [IN ( false ), OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier); 


};

//Package -cim::prov::smi13::hhr::physical::DriveSlotProvider
[ Version ("1.0.0")]
class LSIESG_DriveSlot : CIM_Slot {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string Chassis_Tag;
      [Description (
            "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string Drive_Tag;
      [Description (
            "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string ServerTag;
   
};

//Package -cim::prov::smi13::hhr::blockservices::StorageConfigurationCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_StorageConfigurationCapabilities : CIM_StorageConfigurationCapabilities {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string ComputerSystem_Name;

};

//Package -cim::prov::smi13::hhr::ports::directattach::SCSIProtocolControllerProvider
[ Version ("1.0.0")]
class LSIESG_SCSIProtocolController : CIM_SCSIProtocolController {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string SCSIProtocolEndpoint_Name;

};

//Package -cim::prov::smi13::hhr::blockservices::StorageVolumeProvider
[ Version ("1.0.0")]
class LSIESG_StorageVolume : CIM_StorageVolume {
[Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string AffectedComponent;
   string AffectedComponent_ForegroundInitJob;
   
   
   
   [Description (
          "ExtentStripeLength describes the number of underlying "
          "StorageExtents across which data is striped in the common "
          "striping-based storage organizations. This is also known as "
          "the number of 'members' or 'columns'. When used in a goal "
          "setting instance, ExtentStripeLength is the optimal desired "
          "value. The bounds (max and min) for Stripe Length are "
          "defined using the properties ExtentStripeLengthMax and "
          "ExtentStripeLengthMin. ExtentStripeLength MUST be set to "
          "NULL if the scoping StorageCapablities indicates that it is "
          "not supported in this context. ExtentStripeLength can be "
          "used in conjunction with CreateOrModifyElementFromELements "
          "to explicitly configure storage. An example would be RAID "
          "0+1 with mirroring two stripe sets, each set being three "
          "wide. In this case CreateOrModifyElementFromElements would "
          "be passed a goal setting with DataRedundancy = 2 and "
          "ExtentStripeLength = 3. The size of the InElements array "
          "would be 6 and would contain the StorageExtents to be used "
          "to construct the StorageElement as a RAID 0+1. "
          "ExtentStripeLengthMin and ExtentStripeLengthMax are "
          "meaningless and wouldbe set to NULL. If the property is "
          "supported, and is part of StorageSettingWithHints it MAY be "
          "set to NULL. If used it will constrain the effects of Hint "
          "selections. When used in a Setting instance associated to a "
          "Volume, this property indicates the specific value that the "
          "Volume was created with, and ExtentStripeLengthMin and "
          "ExtentStripeLengthMax will be set to the same specific "
          "value."), 
       MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageSetting.ExtentStripeLengthMax",
          "CIM_StorageSetting.ExtentStripeLengthMin" }]
   uint64 ExtentStripeLength;

   
   [Description (
          "ExtentStripeLength describes the number of underlying "
          "StorageExtents across which data is striped in the common "
          "striping-based storage organizations. This is also known as "
          "the number of 'members' or 'columns'. When used in a goal "
          "setting instance, ExtentStripeLengthMin is the minimum "
          "acceptable value. The desired Stripe Length is specified "
          "using ExtentStripeLength, while the maximum is defined by "
          "ExtentStripeLengthMax. ExtentStripeLengthMin MUST be set to "
          "NULL if the scoping StorageCapablities indicates that it is "
          "not supported in this context. If the property is "
          "supported, and is part of StorageSettingWithHints it MAY be "
          "set to NULL. If used it will constrain the effects of Hint "
          "selections. When used in a Setting instance associated to a "
          "Volume, this property is set to the specific value of "
          "ExtentStripeLength."), 
       MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageSetting.ExtentStripeLengthMax",
          "CIM_StorageSetting.ExtentStripeLength" }]
   uint16 ExtentStripeLengthMin;

      [Description (
          "ExtentStripeLength describes the number of underlying "
          "StorageExtents across which data is striped in the common "
          "striping-based storage organizations. This is also known as "
          "the number of 'members' or 'columns'. When used in a goal "
          "setting instance, ExtentStripeLengthMax is the maximum "
          "acceptable value. The desired Stripe Length is specified "
          "using ExtentStripeLength, while the minimum is defined by "
          "ExtentStripeLengthMin. ExtentStripeLengthMax MUST be set to "
          "NULL if the scoping StorageCapablities indicates that it is "
          "not supported in this context. If the property is "
          "supported, and is part of StorageSettingWithHints it MAY be "
          "set to NULL. If used it will constrain the effects of Hint "
          "selections. When used in a Setting instance associated to a "
          "Volume, this property is set to the specific value of "
          "ExtentStripeLength."), 
       MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageSetting.ExtentStripeLengthMin",
          "CIM_StorageSetting.ExtentStripeLength" }]
   uint16 ExtentStripeLengthMax;
   
   
      [ Description (
          "UserDataStripeDepth describes the number of bytes forming a "
          "strip in common striping-based storage organizations. The "
          "strip is defined as the size of the portion of a stripe "
          "that lies on one extent. Thus, ExtentStripeLength * "
          "UserDataStripeDepth will yield the size of one stripe of "
          "user data. When used in a goal setting instance, "
          "UserDataStripeDepth is the optimal desired value. The "
          "bounds (max and min) for Stripe Depth are defined using the "
          "properties UserDataStripeDepthMax and "
          "UserDataStripeDepthMin. UserDataStripeDepth MUST be set to "
          "NULL if the scoping StorageCapablities indicates that it is "
          "not supported in this context. If the property is "
          "supported, and is part of StorageSettingWithHints it MAY be "
          "set to NULL. If used it will constrain the effects of Hint "
          "selections. When used in a Setting instance associated to a "
          "Volume, this property indicates the specific value that the "
          "Volume was created with, and UserDataStripeDepthMin and "
          "UserDataStripeDepthMax will be set to the same specific "
          "value."), 
       Units ( "Bytes" ), MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageSetting.UserDataStripeDepthMax",
          "CIM_StorageSetting.UserDataStripeDepthMin" }]
   uint64 UserDataStripeDepth;

      [ Description (
          "UserDataStripeDepth describes the number of bytes forming a "
          "strip in common striping-based storage organizations. The "
          "strip is defined as the size of the portion of a stripe "
          "that lies on one extent. Thus, ExtentStripeLength * "
          "UserDataStripeDepth will yield the size of one stripe of "
          "user data. When used in a goal setting instance, "
          "UserDataStripeDepthMin is the minimum acceptable value. The "
          "desired Stripe Depth is specified using "
          "UserDataStripeDepth, while the maximum is defined by "
          "UserDataStripeDepthMax. UserDataStripeDepthMin MUST be set "
          "to NULL if the scoping StorageCapablities indicates that it "
          "is not supported in this context. If the property is "
          "supported, and is part of StorageSettingWithHints it MAY be "
          "set to NULL. If used it will constrain the effects of Hint "
          "selections. When used in a Setting instance associated to a "
          "Volume, this property is set to the specific value of "
          "UserDataStripeDepth."), 
       Units ( "Bytes" ), MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageSetting.UserDataStripeDepthMax",
          "CIM_StorageSetting.UserDataStripeDepth" }]
   uint64 UserDataStripeDepthMin;

      [ Description (
          "UserDataStripeDepth describes the number of bytes forming a "
          "strip in common striping-based storage organizations. The "
          "strip is defined as the size of the portion of a stripe "
          "that lies on one extent. Thus, ExtentStripeLength * "
          "UserDataStripeDepth will yield the size of one stripe of "
          "user data. When used in a goal setting instance, "
          "UserDataStripeDepthMax is the maximum acceptable value. The "
          "desired Stripe Depth is specified using "
          "UserDataStripeDepthGoal, while the minimum is defined by "
          "UserDataStripeDepthMin. UserDataStripeDepthMax MUST be set "
          "to NULL if the scoping StorageCapablities indicates that it "
          "is not supported in this context. If the property is "
          "supported, and is part of StorageSettingwWithHints it MAY "
          "be set to NULL. If used it will constrain the effects of "
          "Hint selections. When used in a Setting instance associated "
          "to a Volume, this property is set to the specific value of "
          "UserDataStripeDepth."), 
       Units ( "Bytes" ), MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageSetting.UserDataStripeDepthMin",
          "CIM_StorageSetting.UserDataStripeDepth" }]
   uint64 UserDataStripeDepthMax;
    






	[Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string StoragePool_InstanceID;
   


      [Implemented,Description (
		"This method is used to start the Secure erase operation"
		"on LD.")]
   uint32 SecureEraseStart(
         [IN, Description (
             "A Boolean value that represents the requested"
              "state for the location indicator, 0 - No Operation, 1 - Delete VD")]
      uint8 deleteVD,
	  
         [IN, Description (
             "The Type of erase requested for the LD."
             "RequestedState values."), 
          ValueMap {"0","1","2"}, 
          Values { "Simple", "Normal", "Through"}]
      uint16 EraseType, 

	          [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job
		 );

      [Implemented,Description (
		"This method is used to abort the secure erase operation"
		"on LD.")]
   uint32 SecureEraseStop( );
		    
        [Implemented,Description (
		       "This method is used to set Logical Drive's write cache policy")]
      uint32 SetdefaultCachePolicy(
               [IN, Description (
                   "The policy type for LD."), 
             ValueMap {"0","1","4","5","17","21","96","97","100","101","113","117"}, 
             Values { "no read ahead, write through, direct IO",
			 "direct IO,no read ahead,write back", "direct IO,Always Read Ahead,write through",
			"direct IO,Always Read Ahead,write back","direct IO,no read ahead,Always write back",
			"direct IO,Always Read Ahead,Always write back", "cached IO,no read ahead,write through",
			"cached IO,no read ahead,write back", "cached IO,Always Read Ahead,write through",
			"cached IO,Always Read Ahead,write back", "cached IO,no read ahead,Always write back",
			"cached IO,Always Read Ahead,Always write back"}]
      uint16 Policy);
		 
      [Implemented,Description (
		       "This method is used to Start LD Initialization")]
      uint32 StartInitialization(
               [IN, Description (
                   "The type for LD Initialization."), 
             ValueMap {"0","1"}, 
             Values { "Full", "Fast"}]
      uint16 Type);		 
   
   
	[Implemented,Description (
                "This method sets the state of the location indicator"
                "(typically a flashing LED on the drive) to support "
                "identification of the drive within its enclosure."
                "Invoking the method with the parameter set to \"true\" "
                "turns the indicator on. Invoking the method with the "
                "parameter set to \"false\" turns the indicator off."), 
             ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
                "32768..65535" }, 
             Values { "Success", "Not Supported", "Unspecified Error",
                "Timeout", "Failed", "Invalid Parameter", "Access Denied",
                "DMTF Reserved", "Vendor Specific" }]
      uint32 SetLocationIndicator ( 
               [IN, Description (
                   "A Boolean value that represents the requested"
                   "state for the location indicator")]
      boolean IndicatorOn);

      [Override ("ExtentStatus"), Description (
                "StorageExtents have additional status information beyond "
                "that captured in the OperationalStatus and other "
                "properties, inherited from ManagedSystemElement. This "
                "additional information (for example, \"Protection "
                "Disabled\", value=9) is captured in the VolumeStatus "
                "property."), 
      ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
                "10", "11", "12", "13", "14", "15..32767", "32768", "32769", "32770..65535" }, 
      Values { "Other", "Unknown", "None/Not Applicable", "Broken",
                "Data Lost", "Dynamic Reconfig", "Exposed",
                "Fractionally Exposed", "Partially Exposed",
                "Protection Disabled", "Readying", "Rebuild", "Recalculate",
                "Spare in Use", "Verify In Progress", "DMTF Reserved",
                "Pinned Cache", "Bad Blocks", "Vendor Reserved" }]
      uint16 ExtentStatus[]; 

      [Description ("Clears bad blocks associated with the StorageVolume."), 
                ValueMap { "0", "1", "2"}, 
                Values { "Success", "Not Supported", "Failed" }]
      uint32 ClearBadBlocks( );
	  [Description (
          "The maximum number of blocks, of size BlockSize, which are "
          "used for Parity Information.")]
   uint64 MirrororParityInformationBlocks;  
   
   [Description (
          "LD is a CacheCade if set to 1.")]
   boolean IsSSCD; 
   
   	[Implemented,Description (
        "This method sets the volume's PI state to disable if the allowed operation "
		"(LD allowed ops bit for piDisableAllowed) supports it. "
        "Once PI disabled it cannot be enabled. In case of slicing, the other VDs "
		"sharing the same array or arrays (in case of spanned VD) will also be PI disabled."),
    ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
                "32768..65535" }, 
    Values { "Success", "Not Supported", "Unspecified Error",
             "Timeout", "Failed", "Invalid Parameter", "Access Denied",
             "DMTF Reserved", "Vendor Specific" }]
    uint32 SetPIStateDisable ();
};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_AssociatedComponentExtent : CIM_AssociatedComponentExtent {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_AssociatedJobMethodResult : CIM_AssociatedJobMethodResult {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_Spared : CIM_Spared {

};

//Package -cim::prov::smi13::hhr::blockservices::DiskPartitionProvider
[ Version ("1.0.0")]
class LSIESG_DiskPartition : CIM_DiskPartition {
   [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string StorageVolume_DeviceID;

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_HostedAccessPoint : CIM_HostedAccessPoint {

};

//Package -cim::prov::smi13::hhr::software::ControllerBIOSIdentityProvider
[ Version ("1.0.0")]
class LSIESG_ControllerBIOSIdentity : CIM_SoftwareIdentity {
    [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
    string ComputerSystem_Name;
	string SystemIdentity;
};

//Package -cim::prov::smi13::hhr::software::FirmwarePackageIdentityProvider
[ Version ("1.0.0")]
class LSIESG_FirmwarePackageIdentity : CIM_SoftwareIdentity {
[Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string SystemName;
   string SystemIdentity;
};

//Package -cim::prov::smi13::hhr::software::UEFIDriverIdentityProvider
[ Version ("1.0.0")]
class LSIESG_UEFIDriverIdentity : CIM_SoftwareIdentity {

};

//Package -cim::prov::smi13::hhr::software::SoftwareInstallationServiceCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_SoftwareInstallationServiceCapabilities : CIM_SoftwareInstallationServiceCapabilities {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_LogicalIdentity : CIM_LogicalIdentity {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_AssociatedSensor : CIM_AssociatedSensor {

};

//Package -cim::prov::smi13::hhr::blockservices::StorageConfigurationServiceProvider
[ Version ("1.0.0")]
class LSIESG_StorageConfigurationService : CIM_StorageConfigurationService {

      [Implemented, Description (
          "Starts a job to create (or modify) a StoragePool. The "
          "StoragePool will be (or must be) scoped to the same System "
          "as this Service. One of the parameters for this method is "
          "Size. As an input parameter, Size specifies the desired "
          "size of the pool. As an output parameter, it specifies the "
          "size achieved. Space is taken from either or both of the "
          "specified input StoragePools and StorageExtents (InPools "
          "and InExtents). The capability requirements that the Pool "
          "must support are defined using the Goal parameter. If the "
          "requested pool size cannot be created, no action will be "
          "taken, the Return Value will be 4097/0x1001, and the output "
          "value of Size will be set to the nearest possible size. If "
          "0 is returned, then the task completed successfully and the "
          "use of ConcreteJob was not required. If the task will take "
          "some time to complete, a ConcreteJob will be created and "
          "its reference returned in the output parameter Job."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Size Not Supported", "Method Reserved", "Vendor Specific" }]
   uint32 CreateOrModifyStoragePool ( 
         [IN, Description (
             "A end user relevant name for the pool being created. If "
             "NULL, then a system supplied default name can be used. "
             "The value will be stored in the 'ElementName' property "
             "for the created pool. If not NULL, this parameter will "
             "supply a new name when modifying an existing pool.")]
      string ElementName, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "Reference to an instance of StorageSetting that defines "
             "the desired capabilities of the StoragePool. If set to a "
             "null value, the default configuration from the source "
             "pool will be used. If not NULL, this parameter will "
             "supply a new Goal setting when modifying an existing "
             "pool.")]
      CIM_StorageSetting REF Goal, 
         [IN, OUT, Description (
             "As an input parameter this specifies the desired pool "
             "size in bytes. As an output parameter this specifies the "
             "size achieved."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 Size, 
         [IN, Description (
             "Array of strings containing representations of "
             "references to CIM_StoragePool instances, that are used "
             "to create the Pool or modify the source pools.")]
      string InPools[], 
         [IN, Description (
             "Array of strings containing representations of "
             "references to CIM_StorageExtent instances, that are used "
             "to create the Pool or modify the source extents.")]
      string InExtents[], 
         [IN, OUT, Description (
             "As an input parameter: if null, creates a new "
             "StoragePool. If not null, modifies the referenced Pool. "
             "When returned, it is a reference to the resulting "
             "StoragePool.")]
      CIM_StoragePool REF Pool); 

      [Implemented, Description (
          "Start a job to create (or modify) a specified element (for "
          "example a StorageVolume or StorageExtent) from a "
          "StoragePool. One of the parameters for this method is Size. "
          "As an input parameter, Size specifies the desired size of "
          "the element. As an output parameter, it specifies the size "
          "achieved. Space is taken from the input StoragePool. The "
          "desired settings for the element are specified by the Goal "
          "parameter. If the requested size cannot be created, no "
          "action will be taken, and the Return Value will be "
          "4097/0x1001. Also, the output value of Size is set to the "
          "nearest possible size. If 0 is returned, the function "
          "completed successfully and no ConcreteJob instance was "
          "required. If 4096/0x1000 is returned, a ConcreteJob will be "
          "started to create the element. The Job's reference will be "
          "returned in the output parameter Job."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Size Not Supported", "Method Reserved", "Vendor Specific" }]
   uint32 CreateOrModifyElementFromStoragePool( 
         [IN, Description (
             "A end user relevant name for the element being created. "
             "If NULL, then a system supplied default name can be "
             "used. The value will be stored in the 'ElementName' "
             "property for the created element. If not NULL, this "
             "parameter will supply a new name when modifying an "
             "existing element.")]
      string ElementName, 
         [IN, Description (
             "Enumeration indicating the type of element being created "
             "or modified. If the input parameter TheElement is "
             "specified when the operation is a 'modify', this type "
             "value must match the type of that instance."), 
          ValueMap { "0", "1", "2", "3", "4", "..", "32768..65535" }, 
          Values { "Unknown", "Reserved", "StorageVolume",
             "StorageExtent", "LogicalDisk", "DMTF Reserved",
             "Vendor Specific" }]
      uint16 ElementType, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "The requirements for the element to maintain. If set to "
             "a null value, the default configuration from the source "
             "pool will be used. This parameter should be a reference "
             "to a Setting or Profile appropriate to the element being "
             "created. If not NULL, this parameter will supply a new "
             "Goal when modifying an existing element.")]
      CIM_ManagedElement REF Goal, 
         [IN, OUT, Description (
             "As an input parameter Size specifies the desired size. "
             "If not NULL, this parameter will supply a new size when "
             "modifying an existing element. As an output parameter "
             "Size specifies the size achieved."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 Size, 
         [IN, Description (
             "The Pool from which to create the element. This "
             "parameter must be set to null if the input parameter "
             "TheElement is specified (in the case of a 'modify' "
             "operation).")]
      CIM_StoragePool REF InPool, 
         [IN, OUT, Description (
             "As an input parameter: if null, creates a new element. "
             "If not null, then the method modifies the specified "
             "element. As an output parameter, it is a reference to "
             "the resulting element.")]
      CIM_LogicalElement REF TheElement); 

      [Implemented, Description (
          "Start a job to delete a StoragePool. The freed space is "
          "returned source StoragePools (indicated by AllocatedFrom "
          "StoragePool) or back to underlying storage extents. If 0 is "
          "returned, the function completed successfully, and no "
          "ConcreteJob was required. If 4096/0x1000 is returned, a "
          "ConcreteJob will be started to delete the StoragePool. A "
          "reference to the Job is returned in the Job parameter."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 DeleteStoragePool ( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "Reference to the pool to delete.")]
      CIM_StoragePool REF Pool); 

      [Implemented, Description (
          "Start a job to delete an element previously created from a "
          "StoragePool. The freed space is returned to the source "
          "StoragePool. If 0 is returned, the function completed "
          "successfully and no ConcreteJob was required. If "
          "4096/0x1000 is returned, a ConcreteJob will be started to "
          "delete the element. A reference to the Job is returned in "
          "the Job parameter."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 ReturnToStoragePool( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "Reference to the element to return to the StoragePool.")]
      CIM_LogicalElement REF TheElement); 

      [Implemented, Description (
          "Start a job to create a new storage object which is a "
          "replica of the specified source storage object. "
          "(SourceElement). Note that using the input paramter, "
          "CopyType, this function can be used to instantiate the "
          "replica, and to create an ongoing association between the "
          "source and replica. If 0 is returned, the function "
          "completed successfully and no ConcreteJob instance is "
          "created. If 4096/0x1000 is returned, a ConcreteJob is "
          "started, a reference to which is returned in the Job output "
          "parameter."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 CreateReplica( 
         [IN, Description (
             "A end user relevant name for the element being created. "
             "If NULL, then a system supplied default name can be "
             "used. The value will be stored in the 'ElementName' "
             "property for the created element.")]
      string ElementName, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [Required, IN, Description (
             "The source storage object which may be a StorageVolume "
             "or storage object.")]
      CIM_LogicalElement REF SourceElement, 
         [IN ( false ), OUT, Description (
             "Reference to the created target storage element (i.e., "
             "the replica).")]
      CIM_LogicalElement REF TargetElement, 
         [IN, Description (
             "The definition for the StorageSetting to be maintained "
             "by the target storage object (the replica).")]
      CIM_StorageSetting REF TargetSettingGoal, 
         [IN, Description (
             "The underlying storage for the target element (the "
             "replica) will be drawn from TargetPool if specified, "
             "otherwise the allocation is implementation specific.")]
      CIM_StoragePool REF TargetPool, 
         [IN, Description (
             "CopyType describes the type of copy that will be made. "
             "Values are: \n"
             "Async: Create and maintain an asynchronous copy of the "
             "source. \n"
             "Sync: Create and maintain a synchronized copy of the "
             "source. \n"
             "UnSyncAssoc: Create an unsynchronized copy and maintain "
             "an association to the source. \n"
             "UnSyncUnAssoc: Create unassociated copy of the source "
             "element."), 
          ValueMap { "2", "3", "4", "5", "..", "32768..65535" }, 
          Values { "Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 CopyType); 

      [Implemented, Description (
          "Modify (or start a job to modify) the synchronization "
          "association between two storage objects. If 0 is returned, "
          "the function completed successfully and no ConcreteJob "
          "instance was created. If 0x1000 is returned, a ConcreteJob "
          "was started and a reference to this Job is returned in the "
          "Job output parameter. A return value of 1 indicates the "
          "method is not supported. All other values indicate some "
          "type of error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 ModifySynchronization( 
         [IN, Description (
             "Operation describes the type of modification to be made "
             "to the replica. Values are: \n"
             "Detach: 'Forget' the synchronization between two storage "
             "objects. Start to treat the objects as independent. \n"
             "Fracture: Suspend the synchronization between two "
             "storage objects using Sync or Async replication. \n"
             "The association and (typically) changes are remembered "
             "to allow a fast resynchronization. This may be used "
             "during a backup cycle to allow one of the objects to be "
             "copied while the other remains in production. \n"
             "Resync Replica: Re-establish the synchronization of a "
             "Sync or Async replication. This will negate the action "
             "of a previous Fracture operation. Recreate a Point In "
             "Time image for an UnSyncAssoc replication. \n"
             "Restore from Replica: Renew the contents of the original "
             "storage object from a replica. \n"
             "Prepare: Get the link ready for a Resync operation to "
             "take place. Some implementations will require this "
             "operation to be invoked to keep the Resync operation as "
             "fast as possible. May start the copy engine. \n"
             "Unprepare: Clear a prepared state if a Prepare is not to "
             "be followed by a Resync operation. \n"
             "Quiesce: Some applications require notification so that "
             "they can ready the link for an operation. For example "
             "flush any cached data or buffered changes. The copy "
             "engine is stopped for UnSyncAssoc replications. \n"
             "Unquiesce: Take the link from the quiesced state "
             "(without executing the intended operation. \n"
             "Start Copy: initiate a full background copy of the "
             "source to the UnSyncAssoc replica. Replica enters Frozen "
             "state when copy operation is completed. \n"
             "Stop Copy: stop the background copy previously started. "
             "Reset To Sync: Change the CopyType of the association to "
             "Sync (e.g., from the Async CopyType). \n"
             "Reset To Async: Change the CopyType of the association "
             "to Async (e.g., from the Sync CopyType)."), 
          ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
             "10", "11", "12", "13", "..", "0x8000..0xFFFF" }, 
          Values { "DMTF Reserved", "DMTF Reserved", "Detach",
             "Fracture", "Resync Replica", "Restore from Replica",
             "Prepare", "Unprepare", "Quiesce", "Unquiesce",
             "Reset To Sync", "Reset To Async", "Start Copy",
             "Stop Copy", "DMTF Reserved", "Vendor Specific" }]
      uint16 Operation, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if the task "
             "completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "The referenced to the StorageSynchronized association "
             "describing the storage source/replica relationship.")]
      CIM_StorageSynchronized REF Synchronization); 

      [Implemented, Description (
          "Create (or start a job to create) a StorageSynchronized "
          "relationship between two existing storage objects. Note "
          "that using the input parameter, CopyType, this function can "
          "be used to to create an ongoing association between the "
          "source and replica. If 0 is returned, the function "
          "completed successfully and no ConcreteJob instance is "
          "created. If 0x1000 is returned, a ConcreteJob is started, a "
          "reference to which is returned in the Job output parameter. "
          "A return value of 1 indicates the method is not supported. "
          "All other values indicate some type of error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 AttachReplica( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if the task "
             "completed).")]
      CIM_ConcreteJob REF Job, 
         [Required, IN, Description (
             "The source storage object which may be a StorageVolume "
             "or other storage object.")]
      CIM_ManagedElement REF SourceElement, 
         [IN, Description (
             "Reference to the target storage element (i.e., the "
             "replica).")]
      CIM_ManagedElement REF TargetElement, 
         [IN, Description (
             "CopyType describes the type of Synchronized relationship "
             "that will be created. Values are: \n"
             "Async: Create and maintain an asynchronous copy of the "
             "source. \n"
             "Sync: Create and maintain a synchronized copy of the "
             "source. \n"
             "UnSyncAssoc: Create an unsynchronized copy and maintain "
             "an association to the source. \n"
             "UnSyncUnAssoc: Create unassociated copy of the source "
             "element."), 
          ValueMap { "2", "3", "4", "5", "..", "0x8000..0xFFFF" }, 
          Values { "Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 CopyType); 	  

	    [Implemented, Description (
          "Assign or un-assign a LD to a cachecade "), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 attachCachecade(       
      [IN, Description (
             "Array of strings containing representations of "
             "references to CIM_StorageExtent instances, that are used "
             "to create the Pool or modify the source extents.")]
       CIM_StorageVolume REF InLDs[],	  
	  [IN, Description (
             "If 1 assign to Cachecade, if 0 unassign with Cachecade.")]
      uint8 Assign);
      [Implemented, Experimental, Description (
          "Create (or start a job to create) a StorageSynchronized "
          "mirror relationship between two storage elements. The "
          "target element may be a local or a remote storage element. "
          "A remote mirror pair may be scoped by a peer-to-peer "
          "connection modeled as a NetworkPipe between peers. \n"
          "\n"
          "If Job Completed with No Error (0) is returned, the "
          "function completed successfully and a ConcreteJob instance "
          "is not created. \n"
          "\n"
          "If Method Parameters Checked - Job Started (0x1000) is "
          "returned, a ConcreteJob is started, a reference to which is "
          "returned in the Job output parameter. \n"
          "\n"
          "A return value of Not Supported (1) indicates the method is "
          "not supported. \n"
          "\n"
          "All other values indicate some type of error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]

   uint32 AttachOrModifyReplica(
      
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if the task "
             "completed).")]
      CIM_ConcreteJob REF Job,
      
         [Required, IN, Description (
             "The source storage element which may be a StorageVolume, "
             "StorageExtent, LogicalFile, FileSystem, CommonDatabase, "
             "or any other storage object. For this reason, the type "
             "is made very generic.")]
      CIM_ManagedElement REF SourceElement,
      
         [Required, IN, Description (
             "Reference to the target storage element (i.e., the "
             "replica). The target storage element which may be a "
             "StorageVolume, StorageExtent, LogicalFile, FileSystem, "
             "CommonDatabase, or any other storage object. For this "
             "reason, the type is made very generic.")]
      CIM_ManagedElement REF TargetElement,
      
         [Required, IN, Description (
             "CopyType describes the type of Synchronized relationship "
             "that will be created. Values are: Async: Create and "
             "maintain an asynchronous copy of the source. Sync: "
             "Create and maintain a synchronized copy of the source. "
             "UnSyncAssoc: Create an unsynchronized copy and maintain "
             "an association to the source element. \n"
             "UnSyncUnAssoc: Create an unassociated copy of the source "
             "element. \n"
             "UnSyncAssoc and UnSyncUnAssoc are not supported for "
             "remote mirror replicas."), 
          ValueMap { "2", "3", "4", "5", "6..4095", "0x1000..0xFFFF" }, 
          Values { "Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 CopyType,
      
         [IN, Description (
             "The StorageSetting properties to be created or modified "
             "for the target element."), 
          EmbeddedInstance ( "CIM_SettingData" )]
      string Goal,
      
         [IN, Description (
             "The NetworkPipe element that scopes the remote mirror "
             "pair. If the value is null, remote mirrors do not "
             "require a pre-established connection.")]
      CIM_NetworkPipe REF ReplicationPipe); 

      [Implemented, Experimental, Description (
          "This method establishes a peer-to-peer connection "
          "identified by a NetworkPipe element and two "
          "ProtocolEndpoint elements created by the method provider. "
          "The NetworkPipe is associated to a special peer-to-peer "
          "Network element. The provider will verify that two systems "
          "are capable of a peer relationship. If endpoints are "
          "assigned to the pipe, the same number of source and target "
          "endpoints must be supplied by the client to form a set of "
          "endpoint pairs. If ReplicationPipe is not supplied as an "
          "input parameter, a new pipe is created. If a pipe is "
          "supplied, a new set of endpoints is assigned to the "
          "existing pipe. \n"
          "\n"
          "If Success (0) is returned, the function completed "
          "successfully. \n"
          "\n"
          "A return value of Not Supported (1) indicates the method is "
          "not supported. \n"
          "\n"
          "A return value of Busy (0x1000) indicates the method is not "
          "supported. \n"
          "\n"
          "All other values indicate some type of error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
          "Busy", "Method Reserved", "Vendor Specific" }]
   uint32 CreateOrModifyReplicationPipe (
      
         [IN, Description (
             "A user-friendly name for the element created.")]
      string PipeElementName,
      
         [Required, IN, Description (
             "One of the two peer systems participating in the "
             "established peer-to-peer connection. If the provider "
             "supports uni-directional connections, this must identify "
             "the system hosting replica source elements.")]
      CIM_ComputerSystem REF SourceSystem,
      
         [Required, IN, Description (
             "One of the two peer systems participating in the "
             "established peer-to-peer connection. If the provider "
             "supports uni-directional connections, this must identify "
             "the system hosting replica target elements.")]
      CIM_ComputerSystem REF TargetSystem,
      
         [IN, Description (
             "References to source system endpoints/ports assigned to "
             "the pipe. If a new pipe is created, this is the initial "
             "set of endpoints assigned. If an existing pipe is "
             "modified, this set replaces the previous set. The list "
             "must be null if a provider does not allow the client to "
             "manage port assignment.")]
      CIM_ProtocolEndpoint REF SourceEndpoint[],
      
         [IN, Description (
             "References to target system endpoints/ports assigned to "
             "the pipe. If a new pipe is created, this is the initial "
             "set of endpoints assigned. If an existing pipe is "
             "modified, this set replaces the previous set. The list "
             "must be null if a provider does not allow the client to "
             "manage port assignment.")]
      CIM_ProtocolEndpoint REF TargetEndpoint[],
      
         [IN, Description (
             "The setting properties to be maintained for the "
             "peer-to-peer connection."), 
          EmbeddedInstance ( "CIM_SettingData" )]
      string Goal,
      
         [IN, OUT, Description (
             "Reference to the created or modified NetworkPipe.")]
      CIM_NetworkPipe REF ReplicationPipe); 

      [Implemented, Experimental, Description (
          "Create (or start a job to create) a replication buffer that "
          "buffers asynchronous write operations for remote mirror "
          "pairs. The buffer is an instance of CIM_Memory with an "
          "AssociatedMemory association to a hosting system or to a "
          "replication network pipe. The buffer element may be created "
          "based on a StorageExtent, in a pool or in a manner opaque "
          "to a client. If 0 is returned, the function completed "
          "successfully and no ConcreteJob instance is created. If "
          "0x1000 is returned, a ConcreteJob is started, a reference "
          "to which is returned in the Job output parameter. A return "
          "value of 1 indicates the method is not supported. All other "
          "values indicate some type of error condition. \n"
          "\n"
          "If Job Completed with No Error (0) is returned, the "
          "function completed successfully and a ConcreteJob instance "
          "is not created. \n"
          "\n"
          "If Method Parameters Checked - Job Started (0x1000) is "
          "returned, a ConcreteJob is started, a reference to which is "
          "returned in the Job output parameter. \n"
          "\n"
          "A return value of Not Supported (1) indicates the method is "
          "not supported. \n"
          "\n"
          "All other values indicate some type of error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 CreateReplicationBuffer(
      
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if the task "
             "completed).")]
      CIM_ConcreteJob REF Job,
      
         [Required, IN, Description (
             "The hosting system or replication pipe that will be "
             "antecedent to the created buffer.")]
      CIM_ManagedElement REF Host,
      
         [IN, Description (
             "Reference to a component extent for the buffer element.")]
      CIM_StorageExtent REF TargetElement,
      
         [IN, Description (
             "Reference to a container pool for the buffer element.")]
      CIM_StoragePool REF TargetPool,
      
         [OUT, Description (
             "Reference to the created replica buffer element.")]
      CIM_Memory REF ReplicaBuffer); 

      [Implemented, Description (
          "Start a job to create (or modify) a specified storage "
          "element from specified input StorageExtents. The created or "
          "modified storage element can be a StorageExtent, "
          "StorageVolume, LogicalDisk, or StoragePool. An input list "
          "of InElements must be specified. The GetAvailableExtents "
          "method can be used to get a list of valid extents that can "
          "be used to achieve a desired goal. Validity of the extents "
          "is determined by the implementation. As an input parameter, "
          "Size specifies the desired size of the element. As an "
          "output parameter, it specifies the size achieved. Space is "
          "taken from the input InElements. The desired Settings for "
          "the element are specified by the Goal parameter. If the "
          "size of Extents passed is less than the size requested, "
          "then the capacity is drawn from the extents in the order, "
          "left to right, that the Extents were specified. The partial "
          "consumption of an Extent is represented by an Extent for "
          "the capacity used and an Extent for the capacity not used. "
          "If the Size is NULL, then a configuration using all Extents "
          "passed will be attempted. If the requested size cannot be "
          "created, no action will be taken, and the Return Value will "
          "be 4097/0x1001. Also, the output value of Size is set to "
          "the nearest possible size. If 0 is returned, the function "
          "completed successfully and no ConcreteJob instance was "
          "required. If 4096/0x1000 is returned, a ConcreteJob will be "
          "started to create the element. The Job's reference will be "
          "returned in the output parameter Job."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", "Unknown",
          "Timeout", "Failed", "Invalid Parameter", "In Use",
          "DMTF Reserved", "Method Parameters Checked - Job Started",
          "Size Not Supported", "Method Reserved", "Vendor Specific" }]
   uint32 CreateOrModifyElementFromElements( 
         [IN, Description (
             "A end user relevant name for the element being created. "
             "If NULL, then a system-supplied default name can be "
             "used. The value will be stored in the 'ElementName' "
             "property for the created element. If not NULL, this "
             "parameter will supply a new name when modifying an "
             "existing element.")]
      string ElementName, 
         [Required, IN, Description (
             "Enumeration indicating the type of element being created "
             "or modified. If the input parameter TheElement is "
             "specified when the operation is a 'modify', this type "
             "value must match the type of that instance. The actual "
             "CIM class of the created TheElement can be "
             "vendor-specific, but it must be a derived class of the "
             "appropriate CIM class -- i.e., CIM_StorageVolume, "
             "CIM_StorageExtent, CIM_LogicalDisk, or CIM_StoragePool."), 
          ValueMap { "0", "1", "2", "3", "4", "5", "..",
          "32768..65535" }, 
          Values { "Unknown", "Reserved", "Storage Volume",
             "Storage Extent", "Storage Pool", "Logical Disk",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 ElementType, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "The requirements for the element to maintain. If set to "
             "a null value, the default configuration associated with "
             "the Service will be used. This parameter should be a "
             "reference to a Setting, SettingData, or Profile "
             "appropriate to the element being created. If not NULL, "
             "this parameter will supply a new Goal when modifying an "
             "existing element.")]
      CIM_ManagedElement REF Goal, 
         [IN, OUT, Description (
             "As an input parameter Size specifies the desired size. "
             "If not NULL, this parameter will supply a new size when "
             "modifying an existing element. As an output parameter "
             "Size specifies the size achieved."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 Size, 
         [Required, IN, Description (
             "Array of references to storage element instances that "
             "are used to create or modify TheElement.")]
      CIM_StorageExtent REF InElements[], 
         [IN, OUT, Description (
             "As an input parameter: if null, creates a new element. "
             "If not null, then the method modifies the specified "
             "element. As an output parameter, it is a reference to "
             "the resulting element.")]
      CIM_LogicalElement REF TheElement); 

      [Implemented, Experimental, Description (
          "This method requests that the system rescan SCSI devices "
          "for changes in their configuration. If called on a "
          "general-purpose host, the changes are reflected in the list "
          "of devices available to applications (for example, the UNIX "
          "'device tree'. This method may also be used on a storage "
          "appliance to force rescanning of attached SCSI devices. \n"
          "\n"
          "This operation can be disruptive; optional parameters allow "
          "the caller to limit the scan to a single or set of SCSI "
          "device elements. All parameters are optional; if parameters "
          "other Job are passed in as null, a full scan is invoked."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6..4095", "4096",
          "4097", "4098", "4099", "4100", "..", "32768..65535" }, 
       Values { "Success", "Not Supported", "Unknown", "Timeout",
          "Failed", "Invalid Parameter", "DMTF Reserved",
          "Invalid connection type", "Invalid Initiator",
          "No matching target found", "No matching LUs found",
          "Prohibited by name binding configuration", "DMTF Reserved",
          "Vendor Specific" }]
   uint32 ScsiScan ( 
         [IN, OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
      
         [IN, OUT, Description (
             "The type of connection, constrains the scan to initiator "
             "ports of this type. Only used if the Initiators "
             "parameter is null."), 
          ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9" }, 
          Values { "Other", "Fibre Channel", "Parallel SCSI", "SSA",
             "IEEE 1394", "RDMA", "iSCSI", "SAS", "ADT" }, 
          ModelCorrespondence { 
             "CIM_SCSIProtocolEndpoint.ConnectionType" }]
      uint16 ConnectionType,
      
         [IN, OUT, Description (
             "The connection type, if the ConnectionType parameter is "
             "\"Other\".")]
      string OtherConnectionType,
      
         [IN, OUT, Description (
             "A list of references to initiators. Scanning will be "
             "limited to SCSI targets attached to these initiators. If "
             "this parameter is null and connection is specified, all "
             "initiators of that connection type are scanned. If this "
             "parameter and ConnectionType are null, all targets on "
             "all system initiators are probed.")]
      CIM_SCSIProtocolEndpoint REF Initiators[],
      
         [IN, OUT, Description (
             "A list of names or numbers for targets. These should be "
             "formatted to match the appropriate connection type, For "
             "example, PortWWNs would be specified for Fibre Channel "
             "targets.")]
      string Targets[],
      
         [IN, OUT, Description (
             "A list of SCSI logical unit numbers representing logical "
             "units hosted on the targets specified in the Targets "
             "argument.")]
      string LogicalUnits[]); 

      [Implemented, Experimental, Description (
          "Allows a client to request the Usage to be set if the "
          "client has access to the element supplied and the request "
          "is valid."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", "Unknown",
          "Timeout", "Failed", "Invalid Parameter", "Not Authorized",
          "DMTF Reserved", "Method Parameters Checked - Job Started",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestUsageChange(
      
         [IN, Description (
             "The action to perform."), 
          ValueMap { "2", "3", "..", "32768..65535" }, 
          Values { "Set", "Modify \"Other\" description only",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 Operation,
      
         [IN, Description (
             "Applicable requested usage/restriction -- see the "
             "appropriate Usage ValueMap."), 
          ModelCorrespondence { "CIM_StoragePool.Usage",
             "CIM_StorageExtent.Usage" }]
      uint16 UsageValue,
      
         [IN, Description (
             "New description text. Applicable when the usage value "
             "includes \"Other\"."), 
          ModelCorrespondence { 
             "CIM_StorageConfigurationService.RequestUsageChange.UsageValue" 
             }]
      string OtherUsageDescription,
      
         [OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
      
         [IN, Description (
             "The storage element to modify.")]
      CIM_LogicalElement REF TheElement ); 


      [Implemented, Experimental, Description (
          "Allows retrieving elements that meet the specified Usage. "
          "The criteria can be \"available only\", \"in use only\", or "
          "both."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..",
          "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", "Unknown",
          "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
          "Vendor Specific" }]
   uint32 GetElementsBasedOnUsage (
      
         [IN, Description (
             "Enumeration indicating the type of elements to get."), 
          ValueMap { "0", "2", "3", "4", "5", "..", "32768..65535" }, 
          Values { "Unknown", "StorageVolume", "StorageExtent",
             "StoragePool", "Logical Disk", "DMTF Reserved",
             "Vendor Specific" }]
      uint16 ElementType,
      
         [IN, Description (
             "The specific Usage to be retrieved."), 
          ModelCorrespondence { "CIM_StoragePool.Usage",
             "CIM_StorageExtent.Usage" }]
      uint16 Usage,
      
         [IN, Description (
             "Specifies whether to retrieve all elements, available "
             "elements only, or the elements that are in use."), 
          ValueMap { "0", "2", "3", "4", "..", "32768..65535" }, 
          Values { "Unknown", "All", "Available Only", "In Use Only",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 Criteria,
      
         [IN, Description (
             "Limit the search for the elements that satisfy the "
             "criteria to this StoragePool only. If null, all "
             "appropriate StoragePools will be considered.")]
      CIM_StoragePool REF ThePool,
      
         [OUT, Description (
             "Array of references to storage element instances "
             "retrieved.")]
      CIM_ManagedSystemElement REF TheElements[] ); 

	[Implemented, Description (
          "clearConfiguration")]
   uint32 clearConfiguration();
   [Implemented, Description (
          "This extrinsic method is to re-join the mirror of an existing "
          "logical drive. The degraded raid will return to the original "
          "configuration. If 0 is returned, the function completed "
          "successfully and no ConcreteJob was required. If "
          "4096/0x1000 is returned, a ConcreteJob will be started to "
          "join the broken mirror. Reference to the CIM_StorageExtent "
          "is returned in the DiskExtent parameter."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 RejoinMirror( 
         [IN, Description (
             "Reference to the element in StorageVolume.")]
      CIM_StorageVolume REF TheElement,
	  [IN, Description (
             "Copy data from disks that are being added to the existing VD."
			 "This will modify the existing VD and older dats will be copied to the VD.")]
      uint32 copyDataToVD,
	  [IN ( false ), OUT, Description (
             "Reference to the DiskExtent .")]
      CIM_StorageExtent REF DiskExtent[]);
   [Implemented, Description (
          "This extrinsic method is to view the mirror of an existing "
          "logical drive. The degraded raid will be shown for broken mirror. "
          "If 0 is returned, the function completed "
          "successfully and no ConcreteJob was required."
          "Reference to the CIM_StorageExtent is returned in "
          "the DiskExtent parameter."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 viewMirrorBreak( 
         [IN, Description (
             "Reference to the element in StorageVolume.")]
      CIM_StorageVolume REF TheElement,
	  	  [IN ( false ), OUT, Description (
             "Reference to the DiskExtent .")]
      CIM_StorageExtent REF DiskExtent[]);

};

//Package -cim::prov::smi13::hhr::extentcomposition::StoragePoolCompositeExtentProvider
[ Version ("1.0.0")]
class LSIESG_StoragePoolCompositeExtent : CIM_CompositeExtent {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 64 )]
   string StoragePool_InstanceID;

      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 64 )]
   string CompositeExtent_InstanceID;

};

//Package -cim::prov::smi13::hhr::physical::EnclosureChassisProvider
[ Version ("1.0.0")]
class LSIESG_EnclosureChassis : CIM_Chassis {

    [ Description (
          "The enclosure service tag.  This value not available for "
          "all enclosures."), 
       MaxLen ( 10 )]
 string ServiceTag;
    [ Description (
          "The enclosure asset tag.  This value not available for "
          "all enclosures."), 
       MaxLen ( 10 )]
 string AssetTag;

   [ Description ( 
          "The enclosure position in an enclosure daisy chain.")]
   uint8 PositionInChain;

    [ Description (
          "Backplane type for POMPANO enclosure.")]
    string BackplaneType;

    [ Description (
          "Config mode for POMPANO enclosure.")]
    string EnclConfigMode;


    [ Description (
          "Type of enclosrue.")]
    string EnclosureType;	

    [ Description (
          "Field replaceable unit.")]
    string FRU;	
	
    [ Description (
          "Backplane part for POMPANO enclosure.")]
    string BackplanePart;

    [ Description (
          "FW version for POMPANO enclosure.")]
    string FirmwareVersion;
	[ Description (
          "Connecting RAID Controllers SAS Address"), 
       MaxLen ( 256 )]
   string RaidContrSasAddr;

  [Implemented,Description (
          "This method sets the state of the location indicator"
          "(typically a flashing LED on the Enclosure) to support "
          "identification of the enclosure within its SAN."
          "Invoking the method with the parameter set to \"true\" "
          "turns the indicator on. Invoking the method with the "
          "parameter set to \"false\" turns the indicator off."), 
        ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
                   "32768..65535" }, 
        Values { "Success", "Not Supported", "Unspecified Error",
                "Timeout", "Failed", "Invalid Parameter", "Access Denied",
                "DMTF Reserved", "Vendor Specific" }]
        uint32 SetLocationIndicator ( );

		string ConnectorName;
		[Description {"location of the connector"}]
		string Location;
		
};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_AssociatedBattery : CIM_AssociatedBattery {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_SuppliesPower : CIM_SuppliesPower {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_SystemPackaging : CIM_SystemPackaging {

};

//Package -cim::prov::smi13::hhr::jobcontrol::LdInitializationJobProvider
[ Version ("1.0.0")]
class LSIESG_LdInitializationJob : CIM_ConcreteJob {
	[Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string AffectedComponent;	
	  [Description (
          "The scoping System's Name."), 
       MaxLen ( 256 )]
	string CardName;
	[Implemented, Description (
          "When the job is executing or has terminated without error, "
          "then this method returns no CIM_Error instance. However, if "
          "the job has failed because of some internal problem or "
          "because the job has been terminated by a client, then a "
          "CIM_Error instance is returned."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 GetError ( 
         [OUT, Description (
             "If the OperationalStatus on the Job is not \"OK\", then "
             "this method will return a CIM Error instance. Otherwise, "
             "when the Job is \"OK\", null is returned."), 
          EmbeddedInstance ( "CIM_Error" )]
      string Error); 
      
      [Implemented,Description (
          "Requests that the state of the job be changed to the value "
          "specified in the RequestedState parameter. Invoking the "
          "RequestStateChange method multiple times could result in "
          "earlier requests being overwritten or lost. \n"
          "If 0 is returned, then the task completed successfully. Any "
          "other return code indicates an error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported",
          "Unknown/Unspecified Error",
          "Can NOT complete within Timeout Period", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Transition Started",
          "Invalid State Transition",
          "Use of Timeout Parameter Not Supported", "Busy",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestStateChange( 
         [IN, Description (
             "RequestStateChange changes the state of a job. The "
             "possible values are as follows: \n"
             "Start (2) changes the state to 'Running'. \n"
             "Suspend (3) stops the job temporarily. The intention is "
             "to subsequently restart the job with 'Start'. It might "
             "be possible to enter the 'Service' state while "
             "suspended. (This is job-specific.) \n"
             "Terminate (4) stops the job cleanly, saving data, "
             "preserving the state, and shutting down all underlying "
             "processes in an orderly manner. \n"
             "Kill (5) terminates the job immediately with no "
             "requirement to save data or preserve the state. \n"
             "Service (6) puts the job into a vendor-specific service "
             "state. It might be possible to restart the job."), 
          ValueMap { "2", "3", "4", "5", "6", "7..32767",
             "32768..65535" }, 
          Values { "Start", "Suspend", "Terminate", "Kill", "Service",
             "DMTF Reserved", "Vendor Reserved" }]
      uint16 RequestedState, 
         [IN, Description (
             "A timeout period that specifies the maximum amount of "
             "time that the client expects the transition to the new "
             "state to take. The interval format must be used to "
             "specify the TimeoutPeriod. A value of 0 or a null "
             "parameter indicates that the client has no time "
             "requirements for the transition. \n"
             "If this property does not contain 0 or null and the "
             "implementation does not support this parameter, a return "
             "code of 'Use Of Timeout Parameter Not Supported' must be "
             "returned.")]
      datetime TimeoutPeriod);
	
};

//Package -cim::prov::smi13::hhr::jobcontrol::ForegroundInitializationJobProvider
[ Version ("1.0.0")]
class LSIESG_ForegroundInitializationJob : CIM_ConcreteJob {
	[Implemented, Description (
          "When the job is executing or has terminated without error, "
          "then this method returns no CIM_Error instance. However, if "
          "the job has failed because of some internal problem or "
          "because the job has been terminated by a client, then a "
          "CIM_Error instance is returned."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 GetError ( 
         [OUT, Description (
             "If the OperationalStatus on the Job is not \"OK\", then "
             "this method will return a CIM Error instance. Otherwise, "
             "when the Job is \"OK\", null is returned."), 
          EmbeddedInstance ( "CIM_Error" )]
      string Error); 
      
      [Implemented,Description (
          "Requests that the state of the job be changed to the value "
          "specified in the RequestedState parameter. Invoking the "
          "RequestStateChange method multiple times could result in "
          "earlier requests being overwritten or lost. \n"
          "If 0 is returned, then the task completed successfully. Any "
          "other return code indicates an error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported",
          "Unknown/Unspecified Error",
          "Can NOT complete within Timeout Period", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Transition Started",
          "Invalid State Transition",
          "Use of Timeout Parameter Not Supported", "Busy",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestStateChange( 
         [IN, Description (
             "RequestStateChange changes the state of a job. The "
             "possible values are as follows: \n"
             "Start (2) changes the state to 'Running'. \n"
             "Suspend (3) stops the job temporarily. The intention is "
             "to subsequently restart the job with 'Start'. It might "
             "be possible to enter the 'Service' state while "
             "suspended. (This is job-specific.) \n"
             "Terminate (4) stops the job cleanly, saving data, "
             "preserving the state, and shutting down all underlying "
             "processes in an orderly manner. \n"
             "Kill (5) terminates the job immediately with no "
             "requirement to save data or preserve the state. \n"
             "Service (6) puts the job into a vendor-specific service "
             "state. It might be possible to restart the job."), 
          ValueMap { "2", "3", "4", "5", "6", "7..32767",
             "32768..65535" }, 
          Values { "Start", "Suspend", "Terminate", "Kill", "Service",
             "DMTF Reserved", "Vendor Reserved" }]
      uint16 RequestedState, 
         [IN, Description (
             "A timeout period that specifies the maximum amount of "
             "time that the client expects the transition to the new "
             "state to take. The interval format must be used to "
             "specify the TimeoutPeriod. A value of 0 or a null "
             "parameter indicates that the client has no time "
             "requirements for the transition. \n"
             "If this property does not contain 0 or null and the "
             "implementation does not support this parameter, a return "
             "code of 'Use Of Timeout Parameter Not Supported' must be "
             "returned.")]
      datetime TimeoutPeriod);
	  	[Description (
          "The scoping System's Name."), 
       MaxLen ( 256 )]
	string CardName;
	  
	  [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string AffectedComponent;
	
};

//Package -cim::prov::smi13::hhr::jobcontrol::BackgroundInitializationJobProvider
[ Version ("1.0.0")]
class LSIESG_BackgroundInitializationJob : CIM_ConcreteJob {
	[Implemented, Description (
          "When the job is executing or has terminated without error, "
          "then this method returns no CIM_Error instance. However, if "
          "the job has failed because of some internal problem or "
          "because the job has been terminated by a client, then a "
          "CIM_Error instance is returned."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 GetError ( 
         [OUT, Description (
             "If the OperationalStatus on the Job is not \"OK\", then "
             "this method will return a CIM Error instance. Otherwise, "
             "when the Job is \"OK\", null is returned."), 
          EmbeddedInstance ( "CIM_Error" )]
      string Error); 
      
      [Implemented,Description (
          "Requests that the state of the job be changed to the value "
          "specified in the RequestedState parameter. Invoking the "
          "RequestStateChange method multiple times could result in "
          "earlier requests being overwritten or lost. \n"
          "If 0 is returned, then the task completed successfully. Any "
          "other return code indicates an error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported",
          "Unknown/Unspecified Error",
          "Can NOT complete within Timeout Period", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Transition Started",
          "Invalid State Transition",
          "Use of Timeout Parameter Not Supported", "Busy",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestStateChange( 
         [IN, Description (
             "RequestStateChange changes the state of a job. The "
             "possible values are as follows: \n"
             "Start (2) changes the state to 'Running'. \n"
             "Suspend (3) stops the job temporarily. The intention is "
             "to subsequently restart the job with 'Start'. It might "
             "be possible to enter the 'Service' state while "
             "suspended. (This is job-specific.) \n"
             "Terminate (4) stops the job cleanly, saving data, "
             "preserving the state, and shutting down all underlying "
             "processes in an orderly manner. \n"
             "Kill (5) terminates the job immediately with no "
             "requirement to save data or preserve the state. \n"
             "Service (6) puts the job into a vendor-specific service "
             "state. It might be possible to restart the job."), 
// Following Vendor specific extensions are only supported 
// "Start (2).      \n"
// "Resume (32770). \n"			 
          ValueMap { "2", "3", "4", "5", "6", "7..32767",
             "32768..65535" }, 
          Values { "Start", "Suspend", "Terminate", "Kill", "Service",
             "DMTF Reserved", "Vendor Reserved" }]
      uint16 RequestedState, 
         [IN, Description (
             "A timeout period that specifies the maximum amount of "
             "time that the client expects the transition to the new "
             "state to take. The interval format must be used to "
             "specify the TimeoutPeriod. A value of 0 or a null "
             "parameter indicates that the client has no time "
             "requirements for the transition. \n"
             "If this property does not contain 0 or null and the "
             "implementation does not support this parameter, a return "
             "code of 'Use Of Timeout Parameter Not Supported' must be "
             "returned.")]
      datetime TimeoutPeriod);
};

//Package -cim::prov::smi13::hhr::jobcontrol::CopybackJobProvider
[ Version ("1.0.0")]
class LSIESG_CopybackJob : CIM_ConcreteJob {
	[Implemented, Description (
          "When the job is executing or has terminated without error, "
          "then this method returns no CIM_Error instance. However, if "
          "the job has failed because of some internal problem or "
          "because the job has been terminated by a client, then a "
          "CIM_Error instance is returned."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 GetError ( 
         [OUT, Description (
             "If the OperationalStatus on the Job is not \"OK\", then "
             "this method will return a CIM Error instance. Otherwise, "
             "when the Job is \"OK\", null is returned."), 
          EmbeddedInstance ( "CIM_Error" )]
      string Error); 
      
      [Implemented,Description (
          "Requests that the state of the job be changed to the value "
          "specified in the RequestedState parameter. Invoking the "
          "RequestStateChange method multiple times could result in "
          "earlier requests being overwritten or lost. \n"
          "If 0 is returned, then the task completed successfully. Any "
          "other return code indicates an error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported",
          "Unknown/Unspecified Error",
          "Can NOT complete within Timeout Period", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Transition Started",
          "Invalid State Transition",
          "Use of Timeout Parameter Not Supported", "Busy",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestStateChange( 
         [IN, Description (
             "RequestStateChange changes the state of a job. The "
             "possible values are as follows: \n"
             "Start (2) changes the state to 'Running'. \n"
             "Suspend (3) stops the job temporarily. The intention is "
             "to subsequently restart the job with 'Start'. It might "
             "be possible to enter the 'Service' state while "
             "suspended. (This is job-specific.) \n"
             "Terminate (4) stops the job cleanly, saving data, "
             "preserving the state, and shutting down all underlying "
             "processes in an orderly manner. \n"
             "Kill (5) terminates the job immediately with no "
             "requirement to save data or preserve the state. \n"
             "Service (6) puts the job into a vendor-specific service "
             "state. It might be possible to restart the job."), 
// Following Vendor specific extensions are only supported 
// "Start (2).      \n"
// "Resume (32770). \n"			 
          ValueMap { "2", "3", "4", "5", "6", "7..32767",
             "32768..65535" }, 
          Values { "Start", "Suspend", "Terminate", "Kill", "Service",
             "DMTF Reserved", "Vendor Reserved" }]
      uint16 RequestedState, 
         [IN, Description (
             "A timeout period that specifies the maximum amount of "
             "time that the client expects the transition to the new "
             "state to take. The interval format must be used to "
             "specify the TimeoutPeriod. A value of 0 or a null "
             "parameter indicates that the client has no time "
             "requirements for the transition. \n"
             "If this property does not contain 0 or null and the "
             "implementation does not support this parameter, a return "
             "code of 'Use Of Timeout Parameter Not Supported' must be "
             "returned.")]
      datetime TimeoutPeriod);
};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_ConcreteComponent : CIM_ConcreteComponent {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_SAPAvailableForElement : CIM_SAPAvailableForElement {

};

//Package -cim::prov::smi13::hhr::disksparing::FailoverStorageExtentsCollectionProvider
[ Version ("1.0.0")]
class LSIESG_FailoverStorageExtentsCollection : SNIA_FailoverStorageExtentsCollection {
[Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string ComputerSystem_Name;
};

//Package -cim::prov::smi13::hhr::base::MegaRAIDHBAProvider
[ Version ("1.0.0")]
class LSIESG_MegaRAIDHBA : CIM_ComputerSystem {
	  [Description (
           "used in forming associations."
           "set to match CreationClassName of MegaRaid computer"
           "system instance")]
	 string DeviceType;
      [Description (
          "PatrolReadIterations specifies the number of times the patrolread"
          "operations have been performed on the megaraid controller.") ]
     uint32 PatrolReadIterations;
	 [Description (
          "If a thermal sensor is present, TemperatureROC will specifies"
		  "the internal ROC chip temperature.") ]
     uint8 TemperatureROC;
	 [Description (
          "If a thermal sensor is present, TemperatureCTRL will specifies"
		  "the internal Controller chip temperature.") ]
     uint8 TemperatureCtrl;
	 [Description (
          "Meta Data size") ]
     uint16 MetaData;
	 [Description (
          "1=Support PD shield state (diagnostics on array PD)") ]
     uint32 SupportShieldState;
	 [Description (
          "1 = support suspend and resume of background operations") ]
     uint32 SupportSuspendResumeBGops;
	 [Description (
          "1=Shield state array PD feature is enabled") ]
     uint32 EnableShieldState;
	 [Description (
          "1 = Use global spares for Emergency (if spare is incompatible without Emergency)") ]
     uint32 UseGlobalSparesForEmergency;
	 [Description (
          "1 = Use uncofgured good drives for Emergency)") ]
     uint32 UseUnconfGoodForEmergency;
	 [Description (
          "1 = Use Emergency spares for SMARTer)") ]
     uint32 UseEmergencySparesforSMARTer;
	 
	 [Description (
	"Idle minutes before device is spun down (0=use FW defaults) ")]
     uint16 SpinDownTime;
	
	[Description (
	"1 = spin down of hot spares Disabled, 0 = spin down of hot spares enabled ")]
     uint32 DisableSpinDownHS;
	 
	 [Description (
	"1=FastPath supported, 0=feature not supported")]
     string	 SupportFastPath;
	
	


	[Description (
          "Enable or Disable SCSI PI for controller."
		  "Remove any active protection information"), 
		  ValueMap { "0", "1" }, 
          Values { "PI is Disabled", "PI is Enabled"} ]
    uint32 enablePI;
	[Description (
          "Prevent import of SCSI PI protected logical disks."), 
		  ValueMap { "0", "1" }, 
          Values { "Allow import of SCSI DIF protected logical disks",
		  "Prevent import of SCSI DIF protected logical disks"} ]
    uint32 preventPIImport;
    

};

//Package -cim::prov::smi13::hhr::base::IntegratedRAIDControllerProvider
[ Version ("1.0.0")]
class LSIESG_IntegratedRAIDController : CIM_ComputerSystem {

		[Description (
          "Meta Data size") ]
     uint16 MetaData;	 
	 [Description (
           "used in forming associations."
           "set to match CreationClassName of MegaRaid computer"
           "system instance")]
   string DeviceType;
};
//Package -cim::prov::smi13::hhr::base::InitiatorTargetControllerProvider
[ Version ("1.0.0")]
class LSIESG_InitiatorTargetController : CIM_ComputerSystem {
		[Description (
          "Meta Data size") ]
     uint16 MetaData;
	 
          [Description (
           "used in forming associations."
           "set to match CreationClassName of MegaRaid computer"
           "system instance")]
   string DeviceType;
};
//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_StorageSettingsGeneratedFromCapabilities : CIM_StorageSettingsGeneratedFromCapabilities {

};

//Package -cim::prov::smi13::hhr::battery::BatteryPackageProvider
[ Version ("1.0.0")]
class LSIESG_BatteryPackage : CIM_PhysicalPackage {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_CompositeExtentBasedOn : CIM_CompositeExtentBasedOn {

};

//Package -cim::prov::smi13::hhr::jobcontrol::LdReconstructionJobProvider
[ Version ("1.0.0")]
class LSIESG_LdReconstructionJob : CIM_ConcreteJob {
	[Implemented, Description (
          "When the job is executing or has terminated without error, "
          "then this method returns no CIM_Error instance. However, if "
          "the job has failed because of some internal problem or "
          "because the job has been terminated by a client, then a "
          "CIM_Error instance is returned."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 GetError ( 
         [OUT, Description (
             "If the OperationalStatus on the Job is not \"OK\", then "
             "this method will return a CIM Error instance. Otherwise, "
             "when the Job is \"OK\", null is returned."), 
          EmbeddedInstance ( "CIM_Error" )]
      string Error); 

      [Implemented,Description (
          "Requests that the state of the job be changed to the value "
          "specified in the RequestedState parameter. Invoking the "
          "RequestStateChange method multiple times could result in "
          "earlier requests being overwritten or lost. \n"
          "If 0 is returned, then the task completed successfully. Any "
          "other return code indicates an error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported",
          "Unknown/Unspecified Error",
          "Can NOT complete within Timeout Period", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Transition Started",
          "Invalid State Transition",
          "Use of Timeout Parameter Not Supported", "Busy",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestStateChange( 
         [IN, Description (
             "RequestStateChange changes the state of a job. The "
             "possible values are as follows: \n"
             "Start (2) changes the state to 'Running'. \n"
             "Suspend (3) stops the job temporarily. The intention is "
             "to subsequently restart the job with 'Start'. It might "
             "be possible to enter the 'Service' state while "
             "suspended. (This is job-specific.) \n"
             "Terminate (4) stops the job cleanly, saving data, "
             "preserving the state, and shutting down all underlying "
             "processes in an orderly manner. \n"
             "Kill (5) terminates the job immediately with no "
             "requirement to save data or preserve the state. \n"
             "Service (6) puts the job into a vendor-specific service "
             "state. It might be possible to restart the job."), 	 
          ValueMap { "2", "3", "4", "5", "6", "7..32767",
             "32768..65535" }, 
          Values { "Start", "Suspend", "Terminate", "Kill", "Service",
             "DMTF Reserved", "Vendor Reserved" }]
      uint16 RequestedState, 
         [IN, Description (
             "A timeout period that specifies the maximum amount of "
             "time that the client expects the transition to the new "
             "state to take. The interval format must be used to "
             "specify the TimeoutPeriod. A value of 0 or a null "
             "parameter indicates that the client has no time "
             "requirements for the transition. \n"
             "If this property does not contain 0 or null and the "
             "implementation does not support this parameter, a return "
             "code of 'Use Of Timeout Parameter Not Supported' must be "
             "returned.")]
      datetime TimeoutPeriod);

};

//Package -cim::prov::smi13::hhr::jobcontrol::LdPoolExpansionJobProvider
[ Version ("1.0.0")]
class LSIESG_LdPoolExpansionJob : CIM_ConcreteJob {
	[Implemented, Description (
          "When the job is executing or has terminated without error, "
          "then this method returns no CIM_Error instance. However, if "
          "the job has failed because of some internal problem or "
          "because the job has been terminated by a client, then a "
          "CIM_Error instance is returned."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 GetError ( 
         [OUT, Description (
             "If the OperationalStatus on the Job is not \"OK\", then "
             "this method will return a CIM Error instance. Otherwise, "
             "when the Job is \"OK\", null is returned."), 
          EmbeddedInstance ( "CIM_Error" )]
      string Error); 

      [Implemented,Description (
          "Requests that the state of the job be changed to the value "
          "specified in the RequestedState parameter. Invoking the "
          "RequestStateChange method multiple times could result in "
          "earlier requests being overwritten or lost. \n"
          "If 0 is returned, then the task completed successfully. Any "
          "other return code indicates an error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported",
          "Unknown/Unspecified Error",
          "Can NOT complete within Timeout Period", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Transition Started",
          "Invalid State Transition",
          "Use of Timeout Parameter Not Supported", "Busy",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestStateChange( 
         [IN, Description (
             "RequestStateChange changes the state of a job. The "
             "possible values are as follows: \n"
             "Start (2) changes the state to 'Running'. \n"
             "Suspend (3) stops the job temporarily. The intention is "
             "to subsequently restart the job with 'Start'. It might "
             "be possible to enter the 'Service' state while "
             "suspended. (This is job-specific.) \n"
             "Terminate (4) stops the job cleanly, saving data, "
             "preserving the state, and shutting down all underlying "
             "processes in an orderly manner. \n"
             "Kill (5) terminates the job immediately with no "
             "requirement to save data or preserve the state. \n"
             "Service (6) puts the job into a vendor-specific service "
             "state. It might be possible to restart the job."), 	 
          ValueMap { "2", "3", "4", "5", "6", "7..32767",
             "32768..65535" }, 
          Values { "Start", "Suspend", "Terminate", "Kill", "Service",
             "DMTF Reserved", "Vendor Reserved" }]
      uint16 RequestedState, 
         [IN, Description (
             "A timeout period that specifies the maximum amount of "
             "time that the client expects the transition to the new "
             "state to take. The interval format must be used to "
             "specify the TimeoutPeriod. A value of 0 or a null "
             "parameter indicates that the client has no time "
             "requirements for the transition. \n"
             "If this property does not contain 0 or null and the "
             "implementation does not support this parameter, a return "
             "code of 'Use Of Timeout Parameter Not Supported' must be "
             "returned.")]
      datetime TimeoutPeriod);

};

//Package -cim::prov::smi13::hhr::ports::InitiatorProtocolEndpointProvider
[ Version ("1.0.0")]
class LSIESG_InitiatorProtocolEndpoint : CIM_SCSIProtocolEndpoint {
      [Description (
          "An arbitrary string that uniquely identifies the Physical "
          "Element and serves as the key of the Element. The Tag "
          "property can contain information such as asset tag or "
          "serial number data. The key for PhysicalElement is placed "
          "very high in the object hierarchy in order to independently "
          "identify the hardware or entity, regardless of physical "
          "placement in or on Cabinets, Adapters, and so on. For "
          "example, a hotswappable or removable component can be taken "
          "from its containing (scoping) Package and be temporarily "
          "unused. The object still continues to exist and can even be "
          "inserted into a different scoping container. Therefore, the "
          "key for Physical Element is an arbitrary string and is "
          "defined independently of any placement or location-oriented "
          "hierarchy."), 
       MaxLen ( 256 )]
   string Tag;
      [Description (
          "Phy index of the PHY assigned for this device connection")]
	
   uint8 PhyIndex;


};

//Package -cim::prov::smi13::hhr::physical::PhysicalCardProvider
[ Version ("1.0.0")]
class LSIESG_PhysicalCard : CIM_Card {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string ComputerSystem_Name;

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_HostedStoragePool : CIM_HostedStoragePool {

};

//Package -cim::prov::smi13::hhr::association::AvailableDiagnosticServiceProvider
[Association,  Version ("1.0.0")]
class LSIESG_AvailableDiagnosticService : CIM_AvailableDiagnosticService {
boolean IsExclusiveForME;
};

//Package -cim::prov::smi13::hhr::diagnostics::SelfCheckTestProvider
[ Version ("1.0.0")]
class LSIESG_SelfCheckTest : CIM_DiagnosticTest {
	[Implemented, Description (
          "The RunDiagnostic method executes this test for the "
          "specified ManagedSystemElement (defined using the "
          "SystemElement input parameter). The capabilities for the "
          "diagnostic service indicate where the results from the test "
          "job are stored. How the test should execute, i.e. its "
          "settings, is defined in a DiagnosticSetting object (or by a "
          "subclass of DiagnosticSetting). A reference to a Setting "
          "object is specified using the Setting input parameter. If a "
          "reference is not passed into the method, then a default "
          "DiagnosticSetting SHALL be used. \n"
          "When RunDiagnostic starts execution, the settings, which "
          "are time sensitive, SHOULD be evaluated and captured. This "
          "is suggested since the DiagnosticSetting object MAY be "
          "modified at any time, and therefore the current test "
          "settings could be lost. \n"
          "If 0 is returned, the function completed successfully and "
          "no ConcreteJob instance is created. If 0x1000 a ConcreteJob "
          "will be started."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "0x1000", "..",
          "0x8000.." }, 
       Values { "Job completed with no error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "DMTF Reserved", "Method parameters checked - job started",
          "Method Reserved", "Vendor Specific" }]
   uint32 RunDiagnostic( 
         [IN, Description (
             "Specifies the element upon which the DiagnosticService "
             "SHOULD be run.")]
      CIM_ManagedElement REF ManagedElement, 
         [IN, Description (
             "Specifies the desired settings that SHOULD be applied to "
             "the Diagnostic. If null, then the Diagnostic's defaults "
             "MAY be used.")]
      CIM_DiagnosticSetting REF DiagSetting, 
         [IN, Description (
             "Specifies the desired settings that SHOULD be applied to "
             "the resulting Job. If null and a resulting Job is "
             "required (i.e., the Diagnostic is long running), then "
             "the test's defaults MAY be used.")]
      CIM_JobSettingData REF JobSetting, 
         [IN ( FALSE ), OUT, Description (
             "Returns a handle to the resulting Job.")]
      CIM_ConcreteJob REF Job); 
	  string RegisteredProfile_InstanceID;
	  
};

//Package -cim::prov::smi13::hhr::blockservices::StoragePoolProvider
[ Version ("1.0.0")]
class LSIESG_StoragePool : CIM_StoragePool {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string ComputerSystem_Name;
      [Description (
          "The The hard disk write cache policy.  Changes impact all drives in the pool.  "
          "In most this value should be left at the default setting."), 
      ValueMap { "0", "1", "2" }, 
      Values { "Default", "Write cache enabled", "Write cache disabled" }]
   uint16 HardDriveWriteCachePolicy;
	  [Experimental, Description ( 
          "Indicates the intended usage or any restrictions that "
          "may have been imposed on the usage of this component. "
          "For example, a storage pool may be reserved for use by "
          "the block server. In that case the Usage of the storage "
          "pool is marked as \"Reserved for the ComputerSystem\". "
          "In the case of \"Other\", see OtherUsageDescription for "
          "more information." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "..", 
          "32768..65535" }, 
       Values { "Other", "Unrestricted", 
          "Reserved for ComputerSystem (the block server)", 
          "Reserved as a Delta Replica Container", 
          "Reserved for Migration Services", 
          "Reserved for Local Replication Services", 
          "Reserved for Remote Replication Services", 
          "Reserved for Sparing", "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_StoragePool.OtherUsageDescription" }]
   uint16 Usage; 
   
   [Description (
          "Vendor-unique extension attribute to facilitate associations"), 
       Units ( "Bytes" )]
   uint64 StoragePool_SpaceConsumed;

   [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string StoragePool_InstanceID;

   [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string Parentstoragepool_InstanceID;

   
   [Description (
          "OtherIdentifyingInfo captures additional data, beyond "
          "DeviceID information, that could be used to identify a "
          "LogicalDevice. One example would be to hold the Operating "
          "System's user friendly name for the Device in this "
          "property."), 
       MaxLen ( 256 ), ArrayType ( "Indexed" ),
       ModelCorrespondence { 
          "CIM_LogicalDevice.IdentifyingDescriptions" }]
   string OtherIdentifyingInfo[];

      [Implemented, Description (
          "For pools that support discrete sizes for volume or pool "
          "creation, this method can be used to retrieve a list of "
          "supported sizes. Note that different pool implementations "
          "may support either or both the GetSupportedSizes and "
          "GetSupportedSizeRanges methods at different times, "
          "depending on Pool configuration. Also note that the "
          "advertised sizes may change after the call due to requests "
          "from other clients. If the pool currently only supports a "
          "range of sizes, then the return value will be set to 1."), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported",
          "Use GetSupportedSizeRange instead" }]
   uint32 GetSupportedSizes ( 
         [IN, Description (
             "The type of element for which supported sizes are "
             "reported for."), 
          ValueMap { "2", "3", "4" }, 
          Values { "Storage Pool", "Storage Volume", "Logical Disk" }]
      uint16 ElementType, 
         [IN, Description (
             "The StorageSetting for which supported sizes should be "
             "reported for.")]
      CIM_StorageSetting REF Goal, 
         [IN , OUT, Description (
             "List of supported sizes for a Volume/Pool creation or "
             "modification."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 Sizes[] ); 

      [Implemented, Description (
          "For pools that that support a range of sizes for volume or "
          "pool creation, this method can be used to retrieve the "
          "supported range. Note that different pool implementations "
          "may support either or both the GetSupportedSizes and "
          "GetSupportedSizeRanges methods at different times, "
          "depending on Pool configuration. Also note that the "
          "advertised sizes may change after the call due to requests "
          "from other clients. If the pool currently only supports "
          "discrete sizes, then the return value will be set to 1."), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported",
          "Use GetSupportedSizes instead" }]
   uint32 GetSupportedSizeRange ( 
         [IN, Description (
             "The type of element for which supported size ranges are "
             "reported for."), 
          ValueMap { "2", "3", "4" }, 
          Values { "Storage Pool", "Storage Volume", "Logical Disk" }]
      uint16 ElementType, 
         [IN, Description (
             "The StorageSetting for which supported size ranges "
             "should be reported for.")]
      CIM_StorageSetting REF Goal, 
         [IN , OUT, Description (
             "The minimum size for a volume/pool in bytes."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 MinimumVolumeSize, 
         [IN , OUT, Description (
             "The maximum size for a volume/pool in bytes."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 MaximumVolumeSize, 
         [IN , OUT, Description (
             "A volume/pool size must be a multiple of this value "
             "which is specified in bytes."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 VolumeSizeDivisor); 

      [Implemented, Description (
          "This method can be used to retrieve a list of available "
          "Extents that may be used in the creation or modification of "
          "a StoragePool, StorageVolume, or LogicalDisk. The "
          "GetAvailableExtents method MUST return the Extents from the "
          "set of Component Extents of the Pool on which the method is "
          "being invoked. The returned Extents are available at the "
          "time the method returns. There is no guarantee that the "
          "same Extents will be available later. This method MUST "
          "return the Extents that are not being used as supporting "
          "capacity for any other Pools, Volumes, or LogicalDisks that "
          "have been allocated from this Pool. The Extent returned "
          "MUST be a component Extent of the Pool or subdivisions of a "
          "component Extent, the subdivisions themselves represented "
          "as Extents."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..",
          "4098..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", "Unknown",
          "Timeout", "Failed", "Invalid Parameter", "In Use",
          "DMTF Reserved", "Method Reserved", "Vendor Specific" }]
   uint32 GetAvailableExtents ( 
         [IN, Description (
             "The StorageSetting (Goal) for which supported extents "
             "should be retrieved as available. \n"
             "If a NULL is passed for the Goal, the method will return "
             "all available extents, regardless of the goal. There "
             "exists a possibility of error in creating a Pool, "
             "Volume, or LogicalDisk retrieved in this manner.")]
      CIM_StorageSetting REF Goal, 
         [OUT, Description (
             "List of references to available StorageExtents, or "
             "subclass instances.")]
      CIM_StorageExtent REF AvailableExtents[] ); 
      
      [Implemented, Description (
          "This method is used to configure the hard disk write "
          "cache for all disks that make up the pool.  Note that "
          "only pools that have at least one volume are eligible "
          "for configuration."), 
      ValueMap {"0", "1", "2", "3"}, 
      Values {"Method completed OK", "Method not supported",
          "Bad Parameter", "Failed"}]
      uint32 SetHardDriveWriteCachePolicy ( 
         [IN, Description (
          "The hard disk write cache policy to use. "),
           ValueMap {"0", "1", "2"}, 
           Values {"Use default", "Enable write cache", "Disable write cache"}]
      uint16 WriteCachePolicy); 
	  
	  [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string AffectedComponent;
};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_OwningCollectionElement : CIM_OwningCollectionElement {

};

//Package -cim::prov::smi13::hhr::disksparing::SpareConfigurationServiceProvider
[ Version ("1.0.0")]
class LSIESG_SpareConfigurationService : SNIA_SpareConfigurationService {
	[Implemented, Description (
          "This method causes the data in the StorageExtent to be "
          "rebuilt from the other members of the StorageRedundancySet."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100", "4101..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Target is Not a Member of a StorageRedundancySet",
          "Rebuild already in Progress",
          "Method Reserved", "Vendor Specific" }]
   uint32 RebuildStorageExtent (
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
         [Required, IN, OUT (false), Description (
             "The StorageExtent that will be rebuilt.")]
      CIM_StorageExtent REF Target);

	[Implemented, Description (
          "This method requests that the reference target element be checked"
	  "with a given check type and with a given check mode."
	  "If a check mode of 1 Run One Time is requested, "
	  "then the element check shall run once. If a check mode of 2 Continuous, "
	  "then the element shall be checked and checked again until the ConcreteJob "
	  "instance, referenced by the Job paramter, is terminated. "
	  "The method may return the following error codes. Many of "
	  "the return codes a normal return codes; "
	  "The following documents the return codes unique to this method."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Storage Element Check Already in Progress",
          "Method Reserved", "Vendor Specific" }]
   uint32 CheckStorageElement(
	[IN, Description (""),
             ValueMap{"1","2","3","4"},
             Values {"Default", "Parity", "Bad Block", "Replication"}]
      uint16 CheckType,
	[IN,Description(""),
             ValueMap{"1","2"},	
             Values {"Run One Time", "Continuous"}]
      uint16 CheckMode,
	[In] CIM_LogicalElement REF TargetElement,
	[Out] CIM_ConcreteJob REF Job);

	[Implemented, Description (
	  "The following documents the return codes unique to this method."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Storage Element Check Already in Progress",
          "Method Reserved", "Vendor Specific" }]
   uint32 SetPatrolReadOperationMode(
	[IN, Description (""),
             ValueMap{"0","1","2"},
             Values {"Manual", "Auto", "Disable"}]
      uint16 OperationMode,
	[In] CIM_LogicalElement REF TargetElement);
	
	[Implemented, Description (
          "Requests Patrol read Operation mode "
          "current value.")]
   uint32 GetPROperationMode (
         [IN ( false ), OUT, Description (
             "The record data.")]
      uint8 OperationMode,
	[In] CIM_LogicalElement REF TargetElement); 
	
	[Implemented, Description (
          "This method unassigns spares and returns the StorageExtents "
          "to the primordial StoragePool."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Multiple Primordial StoragePools",
          "Spares Are Not Compatible",
          "Method Reserved", "Vendor Specific" }]

   uint32 UnassignSpares (
	[IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
        [IN, OUT (false), Description (
             "The primordial StoragePool to which the unassigned "
             "StorageExtents are to be returned.  This parameter "
             "does not need to be specified if there is only one "
             "primordial StoragePool.")]
      CIM_StoragePool REF InPool,
        [Required, IN, OUT (false), Description (
             "An array of references to StorageExtents that are spares.")]
      CIM_StorageExtent REF InExtents[]);

	[Implemented, Description (
          "This method checks the parity data in the "
          "StorageRedundancySet to ensure that it is consistent with "
          "the real data. \n"
          "If no StorageRedundancySet is specified, all "
          "StorageRedundancySets are checked."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Consistency Check Already in Progress",
        "No Parity to Check",
          "Method Reserved", "Vendor Specific" }]
   uint32 CheckParityConsistency (
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
         [Required, IN, OUT (false), Description (
             "The StorageExtent that will be rebuilt.")]
      CIM_StorageExtent REF Target);

	[Implemented, Description (
          "This method repairs parity consistency problems found "
          "by the CheckParityConsistency method."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Method Reserved", "Vendor Specific" }]
   uint32 RepairParity (
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
         [Required, IN, OUT (false), Description (
             "The StorageExtent that will be rebuilt.")]
      CIM_StorageExtent REF Target);

	[Implemented, Description (
          "This method assigns one or more primordial StorageExtents "
          "as spares.  Once a spare is assigned, the storage system "
          "can use it to spare a failed StorageExtent associated to a "
          "StorageRedundancySet.  Depending on the capabilities of the "
          "storage system, the spare may failover the failed extent "
          "or may remain a spare.  \n"
          "The spare extents may be designated to spare for a "
          "specific StorageRedundancySet (dedicated) or may be used "
          "to spare for any compatible StorageRedundancySet (global)."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100", "4101..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Multiple Primordial StoragePools",
          "Spares Are Not Compatible",
          "StorageExtent is in use",
          "Method Reserved", "Vendor Specific" }]
   uint32 AssignSpares (
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
         [IN, OUT (false), Description (
             "The primordial StoragePool that contains the "
             "StorageExtents.  This parameter "
             "does not need to be specified if there is only one "
             "primordial StoragePool.")]
      CIM_StoragePool REF InPool,
         [Required, IN, OUT (false), Description (
             "An array of references to StorageExtents that are to be "
             "assigned as spares.")]
      CIM_StorageExtent REF InExtents[],
         [IN, OUT (false), Description (
             "If specified, the spares will only spare for "
             "StorageExtents in this StorageRedundancySet (dedicated). "
             "If no reference is specified, the spares can "
             "spare for any compatible StorageRedundancySet (global).")]
      CIM_StorageRedundancySet REF RedundancySet);
      
[Implemented, Description (
          "This method identify disk extents instances that are candidates "
          "for use as either a global or dedicated hot spare "),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100", "4101..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Multiple Primordial StoragePools",
          "Spares Are Not Compatible",
          "StorageExtent is in use",
          "Method Reserved", "Vendor Specific" }]
   uint32 GetAvailableSpareExtents (
         [IN ( false ), OUT, Description (
             "Reference to the DiskExtent .")]
      CIM_StorageExtent REF DiskExtent[],
         [IN, OUT (false), Description (
             "The primordial StoragePool that contains the "
             "StorageExtents.  This parameter "
             "does not need to be specified if there is only one "
             "primordial StoragePool.")]
      CIM_StoragePool REF InPool,
         [IN, OUT (false), Description (
             "If specified, the spares will only spare for "
             "StorageExtents in this StorageRedundancySet (dedicated). "
             "If no reference is specified, the spares can "
             "spare for any compatible StorageRedundancySet (global).")]
      CIM_StorageRedundancySet REF RedundancySet);

	[Implemented, Description (
          "This method initiates a copyback operation.  Copyback "
          "moves data from a configured drive to unconfigured or "
          "spare drive.  Generally this would be done when source "
          "drive failure is predicted."),
       ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"},
       Values {"Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "Method Parameters Checked - Job Started",
          "Drives not compatible", "Destination drive is in use",
          "Source drive wrong state"}]
   uint32 Copyback (
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null on failure).")]
      CIM_ConcreteJob REF Job,
         [Required, IN, OUT (false), Description (
             "The disk to be copied.")]      
      CIM_DiskExtent REF Source,
         [Required, IN, OUT (false), Description (
             "The destination of the copied data.")]
      CIM_DiskExtent REF Destination);
};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_AssociatedAlarm : CIM_AssociatedAlarm {

};

//Package -cim::prov::smi13::hhr::ports::sasinitiator::ATAProtocolEndpointProvider
[ Version ("1.0.0")]
class LSIESG_ATAProtocolEndpoint : CIM_ATAProtocolEndpoint {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_PackageInChassis : CIM_PackageInChassis {

};

//Package -cim::prov::smi13::hhr::diagnostics::HelpServiceProvider
[ Version ("1.0.0")]
class LSIESG_HelpService : CIM_HelpService {
	[Implemented, Description (
          "The GetHelp method produces, as an OUT parameter, a string "
          "containing document information as specified by the input "
          "parameters. The input parameters are expected to be valid "
          "sets of values from the corresponding indexed properties of "
          "this class."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "0x1000",
          "0x1001", "0x1002..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Document returned with no error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "DMTF Reserved", "Busy",
          "Requested Document not found", "Method Reserved",
          "Vendor Reserved" }]
   uint32 GetHelp(
      
         [IN, Description (
             "The name/id of the requested document or the reference "
             "to the associated document."), 
          ModelCorrespondence { "CIM_HelpService.DocumentsAvailable",
             "CIM_HelpServiceAvailableToFile.UserOfService" }]
      string RequestedDocument,
      
         [IN, OUT, Description (
             "The requested document format is passed in. The actual "
             "document format is returned."), 
          ValueMap { "0", "1", "2", "3", "4", "5", "6" }, 
          Values { "Don't Care", "Other", "XML", "HTML", "Binary",
             "Executable", ".hlp" }, 
          ModelCorrespondence { "CIM_HelpService.DocumentFormat" }]
      uint16 Format,
      
         [IN, Description (
             "The requested delivery mechanism."), 
          ValueMap { "1", "2", "3", "5", "6" }, 
          Values { "Other", "File Contents", "File Pointer", "URL",
             "Program" }, 
          ModelCorrespondence { "CIM_HelpService.DeliveryOptions" }]
      uint16 RequestedDelivery,
      
         [IN ( false ), OUT, Description (
             "If RequestedDelivery = \n"
             "File Contents, then the string contains the contents. \n"
             "File Pointer, then the string contains a pointer to the "
             "file. \n"
             "File Reference, then the string contains a REF to a "
             "CIM_LogicalFile instance. \n"
             "URL, then then the string contains a URL to the help "
             "site. \n"
             "Program, then the string is empty; the program was "
             "launched.")]
      string DocumentInfo ); 


};

//Package -cim::prov::smi13::hhr::blockservices::GeneratedStorageSettingProvider
[ Version ("1.0.0")]
class LSIESG_GeneratedStorageSetting :  LSIESG_StorageSetting {

    [Write, Description (
         "Vendor-unique extension specifying whether data encryption is applied "
         "to the volume(s) associated with this setting.  \"None\" indicates the volume "
        "or pool can not be encrypted, or in the case of an volume creation parameter that "
        "encryption is not required, \"Ready\" means "
        "the volume or pool is capable of  encryption but is currently unsecured, "
        "\"Secured\" means the volume or pool access is controlled by a security key." ),
     ValueMap { "0", "1", "2"}, 
     Values { "None", "Ready", "Secured"}]
   uint16 Encryption;

   [Description (
          "The scoping System's Name for the Provider generating this "
          "Indication."),
       MaxLen ( 256 )]
   string SystemName;
[Description ( 
          "DataRedundancyDefault describes the default number of "
          "complete copies of data that can be maintained. Examples "
          "would be RAID 5 where 1 copy is maintained and RAID 1 "
          "where 2 or more copies are maintained. Possible values "
          "are 1 to n. The bounds for the redundancy (max and min) "
          "are defined by DataRedundancyMax and DataRedundancyMin." ), 
       MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.DataRedundancyMax", 
          "CIM_StorageCapabilities.DataRedundancyMin" }]
   uint16 DataRedundancyDefault;
   
  [Write, Description (
		"Vendor-unique extension specifying whether protection information is applied "
        "to the volume(s) associated with this setting. \"No SCSI protection Type Used\" means"
		"no protection type used. \"supportLdPIType1\" indicates the volume "
        "or pool is capable of LD SCSI PI Type 1. \"supportLdPIType2\" means the volume or pool "
		"is capable of LD SCSI PI Type 2. \"supportLdPIType3\" means the volume or pool " 
        "is capable of LD SCSI PI Type 3." ),
     ValueMap { "0", "1", "2", "3"}, 
     Values { "No SCSI protection Type Used","supportLdPIType1 ", "supportLdPIType2", "supportLdPIType3"}]
   uint32 PIType;
};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_HostedCollection : CIM_HostedCollection {

};

//Package -cim::prov::smi13::hhr::jobcontrol::BadBlockScanJobProvider
[ Version ("1.0.0")]
class LSIESG_BadBlockScanJob : CIM_ConcreteJob {
	[Description (
          "The scoping System's Name."), 
       MaxLen ( 256 )]
	string CardName;
	[Implemented, Description (
          "When the job is executing or has terminated without error, "
          "then this method returns no CIM_Error instance. However, if "
          "the job has failed because of some internal problem or "
          "because the job has been terminated by a client, then a "
          "CIM_Error instance is returned."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 GetError ( 
         [OUT, Description (
             "If the OperationalStatus on the Job is not \"OK\", then "
             "this method will return a CIM Error instance. Otherwise, "
             "when the Job is \"OK\", null is returned."), 
          EmbeddedInstance ( "CIM_Error" )]
      string Error); 

      [Implemented,Description (
          "Requests that the state of the job be changed to the value "
          "specified in the RequestedState parameter. Invoking the "
          "RequestStateChange method multiple times could result in "
          "earlier requests being overwritten or lost. \n"
          "If 0 is returned, then the task completed successfully. Any "
          "other return code indicates an error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported",
          "Unknown/Unspecified Error",
          "Can NOT complete within Timeout Period", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Transition Started",
          "Invalid State Transition",
          "Use of Timeout Parameter Not Supported", "Busy",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestStateChange( 
         [IN, Description (
             "RequestStateChange changes the state of a job. The "
             "possible values are as follows: \n"
             "Start (2) changes the state to 'Running'. \n"
             "Suspend (3) stops the job temporarily. The intention is "
             "to subsequently restart the job with 'Start'. It might "
             "be possible to enter the 'Service' state while "
             "suspended. (This is job-specific.) \n"
             "Terminate (4) stops the job cleanly, saving data, "
             "preserving the state, and shutting down all underlying "
             "processes in an orderly manner. \n"
             "Kill (5) terminates the job immediately with no "
             "requirement to save data or preserve the state. \n"
             "Service (6) puts the job into a vendor-specific service "
             "state. It might be possible to restart the job."), 
// Following Vendor specific extensions are only supported 
// "Start (2).      \n"
// "Resume (32770). \n"			 
          ValueMap { "2", "3", "4", "5", "6", "7..32767",
             "32768..65535" }, 
          Values { "Start", "Suspend", "Terminate", "Kill", "Service",
             "DMTF Reserved", "Vendor Reserved" }]
      uint16 RequestedState, 
         [IN, Description (
             "A timeout period that specifies the maximum amount of "
             "time that the client expects the transition to the new "
             "state to take. The interval format must be used to "
             "specify the TimeoutPeriod. A value of 0 or a null "
             "parameter indicates that the client has no time "
             "requirements for the transition. \n"
             "If this property does not contain 0 or null and the "
             "implementation does not support this parameter, a return "
             "code of 'Use Of Timeout Parameter Not Supported' must be "
             "returned.")]
      datetime TimeoutPeriod);
      
      [Description (
          "PatrolReadIterations specifies the number of time the patrolread"
          "operation is been performed on the megaraid controller.") ]
     uint32 PatrolReadIterations;

};

//Package -cim::prov::smi13::hhr::logs::EventLogProvider
[ Version ("1.0.0")]
class LSIESG_EventLog : CIM_MessageLog {
	[Description (
          "The scoping System's Name."), 
       MaxLen ( 256 )]
   string SystemName;
	[Implemented, Description (
          "Requests that the Log's iteration identifier be advanced or "
          "retreated a specific number of records, or set to the entry "
          "at a specified numeric location. These two different "
          "behaviors are accomplished using the input parameters of "
          "the method. Advancing or retreating is achieved by setting "
          "the MoveAbsolute boolean to FALSE, and then specifying the "
          "number of entries to advance or retreat as positive or "
          "negative values in the RecordNumber parameter. Moving to a "
          "specific record number is accomplished by setting the "
          "MoveAbsolute input parameter to TRUE, and then placing the "
          "record number into the RecordNumber parameter. This can "
          "only be done if the Capabilities array includes a value of "
          "7, \"Supports Addressing by Ordinal Record Number\". \n"
          "\n"
          "After the method completes and if ordinal record numbers "
          "are supported (the Capabilities array includes a 7), the "
          "current record number is returned in the RecordNumber "
          "output parameter. Otherwise, the value of the parameter is "
          "undefined. \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from PositionAtRecord should be 0 if the "
          "request was successfully executed, 1 if the request is not "
          "supported and some other value if an error occurred. If the "
          "request is not supported, check the Capabilities array "
          "regarding support for ordinal record number addressing and "
          "backward movement in the Log (values 7 and 4, "
          "respectively). \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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."),
        ValueMap{"0","1","2","3","4","5","6"}, 
        Values { "SUCCESS","NOTSUPPORTED","UNKNOWN","POSITION_BEFORE_START","POSITION_AFTER_END",
	         "INVALIDPARAMETER","FAILED"}]
   uint32 PositionAtRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Advancing or retreating the IterationIdentifier is "
             "achieved by setting the MoveAbsolute boolean to FALSE, "
             "and specifying the number of entries to advance or "
             "retreat as positive or negative values in the "
             "RecordNumber parameter. Moving to a specific record "
             "number is accomplished by setting the MoveAbsolute "
             "parameter to TRUE, and placing the record number into "
             "the RecordNumber parameter.")]
      boolean MoveAbsolute, 
         [IN, OUT, Description (
             "The relative or absolute record number.")]
      sint64 RecordNumber); 

	[Implemented, Description (
          "Requests that the record indicated by the "
          "IterationIdentifier be retrieved from the MessageLog. After "
          "retrieval, the IterationIdentifier may be advanced to the "
          "next record by setting the PositionToNext input parameter "
          "to TRUE. Two output parameters are defined for the method - "
          "RecordData which holds the contents of the Log entry (as an "
          "array of bytes that can be recast to an appropriate "
          "format), and RecordNumber which returns the current record "
          "number addressed via the Iteration Identifier. The "
          "RecordNumber parameter is only defined/valid when the "
          "Capabilities array indicates that ordinal record number "
          "addressing is supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from GetRecord should be 0 if the request "
          "was successfully executed, 1 if the request is not "
          "supported, and some other value if an error occurred. In a "
          "subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier."),
        ValueMap{"0","1","2","3","4","5","6"}, 
        Values { "SUCCESS","NOTSUPPORTED","UNKNOWN","POSITION_BEFORE_START","POSITION_AFTER_END",
	         "INVALIDPARAMETER","FAILED"}]
   uint32 GetRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean indicating that the Iteration Identifier should "
             "be advanced to the next record, after retrieving the "
             "current Log entry.")]
      boolean PositionToNext, 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber, 
         [IN ( false ), OUT, Description (
             "The record data.")]
      uint8 RecordData[]); 

	[Implemented, Description (
          "Requests that the record indicated by the "
          "IterationIdentifier be deleted from the MessageLog. After "
          "deletion, the Iteration Identifier may be advanced to the "
          "next record by setting the PositionToNext input parameter "
          "to TRUE. If set to FALSE, then the IterationIdentifier will "
          "be positioned at the previous record. Two output parameters "
          "are defined for the method - RecordData which holds the "
          "contents of the deleted Log entry (as an array of bytes "
          "that can be recast to an appropriate format or discarded), "
          "and RecordNumber which returns the current record number "
          "addressed via the IterationIdentifier. The RecordNumber "
          "parameter is only defined/valid when the Capabilities array "
          "indicates that ordinal record number addressing is "
          "supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from DeleteRecord should be 0 if the "
          "request was successfully executed, 1 if the request is not "
          "supported, and some other value if an error occurred. If "
          "the request is not supported, check the Capabilities array "
          "that a value of 3 (\"Delete Record Supported\") is "
          "specified. \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 DeleteRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean that when set to TRUE requests the "
             "IterationIdentifier to be advanced to the next record, "
             "after the current entry is deleted. If set to FALSE, "
             "IterationIdentifier is set to the previous record.")]
      boolean PositionToNext, 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber, 
         [IN ( false ), OUT, Description (
             "The record data.")]
      uint8 RecordData[]); 

	[Implemented, Description (
          "Requests that a record be inserted at the Log position "
          "indicated by the IterationIdentifier. The entry's data is "
          "provided in the RecordData input parameter. After "
          "insertion, the IterationIdentifier may be advanced to the "
          "next record by setting the PositionToNext input parameter "
          "to TRUE. The output parameter, RecordNumber, returns the "
          "current record number addressed via the "
          "IterationIdentifier. This parameter is only defined/valid "
          "when the Capabilities array indicates that ordinal record "
          "number addressing is supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from WriteRecord should be 0 if the "
          "request was successfully executed, 1 if the request is not "
          "supported, and some other value if an error occurred. If "
          "the request is not supported, check the Capabilities array "
          "that a value of 2 (\"Write Record Supported\") is "
          "specified. \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 WriteRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean indicating that the Iteration Identifier should "
             "be advanced to the next record, after writing the Log "
             "entry.")]
      boolean PositionToNext, 
         [IN, Description (
             "The record data.")]
      uint8 RecordData[], 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber); 

	[Implemented, Description (
          "Requests that an iteration of the Log, identified by the "
          "IterationIdentifier input parameter, be stopped. The return "
          "value from CancelIteration should be 0 if the request was "
          "successfully executed, 1 if the request is not supported "
          "and some other value if an error occurred. In a subclass, "
          "the set of possible return codes could be specified, using "
          "a ValueMap qualifier on the method. The strings to which "
          "the ValueMap contents are 'translated' may also be "
          "specified in the subclass as a Values array qualifier."),
        ValueMap{"0","1","2","5","6"}, 
        Values { "SUCCESS","NOTSUPPORTED","UNKNOWN","INVALIDPARAMETER","FAILED"}]
   uint32 CancelIteration ( 
         [IN, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier); 

	[Implemented, Description (
          "Requests that the MessageLog be placed in a frozen state "
          "(\"Freeze\" input parameter = TRUE) or 'unfrozen' (= "
          "FALSE). If frozen, modifications to the Log will not be "
          "allowed. If successful, the Log's IsFrozen boolean property "
          "will be updated to reflect the desired state. \n"
          "\n"
          "The method's return code should be 0 if the request was "
          "successfully executed, 1 if the request is not supported "
          "and some other value if an error occurred. If the request "
          "is not supported, check the Capabilities array that a value "
          "of 5 (\"Freeze Log Supported\") is specified. \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 FreezeLog( 
         [IN, Description (
             "If TRUE then freeze the log, if FALSE 'unfreeze' the "
             "log.")]
      boolean Freeze); 

	[Implemented, Description (
          "Requests that the record indicated by the "
          "IterationIdentifier be flagged as overwriteable. This "
          "method is only supported when the Capabilities array "
          "includes a value of 10, \"Can Flag Records for Overwrite\". "
          "After updating the entry, the IterationIdentifier may be "
          "advanced to the next record by setting the PositionToNext "
          "input parameter to TRUE. One output parameter is defined "
          "for the method RecordNumber. It returns the current record "
          "number addressed via the Iteration Identifier. This "
          "parameter is only defined/valid when the Capabilities array "
          "indicates that ordinal record number addressing is "
          "supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from FlagRecordForOverwrite should be 0 if "
          "the request was successfully executed, 1 if the request is "
          "not supported, and some other value if an error occurred. "
          "In a subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 FlagRecordForOverwrite ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean indicating that the Iteration Identifier should "
             "be advanced to the next record, after updating the "
             "current Log entry.")]
      boolean PositionToNext, 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber); 

	[Implemented, Description (
          "Requests that an iteration of the MessageLog be established "
          "and that the iterator be set to the first entry in the Log. "
          "An identifier for the iterator is returned as an output "
          "parameter of the method. \n"
          "\n"
          "Regarding iteration, you have 2 choices: 1) Embed iteration "
          "data in the method call, and allow implementations to "
          "track/ store this data manually; or, 2) Iterate using a "
          "separate object (for example, class ActiveIterator) as an "
          "iteration agent. The first approach is used here for "
          "interoperability. The second requires an instance of the "
          "Iterator object for EACH iteration in progress. 2's "
          "functionality could be implemented underneath 1. \n"
          "\n"
          "The return value from PositionToFirstRecord should be 0 if "
          "the request was successfully executed, 1 if the request is "
          "not supported and some other value if an error occurred. In "
          "a subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier."),
        ValueMap{"0","1","2","3","4","5","6"}, 
        Values { "SUCCESS","NOTSUPPORTED","UNKNOWN","POSITION_BEFORE_START","POSITION_AFTER_END",
	         "INVALIDPARAMETER","FAILED"}]
   uint32 PositionToFirstRecord ( 
         [IN ( false ), OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier);
      
      [Implemented, Description (
          "Requests that the Log be cleared of all entries. \n"
          "The return value should be 0 if the request was "
          "successfully executed, 1 if the request is not supported, "
          "and some other value, as indicated by the ValueMap/Values "
          "qualifiers, if an error occurred. It shall also delete the "
          "log and event iterators. In order to reset the iterator "
          "the method positionToFirstRecord shall be run."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6..0x0FFF",
          "0x1000..0x7FFF", "0x8000.." }, 
       Values { "Completed with no error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "DMTF_Reserved", "Method_Reserved",
          "Vendor_Reserved" }]
   uint32 ClearLog();


};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_ServiceAffectsElement : CIM_ServiceAffectsElement {

};

//Package -cim::prov::smi13::hhr::physical::PhysicalFanProvider
[ Version ("1.0.0")]
class LSIESG_PhysicalFan : CIM_PhysicalPackage {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string ChassisTag;
};

//Package -cim::prov::smi13::hhr::physical::PowerSupplyProvider
[ Version ("1.0.0")]
class LSIESG_PowerSupply : CIM_PowerSupply {
         
	[Description (
		 "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string ChassisTag;
   [Description (
          "The name of this registered profile. Since multiple "
          "versions can exist for the same RegisteredName, the "
          "combination of RegisteredName, RegisteredOrganization, and "
          "RegisteredVersion MUST uniquely identify the registered "
          "profile within the scope of the organization."), 
       MaxLen ( 256 )]
   string RegisteredName;
      [Description (
          "The Sensor\'s threshold values specify the ranges (min "
          "and max values) for determining whether the Sensor is "
          "operating under Normal, NonCritical, Critical or Fatal "
          "conditions. If the CurrentReading is between "
          "LowerThresholdCritical and Lower ThresholdFatal, then "
          "the CurrentState is Critical.") ]
   sint32 LowerThresholdCritical;

      [Description (
          "The Sensor\'s threshold values specify the ranges (min "
          "and max values) for determining whether the Sensor is "
          "operating under Normal, NonCritical, Critical or Fatal "
          "conditions. If the CurrentReading is between "
          "UpperThresholdCritical and Upper ThresholdFatal, then "
          "the CurrentState is Critical.") ]
   sint32 UpperThresholdCritical;
   
      [Description (
         "The Sensor\'s threshold values specify the ranges (min "
         "and max values) for determining whether the Sensor is "
         "operating under Normal, NonCritical, Critical or Fatal "
         "conditions. If the CurrentReading is between "
         "LowerThresholdWarning and Lower ThresholdFatal, then "
         "the CurrentState is Warning.") ]
   sint32 LowerThresholdWarning;
   
      [Description (
         "The Sensor\'s threshold values specify the ranges (min "
         "and max values) for determining whether the Sensor is "
         "operating under Normal, NonCritical, Critical or Fatal "
         "conditions. If the CurrentReading is between "
         "UpperThresholdWarning and Upper ThresholdFatal, then "
         "the CurrentState is Warning.") ]
   sint32 UpperThresholdWarning;

};


//Package -cim::prov::smi13::hhr::software::DriverIdentityProvider
[ Version ("1.0.0")]
class LSIESG_DriverIdentity : CIM_SoftwareIdentity {
	[Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string ComputerSystem_Name;
};

//Package -cim::prov::smi13::hhr::physical::EnclosureAlarmProvider
[ Version ("1.0.0")]
class LSIESG_EnclosureAlarm : CIM_AlarmDevice {
[Description (
          "The name of this registered profile. Since multiple "
          "versions can exist for the same RegisteredName, the "
          "combination of RegisteredName, RegisteredOrganization, and "
          "RegisteredVersion MUST uniquely identify the registered "
          "profile within the scope of the organization."), 
       MaxLen ( 256 )]
   string RegisteredName;
};

//Package -cim::prov::smi13::hhr::association::ProtocolControllerForUnitProvider
[Association,  Version ("1.0.0")]
class LSIESG_ProtocolControllerForUnit : CIM_ProtocolControllerForUnit {

};

//Package -cim::prov::smi13::hhr::diagnostics::SelfCheckIdentityProvider
[ Version ("1.0.0")]
class LSIESG_SelfCheckIdentity : CIM_SoftwareIdentity {
[Description (
          "The name of the organization responsible for producing the "
          "PhysicalElement. This organization might be the entity from "
          "whom the Element is purchased, but this is not necessarily "
          "true. The latter information is contained in the Vendor "
          "property of CIM_Product."), 
       MaxLen ( 256 ), 
       MappingStrings { "MIB.IETF|Entity-MIB.entPhysicalMfgName",
          "MIF.DMTF|FRU|003.4" }]
   string Manufacturer;

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_UseOfLog : CIM_UseOfLog {

};

//Package -cim::prov::smi13::hhr::association::ElementSettingDataProvider
[Association,  Version ("1.0.0")]
class LSIESG_ElementSettingData : CIM_ElementSettingData {

};

//Package -cim::prov::smi13::hhr::ports::TargetSASProtocolEndpointProvider
[ Version ("1.0.0")]
class LSIESG_TargetSASProtocolEndpoint : CIM_SCSIProtocolEndpoint {
      [Description (
          "Vendor-unique extension attribute to facilitate associations.")]
   string InitiatorProtocolEndpoint_Name;
   
      [Description (
            "Vendor-unique extension attribute to facilitate associations."),
         MaxLen ( 64 )]
   string DiskDrive_DeviceID;
      [Description (
          "An arbitrary string that uniquely identifies the Physical "
          "Element and serves as the key of the Element. The Tag "
          "property can contain information such as asset tag or "
          "serial number data. The key for PhysicalElement is placed "
          "very high in the object hierarchy in order to independently "
          "identify the hardware or entity, regardless of physical "
          "placement in or on Cabinets, Adapters, and so on. For "
          "example, a hotswappable or removable component can be taken "
          "from its containing (scoping) Package and be temporarily "
          "unused. The object still continues to exist and can even be "
          "inserted into a different scoping container. Therefore, the "
          "key for Physical Element is an arbitrary string and is "
          "defined independently of any placement or location-oriented "
          "hierarchy."), 
       MaxLen ( 256 )]
   string Tag;
};

//Package -cim::prov::smi13::hhr::ports::TargetSATAProtocolEndpointProvider
[ Version ("1.0.0")]
class LSIESG_TargetSATAProtocolEndpoint : CIM_ATAProtocolEndpoint {
      [Description (
          "Vendor-unique extension attribute to facilitate associations.")]
   string InitiatorProtocolEndpoint_Name;
   
      [Description (
            "Vendor-unique extension attribute to facilitate associations."),
         MaxLen ( 64 )]
   string DiskDrive_DeviceID;
      [Description (
          "An arbitrary string that uniquely identifies the Physical "
          "Element and serves as the key of the Element. The Tag "
          "property can contain information such as asset tag or "
          "serial number data. The key for PhysicalElement is placed "
          "very high in the object hierarchy in order to independently "
          "identify the hardware or entity, regardless of physical "
          "placement in or on Cabinets, Adapters, and so on. For "
          "example, a hotswappable or removable component can be taken "
          "from its containing (scoping) Package and be temporarily "
          "unused. The object still continues to exist and can even be "
          "inserted into a different scoping container. Therefore, the "
          "key for Physical Element is an arbitrary string and is "
          "defined independently of any placement or location-oriented "
          "hierarchy."), 
       MaxLen ( 256 )]
   string Tag;
};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_Container : CIM_Container {

};

//Package -cim::prov::smi13::hhr::diagnostics::SelfCheckCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_SelfCheckCapabilities : CIM_DiagnosticServiceCapabilities {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_AssociatedCooling : CIM_AssociatedCooling {

};

//Package -cim::prov::smi13::hhr::diskdrivelite::DiskExtentProvider
[ Version ("1.0.0")]
class LSIESG_DiskExtent : CIM_StorageExtent {
      [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string StorageRedundancySet_InstanceID;
   [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string SpareRedundancySet_InstanceID;
      [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string StoragePool_InstanceID;
   
   [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string ParentStoragePool_InstanceID;
   
      [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string FailoverStorageExtentsCollection_InstanceID;
   [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string AffectedComponent;
 [Description (
  "An arbitrary string that uniquely identifies the Physical "
  "Element and serves as the key of the Element. The Tag "
  "property can contain information such as asset tag or "
  "serial number data. The key for PhysicalElement is placed "
  "very high in the object hierarchy in order to independently "
  "identify the hardware or entity, regardless of physical "
  "placement in or on Cabinets, Adapters, and so on. For "
  "example, a hotswappable or removable component can be taken "
  "from its containing (scoping) Package and be temporarily "
  "unused. The object still continues to exist and can even be "
  "inserted into a different scoping container. Therefore, the "
  "key for Physical Element is an arbitrary string and is "
  "defined independently of any placement or location-oriented "
  "hierarchy."), 
MaxLen ( 256 )]
   string Tag;
  string ForeignExtentsCollection_InstanceID; 
  string DriveRef;
};

//Package -cim::prov::smi13::hhr::blockservices::StorageVolumeSettingProvider
[ Version ("1.0.0")]
class LSIESG_StorageVolumeSetting :  LSIESG_StorageSetting {
      [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string StorageVolume_DeviceID;

    [Write, Description (
         "Vendor-unique extension specifying whether data encryption is applied "
         " to the volume(s) associated with this setting.  \"None\" indicates the volume"
        "or pool can not be encrypted, or in the case of an volume creation parameter that "
        "encryption is not required, \"Ready\" means "
        "the volume or pool is capable of  encryption but is currently unsecured, "
        "\"Secured\" means the volume or pool access is controlled by a security key." ),
     ValueMap { "0", "1", "2"}, 
     Values { "None", "Ready", "Secured"}]
   uint16 Encryption;
   
      [Description (
         "Current cache policy of volume.")]
   string CurrentCachePolicy;     
 [Description ( 
          "DataRedundancyDefault describes the default number of "
          "complete copies of data that can be maintained. Examples "
          "would be RAID 5 where 1 copy is maintained and RAID 1 "
          "where 2 or more copies are maintained. Possible values "
          "are 1 to n. The bounds for the redundancy (max and min) "
          "are defined by DataRedundancyMax and DataRedundancyMin." ), 
       MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.DataRedundancyMax", 
          "CIM_StorageCapabilities.DataRedundancyMin" }]
   uint16 DataRedundancyDefault;
   
   [Write, Description (
		"Vendor-unique extension specifying whether protection information is applied "
        "to the volume(s) associated with this setting. \"No SCSI protection Type Used\" means"
		"no protection type used. \"supportLdPIType1\" indicates the volume "
        "or pool is capable of LD SCSI PI Type 1. \"supportLdPIType2\" means the volume or pool "
		"is capable of LD SCSI PI Type 2. \"supportLdPIType3\" means the volume or pool " 
        "is capable of LD SCSI PI Type 3." ),
     ValueMap { "0", "1", "2", "3"}, 
     Values { "No SCSI protection Type Used","supportLdPIType1 ", "supportLdPIType2", "supportLdPIType3"}]
   uint32 PIType;
};

//Package -cim::prov::smi13::hhr::jobcontrol::CheckConsistencyJobProvider
[ Version ("1.0.0")]
class LSIESG_CheckConsistencyJob : CIM_ConcreteJob {
	[Implemented, Description (
          "When the job is executing or has terminated without error, "
          "then this method returns no CIM_Error instance. However, if "
          "the job has failed because of some internal problem or "
          "because the job has been terminated by a client, then a "
          "CIM_Error instance is returned."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 GetError ( 
         [OUT, Description (
             "If the OperationalStatus on the Job is not \"OK\", then "
             "this method will return a CIM Error instance. Otherwise, "
             "when the Job is \"OK\", null is returned."), 
          EmbeddedInstance ( "CIM_Error" )]
      string Error); 

      [Implemented,Description (
          "Requests that the state of the job be changed to the value "
          "specified in the RequestedState parameter. Invoking the "
          "RequestStateChange method multiple times could result in "
          "earlier requests being overwritten or lost. \n"
          "If 0 is returned, then the task completed successfully. Any "
          "other return code indicates an error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported",
          "Unknown/Unspecified Error",
          "Can NOT complete within Timeout Period", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Transition Started",
          "Invalid State Transition",
          "Use of Timeout Parameter Not Supported", "Busy",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestStateChange( 
         [IN, Description (
             "RequestStateChange changes the state of a job. The "
             "possible values are as follows: \n"
             "Start (2) changes the state to 'Running'. \n"
             "Suspend (3) stops the job temporarily. The intention is "
             "to subsequently restart the job with 'Start'. It might "
             "be possible to enter the 'Service' state while "
             "suspended. (This is job-specific.) \n"
             "Terminate (4) stops the job cleanly, saving data, "
             "preserving the state, and shutting down all underlying "
             "processes in an orderly manner. \n"
             "Kill (5) terminates the job immediately with no "
             "requirement to save data or preserve the state. \n"
             "Service (6) puts the job into a vendor-specific service "
             "state. It might be possible to restart the job."), 
// Following Vendor specific extensions are only supported 
// "Start (2).      \n"
// "Resume (32770). \n"			 
          ValueMap { "2", "3", "4", "5", "6", "7..32767",
             "32768..65535" }, 
          Values { "Start", "Suspend", "Terminate", "Kill", "Service",
             "DMTF Reserved", "Vendor Reserved" }]
      uint16 RequestedState, 
         [IN, Description (
             "A timeout period that specifies the maximum amount of "
             "time that the client expects the transition to the new "
             "state to take. The interval format must be used to "
             "specify the TimeoutPeriod. A value of 0 or a null "
             "parameter indicates that the client has no time "
             "requirements for the transition. \n"
             "If this property does not contain 0 or null and the "
             "implementation does not support this parameter, a return "
             "code of 'Use Of Timeout Parameter Not Supported' must be "
             "returned.")]
      datetime TimeoutPeriod);

};

//Package -cim::prov::smi13::hhr::extentcomposition::FreeExtentProvider
[ Version ("1.0.0")]
class LSIESG_FreeExtent : CIM_StorageExtent {
      [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string StoragePool_InstanceID;
      [Description (
          "StartingAddress indicates where in lower level storage, the "
          "higher level Extent begins.")]
   string StartingAddress;
   

};


//Package -cim::prov::smi13::hhr::association::BasedOnProvider
[Association,  Version ("1.0.0")]
class LSIESG_BasedOn : CIM_BasedOn {

};

//Package -cim::prov::smi13::hhr::blockservices::EnabledLogicalElementCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_EnabledLogicalElementCapabilities : CIM_EnabledLogicalElementCapabilities {
   [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string ComputerSystem_Name;

};

//Package -cim::prov::smi13::hhr::battery::BatteryCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_BatteryCapabilities : CIM_EnabledLogicalElementCapabilities {
   [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string ComputerSystem_Name;

};


//Package -cim::prov::smi13::hhr::blockservices::ParentStoragePoolCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_ParentStoragePoolCapabilities : CIM_StorageCapabilities {
      [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string StoragePool_InstanceID;
   [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string SystemName;
  [Write, Description (
		"Vendor-unique extension specifying whether protection information is applied "
        "to the volume(s) associated with this setting. \"No SCSI protection Type Used\" means"
		"no protection type used. \"supportLdPIType1\" indicates the volume "
        "or pool is capable of LD SCSI PI Type 1. \"supportLdPIType2\" means the volume or pool "
		"is capable of LD SCSI PI Type 2. \"supportLdPIType3\" means the volume or pool " 
        "is capable of LD SCSI PI Type 3." ),
     ValueMap { "0", "1", "2", "3"}, 
     Values { "No SCSI protection Type Used","supportLdPIType1 ", "supportLdPIType2", "supportLdPIType3"}]
   uint32 PIType;
   
	[Implemented, Experimental, Description (
          "For systems that support discrete ExtentStripeLengths "
          "for volume or pool creation, this method can be used to "
          "retrieve a list of supported values. Note that different "
          "implementations may support either the "
          "GetSupportedStripeLengths or the "
          "GetSupportedStripeLengthRange method. Also note that the "
          "advertised sizes may change after the call due to "
          "requests from other clients. If the system only supports "
          "a range of sizes, then the return value will be set to "
          "3." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Method completed OK", "Method not supported", 
          "Choices not available for this Capability", 
          "Use GetSupportedStripeLengthRange instead" }]
   uint32 GetSupportedStripeLengths(
         [IN ( false ), OUT, Description ( 
             "List of supported ExtentStripeLengths for a "
             "Volume/Pool creation or modification." ), 
          ArrayType ( "Indexed" )]
      uint16 StripeLengths[]);
	  
      [Implemented, Experimental, Description ( 
          "For systems that support a range of ExtentStripeLengths "
          "for volume or pool creation, this method can be used to "
          "retrieve the supported range. Note that different "
          "implementations may support either the "
          "GetSupportedExtentLengths or the "
          "GetSupportedExtentLengthRange method. Also note that the "
          "advertised sizes may change after the call due to "
          "requests from other clients. If the system only supports "
          "discrete values, then the return value will be set to 3." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Method completed OK", "Method not supported", 
          "Choices not available for this Capability", 
          "Use GetSupportedStripeLengths instead" }]
   uint32 GetSupportedStripeLengthRange(
         [IN ( false ), OUT, Description ( 
             "The minimum ExtentStripeDepth for a volume/pool in bytes."
              )]
      uint16 MinimumStripeLength, 
         [IN ( false ), OUT, Description ( 
             "The maximum ExtentStripeLength for a volume/pool in bytes."
              )]
      uint16 MaximumStripeLength, 
         [IN ( false ), OUT, Description (
             "A volume/pool ExtentStripeLength must be a multiple of "
             "this value which is specified in bytes.")]
      uint32 StripeLengthDivisor ); 
         [Description (
          "Array giving the allowable values for CacheUsage. " 
          "Read-Write means Cache is used for Read and Write requests. " 
          "Read means Cache is only used for Read requests. "
          "Write means Cache is only used for Write requests. "
          "None indicates Cache is not used for IO requests. "), 
          ValueMap { "0", "1", "2", "3" }, 
          Values { "Read-Write", "Read", "Write", "None" }]   
          uint16 SupportedCacheUsageSettings[];
         [Description (
         "Array giving the allowable values for ReadCacheUsage. "),  
         ValueMap {"0", "1","2"}, 
         Values {"Read ahead nonadaptive", "Read ahead adaptive", "No read ahead"}]
         uint16 SupportedReadCacheSettings[];
         [Description (
          "Array giving the allowable values for WriteCacheUsage. "),  
           ValueMap {"0", "1", "2"}, 
           Values {"Always write back", "Write through bad battery", "Always write through"}]
         uint16 SupportedWriteCacheSettings[];

      [Implemented, Description ( 
          "Method to create and populate a StorageSetting instance "
          "from a StorageCapability instance. This removes the need "
          "to populate default settings and other settings in the "
          "context of each StorageCapabilities (which could be "
          "numerous). If the underlying instrumentation supports "
          "the StorageSettingWithHints subclass, then an instance "
          "of that class will be created instead." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error", 
          "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", 
          "Vendor Specific" }]
   uint32 CreateSetting(
         [IN, Description ( 
             "If \'Default\' is passed for the CreateDefault "
             "parameter, the Max, Goal, and Min setting "
             "attributes are set to the Default values of the "
             "parent StorageCapabilities when the instance is "
             "created. \n"
             "If set to \'Goal\' the new StorageSetting "
             "attributes are set to the related attributes of "
             "the parent StorageCapabilities, e.g. Min to Min, "
             "Goal to Default, and Max to Max. \n"
             "\n"
             "This method maybe deprecated in lieu of intrinsics "
             "once limitations in the CIM Operations are "
             "addressed." ), 
          ValueMap { "2", "3" }, 
          Values { "Default", "Goal" }]
      uint16 SettingType, 
         [IN ( false ), OUT, Description ( 
             "Reference to the created StorageSetting instance." )]
      CIM_StorageSetting REF NewSetting);

      [Implemented, Experimental, Description ( 
          "For systems that support discrete UserDataStripeDepths "
          "for volume or pool creation, this method can be used to "
          "retrieve a list of supported values. Note that different "
          "implementations may support either the "
          "GetSupportedStripeDepths or the "
          "GetSupportedStripeDepthRange method. If the system only "
          "supports a range of sizes, then the return value will be "
          "set to 2." ), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported", 
          "Use GetSupportedStripeDepthRange instead" }]
   uint32 GetSupportedStripeDepths(
         [IN ( false ), OUT, Description ( 
             "List of supported UserDataStripeDepths for a "
             "Volume/Pool creation or modification." ), 
          Units ( "Bytes" ), 
          ArrayType ( "Indexed" ), 
          PUnit ( "byte" )]
      uint64 StripeDepths[]);

      [Implemented, Experimental, Description ( 
          "For systems that support a range of UserDataStripeDepths "
          "for volume or pool creation, this method can be used to "
          "retrieve the supported range. Note that different "
          "implementations may support either the "
          "GetSupportedStripeDepths or the "
          "GetSupportedStripeDepthRange method. If the system only "
          "supports discrete values, then the return value will be "
          "set to 2." ), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported", 
          "Use GetSupportedStripeDepths instead" }]
   uint32 GetSupportedStripeDepthRange(
         [IN ( false ), OUT, Description ( 
             "The minimum UserDataStripeDepth for a volume/pool in bytes."
              ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 MinimumStripeDepth, 
         [IN ( false ), OUT, Description ( 
             "The maximum UserDataStripeDepth for a volume/pool in bytes."
              ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 MaximumStripeDepth, 
         [IN ( false ), OUT, Description ( 
             "A volume/pool UserDataStripeDepth must be a "
             "multiple of this value which is specified in "
             "bytes." ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 StripeDepthDivisor); 

     [Write, Description (
         "Vendor-unique extension specifying whether data encryption is applied "
         "to the volume(s) associated with this setting.  \"None\" indicates the volume "
        "or pool can not be encrypted, or in the case of an volume creation parameter that "
        "encryption is not required, \"Ready\" means "
        "the volume or pool is capable of  encryption but is currently unsecured, "
        "\"Secured\" means the volume or pool access is controlled by a security key." ),
     ValueMap { "0", "1", "2"}, 
     Values { "None", "Ready", "Secured"}]
   uint16 Encryption;
};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_OwningJobElement : CIM_OwningJobElement {

};

//Package -cim::prov::smi13::hhr::diskdrivelite::PhysicalDriveProvider
[ Version ("1.0.0")]
class LSIESG_PhysicalDrive : CIM_PhysicalPackage {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string ChassisTag;
   string Slot_No;
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 64 )]
   string DiskDrive_DeviceID;
   [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 8 )]
   string FRUNumber;

    [Description (
         "Vendor-unique string for Sata disks."),
      MaxLen ( 8 )]
   string Vendor;
   
      [Description (
	"power condition of the device"),
      	ValueMap { "0", "1", "0xff"}, 
     	Values { "spin up", "spun down", "transistion between power states"}]
      string PowerState;
  
      [Description ("PiFomatted")]
      uint32 PiFomatted;

      [Description ("PiEligible")]
      uint32 PiEligible;	 

      [Description ("PiType")]
      uint32 PiType;

      [Description ("UserDataBlockSize")]
      uint16 UserDataBlockSize;	
	  
};

//Package -cim::prov::smi13::hhr::physical::ESMControllerProvider
[ Version ("1.0.0")]
class LSIESG_ESMController : CIM_PortController {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string ChassisTag;

};


//Package -cim::prov::smi13::hhr::alarm::AlarmDeviceProvider
[ Version ("1.0.0")]
class LSIESG_AlarmDevice : CIM_AlarmDevice {

      [Implemented, Description (
          "SetAlarmState is a method for defining the current state of "
          "the Alarm. Its input parameter, RequestedAlarmState, is "
          "specified using the Values list of AlarmDevice's AlarmState "
          "property. SetAlarmState returns 0 if the request is "
          "successfully implemented, 1 if the specified RequestedAlarm "
          "State is not supported, and some other value if any other "
          "error occurred. In a subclass, the set of possible return "
          "codes should be specified using a ValueMap qualifier on the "
          "method. The strings to which the ValueMap contents are "
          "'translated' should be specified as a Values array "
          "qualifier.")]
   uint32 SetAlarmState ( 
         [IN, Description (
             "The desired state for the alarm."), 
          ValueMap { "0", "1", "2", "3" }, 
          Values { "Unknown", "Off", "Steady", "Alternating" }]
      uint16 RequestedAlarmState); 

      [Implemented, Description (
          "SetAlarmIndicator is a method for enabling or disabling the "
          "indicator of the AlarmState function, without changing the "
          "current AlarmState. It has 3 input parameters, Audio "
          "Indicator, VisualIndicator and MotionIndicator. For all of "
          "the input parameters, a value of 0 indicates no change to "
          "the AlarmState indicator, 1 indicates Disable, and 2 "
          "indicates Enable. The method returns 0 if the request is "
          "successfully implemented, 1 if the specified request is not "
          "supported, and some other value if any other error "
          "occurred. In a subclass, the set of possible return codes "
          "should be specified using a ValueMap qualifier on the "
          "method. The strings to which the ValueMap contents are "
          "'translated' should be specified as a Values array "
          "qualifier.")]
   uint32 SetAlarmIndicator ( 
         [IN, Description (
             "The state for the audio indicator."), 
          ValueMap { "0", "1", "2" }, 
          Values { "No Change", "Disable", "Enable" }]
      uint16 AudioIndicator, 
         [IN, Description (
             "The state for the visual indicator."), 
          ValueMap { "0", "1", "2" }, 
          Values { "No Change", "Disable", "Enable" }]
      uint16 VisualIndicator, 
         [IN, Description (
             "The state for the motion indicator."), 
          ValueMap { "0", "1", "2" }, 
          Values { "No Change", "Disable", "Enable" }]
      uint16 MotionIndicator); 
};

//Package -cim::prov::smi13::hhr::association::MediaPresentProvider
[Association,  Version ("1.0.0")]
class LSIESG_MediaPresent : CIM_MediaPresent {

};

//Package -cim::prov::smi13::hhr::disksparing::StorageRedundancySetProvider
[ Version ("1.0.0")]
class LSIESG_StorageRedundancySet : CIM_StorageRedundancySet {

	[Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string OtherInstanceId[];

   [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string ComputerSystem_Name;
};

//Package -cim::prov::smi13::hhr::association::IsSpareProvider
[Association,  Version ("1.0.0")]
class LSIESG_IsSpare : CIM_IsSpare {

};

//Package -cim::prov::smi13::hhr::association::OrderedComponentProvider
[Association,  Version ("1.0.0")]
class LSIESG_OrderedComponent : CIM_OrderedComponent {

};


//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_Realizes : CIM_Realizes {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_DeviceSAPImplementation : CIM_DeviceSAPImplementation {

};

//Package -cim::prov::smi13::hhr::diagnostics::SelfCheckSettingsProvider
[ Version ("1.0.0")]
class LSIESG_SelfCheckSettings : CIM_DiagnosticSettingData {

	  [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string Name;

};

//Package -cim::prov::smi13::hhr::diagnostics::SelfCheckDiagnosticLogProvider
[ Version ("1.0.0")]
class LSIESG_SelfCheckDiagnosticLog : CIM_RecordLog {

};

//Package -cim::prov::smi13::hhr::diagnostics::SelfCheckCompletionRecordProvider
[ Version ("1.0.0")]
class LSIESG_SelfCheckCompletionRecord : CIM_DiagnosticCompletionRecord {

      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string SystemName;
   
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string Job;
};

//Package -cim::prov::smi13::hhr::diagnostics::SelfCheckServiceRecordProvider
[ Version ("1.0.0")]
class LSIESG_SelfCheckServiceRecord : CIM_DiagnosticServiceRecord {

      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string SystemName;
   
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string Job;
};

//Package -cim::prov::smi13::hhr::diagnostics::SelfCheckSettingRecordProvider
[ Version ("1.0.0")]
class LSIESG_SelfCheckSettingRecord : CIM_DiagnosticSettingRecord {

      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string SystemName;
};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_ProductPhysicalComponent : CIM_ProductPhysicalComponent {

};

//Package -cim::prov::smi13::hhr::ports::directattach::DAPortProvider
[ Version ("1.0.0")]
class LSIESG_DAPort : CIM_DAPort {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string SCSIProtocolEndpoint_Name;

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_ConcreteDependency : CIM_ConcreteDependency {

};

//Package -cim::prov::smi13::hhr::blockservices::StoragePoolCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_StoragePoolCapabilities : CIM_StorageCapabilities {
      [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string StorageSetting_InstanceID;
      [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string StoragePool_InstanceID;
            [Description (
          "Array giving the allowable values for CacheUsage. " 
          "Read-Write means Cache is used for Read and Write requests. " 
          "Read means Cache is only used for Read requests. "
          "Write means Cache is only used for Write requests. "
          "None indicates Cache is not used for IO requests. "), 
          ValueMap { "0", "1", "2", "3" }, 
          Values { "Read-Write", "Read", "Write", "None" }]   
          uint16 SupportedCacheUsageSettings[];
         [Description (
         "Array giving the allowable values for ReadCacheUsage. "),  
         ValueMap {"0", "1","2"}, 
         Values {"Read ahead nonadaptive", "Read ahead adaptive", "No read ahead"}]
         uint16 SupportedReadCacheSettings[];
         [Description (
          "Array giving the allowable values for WriteCacheUsage. "),  
           ValueMap {"0", "1", "2"}, 
           Values {"Always write back", "Write through bad battery", "Always write through"}]
         uint16 SupportedWriteCacheSettings[];
	[Implemented, Experimental, Description (
          "For systems that support discrete ExtentStripeLengths for "
          "volume or pool creation, this method can be used to "
          "retrieve a list of supported values. Note that different "
          "implementations may support either the "
          "GetSupportedStripeLengths or the "
          "GetSupportedStripeLengthRange method. Also note that the "
          "advertised sizes may change after the call due to requests "
          "from other clients. If the system only supports a range of "
          "sizes, then the return value will be set to 3."), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Method completed OK", "Method not supported", 
          "Choices not available for this Capability", 
          "Use GetSupportedStripeLengthRange instead" }]
   uint32 GetSupportedStripeLengths(
         [IN ( false ), OUT, Description ( 
             "List of supported ExtentStripeLengths for a "
             "Volume/Pool creation or modification." ), 
          ArrayType ( "Indexed" )]
      uint16 StripeLengths[]);
	  
      [Implemented, Experimental, Description ( 
          "For systems that support a range of ExtentStripeLengths "
          "for volume or pool creation, this method can be used to "
          "retrieve the supported range. Note that different "
          "implementations may support either the "
          "GetSupportedExtentLengths or the "
          "GetSupportedExtentLengthRange method. Also note that the "
          "advertised sizes may change after the call due to "
          "requests from other clients. If the system only supports "
          "discrete values, then the return value will be set to 3." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Method completed OK", "Method not supported", 
          "Choices not available for this Capability", 
          "Use GetSupportedStripeLengths instead" }]
   uint32 GetSupportedStripeLengthRange(
         [IN ( false ), OUT, Description ( 
             "The minimum ExtentStripeDepth for a volume/pool in bytes."
              )]
      uint16 MinimumStripeLength, 
         [IN ( false ), OUT, Description ( 
             "The maximum ExtentStripeLength for a volume/pool in bytes."
              )]
      uint16 MaximumStripeLength, 
         [IN ( false ), OUT, Description (
             "A volume/pool ExtentStripeLength must be a multiple of "
             "this value which is specified in bytes.")]
      uint32 StripeLengthDivisor ); 
    [Write, Description (
         "Vendor-unique extension specifying whether data encryption is applied "
         " to the volume(s) associated with this setting.  \"None\" indicates the volume"
        "or pool can not be encrypted, or in the case of an volume creation parameter that "
        "encryption is not required, \"Ready\" means "
        "the volume or pool is capable of  encryption but is currently unsecured, "
        "\"Secured\" means the volume or pool access is controlled by a security key." ),
     ValueMap { "0", "1", "2"}, 
     Values { "None", "Ready", "Secured"}]
   uint16 Encryption;

      [Implemented, Description ( 
          "Method to create and populate a StorageSetting instance "
          "from a StorageCapability instance. This removes the need "
          "to populate default settings and other settings in the "
          "context of each StorageCapabilities (which could be "
          "numerous). If the underlying instrumentation supports "
          "the StorageSettingWithHints subclass, then an instance "
          "of that class will be created instead." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error", 
          "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", 
          "Vendor Specific" }]
   uint32 CreateSetting(
         [IN, Description ( 
             "If \'Default\' is passed for the CreateDefault "
             "parameter, the Max, Goal, and Min setting "
             "attributes are set to the Default values of the "
             "parent StorageCapabilities when the instance is "
             "created. \n"
             "If set to \'Goal\' the new StorageSetting "
             "attributes are set to the related attributes of "
             "the parent StorageCapabilities, e.g. Min to Min, "
             "Goal to Default, and Max to Max. \n"
             "\n"
             "This method maybe deprecated in lieu of intrinsics "
             "once limitations in the CIM Operations are "
             "addressed." ), 
          ValueMap { "2", "3" }, 
          Values { "Default", "Goal" }]
      uint16 SettingType, 
         [IN ( false ), OUT, Description ( 
             "Reference to the created StorageSetting instance." )]
      CIM_StorageSetting REF NewSetting);

      [Implemented, Experimental, Description ( 
          "For systems that support discrete UserDataStripeDepths "
          "for volume or pool creation, this method can be used to "
          "retrieve a list of supported values. Note that different "
          "implementations may support either the "
          "GetSupportedStripeDepths or the "
          "GetSupportedStripeDepthRange method. If the system only "
          "supports a range of sizes, then the return value will be "
          "set to 2." ), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported", 
          "Use GetSupportedStripeDepthRange instead" }]
   uint32 GetSupportedStripeDepths(
         [IN ( false ), OUT, Description ( 
             "List of supported UserDataStripeDepths for a "
             "Volume/Pool creation or modification." ), 
          Units ( "Bytes" ), 
          ArrayType ( "Indexed" ), 
          PUnit ( "byte" )]
      uint64 StripeDepths[]);

      [Implemented, Experimental, Description ( 
          "For systems that support a range of UserDataStripeDepths "
          "for volume or pool creation, this method can be used to "
          "retrieve the supported range. Note that different "
          "implementations may support either the "
          "GetSupportedStripeDepths or the "
          "GetSupportedStripeDepthRange method. If the system only "
          "supports discrete values, then the return value will be "
          "set to 2." ), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported", 
          "Use GetSupportedStripeDepths instead" }]
   uint32 GetSupportedStripeDepthRange(
         [IN ( false ), OUT, Description ( 
             "The minimum UserDataStripeDepth for a volume/pool in bytes."
              ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 MinimumStripeDepth, 
         [IN ( false ), OUT, Description ( 
             "The maximum UserDataStripeDepth for a volume/pool in bytes."
              ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 MaximumStripeDepth, 
         [IN ( false ), OUT, Description ( 
             "A volume/pool UserDataStripeDepth must be a "
             "multiple of this value which is specified in "
             "bytes." ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 StripeDepthDivisor);
	  
   [Write, Description (
		"Vendor-unique extension specifying whether protection information is applied "
        "to the volume(s) associated with this setting. \"No SCSI protection Type Used\" means"
		"no protection type used. \"supportLdPIType1\" indicates the volume "
        "or pool is capable of LD SCSI PI Type 1. \"supportLdPIType2\" means the volume or pool "
		"is capable of LD SCSI PI Type 2. \"supportLdPIType3\" means the volume or pool " 
        "is capable of LD SCSI PI Type 3." ),
     ValueMap { "0", "1", "2", "3"}, 
     Values { "No SCSI protection Type Used","supportLdPIType1 ", "supportLdPIType2", "supportLdPIType3"}]
   uint32 PIType;

};

//Package -cim::prov::smi13::hhr::jobcontrol::PdRebuildJobProvider
[ Version ("1.0.0")]
class LSIESG_PdRebuildJob : CIM_ConcreteJob {
	[Implemented, Description (
          "When the job is executing or has terminated without error, "
          "then this method returns no CIM_Error instance. However, if "
          "the job has failed because of some internal problem or "
          "because the job has been terminated by a client, then a "
          "CIM_Error instance is returned."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 GetError ( 
         [OUT, Description (
             "If the OperationalStatus on the Job is not \"OK\", then "
             "this method will return a CIM Error instance. Otherwise, "
             "when the Job is \"OK\", null is returned."), 
          EmbeddedInstance ( "CIM_Error" )]
      string Error); 
      
      [Implemented,Description (
          "Requests that the state of the job be changed to the value "
          "specified in the RequestedState parameter. Invoking the "
          "RequestStateChange method multiple times could result in "
          "earlier requests being overwritten or lost. \n"
          "If 0 is returned, then the task completed successfully. Any "
          "other return code indicates an error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported",
          "Unknown/Unspecified Error",
          "Can NOT complete within Timeout Period", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Transition Started",
          "Invalid State Transition",
          "Use of Timeout Parameter Not Supported", "Busy",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestStateChange( 
         [IN, Description (
             "RequestStateChange changes the state of a job. The "
             "possible values are as follows: \n"
             "Start (2) changes the state to 'Running'. \n"
             "Suspend (3) stops the job temporarily. The intention is "
             "to subsequently restart the job with 'Start'. It might "
             "be possible to enter the 'Service' state while "
             "suspended. (This is job-specific.) \n"
             "Terminate (4) stops the job cleanly, saving data, "
             "preserving the state, and shutting down all underlying "
             "processes in an orderly manner. \n"
             "Kill (5) terminates the job immediately with no "
             "requirement to save data or preserve the state. \n"
             "Service (6) puts the job into a vendor-specific service "
             "state. It might be possible to restart the job."), 
// Following Vendor specific extensions are only supported 
// "Start (2).      \n"
// "Resume (32770). \n"			 
          ValueMap { "2", "3", "4", "5", "6", "7..32767",
             "32768..65535" }, 
          Values { "Start", "Suspend", "Terminate", "Kill", "Service",
             "DMTF Reserved", "Vendor Reserved" }]
      uint16 RequestedState, 
         [IN, Description (
             "A timeout period that specifies the maximum amount of "
             "time that the client expects the transition to the new "
             "state to take. The interval format must be used to "
             "specify the TimeoutPeriod. A value of 0 or a null "
             "parameter indicates that the client has no time "
             "requirements for the transition. \n"
             "If this property does not contain 0 or null and the "
             "implementation does not support this parameter, a return "
             "code of 'Use Of Timeout Parameter Not Supported' must be "
             "returned.")]
      datetime TimeoutPeriod);


};

//Package -cim::prov::smi13::hhr::physical::PowerSupplyPackageProvider
[ Version ("1.0.0")]
class LSIESG_PowerSupplyPackage : CIM_PhysicalPackage {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string ChassisTag;

};

//Package -cim::prov::smi13::hhr::blockservices::ParentStoragePoolProvider
[ Version ("1.0.0")]
class LSIESG_ParentStoragePool : CIM_StoragePool {
[Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string ComputerSystem_Name;
     [Experimental, Description ( 
          "Indicates the intended usage or any restrictions that "
          "may have been imposed on the usage of this component. "
          "For example, a storage pool may be reserved for use by "
          "the block server. In that case the Usage of the storage "
          "pool is marked as \"Reserved for the ComputerSystem\". "
          "In the case of \"Other\", see OtherUsageDescription for "
          "more information." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "..", 
          "32768..65535" }, 
       Values { "Other", "Unrestricted", 
          "Reserved for ComputerSystem (the block server)", 
          "Reserved as a Delta Replica Container", 
          "Reserved for Migration Services", 
          "Reserved for Local Replication Services", 
          "Reserved for Remote Replication Services", 
          "Reserved for Sparing", "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_StoragePool.OtherUsageDescription" }]
   uint16 Usage; 
      [Implemented, Description (
          "For pools that support discrete sizes for volume or pool "
          "creation, this method can be used to retrieve a list of "
          "supported sizes. Note that different pool implementations "
          "may support either or both the GetSupportedSizes and "
          "GetSupportedSizeRanges methods at different times, "
          "depending on Pool configuration. Also note that the "
          "advertised sizes may change after the call due to requests "
          "from other clients. If the pool currently only supports a "
          "range of sizes, then the return value will be set to 1."), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported",
          "Use GetSupportedSizeRange instead" }]
   uint32 GetSupportedSizes ( 
         [IN, Description (
             "The type of element for which supported sizes are "
             "reported for."), 
          ValueMap { "2", "3", "4" }, 
          Values { "Storage Pool", "Storage Volume", "Logical Disk" }]
      uint16 ElementType, 
         [IN, Description (
             "The StorageSetting for which supported sizes should be "
             "reported for.")]
      CIM_StorageSetting REF Goal, 
         [IN , OUT, Description (
             "List of supported sizes for a Volume/Pool creation or "
             "modification."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 Sizes[] ); 

      [Implemented, Description (
          "For pools that that support a range of sizes for volume or "
          "pool creation, this method can be used to retrieve the "
          "supported range. Note that different pool implementations "
          "may support either or both the GetSupportedSizes and "
          "GetSupportedSizeRanges methods at different times, "
          "depending on Pool configuration. Also note that the "
          "advertised sizes may change after the call due to requests "
          "from other clients. If the pool currently only supports "
          "discrete sizes, then the return value will be set to 1."), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported",
          "Use GetSupportedSizes instead" }]
   uint32 GetSupportedSizeRange ( 
         [IN, Description (
             "The type of element for which supported size ranges are "
             "reported for."), 
          ValueMap { "2", "3", "4" }, 
          Values { "Storage Pool", "Storage Volume", "Logical Disk" }]
      uint16 ElementType, 
         [IN, Description (
             "The StorageSetting for which supported size ranges "
             "should be reported for.")]
      CIM_StorageSetting REF Goal, 
         [IN , OUT, Description (
             "The minimum size for a volume/pool in bytes."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 MinimumVolumeSize, 
         [IN , OUT, Description (
             "The maximum size for a volume/pool in bytes."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 MaximumVolumeSize, 
         [IN , OUT, Description (
             "A volume/pool size must be a multiple of this value "
             "which is specified in bytes."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 VolumeSizeDivisor); 

      [Implemented, Description (
          "This method can be used to retrieve a list of available "
          "Extents that may be used in the creation or modification of "
          "a StoragePool, StorageVolume, or LogicalDisk. The "
          "GetAvailableExtents method MUST return the Extents from the "
          "set of Component Extents of the Pool on which the method is "
          "being invoked. The returned Extents are available at the "
          "time the method returns. There is no guarantee that the "
          "same Extents will be available later. This method MUST "
          "return the Extents that are not being used as supporting "
          "capacity for any other Pools, Volumes, or LogicalDisks that "
          "have been allocated from this Pool. The Extent returned "
          "MUST be a component Extent of the Pool or subdivisions of a "
          "component Extent, the subdivisions themselves represented "
          "as Extents."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..",
          "4098..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", "Unknown",
          "Timeout", "Failed", "Invalid Parameter", "In Use",
          "DMTF Reserved", "Method Reserved", "Vendor Specific" }]
   uint32 GetAvailableExtents ( 
         [IN, Description (
             "The StorageSetting (Goal) for which supported extents "
             "should be retrieved as available. \n"
             "If a NULL is passed for the Goal, the method will return "
             "all available extents, regardless of the goal. There "
             "exists a possibility of error in creating a Pool, "
             "Volume, or LogicalDisk retrieved in this manner.")]
      CIM_StorageSetting REF Goal, 
         [OUT, Description (
             "List of references to available StorageExtents, or "
             "subclass instances.")]
      CIM_StorageExtent REF AvailableExtents[] ); 

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_DiskPartitionBasedOnVolume : CIM_DiskPartitionBasedOnVolume {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_ConcreteIdentity : CIM_ConcreteIdentity {

};

//Package -cim::prov::smi13::hhr::ports::PCIDeviceProvider
[ Version ("1.0.0")]
class LSIESG_PCIDevice : CIM_PCIDevice {

};

//Package -cim::prov::smi13::hhr::battery::BatteryProvider
[ Version ("1.0.0")]
class LSIESG_Battery : CIM_Battery {
		[Description (
          "To verify if the Battery FW-Status is bad and"
		  "determine  the operational State of the BBU ."), 
       MaxLen ( 256 ) ]
   string BatteryOperationalStatus;

   [Description (
          "BBU FRU"), 
       MaxLen ( 256 ) ]
   string BatteryFRU ;
   [ Description (
          "current retention time in hours."
		  "Full charge displays 48 hours +, under 48 hours displayed as hours"
		  "0 is undefined if battery is operational"),
		  MaxLen ( 256 )]
   string RetentionTime;
   
   [ Description (
          "Battery Type.")]
   uint8 BatteryType;
   [ Description (
          "Shows if Battery needs to be replaced if Bit is set.")]
   uint32 ReplacePack;
   [ Description (
          "Battery pack is about to fail - should be replaced if set.")]
   uint32 PredictiveFailure ;   

   [ Description (
          "Energy in pack in Joules.")]
   uint32 PackEnergy ; 

   [ Description (
          "Capacitance % of design value.")]
   uint32 Capacitance ; 
   };

//Package -cim::prov::smi13::hhr::physical::PhysicalAssetCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_PhysicalAssetCapabilities : CIM_PhysicalAssetCapabilities {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string Card_Tag;

};

//Package -cim::prov::smi13::hhr::alarm::AlarmDeviceCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_AlarmDeviceCapabilities : CIM_AlarmDeviceCapabilities {

};

//Package -cim::prov::smi13::hhr::physical::EnclosureFanProvider
[ Version ("1.0.0")]
class LSIESG_EnclosureFan : CIM_Fan {
	[Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
	string ChassisTag;
	[Description (
         "Vendor-unique extension attribute to identify instance."),
      MaxLen ( 256 )]
	
	string Instance_ID;
	
	[Required, Description (
          "The name of this registered profile. Since multiple "
          "versions can exist for the same RegisteredName, the "
          "combination of RegisteredName, RegisteredOrganization, and "
          "RegisteredVersion MUST uniquely identify the registered "
          "profile within the scope of the organization."), 
       MaxLen ( 256 )]
   string RegisteredName;
};

//Package -cim::prov::smi13::hhr::ports::directattach::SCSIProtocolEndpointProvider
[ Version ("1.0.0")]
class LSIESG_SCSIProtocolEndpoint : CIM_SCSIProtocolEndpoint {

};

//Package -cim::prov::smi13::hhr::diskdrivelite::DriveFirmwareIdentityProvider
[ Version ("1.0.0")]
class LSIESG_DriveFirmwareIdentity : CIM_SoftwareIdentity {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 64 )]
   string DiskDrive_DeviceID;

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_SystemDevice : CIM_SystemDevice {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_ControlledBy : CIM_ControlledBy {

};

//Package -cim::prov::smi13::hhr::software::SoftwareInstallationServiceProvider
[ Version ("1.0.0")]
class LSIESG_SoftwareInstallationService : CIM_SoftwareInstallationService {

      [Implemented, Description (
          "Start a job to download a series of bytes containing a "
          "software image to a ManagedElement. \n"
          "Note that this method is provided to support existing, "
          "alternative download mechanisms (such as used for firmware "
          "download). The 'normal' mechanism will be to use the "
          "InstallFromSoftwareIdentity method. \n"
          "If 0 is returned, the function completed successfully and "
          "no ConcreteJob instance was required. If 4096/0x1000 is "
          "returned, a ConcreteJob will be started to to perform the "
          "install. The Job's reference will be returned in the output "
          "parameter Job."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100", "4101", "4102", "4103",
          "4104", "4105", "4106", "4107", "4108..32767",
       "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "Target In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Unsupported TargetType",
          "Unattended/silent installation not supported",
          "Downgrade/reinstall not supported", "Not enough memory",
          "Not enough swap-space", "Unsupported version transition",
          "Not enough disk space",
          "Software and target operating system mismatch",
          "Missing dependencies", "Not applicable to target",
          "No supported path to image", "Method Reserved",
          "Vendor Specific" }]
   uint32 InstallFromByteStream( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "A array of bytes containing the install image."), 
          OctetString]
      uint8 Image[], 
         [IN, Description (
             "The installation target.")]
      CIM_ManagedElement REF Target,
         [IN, Description (
             "Options to control the install process. \n"
             "See the InstallOptions parameter of the "
             "SoftwareInstallationService.InstallFromSoftwareIdentity "
             "method for the description of these values." ),
          ValueMap { "2", "3", "4", "5", "6", "7", "8", "9",
             "10", "11", "12", "13", "..", "32768..65535" },
          Values { "Defer target/system reset",
             "Force installation", "Install", "Update", "Repair",
             "Reboot", "Password", "Uninstall", "Log",
             "SilentMode", "AdministrativeMode",
             "ScheduleInstallAt", "DMTF Reserved",
             "Vendor Specific" },
          ArrayType ( "Indexed" ),
          ModelCorrespondence {
             "CIM_SoftwareInstallationService.InstallFromByteStream.InstallOptionsValues[]",
             "CIM_SoftwareInstallationServiceCapabilities.SupportedInstallOptions[]" }]
      uint16 InstallOptions[],
         [IN, Description (
             "InstallOptionsValues is an array of strings "
             "providing additional information to InstallOptions "
             "for the method to install the software. Each entry "
             "of this array is related to the entry in "
             "InstallOptions that is located at the same index "
             "providing additional information for "
             "InstallOptions. \n"
             "\n"
             "For further information on the use of "
             "InstallOptionsValues parameter, see the "
             "description of the InstallOptionsValues parameter "
             "of the "
             "SoftwareInstallationService.InstallFromSoftwareIdentity "
             "method." ),
          ArrayType ( "Indexed" ),
          ModelCorrespondence {
             "CIM_SoftwareInstallationService.InstallFromByteStream.InstallOptions[]" }]
      string InstallOptionsValues[]);

      [Implemented, Description (
          "Start a job to install software from a specific URI in a "
          "ManagedElement. \n"
          "Note that this method is provided to support existing, "
          "alternative download mechanisms (such as used for firmware "
          "download). The 'normal' mechanism will be to use the "
          "InstallFromSoftwareIdentity method. \n"
          "If 0 is returned, the function completed successfully and "
          "no ConcreteJob instance was required. If 4096/0x1000 is "
          "returned, a ConcreteJob will be started to to perform the "
          "install. The Job's reference will be returned in the output "
          "parameter Job."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100", "4101", "4102", "4103",
          "4104", "4105", "4106", "4107", "4108..32767",
       "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "Target In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Unsupported TargetType",
          "Unattended/silent installation not supported",
          "Downgrade/reinstall not supported", "Not enough memory",
          "Not enough swap-space", "Unsupported version transition",
          "Not enough disk space",
          "Software and target operating system mismatch",
          "Missing dependencies", "Not applicable to target",
          "URI not accessible", "Method Reserved", "Vendor Specific" }]
   uint32 InstallFromURI( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "A URI for the software based on RFC 2079.")]
      string URI, 
         [IN, Description (
             "The installation target.")]
      CIM_ManagedElement REF Target,
         [IN, Description (
             "Options to control the install process. \n"
             "See the InstallOptions parameter of the "
             "SoftwareInstallationService.InstallFromSoftwareIdentity "
             "method for the description of these values." ),
          ValueMap { "2", "3", "4", "5", "6", "7", "8", "9",
             "10", "11", "12", "13", "..", "32768..65535" },
          Values { "Defer target/system reset",
             "Force installation", "Install", "Update", "Repair",
             "Reboot", "Password", "Uninstall", "Log",
             "SilentMode", "AdministrativeMode",
             "ScheduleInstallAt", "DMTF Reserved",
             "Vendor Specific" },
          ArrayType ( "Indexed" ),
          ModelCorrespondence {
             "CIM_SoftwareInstallationService.InstallFromURI.InstallOptionsValues[]",
             "CIM_SoftwareInstallationServiceCapabilities.SupportedInstallOptions[]" }]
      uint16 InstallOptions[],
         [IN, Description (
             "InstallOptionsValues is an array of strings "
             "providing additionalinformation to InstallOptions "
             "for the method to install the software. Each entry "
             "of this array is related to the entry in "
             "InstallOptions that is located at the same index "
             "providing additional information for "
             "InstallOptions. \n"
             "For further information on the use of "
             "InstallOptionsValues parameter, see the "
             "description of the InstallOptionsValues parameter "
             "of the "
             "SoftwareInstallationService.InstallFromSoftwareIdentity "
             "method." ),
          ArrayType ( "Indexed" ),
          ModelCorrespondence {
             "CIM_SoftwareInstallationService.InstallFromByteStream.InstallOptions[]" }]
      string InstallOptionsValues[]);
};

//Package -cim::prov::smi13::hhr::ports::sasinitiator::SASSATAPortProvider
[ Version ("1.0.0")]
class LSIESG_SASSATAPort : CIM_SASSATAPort {
      [Description (
          "An arbitrary string that uniquely identifies the Physical "
          "Element and serves as the key of the Element. The Tag "
          "property can contain information such as asset tag or "
          "serial number data. The key for PhysicalElement is placed "
          "very high in the object hierarchy in order to independently "
          "identify the hardware or entity, regardless of physical "
          "placement in or on Cabinets, Adapters, and so on. For "
          "example, a hotswappable or removable component can be taken "
          "from its containing (scoping) Package and be temporarily "
          "unused. The object still continues to exist and can even be "
          "inserted into a different scoping container. Therefore, the "
          "key for Physical Element is an arbitrary string and is "
          "defined independently of any placement or location-oriented "
          "hierarchy."), 
       MaxLen ( 256 )]
   string Tag;
};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_AffectedJobElement : CIM_AffectedJobElement {

};

//Package -cim::prov::smi13::hhr::software::ControllerFirmwareIdentityProvider
[ Version ("1.0.0")]
class LSIESG_ControllerFirmwareIdentity : CIM_SoftwareIdentity {
[Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string SystemName;
   string SystemIdentity;
	[Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]

   string ComputerSystem_Name;
};

//Package -cim::prov::smi13::hhr::physical::ESMComponentProvider
[ Version ("1.0.0")]
class LSIESG_ESMComponent : CIM_Card {
      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string ChassisTag;

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_MemberOfCollection : CIM_MemberOfCollection {

};

//Package -cim::prov::smi13::hhr::association::ElementSoftwareIdentityProvider
[Association,  Version ("1.0.0")]
class LSIESG_ElementSoftwareIdentity : CIM_ElementSoftwareIdentity {

};

//Package -cim::prov::smi13::hhr::diskdrivelite::DiskDriveProvider
[ Version ("1.0.0")]
class LSIESG_DiskDrive : CIM_DiskDrive {

      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 64 )]
   string Type;
   [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string AffectedComponent;
   
   [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string AffectedElement;
   
   string DiskDrive_InstanceId;

      [Description (
          "An arbitrary string that uniquely identifies the Physical "
          "Element and serves as the key of the Element. The Tag "
          "property can contain information such as asset tag or "
          "serial number data. The key for PhysicalElement is placed "
          "very high in the object hierarchy in order to independently "
          "identify the hardware or entity, regardless of physical "
          "placement in or on Cabinets, Adapters, and so on. For "
          "example, a hotswappable or removable component can be taken "
          "from its containing (scoping) Package and be temporarily "
          "unused. The object still continues to exist and can even be "
          "inserted into a different scoping container. Therefore, the "
          "key for Physical Element is an arbitrary string and is "
          "defined independently of any placement or location-oriented "
          "hierarchy."), 
       MaxLen ( 256 )]
   string Tag;
      [Description (
         "Vendor-unique property representing the predictive failure"
         "count of the disk drive.")]
   uint32 PredictiveFailureCount;

      [Description (
         "Vendor-unique property representing the media error"
         "count of the disk drive.")]
   uint32 MediaErrorCount;
      
      [Description (
          "Identifies the media type for the DiskExtent as either solid state "
          "or rotational."), 
       ValueMap {"0", "1", "2"}, 
       Values {"Rotational", "Solid State", "Unknown"}]
   uint8 MediaType;
   [Description (
          "Reports HDD temperature in Celsius for the DiskExtent.")] 
    uint8 Temperature;

      [Description (
          "how many times the shield diagnostics was run before it was marked failed.")] 
    uint8 ShieldCounter;
	[Description (
          "If set this PD is commsisioned as emergency spare.")] 
    uint32 EmergencyHotSpare;
	
	[Description (
          "If set this PD is a commissioned spare.")] 
    uint32 CommissionedHotSpare;
	
	[Description (
          "last successful Diagnostics completion time. 0 is N/A.")] 
    datetime ShieldDiagCompletionTime;
      [Description (
          "Vendor extension indicating the nominal rotational speed of "
          "the device.  Value is given in rotations per minute (RPM).")]
   uint16 NominalRotationRate;
      
      [Description (
          "An enumeration indicating the operational security defined "
          "for the MediaAccessDevice. For example, information that "
          "the Device is \"Read Only\" (value=4) or \"Boot Bypass\" "
          "(value=6) can be described using this property.  Vendor "
          "properties are available as follows: \"FDE Enabled\" indicates "
          "the drive FDE feature is in use;"
          " \"Secured\" indicates that the drives data is encrypted and secured "
          "either with FDE or controller based encryption; "
          "\"Key Warning\" indicates the controller security-key failed to unlock the drive; "
          "\"Foreign Key\" indicates the drive was locked using a key other than the one "
          "currently set on the controller."), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"}, 
       Values { "Other", "Unknown", "None", "Read Only", "Locked Out",
          "Boot Bypass", "Boot Bypass and Read Only", "FDE Enabled", 
          "Secured", "Key Warning", "Foreign Key"}]	
   uint16 FDESecurity[];       

      
      [Implemented,Description (
          "This method sets the state of the location indicator"
          "(typically a flashing LED on the drive) to support "
          "identification of the drive within its enclosure."
          "Invoking the method with the parameter set to \"true\" "
          "turns the indicator on. Invoking the method with the "
          "parameter set to \"false\" turns the indicator off."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 SetLocationIndicator ( 
         [IN, Description (
             "A Boolean value that represents the requested"
             "state for the location indicator")]
      boolean IndicatorOn);



      [Implemented,Description (
		"This method is used to start the Secure erase operation"
		"on PD.")]
   uint32 SecureEraseStart( 
         [IN, Description (
             "The Type of erase requested for the PD."
             "RequestedState values."), 
          ValueMap {"0","1","2"}, 
          Values { "Simple", "Normal", "Through"}]
      uint16 EraseType, 

  
	          [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job
		 );

      [Implemented,Description (
		"This method is used to abort the secure erase operation"
		"on PD.")]
   uint32 SecureEraseStop();
		 

      [Implemented, Description (
          "Requests that the state of the element be changed to the "
          "value specified in the RequestedState parameter. When "
          "the requested state change takes place, the EnabledState "
          "and RequestedState of the element will be the same. "
          "Invoking the RequestStateChange method multiple times "
          "could result in earlier requests being overwritten or "
          "lost. \n"
          "A return code of 0 shall indicate the state change was "
          "successfully initiated. \n"
          "A return code of 3 shall indicate that the state "
          "transition cannot complete within the interval specified "
          "by the TimeoutPeriod parameter. \n"
          "A return code of 4096 (0x1000) shall indicate the state "
          "change was successfully initiated, a ConcreteJob has "
          "been created, and its reference returned in the output "
          "parameter Job. Any other return code indicates an error "
          "condition." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096", 
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Unknown or Unspecified Error", 
          "Cannot complete within Timeout Period", "Failed", 
          "Invalid Parameter", "In Use", "DMTF Reserved", 
          "Method Parameters Checked - Job Started", 
          "Invalid State Transition", 
          "Use of Timeout Parameter Not Supported", "Busy", 
          "Method Reserved", "Vendor Specific" }, 
       ModelCorrespondence { 
          "CIM_EnabledLogicalElement.RequestedState" }]
   uint32 RequestStateChange(
         [IN, Description ( 
             "The state requested for the element. This "
             "information will be placed into the RequestedState "
             "property of the instance if the return code of the "
             "RequestStateChange method is 0 (\'Completed with "
             "No Error\'), or 4096 (0x1000) (\'Job Started\'). "
             "Refer to the description of the EnabledState and "
             "RequestedState properties for the detailed "
             "explanations of the RequestedState values." ), 
          ValueMap { "2", "3", "4", "6", "7", "8", "9", "10", 
             "11", "..", "32768..65535" }, 
          Values { "Enabled", "Disabled", "Shut Down", "Offline", 
             "Test", "Defer", "Quiesce", "Reboot", "Reset", 
             "DMTF Reserved", "Vendor Reserved" }, 
          ModelCorrespondence { 
             "CIM_EnabledLogicalElement.RequestedState" }]
      uint16 RequestedState, 
         [IN ( false ), OUT, Description ( 
             "May contain a reference to the ConcreteJob created "
             "to track the state transition initiated by the "
             "method invocation." )]
      CIM_ConcreteJob REF Job, 
         [IN, Description ( 
             "A timeout period that specifies the maximum amount "
             "of time that the client expects the transition to "
             "the new state to take. The interval format must be "
             "used to specify the TimeoutPeriod. A value of 0 or "
             "a null parameter indicates that the client has no "
             "time requirements for the transition. \n"
             "If this property does not contain 0 or null and "
             "the implementation does not support this "
             "parameter, a return code of \'Use Of Timeout "
             "Parameter Not Supported\' shall be returned." )]
      datetime TimeoutPeriod);

	  [ Description (
                "STATE_UNCONFIGURED_GOOD = 0, STATE_UNCONFIGURED_BAD  = 1,"
				"STATE_HOTSPARE          = 2, STATE_OFFLINE           = 16,"
				"STATE_FAILED            = 17,STATE_REBUILD           = 20,"
				"STATE_ONLINE            = 24,STATE_COPYBACK          = 32,"
				"STATE_SYSTEM            = 64,STATE_SHIELD_UNCONFIGURED = 128,"
				"STATE_SHIELD_HOT_SPARE    = 130,STATE_SHIELD_CONFIGURED   = 144,"
				"STATE_SHIELD_COPYBACK     = 192")]
      uint16 DiskStatus;

      [Implemented, Description (
          "Breaks the data encryption lock on a drive.  WARNING: use of this method "
          "results in the complete loss of any data on the affected drive.  "
          "The \"Wrong Drive State\" return code indicates the drive is not locked or otherwise "
          "not in a suitable state to undertake this operation. "), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7"}, 
       Values {"Success", "Not Supported", "Unknown", "TimeOut","Failed", 
          "Invalid Parameter", "Wrong Drive State", "Operation Not Supported"}] 
   uint32 BreakDriveLock();

};

//Package -cim::prov::smi13::hhr::extentcomposition::ComponentExtentProvider
[ Version ("1.0.0")]
class LSIESG_ComponentExtent : CIM_StorageExtent {

      [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 64 )]
      string InstanceID;
	  
	  [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 64 )]
      string ExtendedDeviceID;

      [Description (
          "An arbitrary string that uniquely identifies the Physical "
          "Element and serves as the key of the Element. The Tag "
          "property can contain information such as asset tag or "
          "serial number data. The key for PhysicalElement is placed "
          "very high in the object hierarchy in order to independently "
          "identify the hardware or entity, regardless of physical "
          "placement in or on Cabinets, Adapters, and so on. For "
          "example, a hotswappable or removable component can be taken "
          "from its containing (scoping) Package and be temporarily "
          "unused. The object still continues to exist and can even be "
          "inserted into a different scoping container. Therefore, the "
          "key for Physical Element is an arbitrary string and is "
          "defined independently of any placement or location-oriented "
          "hierarchy."), 
       MaxLen ( 256 )]
   string Tag;
   
};

//Package -cim::prov::smi13::hhr::jobcontrol::SelfCheckJobProvider
[ Version ("1.0.0")]
class LSIESG_SelfCheckJob : CIM_ConcreteJob {
	[Implemented, Description (
          "When the job is executing or has terminated without error, "
          "then this method returns no CIM_Error instance. However, if "
          "the job has failed because of some internal problem or "
          "because the job has been terminated by a client, then a "
          "CIM_Error instance is returned."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 GetError ( 
         [OUT, Description (
             "If the OperationalStatus on the Job is not \"OK\", then "
             "this method will return a CIM Error instance. Otherwise, "
             "when the Job is \"OK\", null is returned."), 
          EmbeddedInstance ( "CIM_Error" )]
      string Error); 

      [Implemented,Description (
          "Requests that the state of the job be changed to the value "
          "specified in the RequestedState parameter. Invoking the "
          "RequestStateChange method multiple times could result in "
          "earlier requests being overwritten or lost. \n"
          "If 0 is returned, then the task completed successfully. Any "
          "other return code indicates an error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported",
          "Unknown/Unspecified Error",
          "Can NOT complete within Timeout Period", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Transition Started",
          "Invalid State Transition",
          "Use of Timeout Parameter Not Supported", "Busy",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestStateChange( 
         [IN, Description (
             "RequestStateChange changes the state of a job. The "
             "possible values are as follows: \n"
             "Start (2) changes the state to 'Running'. \n"
             "Suspend (3) stops the job temporarily. The intention is "
             "to subsequently restart the job with 'Start'. It might "
             "be possible to enter the 'Service' state while "
             "suspended. (This is job-specific.) \n"
             "Terminate (4) stops the job cleanly, saving data, "
             "preserving the state, and shutting down all underlying "
             "processes in an orderly manner. \n"
             "Kill (5) terminates the job immediately with no "
             "requirement to save data or preserve the state. \n"
             "Service (6) puts the job into a vendor-specific service "
             "state. It might be possible to restart the job."), 
          ValueMap { "2", "3", "4", "5", "6", "7..32767",
             "32768..65535" }, 
          Values { "Start", "Suspend", "Terminate", "Kill", "Service",
             "DMTF Reserved", "Vendor Reserved" }]
      uint16 RequestedState, 
         [IN, Description (
             "A timeout period that specifies the maximum amount of "
             "time that the client expects the transition to the new "
             "state to take. The interval format must be used to "
             "specify the TimeoutPeriod. A value of 0 or a null "
             "parameter indicates that the client has no time "
             "requirements for the transition. \n"
             "If this property does not contain 0 or null and the "
             "implementation does not support this parameter, a return "
             "code of 'Use Of Timeout Parameter Not Supported' must be "
             "returned.")]
      datetime TimeoutPeriod);
};

//Package -cim::prov::smi13::hhr::ports::ConnectivityCollectionProvider
[ Version ("1.0.0")]
class LSIESG_ConnectivityCollection : CIM_ConnectivityCollection {

      [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
	string InitiatorProtocolEndpoint_Name;
      	[Description ( "Controller SAS address, vendor property used to facilitate associations.")]
	string ComputerSystem_Name;

};

//Package -cim::prov::smi13::hhr::association::AllocatedFromStoragePoolProvider
[Association,  Version ("1.0.0")]
class LSIESG_AllocatedFromStoragePool : CIM_AllocatedFromStoragePool {

};

//Package -cim::prov::smi13::hhr::logs::ConfigLogProvider
[ Version ("1.0.0")]
class LSIESG_ConfigLog : CIM_MessageLog {
      	[Description ( "Controller SAS address, vendor property used to facilitate associations.")]
   	   string SystemName;

	[Implemented, Description (
          "Requests that the Log's iteration identifier be advanced or "
          "retreated a specific number of records, or set to the entry "
          "at a specified numeric location. These two different "
          "behaviors are accomplished using the input parameters of "
          "the method. Advancing or retreating is achieved by setting "
          "the MoveAbsolute boolean to FALSE, and then specifying the "
          "number of entries to advance or retreat as positive or "
          "negative values in the RecordNumber parameter. Moving to a "
          "specific record number is accomplished by setting the "
          "MoveAbsolute input parameter to TRUE, and then placing the "
          "record number into the RecordNumber parameter. This can "
          "only be done if the Capabilities array includes a value of "
          "7, \"Supports Addressing by Ordinal Record Number\". \n"
          "\n"
          "After the method completes and if ordinal record numbers "
          "are supported (the Capabilities array includes a 7), the "
          "current record number is returned in the RecordNumber "
          "output parameter. Otherwise, the value of the parameter is "
          "undefined. \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from PositionAtRecord should be 0 if the "
          "request was successfully executed, 1 if the request is not "
          "supported and some other value if an error occurred. If the "
          "request is not supported, check the Capabilities array "
          "regarding support for ordinal record number addressing and "
          "backward movement in the Log (values 7 and 4, "
          "respectively). \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 PositionAtRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Advancing or retreating the IterationIdentifier is "
             "achieved by setting the MoveAbsolute boolean to FALSE, "
             "and specifying the number of entries to advance or "
             "retreat as positive or negative values in the "
             "RecordNumber parameter. Moving to a specific record "
             "number is accomplished by setting the MoveAbsolute "
             "parameter to TRUE, and placing the record number into "
             "the RecordNumber parameter.")]
      boolean MoveAbsolute, 
         [IN, OUT, Description (
             "The relative or absolute record number.")]
      sint64 RecordNumber); 

	[Implemented, Description (
          "Requests that the record indicated by the "
          "IterationIdentifier be retrieved from the MessageLog. After "
          "retrieval, the IterationIdentifier may be advanced to the "
          "next record by setting the PositionToNext input parameter "
          "to TRUE. Two output parameters are defined for the method - "
          "RecordData which holds the contents of the Log entry (as an "
          "array of bytes that can be recast to an appropriate "
          "format), and RecordNumber which returns the current record "
          "number addressed via the Iteration Identifier. The "
          "RecordNumber parameter is only defined/valid when the "
          "Capabilities array indicates that ordinal record number "
          "addressing is supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from GetRecord should be 0 if the request "
          "was successfully executed, 1 if the request is not "
          "supported, and some other value if an error occurred. In a "
          "subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 GetRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean indicating that the Iteration Identifier should "
             "be advanced to the next record, after retrieving the "
             "current Log entry.")]
      boolean PositionToNext, 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber, 
         [IN ( false ), OUT, Description (
             "The record data.")]
      uint8 RecordData[]); 

	[Implemented, Description (
          "Requests that the record indicated by the "
          "IterationIdentifier be deleted from the MessageLog. After "
          "deletion, the Iteration Identifier may be advanced to the "
          "next record by setting the PositionToNext input parameter "
          "to TRUE. If set to FALSE, then the IterationIdentifier will "
          "be positioned at the previous record. Two output parameters "
          "are defined for the method - RecordData which holds the "
          "contents of the deleted Log entry (as an array of bytes "
          "that can be recast to an appropriate format or discarded), "
          "and RecordNumber which returns the current record number "
          "addressed via the IterationIdentifier. The RecordNumber "
          "parameter is only defined/valid when the Capabilities array "
          "indicates that ordinal record number addressing is "
          "supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from DeleteRecord should be 0 if the "
          "request was successfully executed, 1 if the request is not "
          "supported, and some other value if an error occurred. If "
          "the request is not supported, check the Capabilities array "
          "that a value of 3 (\"Delete Record Supported\") is "
          "specified. \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 DeleteRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean that when set to TRUE requests the "
             "IterationIdentifier to be advanced to the next record, "
             "after the current entry is deleted. If set to FALSE, "
             "IterationIdentifier is set to the previous record.")]
      boolean PositionToNext, 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber, 
         [IN ( false ), OUT, Description (
             "The record data.")]
      uint8 RecordData[]); 

	[Implemented, Description (
          "Requests that a record be inserted at the Log position "
          "indicated by the IterationIdentifier. The entry's data is "
          "provided in the RecordData input parameter. After "
          "insertion, the IterationIdentifier may be advanced to the "
          "next record by setting the PositionToNext input parameter "
          "to TRUE. The output parameter, RecordNumber, returns the "
          "current record number addressed via the "
          "IterationIdentifier. This parameter is only defined/valid "
          "when the Capabilities array indicates that ordinal record "
          "number addressing is supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from WriteRecord should be 0 if the "
          "request was successfully executed, 1 if the request is not "
          "supported, and some other value if an error occurred. If "
          "the request is not supported, check the Capabilities array "
          "that a value of 2 (\"Write Record Supported\") is "
          "specified. \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 WriteRecord ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean indicating that the Iteration Identifier should "
             "be advanced to the next record, after writing the Log "
             "entry.")]
      boolean PositionToNext, 
         [IN, Description (
             "The record data.")]
      uint8 RecordData[], 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber); 

	[Implemented, Description (
          "Requests that an iteration of the Log, identified by the "
          "IterationIdentifier input parameter, be stopped. The return "
          "value from CancelIteration should be 0 if the request was "
          "successfully executed, 1 if the request is not supported "
          "and some other value if an error occurred. In a subclass, "
          "the set of possible return codes could be specified, using "
          "a ValueMap qualifier on the method. The strings to which "
          "the ValueMap contents are 'translated' may also be "
          "specified in the subclass as a Values array qualifier.")]
   uint32 CancelIteration ( 
         [IN, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier); 

	[Implemented, Description (
          "Requests that the MessageLog be placed in a frozen state "
          "(\"Freeze\" input parameter = TRUE) or 'unfrozen' (= "
          "FALSE). If frozen, modifications to the Log will not be "
          "allowed. If successful, the Log's IsFrozen boolean property "
          "will be updated to reflect the desired state. \n"
          "\n"
          "The method's return code should be 0 if the request was "
          "successfully executed, 1 if the request is not supported "
          "and some other value if an error occurred. If the request "
          "is not supported, check the Capabilities array that a value "
          "of 5 (\"Freeze Log Supported\") is specified. \n"
          "\n"
          "Note: In a subclass, the set of possible return codes could "
          "be described 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 FreezeLog( 
         [IN, Description (
             "If TRUE then freeze the log, if FALSE 'unfreeze' the "
             "log.")]
      boolean Freeze); 

	[Implemented, Description (
          "Requests that the record indicated by the "
          "IterationIdentifier be flagged as overwriteable. This "
          "method is only supported when the Capabilities array "
          "includes a value of 10, \"Can Flag Records for Overwrite\". "
          "After updating the entry, the IterationIdentifier may be "
          "advanced to the next record by setting the PositionToNext "
          "input parameter to TRUE. One output parameter is defined "
          "for the method RecordNumber. It returns the current record "
          "number addressed via the Iteration Identifier. This "
          "parameter is only defined/valid when the Capabilities array "
          "indicates that ordinal record number addressing is "
          "supported (a value of 7). \n"
          "\n"
          "IterationIdentifier is defined as an Input/Output method "
          "parameter to allow the Log to embed state information in "
          "the Identifier and potentially let the identifier be "
          "maintained by the using application. \n"
          "\n"
          "The return value from FlagRecordForOverwrite should be 0 if "
          "the request was successfully executed, 1 if the request is "
          "not supported, and some other value if an error occurred. "
          "In a subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 FlagRecordForOverwrite ( 
         [IN, OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier, 
         [IN, Description (
             "Boolean indicating that the Iteration Identifier should "
             "be advanced to the next record, after updating the "
             "current Log entry.")]
      boolean PositionToNext, 
         [IN ( false ), OUT, Description (
             "The record number.")]
      uint64 RecordNumber); 

	[Implemented, Description (
          "Requests that an iteration of the MessageLog be established "
          "and that the iterator be set to the first entry in the Log. "
          "An identifier for the iterator is returned as an output "
          "parameter of the method. \n"
          "\n"
          "Regarding iteration, you have 2 choices: 1) Embed iteration "
          "data in the method call, and allow implementations to "
          "track/ store this data manually; or, 2) Iterate using a "
          "separate object (for example, class ActiveIterator) as an "
          "iteration agent. The first approach is used here for "
          "interoperability. The second requires an instance of the "
          "Iterator object for EACH iteration in progress. 2's "
          "functionality could be implemented underneath 1. \n"
          "\n"
          "The return value from PositionToFirstRecord should be 0 if "
          "the request was successfully executed, 1 if the request is "
          "not supported and some other value if an error occurred. In "
          "a subclass, the set of possible return codes could be "
          "specified, using a ValueMap qualifier on the method. The "
          "strings to which the ValueMap contents are 'translated' may "
          "also be specified in the subclass as a Values array "
          "qualifier.")]
   uint32 PositionToFirstRecord ( 
         [IN ( false ), OUT, Description (
             "An identifier for the iterator.")]
      string IterationIdentifier); 


};

//Package -cim::prov::smi13::hhr::blockservices::PottedStorageSettingProvider
[ Version ("1.0.0")]
class LSIESG_PottedStorageSetting :  LSIESG_StorageSetting {
      [Description (
         "Vendor-unique extension attribute to facilitate associations.")]
   string StorageCapabilities_InstanceID;
	[Description ( "Controller SAS address, vendor property used to facilitate associations.")]
		string SystemName;

    [Write, Description (
         "Vendor-unique extension specifying whether data encryption is applied "
         " to the volume(s) associated with this setting.  \"None\" indicates the volume"
        "or pool can not be encrypted, or in the case of an volume creation parameter that "
        "encryption is not required, \"Ready\" means "
        "the volume or pool is capable of  encryption but is currently unsecured, "
        "\"Secured\" means the volume or pool access is controlled by a security key." ),
     ValueMap { "0", "1", "2"}, 
     Values { "None", "Ready", "Secured"}]
   uint16 Encryption;
[Description ( 
          "DataRedundancyDefault describes the default number of "
          "complete copies of data that can be maintained. Examples "
          "would be RAID 5 where 1 copy is maintained and RAID 1 "
          "where 2 or more copies are maintained. Possible values "
          "are 1 to n. The bounds for the redundancy (max and min) "
          "are defined by DataRedundancyMax and DataRedundancyMin." ), 
       MinValue ( 1 ), 
       ModelCorrespondence { 
          "CIM_StorageCapabilities.DataRedundancyMax", 
          "CIM_StorageCapabilities.DataRedundancyMin" }]
   uint16 DataRedundancyDefault;
};

//Package -cim::prov::smi13::hhr::association::StorageSettingsAssociatedToCapabilitiesProvider
[Association,  Version ("1.0.0")]
class LSIESG_StorageSettingsAssociatedToCapabilities : CIM_StorageSettingsAssociatedToCapabilities {

};

//Package -cim::prov::smi13::hhr::base::PortControllerProvider
[ Version ("1.0.0")]
class LSIESG_PortController : CIM_PortController {

      [Description (
         "Vendor-unique extension specifying the PCI Device ID of the controller" )]
   uint16 PCIDeviceID;
   
      [Description (
         "Vendor-unique extension specifying the PCI sub System Device ID of the controller" )]
   uint16 PCISubDeviceID;
   
      [Description (
         "Vendor-unique extension specifying the PCI Vendor ID of the controller" )]
   uint16 PCIVendorID;
   
      [Description (
         "Vendor-unique extension specifying the PCI sub system Vendor ID of the controller" )]
   uint16 PCISubVendorID;
   
      [Write, Description (
         "Vendor-unique extension specifying the BackgroundInitialization rate as a value "
         "Between 0 and 100 inclusive.  0 indicates that BackgroundInitialization is to be "
         "given the lowest possible priority, 100 the highest."),
   ValueMap {"0..100"}]
   uint16 BackgroundInitializationRate;
   
      [Write, Description (
         "Vendor-unique extension specifying the CheckConsistency rate as a value "
         "Between 0 and 100 inclusive.  0 indicates that CheckConsistency is to be "
         "given the lowest possible priority, 100 the highest."),
   ValueMap {"0..100"}]
   uint16 CheckConsistencyRate;

      [Write, Description (
         "Vendor-unique extension specifying the PatrolRead rate as a value "
         "Between 0 and 100 inclusive.  0 indicates that PatrolRead is to be "
         "given the lowest possible priority, 100 the highest."),
   ValueMap {"0..100"}]
   uint16 PatrolReadRate;
   
      [Write, Description (
         "Vendor-unique extension specifying the Rebuild rate as a value "
         "Between 0 and 100 inclusive.  0 indicates that Rebuild is to be "
         "given the lowest possible priority, 100 the highest."),
   ValueMap {"0..100"}]
   uint16 RebuildRate;
   
      [Description (
         "Drive coercion is the process by which the controller forces drives "
          "to appear somewhat smaller than the actual drive capacity.  This "
          "may be done to make drives of nominally different sizes appear "
          "to be the same size.  It may also be used to reserve space for "
          "configuration metadata.  The value is specified in MB; currently "
          "support exists for coercion sizes of 128 and 1000 MB although this"
          "is subject to change.")]
   uint32 CoercionSize;

   [Description (
            "Vendor-unique extension for configuring copyback behavior for SSDs.  If this feature "
           "is enabled SSDs can participate as either target or source should a SMART error be detected on a "
           "configured drive."),
          ValueMap {"0", "1"},
          Values{"Enabled", "Disabled"}]
   uint8 EnableSMARTSSDCopyback;
   
   [Description (
            "Vendor-unique extension for configuring patrol read behavior for SSDs.  If this feature "
           "is enabled SSDs are scanned for media errors using the patrol read feature."),
          ValueMap {"0", "1"},
          Values{"Enabled", "Disabled"}]
   uint8 EnableSSDPatrolRead;

[Write, Description (
         "Vendor-unique extension specifying the number of seconds between "
          "predictive failure polls.")]
    uint16 PredictiveFailurePollRate;

      [Write, Description (
         "Vendor-unique extension specifying the reconstruction rate as a value "
         "Between 0 and 100 inclusive.  0 indicates that reconstruction is to be "
         "given the lowest possible priority, 100 the highest."),
   ValueMap {"0..100"}]
  uint8 ReconstructionRate;

      [Write, Description (
         "Vendor-unique extension specifying the cache flush interval in seconds.")]
  uint8 CacheFlushInterval;

      [Write, Description (
         "Vendor-unique extension specifying whether clustering is enabled.")]
  boolean EnableClusterSupport;

      [Write, Description (
 "Vendor-unique extension specifying whether automatic rebuild and hot "
        "spare commissioning is enabled.")]
  boolean EnableAutoRebuildSupport;

      [Write, Description (
         "Vendor-unique extension specifying whether commissioned hot spares "
        "revert back to spares when a failed drive is replaced.")]
  boolean EnableHotSpareRestore;

      [Write, Description (
         "Vendor-unique extension specifying whether the copyback feature "
         "is enabled. ")]
  boolean EnableCopyBack;

      [Write, Description (
         "Vendor-unique extension specifying whether the copyback feature should "
         "be automatically engaged if a drive smart error is detected.")]
  boolean EnableAutoCopyBackOnError;

      [Write, Description (
         "Vendor-unique extension specifying whether drive failure status is "
         "retained even if a drive is replaced or the system rebooted.  Impacts "
         "the auto rebuild behavior.")]
  boolean RetainDriveFailureHistory;

      [Write, Description (
         "Vendor-unique extension specifying whether the controller alarm "
         "is enabled.")]
  boolean EnableControllerAlarm;

      [Write, Description (
         "Vendor-unique extension specifying whether to enable warning events for "
         "a missing battery.")]
  boolean EnableBatteryWarning;

      [Write, Description (
         "Vendor-unique extension specifying whether to abort a consistency check "
         "operation if a consistency error is found.")]
  boolean StopConsistencyCheckOnError;

      [Write, Description (
         "Vendor-unique extension for configuring the load balancing feature."),
       ValueMap {"0", "1"},
       Values{"Load balancing automatic", "Load balancing disabled"}]
  uint8 LoadBalanceSetting;
       [Write, Description (
         "Vendor-unique extension specifying whether data encryption is to be limted"
         " to the use of FDE drives or is to include controller based encryption as well."
        " Note that this property is only valid if PortControllerCapabilities.DataEncryptionSupported "
        " is set to true.")]
   boolean UseFdeOnly;

              [Description (
         "Vendor-unique extension specifying whether data encryption has been "
         "seeded with a pass phrase and pass phrase identifier.")]
   boolean EncryptionInitialized;
   
          [Description (
           "used in forming associations."
           "set to match CreationClassName of MegaRaid computer"
           "system instance")]
   string DeviceType;
};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_ServiceAvailableToElement : CIM_ServiceAvailableToElement {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_HostedService : CIM_HostedService {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_PackageInConnector : CIM_PackageInConnector {

};


//Package -cim::prov::smi13::hhr::diagnostics::SbmaSupportServiceProvider
[ Version ("1.0.0")]
class LSIESG_SbmaSupportService : CIM_Service {
   [Implemented, Description (
          "Executes a support method.")]

    uint32 ExecuteSupportMethod (
        [IN] string MethodName,
        [IN] string InArgs [],
        [IN ( false ), OUT] string OutArgs[]
    );
};

   [Indication,  Version ( "2.10.0" ), MappingStrings {"MIB.IETF|2| 1.3.6.1.4.1.3582.4.2.1"}, Description (
       "Class AlertIndication is a specialized type of Indication that "
       "contains information about the severity, cause, recommended "
       "actions and other data of a real world event.")]
class LSIESG_AlertIndication : CIM_AlertIndication {

      [MappingStrings {"MIB.IETF|2| 1.3.6.1.4.1.3582.4.2.1.4 "},Description (
         "Boolean, identifies whether the AEN is saved in FLASH "
         "(i.e. MR but not IR) required.")]
   boolean NonPersistent;

       [MappingStrings {"MIB.IETF|2| 1.3.6.1.4.1.3582.4.2.1.1"},Description (
          "U32, controller ID and library designator")]
   uint32 CtrlId;
		[MappingStrings {"MIB.IETF|2| 1.3.6.1.4.1.3582.4.2.1.3"}]
   uint8 Locale;

   uint8 ArgType;
   [MappingStrings {"MIB.IETF|2| 1.3.6.1.4.1.3582.4.2.1.2"}]
   datetime IndicationTime;

       [Description (
          "it is a  byte array that contains the event arguments. "
          "Note that this must be cast to the proper type based on"
          "the ArgType discriminant.")]
   uint8 ArgUnion[];
   
};

   [Indication,  Version ( "2.10.0" ), Description (
       "Class PortController_Created notifies when a new PortController is Created.")]
class LSIESG_PortController_Created : CIM_AlertIndication {

};

   [Indication,  Version ( "2.10.0" ), Description (
       "Class PortController_Deleted notifies when a PortController is Deleted.")]
class LSIESG_PortController_Deleted : CIM_AlertIndication {

};

   [Indication,  Version ( "2.10.0" ), Description (
       "Class PortController_Modified notifies when a existing PortController is Modified.")]
class LSIESG_PortController_Modified : CIM_AlertIndication {

};

   [Indication,  Version ( "2.10.0" ), Description (
       "Class DiskDrive_Created notifies when a new DiskDrive is Created.")]
class LSIESG_DiskDrive_Created : CIM_AlertIndication {

};

   [Indication,  Version ( "2.10.0" ), Description (
       "Class DiskDrive_Deleted notifies when a existing DiskDrive is Deleted.")]
class LSIESG_DiskDrive_Deleted : CIM_AlertIndication {

};

   [Indication,  Version ( "2.10.0" ), Description (
       "Class DiskDrive_Modified notifies when a existing DiskDrive is Modified.")]
class LSIESG_DiskDrive_Modified : CIM_AlertIndication {

};

   [Indication,  Version ( "2.10.0" ), Description (
       "Class StorageVolume_Created notifies when a new StorageVolume is Created.")]
class LSIESG_StorageVolume_Created : CIM_AlertIndication {

};

   [Indication,  Version ( "2.10.0" ), Description (
       "class StorageVolume_Deleted notifies when a existing storagepool is Deleted.")]
class LSIESG_StorageVolume_Deleted : CIM_AlertIndication {

};

   [Indication,  Version ( "2.10.0" ), Description (
       "Class StorageVolume_Modified notifies when a existing StorageVolume is Modified.")]
class LSIESG_StorageVolume_Modified : CIM_AlertIndication {

};

   [Indication,  Version ( "2.10.0" ), Description (
       "Class StoragePool_Created notifies when a new storagepool is Created.")]
class LSIESG_StoragePool_Created : CIM_AlertIndication {

};

   [Indication,  Version ( "2.10.0" ), Description (
       "class StoragePool_Deleted notifies when a storagepool is Deleted.")]
class LSIESG_StoragePool_Deleted : CIM_AlertIndication {

};

   [Indication,  Version ( "2.10.0" ), Description (
       "class StoragePool_Modified notifies when a storagepool is modified.")]
class LSIESG_StoragePool_Modified : CIM_AlertIndication {

};

   [Indication,  Version ( "2.6.0" ), Description (
       "Class InstCreation notifies when a new instance is created.")]
class LSIESG_InstCreation : CIM_InstCreation {

};

   [Indication,  Version ( "2.6.0" ), Description (
       "class InstModification notifies when an instance is modified.")]
class LSIESG_InstModification : CIM_InstModification {

};

   [Indication,  Version ( "2.6.0" ), Description (
       "Class InstDeletion notifies when an existing instance is "
       "deleted.")]
class LSIESG_InstDeletion : CIM_InstDeletion {

};
//Package -cim::prov::smi13::hhr::vendor::StoreLibCmdProvider
[ Version ("1.0.0")]
class LSIESG_StoreLibCmd {

       [Key,Description(
              "The client should take care to generate a value that"
              "guarantees uniqueness, perhaps using its IP address"
              "or some other value that a second client wont use."
              "If a given client creates more than 1 instance at a"
              "time these also must be unique.  It is not necessary"
              "for this to be formatted so as to be human readable.")]
   string InstanceID;

      [Description (
         "Optional.  Helpful in debugging.This should be a user"
         "friendly alias for the instance."
         "it is a user friendly string value " )]
   string ElementName;

      [Description (
         "StoreLib command type as defined by SL_CMD_TYPE")]
   uint8 CmdType;

      [Description (
         "the command to be executed." )]
   uint8 Cmd;

      [Description (
         "Identifies which device type is used in the device"
         "refrence union")]
   uint8 DeviceDescriminant;

      [Description (
         "it is the Physical disk device Id")]
   uint16 PdDeviceId;

      [Description (
         "it is physical disk sequence number.")]
   uint16 PdSeqNum;

      [Description (
          "it is enclosure device Id")]
   uint16 EnclDeviceId;

      [Description (
          "it is the enclosure index.")]
   uint16 EnclElementIndex;

      [Description (
         "it is array sequence number.")]
   uint16 ArraySeqNum;

       [Description (
          "it is the array refrence number")]
    uint16 ArrayRef;

      [Description (
         "it is logical drive seq no.")]
   uint16 LdSeqNum;

      [Description (
         "it is the logical drive identifier")]
   uint8  LdTargetId;

      [Description (
          " it is the event sequence number")]
   uint32 EventSeqNum;

       [Description (
          "it is the configuration GUID index")]
   uint8 ConfigGuidIndex;

       [Description (
          "generic refrence ")]
   uint64 GenericRef;

       [Description (
          "(command parameters)you can actually use any of the "
          "union fields except the void pointer.")]
   uint64 CmdParam;

       [Description(
          "Size of the Pdata array")]
   uint32  DataSize;

       [Description(
          "it is a byte array containing the command parameter"
          "structures")]
   uint8  PData[];

       [Description (
          "The return value for the StoreLib command.")]
   uint32 ReturnCode;
};

//Package -cim::prov::smi13::hhr::vendor::StoreLibCommandServiceProvider
[ Version ("2.0.0")]
class LSIESG_StoreLibCommandService : CIM_Service {

    


      [Description ("Library Type on which the service is supported"),
          ValueMap { "0", "1", "2", "3", "4", "5" }, 
          Values { "storelib", "storelibir", "storelibir-2" }, 
          ModelCorrespondence { "LSIESG_StoreLibCommandService.Name" }]
   uint32 LibType;

      [Description (
              "No of controllers present in this library.")]
   uint32 ControllerCount;

      [Description ("Endianness of underlaying machine on wich the provider is running."),
          ValueMap { "1", "2" }, 
          Values { "little-endian", "big-endian" }] 
   uint32 Endianness;

      [Description (
         "Default setting is 'Disabled'."  
         "If a configuration property DIRECTCMD=true is found"
         "in the configuration file, the property is set to"
         "'Enabled' The file is read only at startup so the "
         " state can not be changed on the fly."),
         ValueMap { "Enabled", "Disabled" }]
   string EnabledStateOther;

       [Description (
           "The StoreLibCommandService class provides "
           "an extrinsic method used to initiate a StoreLib command."
           "There is one instance of this class per MegaRAIDHBA "
           "instance To use this class, clients first create/update"
           " an instance of StoreLibCmd and pass a reference to this"
           "instance to the extrinsic InvokeCommand "),
           ValueMap { "0", "1", "2", "3", "4"}, 
           Values { "Message Sent", "Not Supported",
           "Message too big", "Message Invalid", "Failed"}] 
   uint32 InvokeCommand ( 
          [IN, OUT, Description (
             "Buffer containing the storelib command to be sent."
             "Note that the result is stored in this same buffer"
             "and the caller is expected to retrieve the instance"
             "in a separate call.")]
      LSIESG_StoreLibCmd REF cmd);

       [Description (
           "An extrinsic method used to initiate a StoreLib command."),
           ValueMap { "0", "1", "2", "3", "4", "5", "6", ".." }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "Reserved" }]
   uint32 InvokeCommandEx (
          [IN, OUT, Description (
             "B64 encoded string containing the storelib command."
             "Note that the result is stored in this same buffer,"
             " result includes the complete command"
             "The caller has to decode the commad using B64 encode/decode mechanism.")]
      string cmd,
         [IN (false), OUT, Description (
             "Actual return code of the command returned from corresponding library ")]
      uint32 ReturnCode);
};

//Package -cim::prov::smi13::hhr::physical::PhysicalMemoryProvider
[ Version ("1.0.0")]
class LSIESG_PhysicalMemory :  CIM_PhysicalMemory {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_MemoryOnCard : CIM_MemoryOnCard {

};

//Package -cim::prov::smi13::hhr::erasure::ErasureSettingProvider
[ Version ("1.0.0")]
class LSIESG_ErasureSetting : SNIA_ErasureSetting {

  [Description (
  "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 64 )]
   string DiskExtent_DeviceID;
   
  [Description (
    "Vendor-unique extension attribute to facilitate associations."),
        MaxLen ( 64 )]
   string StorageVolume_DeviceID;
};

//Package -cim::prov::smi13::hhr::erasure::ErasureCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_ErasureCapabilities : SNIA_ErasureCapabilities {

};

//Package -cim::prov::smi13::hhr::erasure::ErasureServiceProvider
[ Version ("1.0.0")]
class LSIESG_ErasureService : SNIA_ErasureService {

    [Implemented, Description("Erase the contents of a storage element by using "
           "one of the supported erasure methods."),
    ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
            "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
    Values { "Job Completed with No Error", "Not Supported",
            "Unspecified Error", "Timeout", "Failed",
            "Invalid Parameter", "In Use", "DMTF Reserved",
            "Method Parameters Checked - Job Started", "Method Reserved",
            "Vendor Specific" }]
    uint32 Erase(
      [OUT, Description("Reference to the job created, if any")]
      CIM_Job REF Job,
      
      [IN, Description ("StorageVolume or LogicalDisk to be erased")] 
      CIM_StorageExtent REF Element,
      
      [IN, Description("Enumeration indicating the type of element "
          "being erased. \n"
          " 1: StorageVolume\n"
          " 2: LogicalDisk\n"
          " 3: DiskExtent\n"),
          ValueMap { "1", "2", "3"}, 
          Values { "StorageVolume", "LogicalDisk", "DiskExtent"}]
      uint16 ElementType,
      
      [IN, Description("Erasure method to use. This must match one of the"
          " methods listed in the ErasureConfigurationService's "
          "SupportedErasureMethods property. If NULL, then the "
          "DefaultErasureMethod from the ErasureCapabilites will be "
          "used as the erasure method")]
      string ErasureMethod);
};

//Package -cim::prov::smi13::hhr::import::ImportableConfigurationProvider
[ Version ( "2.15.0" )]
class LSIESG_ImportableConfiguration : CIM_SystemSpecificCollection {

      [Description (
          "Enumeration indicating the type of element to which the "
          "collection of StorageElements scope."), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "Reserved", "StorageVolume",
          "StorageExtent", "StoragePool", "LogicalDisk" "SpareExtent"}]
   uint16 ElementType;

      [Description (
          "If the configuration is incomplete (meaning it will be imported "
	  "in a degraded state) the number of missing extents is given here.  "
          "The count does not include missing spare extents.")]
   uint16 MissingExtentCount;

      [Description (
          "The name of the ComputerSystem hosting the ImportableConfiguration. ")]
   string SystemName;
   string DriveRef;
};

//Package -cim::prov::smi13::hhr::import::ImportableStorageServiceProvider
[ Version ( "2.15.0" )]
class LSIESG_ImportableStorageService : CIM_Service {
      [Write, Description (
          "Determines whether an ImportableConfiguration is "
          "automatically imported when the associated drive extents "
          "represent the complete configuration."),
       ValueMap { "1", "2" },
       Values { "AutomaticForCompleteSet", "Manual" }]
   uint16 ImportSetting;

      [Implemented, Description (
          "Instantiates a storage object using the StorageExtents "
          "aggregated to the specified ImportableConfiguration. If an "
	  "ImportableConfiguration is not specified, this is taken to mean "
	  "that the method should operate on all ImportableConfigurations. "
          "If Method Parameters Checked - Job Started (0x1000) is "
          "returned, a ConcreteJob is started, a reference to which is "
          "returned in the Job output Parameter. "
          "If Minimum Not Met (0x1001) is returned, the "
          "MinimumNumberOfExtents value has not been met and the import "
          "operation was not successful." ),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "Reserved", "Method Parameters Checked - Job Started",
          "Minimum Not Met", "Method Reserved", "Vendor Specific" }]
   uint32 ImportConfiguration (
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "Reference to the ImportableConfiguration that will be imported or "
             "null if all ImportableConfigurations are to be imported.")]
      LSIESG_ImportableConfiguration REF Config);

      [Implemented, Description (
          "Clears the configuration data from the StorageExtents "
          "aggregated to the specified CommonConfigurationCollection, "
          "and moves the StorageExtents to a primordial pool. "
          "If Method Parameters Checked - Job Started (0x1000) is "
          "returned, a ConcreteJob is started, a reference to which is "
          "returned in the Job output Parameter. "
          "If Minimum Not Met (0x1001) is returned, the "
          "MinimumNumberOfExtents value has not been met and the import "
          "operation was not successful." ),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4098..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "Reserved", "Method Parameters Checked - Job Started",
          "Method Reserved", "Vendor Specific" }]
   uint32 ClearConfiguration (
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
         [IN, Description (
             "Reference to the StorageExtent Collection that will be cleared or "
	     "null to indicate that all foreign DiskExtents are to be cleared. ")]
      LSIESG_ImportableConfiguration REF Config);

      [Implemented, Description (
          "Moves the StorageExtents associated to the specified LogicalElement "
          "to the ForeignExtentsCollection and an ImportableConfiguration."
          "The LogicalElement is removed by this method. "
          "If Method Parameters Checked - Job Started (0x1000) is "
          "returned, a ConcreteJob is started, a reference to which is "
          "returned in the Job output Parameter. "
          "If Status Error (0x1001) is returned, the "
          "OperationalStatus or ExtentStatus of one or more of the"
          "StorageExtents prevents the operation from proceeding." ),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098..32767", "32768..65535" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "Reserved",
          "Method Parameters Checked - Job Started",
          "Status Error", "Method Reserved", "Vendor Specific" }]
   uint32 ExportConfiguration (
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job,
         [IN, Description (
             "Reference to the storage element that will be exported.")]
      CIM_LogicalElement REF Element);
      [Implemented, Description (
          "This method is used to supply the security key for ImportableConfigurations. "), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7"}, 
       Values {"Success", "Not Supported", "Unknown", "Failed", 
          "Access Denied", "Security Key Format Error", "Security Key Id Error", 
          "Invalid Parameter Combination"}]
   uint32 SetForeignSecurityKey( 
         [IN, Description(
             "The foreign security key. ")]
      string SecurityKey);
};

// No entry in dispatcher 
[ Version ( "1.0.0" ) ]
class LSIESG_RegisteredProfile : CIM_RegisteredProfile
{
    string SoftwareIdentity_InstanceID;

       [Description (
           "used in forming associations."
           "set to match CreationClassName of MegaRaid computer"
           "system instance")]
   string DeviceType;
};


//Package -cim::prov::smi13::hhr::import::ForeignExtentsCollectionProvider
[ Version ("1.0.0")]
class LSIESG_ForeignExtentsCollection : CIM_SystemSpecificCollection {
[Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 256 )]
   string SystemName;
};

//Package -cim::prov::smi13::hhr::import::ImportableStorageCapabilitiesProvider
[ Version ( "2.15.0" )]
class LSIESG_ImportableStorageCapabilities : CIM_Capabilities {

   [Description (
          "ImportSettingsSupported indicates the possible "
          "values supported for ImportSetting."),
       ValueMap { "0", "1", "2" },
       Values { "Unknown", "AutomaticForCompleteSet", "Manual" }]
   uint16 ImportSettingsSupported[];

   [Description (
          "ConfigurationMethodsSupported indicates the possible "
          "values supported for the <OEM>_ImportedStorageConfigurationService."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6"},
       Values { "Unknown", "Import", "ImportAll", "Clear", "ClearAll", "Export", "ExportAll" }]
   uint16 ConfigurationMethodsSupported[];
};

//Package -cim::prov::smi13::hhr::base::PortControllerCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_PortControllerCapabilities : CIM_Capabilities {
	  [Description ( "Vendor-unique extension attribute CheckConsistencySupported.") ]
   boolean AllowSASSATAMixInEnclosure;

	  [Description ( "Vendor-unique extension attribute CheckConsistencySupported.") ]
   boolean AbortConsistencyCheckOnError;

      [Description ( "Vendor-unique extension attribute RebuildSupported.") ]
   boolean RebuildSupported;

      [Description ( "Vendor-unique extension attribute CheckConsistencySupported.") ]
   boolean CheckConsistencySupported;

      [Description ( "Vendor-unique extension attribute BackgroundInitializationSupported.") ]
   boolean BackgroundInitializationSupported;

      [Description ( "Vendor-unique extension attribute ReconstructionSupported.") ]
   boolean ReconstructionSupported;

      [Description ( "Vendor-unique extension attribute PatrolReadSupported.") ]
   boolean PatrolReadSupported;

      [Description ( "Vendor-unique extension attribute AlarmControlSupported.") ]
   boolean AlarmControlSupported;

      [Description ( "Vendor-unique extension attribute ClusterControlSupported.") ]
   boolean ClusterControlSupported;

      [Description ( "Vendor-unique extension attribute StopConsistencyCheckSupported.") ]
   boolean StopConsistencyCheckSupported;

      [Description ( "Vendor-unique extension attribute MultipathSupported.") ]
   boolean MultipathSupported;

      [Description ( "Vendor-unique extension attribute MixedDriveTypesSupported.") ]
   boolean MixedDriveTypesSupported;

      [Description( "Indicates whether bad-block management features are available.")]
   boolean BadBlockManagementSupported;

   [Description ( "Indicates whether data encryption features are available."
"\"Disk Based\" indicates that the encryption engine is on the disk. "
"\"Controller Based\" indicates that the encryption engine is on the controller."),
      ValueMap {0,1,2,3},
     Values {"None", "Disk Based", "Controller Based", "Disk and Controller"} ]
   uint16 DataEncryptionTypes;
};

//Package -cim::prov::smi13::hhr::base::MegaRAIDHBAAdvanceSoftwareProvider
[ Version ( "1.0.0" )]
class LSIESG_MegaRAIDHBAAdvanceSoftware : CIM_Capabilities {

	[Description ( "Raid5 enabled "),
      ValueMap {0,1,2,3,4,5,6},
     Values {"Not Supported/Not Enabled", "default premium feature", "premium feature upgraded via upgrade Key",
	 "premium feature enabled via PFK, stored in NVRAM","premium feature enabled via PFK, stored in key-vault",
	 "premium feature enabled via PFK provide at boot time","premium feature enabled via trial PFK"} ]
   uint8 Raid5;
   
   [Description ( "Raid6 enabled "),
      ValueMap {0,1,2,3,4,5,6},
     Values {"Not Supported/Not Enabled", "default premium feature", "premium feature upgraded via upgrade Key",
	 "premium feature enabled via PFK, stored in NVRAM","premium feature enabled via PFK, stored in key-vault",
	 "premium feature enabled via PFK provide at boot time","premium feature enabled via trial PFK"} ]
   uint8 Raid6;
   
   [Description ( "Security enabled "),
      ValueMap {0,1,2,3,4,5,6},
     Values {"Not Supported/Not Enabled", "default premium feature", "premium feature upgraded via upgrade Key",
	 "premium feature enabled via PFK, stored in NVRAM","premium feature enabled via PFK, stored in key-vault",
	 "premium feature enabled via PFK provide at boot time","premium feature enabled via trial PFK"} ]
   uint8 Security;
   
   [Description ( "CTIO enabled"),
      ValueMap {0,1,2,3,4,5,6},
     Values {"Not Supported/Not Enabled", "default premium feature", "premium feature upgraded via upgrade Key",
	 "premium feature enabled via PFK, stored in NVRAM","premium feature enabled via PFK, stored in key-vault",
	 "premium feature enabled via PFK provide at boot time","premium feature enabled via trial PFK"} ]
   uint8 FastPath;
   
   [Description ( "Snapshot enabled "),
      ValueMap {0,1,2,3,4,5,6},
     Values {"Not Supported/Not Enabled", "default premium feature", "premium feature upgraded via upgrade Key",
	 "premium feature enabled via PFK, stored in NVRAM","premium feature enabled via PFK, stored in key-vault",
	 "premium feature enabled via PFK provide at boot time","premium feature enabled via trial PFK"} ]
   uint8 Snapshot;
   
   [Description ( "Cache Cade enabled "),
      ValueMap {0,1,2,3,4,5,6},
     Values {"Not Supported/Not Enabled", "default premium feature", "premium feature upgraded via upgrade Key",
	 "premium feature enabled via PFK, stored in NVRAM","premium feature enabled via PFK, stored in key-vault",
	 "premium feature enabled via PFK provide at boot time","premium feature enabled via trial PFK"} ]
   uint8 CacheCade;
   
   [Description ( "Cache Cade enabled in WB mode"),
      ValueMap {0,1,2,3,4,5,6},
     Values {"Not Supported/Not Enabled", "default premium feature", "premium feature upgraded via upgrade Key",
	 "premium feature enabled via PFK, stored in NVRAM","premium feature enabled via PFK, stored in key-vault",
	 "premium feature enabled via PFK provide at boot time","premium feature enabled via trial PFK"} ]
   uint8 CacheCadePro;
   
   [Description ( "CacheOffload enabled "),
      ValueMap {0,1,2,3,4,5,6},
     Values {"Not Supported/Not Enabled", "default premium feature", "premium feature upgraded via upgrade Key",
	 "premium feature enabled via PFK, stored in NVRAM","premium feature enabled via PFK, stored in key-vault",
	 "premium feature enabled via PFK provide at boot time","premium feature enabled via trial PFK"} ]
   uint8 CacheOffload;
   
   [Description ( "HADas enabled "),
      ValueMap {0,1,2,3,4,5,6},
     Values {"Not Supported/Not Enabled", "default premium feature", "premium feature upgraded via upgrade Key",
	 "premium feature enabled via PFK, stored in NVRAM","premium feature enabled via PFK, stored in key-vault",
	 "premium feature enabled via PFK provide at boot time","premium feature enabled via trial PFK"} ]
   uint8 HADas;

 
   
};

//Package -cim::prov::smi13::hhr::vendor::SupportServiceCapabilitiesProvider
[ Version ( "1.0.0" )]
class LSIESG_SupportServiceCapabilities : CIM_Capabilities {

boolean CheckpointStateAvailable;

boolean ProfileClearAvailable;

boolean ProfileRetrievalAvailable;

};

//Package -cim::prov::smi13::hhr::vendor::SupportServiceProvider
[ Version ( "1.0.0" )]
class LSIESG_SupportService : CIM_Service {

      [Implemented, Description (
          "Vendor unique method GetDeviceSupportProfile is intended "
          " to be used to return a string containing support data."
          "The contents of the string are device dependent" ),
       ValueMap { "0", "1", "2", "3", "4", "5" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter"}]
   uint32 GetDeviceSupportProfile ( 
            [OUT ( true ), Description (
                "byte array containing the device support data." )]
         uint8 SupportProfile[]);
         
      [Implemented, Description (
          "Vendor unique method ClearDeviceSupportProfile is intended "
          " to support clearing accumulated support data." ),
       ValueMap { "0", "1", "2", "3", "4", "5" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter"}]
   uint32 ClearDeviceSupportProfile ( );
   
      [Implemented, Description (
             "Vendor unique method CheckpointStateData is used to trigger the provider "
             " to save any critical state data.  All state data should be consistent, "
             "all in-flight transactions allowed to complete prior to the persistent store write."
             "This method is synchronous, that is all activities must "
             " complete before the method returns.  The method is intended "
             " to be used for provider upgrades or any situation where the "
             " provider may be forced to shutdown but the usual notification "
             "from the CIMOM is not expected." ),
          ValueMap { "0", "1", "2", "3", "4", "5" },
          Values { "Job Completed with No Error", "Not Supported",
             "Unknown", "Timeout", "Failed", "Invalid Parameter"}]
      uint32 CheckpointStateData ( );

};

//Package -cim::prov::smi13::hhr::physical::ServerBackplaneCardProvider
[ Version ("1.0.0")]
class LSIESG_ServerBackplaneCard : CIM_PhysicalElement {


};

//Package -cim::prov::smi13::hhr::physical::FanPresenceSensorProvider
[ Version ("1.0.0")]
class LSIESG_FanPresenceSensor : CIM_NumericSensor {
      [Description (
         "ChassisTag value of the EnclosureChassis the sensor is housed in") ]
   string ChassisTag;

};

//Package -cim::prov::smi13::hhr::physical::ESMPresenceSensorProvider
[ Version ("1.0.0")]
class LSIESG_ESMPresenceSensor : CIM_NumericSensor {
      [Description (
         "ChassisTag value of the EnclosureChassis the sensor is housed in") ]
   string ChassisTag;


};

//Package -cim::prov::smi13::hhr::physical::EnclosureTemperatureSensorProvider
[ Version ("1.0.0")]
class LSIESG_EnclosureTemperatureSensor : CIM_NumericSensor {
      [Description (
         "ChassisTag value of the EnclosureChassis the sensor is housed in") ]
   string ChassisTag;
   
      [Description (
         "The Sensor\'s threshold values specify the ranges (min "
         "and max values) for determining whether the Sensor is "
         "operating under Normal, NonCritical, Critical or Fatal "
         "conditions. If the CurrentReading is between "
         "LowerThresholdWarning and Lower ThresholdFatal, then "
         "the CurrentState is Warning.") ]
   sint32 LowerThresholdWarning;
   
      [Description (
         "The Sensor\'s threshold values specify the ranges (min "
         "and max values) for determining whether the Sensor is "
         "operating under Normal, NonCritical, Critical or Fatal "
         "conditions. If the CurrentReading is between "
         "UpperThresholdWarning and Upper ThresholdFatal, then "
         "the CurrentState is Warning.") ]
   sint32 UpperThresholdWarning;

};



//Package -cim::prov::smi13::hhr::physical::EnclosureAlarmCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_EnclosureAlarmCapabilities : CIM_AlarmDeviceCapabilities {

};

//Package -cim::prov::smi13::hhr::physical::PhysicalTemperatureSensorProvider
[ Version ("1.0.0")]
class LSIESG_PhysicalTemperatureSensor : CIM_PhysicalElement {

      [Required, Description (
          "Vendor property used to facilitate associations."
          "this same property is currently populated in powerSupplyPackage class")]
   string SensorID;

      [Required, Description (
          "Vendor property used to facilitate associations."
          "this same property is currently populated in powerSupplyPackage class")]
   string ChassisTag;

};


//Package -cim::prov::smi13::hhr::physical::ESMComponentCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_ESMComponentCapabilities : CIM_PhysicalAssetCapabilities {

      [Required, Description (
          "Vendor property used to facilitate associations."
          "this same property is currently populated in powerSupplyPackage class")]
   string ChassisTag;

};

//Package -cim::prov::smi13::hhr::physical::PowerSupplyPackageCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_PowerSupplyPackageCapabilities : CIM_PhysicalAssetCapabilities {

      [Required, Description (
          "Vendor property used to facilitate associations."
          "this same property is currently populated in powerSupplyPackage class")]
   string ChassisTag;
};

//Package -cim::prov::smi13::hhr::physical::FanSpeedSensorProvider
[ Version ("1.0.0")]
class LSIESG_FanSpeedSensor : CIM_NumericSensor {

};


//Package -cim::prov::smi13::hhr::physical::ServerDriveCageProvider
[ Version ("1.0.0")]
class LSIESG_ServerDriveCage : CIM_Chassis {

};


//Package -cim::prov::smi13::hhr::physical::ServerBackplaneControllerProvider
[ Version ("1.0.0")]
class LSIESG_ServerBackplaneController : CIM_LogicalDevice{


};

//Package -cim::prov::smi13::hhr::physical::ESMFirmwareIdentityProvider
[ Version ("1.0.0")]
class LSIESG_ESMFirmwareIdentity : CIM_SoftwareIdentity{
[Description (
          "Identifies the ESM the software is installed on. "  
                      "Value corresponds to <OEM>_ESMController.DeviceID and is used to " 
                      "facilitate association generation..")]
   string ESMDeviceID;


};


//Package -cim::prov::smi13::hhr::physical::EnclosureSensorPresentProvider
[ Version ("1.0.0")]
class LSIESG_EnclosureSensorPresent : CIM_Sensor{

[Description (
         "ChassisTag value of the EnclosureChassis the sensor is housed in") ]
   string ChassisTag ;
   
      [Description ( "The current value indicated by the Sensor." ), 
       MappingStrings { "MIF.DMTF|Temperature Probe|002.5", 
          "MIF.DMTF|Electrical Current Probe|001.5", 
          "MIF.DMTF|Voltage Probe|001.5" }]
   sint32 CurrentReading;

};

//Package -cim::prov::smi13::hhr::physical::BackplaneKernelFirmwareIdentityProvider
[ Version ("1.0.0")]
class LSIESG_BackplaneKernelFirmwareIdentity : CIM_SoftwareIdentity {

};

//Package -cim::prov::smi13::hhr::physical::PowerSupplyPresenceSensorProvider
[ Version ("1.0.0")]
class LSIESG_PowerSupplyPresenceSensor : CIM_NumericSensor {
      [Description (
         "ChassisTag value of the EnclosureChassis the sensor is housed in") ]
   string ChassisTag;

};

//Package -cim::prov::smi13::hhr::physical::PhysicalAlarmProvider
[ Version ("1.0.0")]
class LSIESG_PhysicalAlarm : CIM_PhysicalElement {
      [Description (
         "The DeviceID of the corresponding logical instance") ]
   string AlarmID;

      [Description (
         "ChassisTag value of the EnclosureChassis the sensor is housed in") ]
   string ChassisTag;

};


//Package -cim::prov::smi13::hhr::physical::BackplaneAppFirmwareIdentityProvider
[ Version ("1.0.0")]
class LSIESG_BackplaneAppFirmwareIdentity : CIM_SoftwareIdentity {
};
//Package -cim::prov::smi13::hhr::blockservices::IntegratedParentStoragePoolCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_IntegratedParentStoragePoolCapabilities : CIM_StorageCapabilities {

[Implemented, Experimental, Description (
          "For systems that support discrete ExtentStripeLengths for "
          "volume or pool creation, this method can be used to "
          "retrieve a list of supported values. Note that different "
          "implementations may support either the "
          "GetSupportedStripeLengths or the "
          "GetSupportedStripeLengthRange method. Also note that the "
          "advertised sizes may change after the call due to "
          "requests from other clients. If the system only supports "
          "a range of sizes, then the return value will be set to "
          "3." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Method completed OK", "Method not supported", 
          "Choices not available for this Capability", 
          "Use GetSupportedStripeLengthRange instead" }]
   uint32 GetSupportedStripeLengths(
         [IN ( false ), OUT, Description ( 
             "List of supported ExtentStripeLengths for a "
             "Volume/Pool creation or modification." ), 
          ArrayType ( "Indexed" )]
      uint16 StripeLengths[]);
	  
      [Implemented, Experimental, Description ( 
          "For systems that support a range of ExtentStripeLengths "
          "for volume or pool creation, this method can be used to "
          "retrieve the supported range. Note that different "
          "implementations may support either the "
          "GetSupportedExtentLengths or the "
          "GetSupportedExtentLengthRange method. Also note that the "
          "advertised sizes may change after the call due to "
          "requests from other clients. If the system only supports "
          "discrete values, then the return value will be set to 3." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Method completed OK", "Method not supported", 
          "Choices not available for this Capability", 
          "Use GetSupportedStripeLengths instead" }]
   uint32 GetSupportedStripeLengthRange(
         [IN ( false ), OUT, Description ( 
             "The minimum ExtentStripeDepth for a volume/pool in bytes."
              )]
      uint16 MinimumStripeLength, 
         [IN ( false ), OUT, Description ( 
             "The maximum ExtentStripeLength for a volume/pool in bytes."
              )]
      uint16 MaximumStripeLength, 
         [IN ( false ), OUT, Description ( 
             "A volume/pool ExtentStripeLength must be a "
             "multiple of this value which is specified in "
             "bytes." )]
      uint32 StripeLengthDivisor);

      [Implemented, Description ( 
          "Method to create and populate a StorageSetting instance "
          "from a StorageCapability instance. This removes the need "
          "to populate default settings and other settings in the "
          "context of each StorageCapabilities (which could be "
          "numerous). If the underlying instrumentation supports "
          "the StorageSettingWithHints subclass, then an instance "
          "of that class will be created instead." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error", 
          "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved", 
          "Vendor Specific" }]
   uint32 CreateSetting(
         [IN, Description ( 
             "If \'Default\' is passed for the CreateDefault "
             "parameter, the Max, Goal, and Min setting "
             "attributes are set to the Default values of the "
             "parent StorageCapabilities when the instance is "
             "created. \n"
             "If set to \'Goal\' the new StorageSetting "
             "attributes are set to the related attributes of "
             "the parent StorageCapabilities, e.g. Min to Min, "
             "Goal to Default, and Max to Max. \n"
             "\n"
             "This method maybe deprecated in lieu of intrinsics "
             "once limitations in the CIM Operations are "
             "addressed." ), 
          ValueMap { "2", "3" }, 
          Values { "Default", "Goal" }]
      uint16 SettingType, 
         [IN ( false ), OUT, Description ( 
             "Reference to the created StorageSetting instance." )]
      CIM_StorageSetting REF NewSetting);

      [Implemented, Experimental, Description ( 
          "For systems that support discrete UserDataStripeDepths "
          "for volume or pool creation, this method can be used to "
          "retrieve a list of supported values. Note that different "
          "implementations may support either the "
          "GetSupportedStripeDepths or the "
          "GetSupportedStripeDepthRange method. If the system only "
          "supports a range of sizes, then the return value will be "
          "set to 2." ), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported", 
          "Use GetSupportedStripeDepthRange instead" }]
   uint32 GetSupportedStripeDepths(
         [IN ( false ), OUT, Description ( 
             "List of supported UserDataStripeDepths for a "
             "Volume/Pool creation or modification." ), 
          Units ( "Bytes" ), 
          ArrayType ( "Indexed" ), 
          PUnit ( "byte" )]
      uint64 StripeDepths[]);

      [Implemented, Experimental, Description ( 
          "For systems that support a range of UserDataStripeDepths "
          "for volume or pool creation, this method can be used to "
          "retrieve the supported range. Note that different "
          "implementations may support either the "
          "GetSupportedStripeDepths or the "
          "GetSupportedStripeDepthRange method. If the system only "
          "supports discrete values, then the return value will be "
          "set to 2." ), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported", 
          "Use GetSupportedStripeDepths instead" }]
   uint32 GetSupportedStripeDepthRange(
         [IN ( false ), OUT, Description ( 
             "The minimum UserDataStripeDepth for a volume/pool in bytes."
              ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 MinimumStripeDepth, 
         [IN ( false ), OUT, Description ( 
             "The maximum UserDataStripeDepth for a volume/pool in bytes."
              ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 MaximumStripeDepth, 
         [IN ( false ), OUT, Description ( 
             "A volume/pool UserDataStripeDepth must be a "
             "multiple of this value which is specified in "
             "bytes." ), 
          Units ( "Bytes" ), 
          PUnit ( "byte" )]
      uint64 StripeDepthDivisor);

};

//Package -cim::prov::smi13::hhr::physical::IntegratedRaidChipProvider
[ Version ("1.0.0")]
class LSIESG_IntegratedRaidChip : CIM_PhysicalPackage {

      [Description (
          "Boolean indicating that this Card is a Motherboard or, more "
          "generically, a baseboard in a Chassis.")]
	   boolean HostingBoard;

};

//Package -cim::prov::smi13::hhr::physical::InitiatorTargetChipProvider
[ Version ("1.0.0")]
class LSIESG_InitiatorTargetChip : CIM_PhysicalPackage {

      [Description (
          "Boolean indicating that this Card is a Motherboard or, more "
          "generically, a baseboard in a Chassis.")]
	   boolean HostingBoard;

};
//Package -cim::prov::smi13::hhr::physical::IntegratedRaidProductProvider
[ Version ("1.0.0")]
class LSIESG_IntegratedRaidProduct : CIM_Product {
};
//Package -cim::prov::smi13::hhr::physical::InitiatorTargetProductProvider
[ Version ("1.0.0")]
class LSIESG_InitiatorTargetProduct : CIM_Product {


};

//Package -cim::prov::smi13::hhr::blockservices::IntegratedParentStoragePoolProvider
[ Version ("1.0.0")]
class LSIESG_IntegratedParentStoragePool : CIM_StoragePool {

      [Implemented, Description (
          "For pools that support discrete sizes for volume or pool "
          "creation, this method can be used to retrieve a list of "
          "supported sizes. Note that different pool implementations "
          "may support either or both the GetSupportedSizes and "
          "GetSupportedSizeRanges methods at different times, "
          "depending on Pool configuration. Also note that the "
          "advertised sizes may change after the call due to requests "
          "from other clients. If the pool currently only supports a "
          "range of sizes, then the return value will be set to 1."), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported",
          "Use GetSupportedSizeRange instead" }]
   uint32 GetSupportedSizes ( 
         [IN, Description (
             "The type of element for which supported sizes are "
             "reported for."), 
          ValueMap { "2", "3", "4" }, 
          Values { "Storage Pool", "Storage Volume", "Logical Disk" }]
      uint16 ElementType, 
         [IN, Description (
             "The StorageSetting for which supported sizes should be "
             "reported for.")]
      CIM_StorageSetting REF Goal, 
         [IN , OUT, Description (
             "List of supported sizes for a Volume/Pool creation or "
             "modification."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 Sizes[] ); 

      [Implemented, Description (
          "For pools that that support a range of sizes for volume or "
          "pool creation, this method can be used to retrieve the "
          "supported range. Note that different pool implementations "
          "may support either or both the GetSupportedSizes and "
          "GetSupportedSizeRanges methods at different times, "
          "depending on Pool configuration. Also note that the "
          "advertised sizes may change after the call due to requests "
          "from other clients. If the pool currently only supports "
          "discrete sizes, then the return value will be set to 1."), 
       ValueMap { "0", "1", "2" }, 
       Values { "Method completed OK", "Method not supported",
          "Use GetSupportedSizes instead" }]
   uint32 GetSupportedSizeRange ( 
         [IN, Description (
             "The type of element for which supported size ranges are "
             "reported for."), 
          ValueMap { "2", "3", "4" }, 
          Values { "Storage Pool", "Storage Volume", "Logical Disk" }]
      uint16 ElementType, 
         [IN, Description (
             "The StorageSetting for which supported size ranges "
             "should be reported for.")]
      CIM_StorageSetting REF Goal, 
         [IN , OUT, Description (
             "The minimum size for a volume/pool in bytes."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 MinimumVolumeSize, 
         [IN , OUT, Description (
             "The maximum size for a volume/pool in bytes."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 MaximumVolumeSize, 
         [IN , OUT, Description (
             "A volume/pool size must be a multiple of this value "
             "which is specified in bytes."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 VolumeSizeDivisor); 

      [Implemented, Description (
          "This method can be used to retrieve a list of available "
          "Extents that may be used in the creation or modification of "
          "a StoragePool, StorageVolume, or LogicalDisk. The "
          "GetAvailableExtents method MUST return the Extents from the "
          "set of Component Extents of the Pool on which the method is "
          "being invoked. The returned Extents are available at the "
          "time the method returns. There is no guarantee that the "
          "same Extents will be available later. This method MUST "
          "return the Extents that are not being used as supporting "
          "capacity for any other Pools, Volumes, or LogicalDisks that "
          "have been allocated from this Pool. The Extent returned "
          "MUST be a component Extent of the Pool or subdivisions of a "
          "component Extent, the subdivisions themselves represented "
          "as Extents."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..",
          "4098..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", "Unknown",
          "Timeout", "Failed", "Invalid Parameter", "In Use",
          "DMTF Reserved", "Method Reserved", "Vendor Specific" }]
   uint32 GetAvailableExtents ( 
         [IN, Description (
             "The StorageSetting (Goal) for which supported extents "
             "should be retrieved as available. \n"
             "If a NULL is passed for the Goal, the method will return "
             "all available extents, regardless of the goal. There "
             "exists a possibility of error in creating a Pool, "
             "Volume, or LogicalDisk retrieved in this manner.")]
      CIM_StorageSetting REF Goal, 
         [OUT, Description (
             "List of references to available StorageExtents, or "
             "subclass instances.")]
      CIM_StorageExtent REF AvailableExtents[] ); 
      
};

//Package -cim::prov::smi13::hhr::blockservices::IntegratedConfigurationCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_IntegratedConfigurationCapabilities : CIM_StorageConfigurationCapabilities {

};
//Package -cim::prov::smi13::hhr::battery::BatteryPresenceSensorProvider
[ Version ("1.0.0")]
class LSIESG_BatteryPresenceSensor : CIM_Sensor {

};

//Package -cim::prov::smi13::hhr::battery::BatteryCurrentSensorProvider
[ Version ("1.0.0")]
class LSIESG_BatteryCurrentSensor : CIM_NumericSensor {

};


//Package -cim::prov::smi13::hhr::battery::BatteryTemperatureSensorProvider
[ Version ("1.0.0")]
class LSIESG_BatteryTemperatureSensor : CIM_NumericSensor {

};


//Package -cim::prov::smi13::hhr::battery::BatteryVoltageSensorProvider
[ Version ("1.0.0")]
class LSIESG_BatteryVoltageSensor : CIM_NumericSensor {

};

//Package -cim::prov::smi13::hhr::jobcontrol::BatteryLearnJobProvider
[ Version ("1.0.0")]
class LSIESG_BatteryLearnJob : CIM_ConcreteJob {

      [Description ( "Controller SAS address, vendor property used to facilitate associations.")]
   string SystemName;

      [Description ( 
          "One time delay in the scheduled run time of the learn cycle in hours values "
          "between 0-143.  This is a read/write property.  This value is automatically "
          "cleared when the scheduled job runs.")]
   uint16 DelayStart;

      [Implemented, Description (
          "Requests that the state of the job be changed to the value "
          "specified in the RequestedState parameter. Invoking the "
          "RequestStateChange method multiple times could result in "
          "earlier requests being overwritten or lost. \n"
          "If 0 is returned, then the task completed successfully. Any "
          "other return code indicates an error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported",
          "Unknown/Unspecified Error",
          "Can NOT complete within Timeout Period", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Transition Started",
          "Invalid State Transition",
          "Use of Timeout Parameter Not Supported", "Busy",
          "Method Reserved", "Vendor Specific" }]
   uint32 RequestStateChange( 
         [IN, Description (
             "RequestStateChange changes the state of a job. The "
             "possible values are as follows: \n"
             "Start (2) changes the state to 'Running'. \n"
             "Suspend (3) stops the job temporarily. The intention is "
             "to subsequently restart the job with 'Start'. It might "
             "be possible to enter the 'Service' state while "
             "suspended. (This is job-specific.) \n"
             "Terminate (4) stops the job cleanly, saving data, "
             "preserving the state, and shutting down all underlying "
             "processes in an orderly manner. \n"
             "Kill (5) terminates the job immediately with no "
             "requirement to save data or preserve the state. \n"
             "Service (6) puts the job into a vendor-specific service "
             "state. It might be possible to restart the job."), 
//        Following Vendor specific extensions are only supported 
//        "Start (2).      \n"
//        "Manual (32768). \n" 
//        "Warnonly (32769) . \n" 
//        "Automatic (32770) . \n" 
          ValueMap { "2", "3", "4", "5", "6", "7..32767",
             "32768..65535" }, 
          Values { "Start", "Suspend", "Terminate", "Kill", "Service",
             "DMTF Reserved", "Vendor Reserved" }]
      uint16 RequestedState, 
         [IN, Description (
             "A timeout period that specifies the maximum amount of "
             "time that the client expects the transition to the new "
             "state to take. The interval format must be used to "
             "specify the TimeoutPeriod. A value of 0 or a null "
             "parameter indicates that the client has no time "
             "requirements for the transition. \n"
             "If this property does not contain 0 or null and the "
             "implementation does not support this parameter, a return "
             "code of 'Use Of Timeout Parameter Not Supported' must be "
             "returned.")]
      datetime TimeoutPeriod);
};

//Package -cim::prov::smi13::hhr::blockservices::IntegratedStorageConfigurationServiceProvider
[ Version ("1.0.0")]
class LSIESG_IntegratedStorageConfigurationService : CIM_StorageConfigurationService {

[Implemented, Description (
          "Starts a job to create (or modify) a StoragePool. The "
          "StoragePool will be (or must be) scoped to the same System "
          "as this Service. One of the parameters for this method is "
          "Size. As an input parameter, Size specifies the desired "
          "size of the pool. As an output parameter, it specifies the "
          "size achieved. Space is taken from either or both of the "
          "specified input StoragePools and StorageExtents (InPools "
          "and InExtents). The capability requirements that the Pool "
          "must support are defined using the Goal parameter. If the "
          "requested pool size cannot be created, no action will be "
          "taken, the Return Value will be 4097/0x1001, and the output "
          "value of Size will be set to the nearest possible size. If "
          "0 is returned, then the task completed successfully and the "
          "use of ConcreteJob was not required. If the task will take "
          "some time to complete, a ConcreteJob will be created and "
          "its reference returned in the output parameter Job."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Size Not Supported", "Method Reserved", "Vendor Specific" }]
   uint32 CreateOrModifyStoragePool ( 
         [IN, Description (
             "A end user relevant name for the pool being created. If "
             "NULL, then a system supplied default name can be used. "
             "The value will be stored in the 'ElementName' property "
             "for the created pool. If not NULL, this parameter will "
             "supply a new name when modifying an existing pool.")]
      string ElementName, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "Reference to an instance of StorageSetting that defines "
             "the desired capabilities of the StoragePool. If set to a "
             "null value, the default configuration from the source "
             "pool will be used. If not NULL, this parameter will "
             "supply a new Goal setting when modifying an existing "
             "pool.")]
      CIM_StorageSetting REF Goal, 
         [IN, OUT, Description (
             "As an input parameter this specifies the desired pool "
             "size in bytes. As an output parameter this specifies the "
             "size achieved."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 Size, 
         [IN, Description (
             "Array of strings containing representations of "
             "references to CIM_StoragePool instances, that are used "
             "to create the Pool or modify the source pools.")]
      string InPools[], 
         [IN, Description (
             "Array of strings containing representations of "
             "references to CIM_StorageExtent instances, that are used "
             "to create the Pool or modify the source extents.")]
      string InExtents[], 
         [IN, OUT, Description (
             "As an input parameter: if null, creates a new "
             "StoragePool. If not null, modifies the referenced Pool. "
             "When returned, it is a reference to the resulting "
             "StoragePool.")]
      CIM_StoragePool REF Pool); 

      [Implemented, Description (
          "Start a job to create (or modify) a specified element (for "
          "example a StorageVolume or StorageExtent) from a "
          "StoragePool. One of the parameters for this method is Size. "
          "As an input parameter, Size specifies the desired size of "
          "the element. As an output parameter, it specifies the size "
          "achieved. Space is taken from the input StoragePool. The "
          "desired settings for the element are specified by the Goal "
          "parameter. If the requested size cannot be created, no "
          "action will be taken, and the Return Value will be "
          "4097/0x1001. Also, the output value of Size is set to the "
          "nearest possible size. If 0 is returned, the function "
          "completed successfully and no ConcreteJob instance was "
          "required. If 4096/0x1000 is returned, a ConcreteJob will be "
          "started to create the element. The Job's reference will be "
          "returned in the output parameter Job."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started",
          "Size Not Supported", "Method Reserved", "Vendor Specific" }]
   uint32 CreateOrModifyElementFromStoragePool( 
         [IN, Description (
             "A end user relevant name for the element being created. "
             "If NULL, then a system supplied default name can be "
             "used. The value will be stored in the 'ElementName' "
             "property for the created element. If not NULL, this "
             "parameter will supply a new name when modifying an "
             "existing element.")]
      string ElementName, 
         [IN, Description (
             "Enumeration indicating the type of element being created "
             "or modified. If the input parameter TheElement is "
             "specified when the operation is a 'modify', this type "
             "value must match the type of that instance."), 
          ValueMap { "0", "1", "2", "3", "4", "..", "32768..65535" }, 
          Values { "Unknown", "Reserved", "StorageVolume",
             "StorageExtent", "LogicalDisk", "DMTF Reserved",
             "Vendor Specific" }]
      uint16 ElementType, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "The requirements for the element to maintain. If set to "
             "a null value, the default configuration from the source "
             "pool will be used. This parameter should be a reference "
             "to a Setting or Profile appropriate to the element being "
             "created. If not NULL, this parameter will supply a new "
             "Goal when modifying an existing element.")]
      CIM_ManagedElement REF Goal, 
         [IN, OUT, Description (
             "As an input parameter Size specifies the desired size. "
             "If not NULL, this parameter will supply a new size when "
             "modifying an existing element. As an output parameter "
             "Size specifies the size achieved."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 Size, 
         [IN, Description (
             "The Pool from which to create the element. This "
             "parameter must be set to null if the input parameter "
             "TheElement is specified (in the case of a 'modify' "
             "operation).")]
      CIM_StoragePool REF InPool, 
         [IN, OUT, Description (
             "As an input parameter: if null, creates a new element. "
             "If not null, then the method modifies the specified "
             "element. As an output parameter, it is a reference to "
             "the resulting element.")]
      CIM_LogicalElement REF TheElement); 

[Implemented, Description (
          "Start a job to create (or modify) a specified storage "
          "element from specified input StorageExtents. The created or "
          "modified storage element can be a StorageExtent, "
          "StorageVolume, LogicalDisk, or StoragePool. An input list "
          "of InElements must be specified. The GetAvailableExtents "
          "method can be used to get a list of valid extents that can "
          "be used to achieve a desired goal. Validity of the extents "
          "is determined by the implementation. As an input parameter, "
          "Size specifies the desired size of the element. As an "
          "output parameter, it specifies the size achieved. Space is "
          "taken from the input InElements. The desired Settings for "
          "the element are specified by the Goal parameter. If the "
          "size of Extents passed is less than the size requested, "
          "then the capacity is drawn from the extents in the order, "
          "left to right, that the Extents were specified. The partial "
          "consumption of an Extent is represented by an Extent for "
          "the capacity used and an Extent for the capacity not used. "
          "If the Size is NULL, then a configuration using all Extents "
          "passed will be attempted. If the requested size cannot be "
          "created, no action will be taken, and the Return Value will "
          "be 4097/0x1001. Also, the output value of Size is set to "
          "the nearest possible size. If 0 is returned, the function "
          "completed successfully and no ConcreteJob instance was "
          "required. If 4096/0x1000 is returned, a ConcreteJob will be "
          "started to create the element. The Job's reference will be "
          "returned in the output parameter Job."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097", "4098..32767", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", "Unknown",
          "Timeout", "Failed", "Invalid Parameter", "In Use",
          "DMTF Reserved", "Method Parameters Checked - Job Started",
          "Size Not Supported", "Method Reserved", "Vendor Specific" }]
   uint32 CreateOrModifyElementFromElements( 
         [IN, Description (
             "A end user relevant name for the element being created. "
             "If NULL, then a system-supplied default name can be "
             "used. The value will be stored in the 'ElementName' "
             "property for the created element. If not NULL, this "
             "parameter will supply a new name when modifying an "
             "existing element.")]
      string ElementName, 
         [Required, IN, Description (
             "Enumeration indicating the type of element being created "
             "or modified. If the input parameter TheElement is "
             "specified when the operation is a 'modify', this type "
             "value must match the type of that instance. The actual "
             "CIM class of the created TheElement can be "
             "vendor-specific, but it must be a derived class of the "
             "appropriate CIM class -- i.e., CIM_StorageVolume, "
             "CIM_StorageExtent, CIM_LogicalDisk, or CIM_StoragePool."), 
          ValueMap { "0", "1", "2", "3", "4", "5", "..",
          "32768..65535" }, 
          Values { "Unknown", "Reserved", "Storage Volume",
             "Storage Extent", "Storage Pool", "Logical Disk",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 ElementType, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "The requirements for the element to maintain. If set to "
             "a null value, the default configuration associated with "
             "the Service will be used. This parameter should be a "
             "reference to a Setting, SettingData, or Profile "
             "appropriate to the element being created. If not NULL, "
             "this parameter will supply a new Goal when modifying an "
             "existing element.")]
      CIM_ManagedElement REF Goal, 
         [IN, OUT, Description (
             "As an input parameter Size specifies the desired size. "
             "If not NULL, this parameter will supply a new size when "
             "modifying an existing element. As an output parameter "
             "Size specifies the size achieved."), 
          Punit ( "byte" ), Units ( "Bytes" )]
      uint64 Size, 
         [Required, IN, Description (
             "Array of references to storage element instances that "
             "are used to create or modify TheElement.")]
      CIM_StorageExtent REF InElements[], 
         [IN, OUT, Description (
             "As an input parameter: if null, creates a new element. "
             "If not null, then the method modifies the specified "
             "element. As an output parameter, it is a reference to "
             "the resulting element.")]
      CIM_LogicalElement REF TheElement); 

      [Implemented, Description (
          "Start a job to delete a StoragePool. The freed space is "
          "returned source StoragePools (indicated by AllocatedFrom "
          "StoragePool) or back to underlying storage extents. If 0 is "
          "returned, the function completed successfully, and no "
          "ConcreteJob was required. If 4096/0x1000 is returned, a "
          "ConcreteJob will be started to delete the StoragePool. A "
          "reference to the Job is returned in the Job parameter."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 DeleteStoragePool ( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "Reference to the pool to delete.")]
      CIM_StoragePool REF Pool); 

 [Implemented, Description (
          "Start a job to delete an element previously created from a "
          "StoragePool. The freed space is returned to the source "
          "StoragePool. If 0 is returned, the function completed "
          "successfully and no ConcreteJob was required. If "
          "4096/0x1000 is returned, a ConcreteJob will be started to "
          "delete the element. A reference to the Job is returned in "
          "the Job parameter."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 ReturnToStoragePool( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "Reference to the element to return to the StoragePool.")]
      CIM_LogicalElement REF TheElement); 

      [Implemented, Description (
          "Start a job to create a new storage object which is a "
          "replica of the specified source storage object. "
          "(SourceElement). Note that using the input paramter, "
          "CopyType, this function can be used to instantiate the "
          "replica, and to create an ongoing association between the "
          "source and replica. If 0 is returned, the function "
          "completed successfully and no ConcreteJob instance is "
          "created. If 4096/0x1000 is returned, a ConcreteJob is "
          "started, a reference to which is returned in the Job output "
          "parameter."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
          "4097..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 CreateReplica( 
         [IN, Description (
             "A end user relevant name for the element being created. "
             "If NULL, then a system supplied default name can be "
             "used. The value will be stored in the 'ElementName' "
             "property for the created element.")]
      string ElementName, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if job completed).")]
      CIM_ConcreteJob REF Job, 
         [Required, IN, Description (
             "The source storage object which may be a StorageVolume "
             "or storage object.")]
      CIM_LogicalElement REF SourceElement, 
         [IN ( false ), OUT, Description (
             "Reference to the created target storage element (i.e., "
             "the replica).")]
      CIM_LogicalElement REF TargetElement, 
         [IN, Description (
             "The definition for the StorageSetting to be maintained "
             "by the target storage object (the replica).")]
      CIM_StorageSetting REF TargetSettingGoal, 
         [IN, Description (
             "The underlying storage for the target element (the "
             "replica) will be drawn from TargetPool if specified, "
             "otherwise the allocation is implementation specific.")]
      CIM_StoragePool REF TargetPool, 
         [IN, Description (
             "CopyType describes the type of copy that will be made. "
             "Values are: \n"
             "Async: Create and maintain an asynchronous copy of the "
             "source. \n"
             "Sync: Create and maintain a synchronized copy of the "
             "source. \n"
             "UnSyncAssoc: Create an unsynchronized copy and maintain "
             "an association to the source. \n"
             "UnSyncUnAssoc: Create unassociated copy of the source "
             "element."), 
          ValueMap { "2", "3", "4", "5", "..", "32768..65535" }, 
          Values { "Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 CopyType); 

[Implemented, Description (
          "Modify (or start a job to modify) the synchronization "
          "association between two storage objects. If 0 is returned, "
          "the function completed successfully and no ConcreteJob "
          "instance was created. If 0x1000 is returned, a ConcreteJob "
          "was started and a reference to this Job is returned in the "
          "Job output parameter. A return value of 1 indicates the "
          "method is not supported. All other values indicate some "
          "type of error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 ModifySynchronization( 
         [IN, Description (
             "Operation describes the type of modification to be made "
             "to the replica. Values are: \n"
             "Detach: 'Forget' the synchronization between two storage "
             "objects. Start to treat the objects as independent. \n"
             "Fracture: Suspend the synchronization between two "
             "storage objects using Sync or Async replication. \n"
             "The association and (typically) changes are remembered "
             "to allow a fast resynchronization. This may be used "
             "during a backup cycle to allow one of the objects to be "
             "copied while the other remains in production. \n"
             "Resync Replica: Re-establish the synchronization of a "
             "Sync or Async replication. This will negate the action "
             "of a previous Fracture operation. Recreate a Point In "
             "Time image for an UnSyncAssoc replication. \n"
             "Restore from Replica: Renew the contents of the original "
             "storage object from a replica. \n"
             "Prepare: Get the link ready for a Resync operation to "
             "take place. Some implementations will require this "
             "operation to be invoked to keep the Resync operation as "
             "fast as possible. May start the copy engine. \n"
             "Unprepare: Clear a prepared state if a Prepare is not to "
             "be followed by a Resync operation. \n"
             "Quiesce: Some applications require notification so that "
             "they can ready the link for an operation. For example "
             "flush any cached data or buffered changes. The copy "
             "engine is stopped for UnSyncAssoc replications. \n"
             "Unquiesce: Take the link from the quiesced state "
             "(without executing the intended operation. \n"
             "Start Copy: initiate a full background copy of the "
             "source to the UnSyncAssoc replica. Replica enters Frozen "
             "state when copy operation is completed. \n"
             "Stop Copy: stop the background copy previously started. "
             "Reset To Sync: Change the CopyType of the association to "
             "Sync (e.g., from the Async CopyType). \n"
             "Reset To Async: Change the CopyType of the association "
             "to Async (e.g., from the Sync CopyType)."), 
          ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
             "10", "11", "12", "13", "..", "0x8000..0xFFFF" }, 
          Values { "DMTF Reserved", "DMTF Reserved", "Detach",
             "Fracture", "Resync Replica", "Restore from Replica",
             "Prepare", "Unprepare", "Quiesce", "Unquiesce",
             "Reset To Sync", "Reset To Async", "Start Copy",
             "Stop Copy", "DMTF Reserved", "Vendor Specific" }]
      uint16 Operation, 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if the task "
             "completed).")]
      CIM_ConcreteJob REF Job, 
         [IN, Description (
             "The referenced to the StorageSynchronized association "
             "describing the storage source/replica relationship.")]
      CIM_StorageSynchronized REF Synchronization); 

      [Implemented, Description (
          "Create (or start a job to create) a StorageSynchronized "
          "relationship between two existing storage objects. Note "
          "that using the input parameter, CopyType, this function can "
          "be used to to create an ongoing association between the "
          "source and replica. If 0 is returned, the function "
          "completed successfully and no ConcreteJob instance is "
          "created. If 0x1000 is returned, a ConcreteJob is started, a "
          "reference to which is returned in the Job output parameter. "
          "A return value of 1 indicates the method is not supported. "
          "All other values indicate some type of error condition."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
          "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
       Values { "Job Completed with No Error", "Not Supported",
          "Unspecified Error", "Timeout", "Failed",
          "Invalid Parameter", "In Use", "DMTF Reserved",
          "Method Parameters Checked - Job Started", "Method Reserved",
          "Vendor Specific" }]
   uint32 AttachReplica( 
         [IN ( false ), OUT, Description (
             "Reference to the job (may be null if the task "
             "completed).")]
      CIM_ConcreteJob REF Job, 
         [Required, IN, Description (
             "The source storage object which may be a StorageVolume "
             "or other storage object.")]
      CIM_ManagedElement REF SourceElement, 
         [IN, Description (
             "Reference to the target storage element (i.e., the "
             "replica).")]
      CIM_ManagedElement REF TargetElement, 
         [IN, Description (
             "CopyType describes the type of Synchronized relationship "
             "that will be created. Values are: \n"
             "Async: Create and maintain an asynchronous copy of the "
             "source. \n"
             "Sync: Create and maintain a synchronized copy of the "
             "source. \n"
             "UnSyncAssoc: Create an unsynchronized copy and maintain "
             "an association to the source. \n"
             "UnSyncUnAssoc: Create unassociated copy of the source "
             "element."), 
          ValueMap { "2", "3", "4", "5", "..", "0x8000..0xFFFF" }, 
          Values { "Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc",
             "DMTF Reserved", "Vendor Specific" }]
      uint16 CopyType); 

	[Implemented, Description (
          "clearConfiguration")]
   uint32 clearConfiguration(); 

};

//Package -cim::prov::smi13::hhr::vendor::PinnedCacheServiceProvider
[ Version ( "1.0.0" )]
class LSIESG_PinnedCacheService : CIM_Service {
   
      [Implemented, Description (
          "This method can be used to clear pinned cache for: "
          "all volumes on a given controller, all deleted volumes on a "
          "given controller or  a specific volume. "), 
       ValueMap { "0", "1", "2", "3", "4", "5" },
       Values { "Job Completed with No Error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter"}]
   uint32 ClearPinnedCache ( 
            [IN, Description ( 
                "Identifies what type of cache clearing operation this is. "), 
            ValueMap {"0", "1", "2"},
            Values { "Clear pinned cache for all volumes", 
                "Clear pinned cache for deleted volumes", 
                "Clear pinned cache for SPECIFIC volume"}]
      uint16 OperationType, 
            [IN, Description (
             "Reference to the volume to be cleared, only used if OperationType is 2.")]
      CIM_StorageVolume REF Volume);
};

//Package -cim::prov::smi13::hhr::software::AvailableSoftwareProvider
[ Version ("1.0.0")]
class LSIESG_AvailableSoftware : CIM_SystemSpecificCollection {

};

//Package -cim::prov::smi13::hhr::software::IntegratedAvailableSoftwareProvider
[ Version ("1.0.0")]
class LSIESG_IntegratedAvailableSoftware : CIM_SystemSpecificCollection {
};
//Package -cim::prov::smi13::hhr::software::InitiatorTargetAvailableSoftwareProvider
[ Version ("1.0.0")]
class LSIESG_InitiatorTargetAvailableSoftware : CIM_SystemSpecificCollection {

};

//Package -cim::prov::smi13::hhr::diagnostics::DiskDefaultServiceRecordProvider
[ Version ("1.0.0")]
class LSIESG_DiskDefaultServiceRecord : CIM_DiagnosticServiceRecord {
      [Description (
         "Controller SAS address") ]
   string SystemName;

      [Description (
         "InstanceID of the associated DiskDefaultDiagnosticJob vendor extension") ]
   string Job;

};
//Package -cim::prov::smi13::hhr::diagnostics::DiskDefaultDiagnosticIdentityProvider
[ Version ("1.0.0")]
class LSIESG_DiskDefaultDiagnosticIdentity : CIM_SoftwareIdentity {

};

//Package -cim::prov::smi13::hhr::diagnostics::DiskDefaultDiagnosticLogProvider
[ Version ("1.0.0")]
class LSIESG_DiskDefaultDiagnosticLog : CIM_RecordLog {


};

//Package -cim::prov::smi13::hhr::jobcontrol::DiskDefaultDiagnosticJobProvider
[ Version ("1.0.0")]
class LSIESG_DiskDefaultDiagnosticJob : CIM_ConcreteJob {

[Description (
         "Controller SAS address") ]
   string SystemName;

      [Description (
         "DriveID of the associated DiskDefaultDiagnosticJob vendor extension") ]
   string DriveID;

      [Description (
          "An arbitrary string that uniquely identifies the Physical "
          "Element and serves as the key of the Element. The Tag "
          "property can contain information such as asset tag or "
          "serial number data. The key for PhysicalElement is placed "
          "very high in the object hierarchy in order to independently "
          "identify the hardware or entity, regardless of physical "
          "placement in or on Cabinets, Adapters, and so on. For "
          "example, a hotswappable or removable component can be taken "
          "from its containing (scoping) Package and be temporarily "
          "unused. The object still continues to exist and can even be "
          "inserted into a different scoping container. Therefore, the "
          "key for Physical Element is an arbitrary string and is "
          "defined independently of any placement or location-oriented "
          "hierarchy."), 
       MaxLen ( 256 )]
   string Tag;
};

//Package -cim::prov::smi13::hhr::diagnostics::DiskDefaultCompletionRecordProvider
[ Version ("1.0.0")]
class LSIESG_DiskDefaultCompletionRecord : CIM_DiagnosticCompletionRecord {
      [Description (
         "Controller SAS address") ]
   string SystemName;

      [Description (
         "InstanceID of the associated DiskDefaultDiagnosticJob vendor extension") ]
   string Job;

};

//Package -cim::prov::smi13::hhr::diagnostics::DiskDefaultDiagnosticProvider
[ Version ("1.0.0")]
class LSIESG_DiskDefaultDiagnostic : CIM_DiagnosticTest {
[Implemented, Description (
          "The RunDiagnostic method executes this test for the "
          "specified ManagedSystemElement (defined using the "
          "SystemElement input parameter). The capabilities for the "
          "diagnostic service indicate where the results from the test "
          "job are stored. How the test should execute, i.e. its "
          "settings, is defined in a DiagnosticSetting object (or by a "
          "subclass of DiagnosticSetting). A reference to a Setting "
          "object is specified using the Setting input parameter. If a "
          "reference is not passed into the method, then a default "
          "DiagnosticSetting SHALL be used. \n"
          "When RunDiagnostic starts execution, the settings, which "
          "are time sensitive, SHOULD be evaluated and captured. This "
          "is suggested since the DiagnosticSetting object MAY be "
          "modified at any time, and therefore the current test "
          "settings could be lost. \n"
          "If 0 is returned, the function completed successfully and "
          "no ConcreteJob instance is created. If 0x1000 a ConcreteJob "
          "will be started."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "0x1000", "..",
          "0x8000.." }, 
       Values { "Job completed with no error", "Not Supported",
          "Unknown", "Timeout", "Failed", "Invalid Parameter",
          "DMTF Reserved", "Method parameters checked - job started",
          "Method Reserved", "Vendor Specific" }]
   uint32 RunDiagnostic( 
         [IN, Description (
             "Specifies the element upon which the DiagnosticService "
             "SHOULD be run.")]
      CIM_ManagedElement REF ManagedElement, 
         [IN, Description (
             "Specifies the desired settings that SHOULD be applied to "
             "the Diagnostic. If null, then the Diagnostic's defaults "
             "MAY be used.")]
      CIM_DiagnosticSetting REF DiagSetting, 
         [IN, Description (
             "Specifies the desired settings that SHOULD be applied to "
             "the resulting Job. If null and a resulting Job is "
             "required (i.e., the Diagnostic is long running), then "
             "the test's defaults MAY be used.")]
      CIM_JobSettingData REF JobSetting, 
         [IN ( FALSE ), OUT, Description (
             "Returns a handle to the resulting Job.")]
      CIM_ConcreteJob REF Job); 

};

//Package -cim::prov::smi13::hhr::ports::TargetSATAPortProvider
[ Version ("1.0.0")]
class LSIESG_TargetSATAPort : CIM_ATAPort {
      [Description (
          "An arbitrary string that uniquely identifies the Physical "
          "Element and serves as the key of the Element. The Tag "
          "property can contain information such as asset tag or "
          "serial number data. The key for PhysicalElement is placed "
          "very high in the object hierarchy in order to independently "
          "identify the hardware or entity, regardless of physical "
          "placement in or on Cabinets, Adapters, and so on. For "
          "example, a hotswappable or removable component can be taken "
          "from its containing (scoping) Package and be temporarily "
          "unused. The object still continues to exist and can even be "
          "inserted into a different scoping container. Therefore, the "
          "key for Physical Element is an arbitrary string and is "
          "defined independently of any placement or location-oriented "
          "hierarchy."), 
       MaxLen ( 256 )]
   string Tag;
         [Description (
            "Vendor-unique extension attribute to facilitate associations."),
         MaxLen ( 64 )]
   string DiskDrive_DeviceID;

};

//Package -cim::prov::smi13::hhr::ports::TargetSASPortProvider
[ Version ("1.0.0")]
class LSIESG_TargetSASPort : CIM_SASPort {
      [Description (
          "An arbitrary string that uniquely identifies the Physical "
          "Element and serves as the key of the Element. The Tag "
          "property can contain information such as asset tag or "
          "serial number data. The key for PhysicalElement is placed "
          "very high in the object hierarchy in order to independently "
          "identify the hardware or entity, regardless of physical "
          "placement in or on Cabinets, Adapters, and so on. For "
          "example, a hotswappable or removable component can be taken "
          "from its containing (scoping) Package and be temporarily "
          "unused. The object still continues to exist and can even be "
          "inserted into a different scoping container. Therefore, the "
          "key for Physical Element is an arbitrary string and is "
          "defined independently of any placement or location-oriented "
          "hierarchy."), 
       MaxLen ( 256 )]
   string Tag;
    [Description (
         "Vendor-unique extension attribute to facilitate associations."),
      MaxLen ( 64 )]
   string DiskDrive_DeviceID;

   
};

//Package -cim::prov::smi13::hhr::ports::sasinitiator::SASConnectorProvider
[ Version ("1.0.0")]
class LSIESG_SASConnector : CIM_PhysicalConnector {
[Description (
         "Controller SAS address") ]
   string SystemName;
[Description (
         "Index of this connector in the MR_SAS_CONNECTORS array") ]
   uint8 ConnectorIndex;

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_ConnectorOnPackage : CIM_ConnectorOnPackage {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_ConnectorRealizes : CIM_Realizes {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_SelfCheckLogManagesRecord : CIM_LogManagesRecord {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_CorrespondingSettingDataRecord : CIM_CorrespondingSettingDataRecord {

};

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[Association,  Version ("1.0.0")]
class LSIESG_LogManagesRecord : CIM_LogManagesRecord {

};

//Package -cim::prov::smi13::hhr::jobcontrol::BadBlockScanMethodResultProvider
[ Version ("1.0.0")]
class LSIESG_BadBlockScanMethodResult : CIM_MethodResult {

};

//Package -cim::prov::smi13::hhr::jobcontrol::CheckConsistencyMethodResultProvider
[ Version ("1.0.0")]
class LSIESG_CheckConsistencyMethodResult : CIM_MethodResult {

};

//Package -cim::prov::smi13::hhr::jobcontrol::CopybackMethodResultProvider
[ Version ("1.0.0")]
class LSIESG_CopybackMethodResult : CIM_MethodResult {

};

//Package -cim::prov::smi13::hhr::jobcontrol::DiskDefaultDiagnosticMethodResultProvider
[ Version ("1.0.0")]
class LSIESG_DiskDefaultDiagnosticMethodResult : CIM_MethodResult {

};

//Package -cim::prov::smi13::hhr::jobcontrol::ForegroundInitializationMethodResultProvider
[ Version ("1.0.0")]
class LSIESG_ForegroundInitializationMethodResult : CIM_MethodResult {

};

//Package -cim::prov::smi13::hhr::jobcontrol::LdInitializationMethodResultProvider
[ Version ("1.0.0")]
class LSIESG_LdInitializationMethodResult : CIM_MethodResult {

};

//Package -cim::prov::smi13::hhr::jobcontrol::LdReconstructionMethodResultProvider
[ Version ("1.0.0")]
class LSIESG_LdReconstructionMethodResult : CIM_MethodResult {

};

//Package -cim::prov::smi13::hhr::jobcontrol::PdRebuildMethodResultProvider
[ Version ("1.0.0")]
class LSIESG_PdRebuildMethodResult : CIM_MethodResult {

};

//Package -cim::prov::smi13::hhr::jobcontrol::SelfCheckMethodResultProvider
[ Version ("1.0.0")]
class LSIESG_SelfCheckMethodResult : CIM_MethodResult {

};

[ Version ("1.0.0")]
class LSIESG_CreateOrModifyStoragePoolMethodParameters : CIM_MethodParameters {

};

[ Version ("1.0.0")]
class LSIESG_CreateOrModifyElementFromStoragePoolMethodParameters : CIM_MethodParameters {

};

[ Version ("1.0.0")]
class LSIESG_CreateOrModifyElementFromElementsMethodParameters : CIM_MethodParameters {

};


[ Version ("1.0.0")]
class LSIESG_EraseMethodParameters : CIM_MethodParameters {

};

[ Version ("1.0.0")]
class LSIESG_RunDiagnosticMethodParameters : CIM_MethodParameters {

};

[ Version ("1.0.0")]
class LSIESG_CheckStorageElementMethodParameters : CIM_MethodParameters {

};

[ Version ("1.0.0")]
class LSIESG_RepairParityMethodParameters : CIM_MethodParameters {

};

[ Version ("1.0.0")]
class LSIESG_CheckParityConsistencyMethodParameters : CIM_MethodParameters {

};

[ Version ("1.0.0")]
class LSIESG_RebuildStorageExtentMethodParameters : CIM_MethodParameters {

};

[ Version ("1.0.0")]
class LSIESG_CopybackMethodParameters : CIM_MethodParameters {

};

//Package -cim::prov::smi13::hhr::association::AffectedCopybackDrivesProvider
[Association,  Version ("1.0.0")]
class LSIESG_AffectedCopybackDrives : CIM_AffectedJobElement {

      [Required, Override ( "ElementEffects" ), Description (
         "An enumeration describing the 'effect' on the "
         "ManagedElement. This array corresponds to the "
         "OtherElementEffectsDescriptions array, where the latter "
         "provides details related to the high-level 'effects' "
         "enumerated by this property. Additional detail is required "
         "if the ElementEffects array contains the value 1, "
         "\"Other\"."), 
      ValueMap { "0", "1", "2", "3", "4", "5", "6" }, 
      Values { "Unknown", "Other", "Exclusive Use",
         "Performance Impact", "Element Integrity", "Is Source", "Is Target" },
      ArrayType ( "Indexed" ), 
      ModelCorrespondence { 
         "CIM_AffectedJobElement.OtherElementEffectsDescriptions" }]
   uint16 ElementEffects[];

};


//Package -cim::prov::smi13::hhr::jobcontrol::BackgroundInitializationConcreteJobCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_BackgroundInitializationConcreteJobCapabilities : CIM_Capabilities {

    boolean DeleteOnCompletionEditSupported;
    boolean TimeBeforeRemovalEditSupported;
    uint16 RequestedStatesSupported[]; 

};

//Package -cim::prov::smi13::hhr::jobcontrol::BadBlockScanConcreteJobCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_BadBlockScanConcreteJobCapabilities : CIM_Capabilities {

    boolean DeleteOnCompletionEditSupported;
    boolean TimeBeforeRemovalEditSupported;
    uint16 RequestedStatesSupported[];

};


//Package -cim::prov::smi13::hhr::jobcontrol::BatteryLearnConcreteJobCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_BatteryLearnConcreteJobCapabilities : CIM_Capabilities {

    boolean DeleteOnCompletionEditSupported;
    boolean TimeBeforeRemovalEditSupported;
    uint16 RequestedStatesSupported[];

};


//Package -cim::prov::smi13::hhr::jobcontrol::CheckConsistencyConcreteJobCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_CheckConsistencyConcreteJobCapabilities : CIM_Capabilities {

    boolean DeleteOnCompletionEditSupported;
    boolean TimeBeforeRemovalEditSupported;
    uint16 RequestedStatesSupported[];

};


//Package -cim::prov::smi13::hhr::jobcontrol::CopybackConcreteJobCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_CopybackConcreteJobCapabilities : CIM_Capabilities {

    boolean DeleteOnCompletionEditSupported;
    boolean TimeBeforeRemovalEditSupported;
    uint16 RequestedStatesSupported[];

};

//Package -cim::prov::smi13::hhr::jobcontrol::ForegroundInitializationConcreteJobCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_ForegroundInitializationConcreteJobCapabilities : CIM_Capabilities {

    boolean DeleteOnCompletionEditSupported;
    boolean TimeBeforeRemovalEditSupported;
    uint16 RequestedStatesSupported[];

};


//Package -cim::prov::smi13::hhr::jobcontrol::LdReconstructionConcreteJobCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_LdReconstructionConcreteJobCapabilities : CIM_Capabilities {

    boolean DeleteOnCompletionEditSupported;
    boolean TimeBeforeRemovalEditSupported;
    uint16 RequestedStatesSupported[];

};


//Package -cim::prov::smi13::hhr::jobcontrol::PdRebuildConcreteJobCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_PdRebuildConcreteJobCapabilities : CIM_Capabilities {

    boolean DeleteOnCompletionEditSupported;
    boolean TimeBeforeRemovalEditSupported;
    uint16 RequestedStatesSupported[];

};

//Package -cim::prov::smi13::hhr::jobcontrol::SelfCheckConcreteJobCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_SelfCheckConcreteJobCapabilities : CIM_Capabilities {

    boolean DeleteOnCompletionEditSupported;
    boolean TimeBeforeRemovalEditSupported;
    uint16 RequestedStatesSupported[];

};

//Package -cim::prov::smi13::hhr::jobcontrol::DiskDefaultDiagnosticConcreteJobCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_DiskDefaultDiagnosticConcreteJobCapabilities : CIM_Capabilities {

    boolean DeleteOnCompletionEditSupported;
    boolean TimeBeforeRemovalEditSupported;
    uint16 RequestedStatesSupported[];

};

//Package -cim::prov::smi13::hhr::blockservices::StorageVolumeOperationalCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_StorageVolumeOperationalCapabilities : CIM_Capabilities {
[Description (
          "An array of integers indicating the operations that can "
          "be performed on the associated StorageVolume."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7"}, 
       Values { "None", "Initialize", "Stop Initialization",
          "Check Consistency", "Stop Check Consistency",
          "Reconstruct", "Delete", "Secure"}, ArrayType ( "Indexed" )]
    uint16 CurrentlySupportedOperations[];
[Description (
          "1=suspend BGI and CC operation")]
    uint32 SuspendCCBGI;
[Description (
          "1=resume BGI and CC operation")]
    uint32 ResumeCCBGI;
[Description (
          "1=suspend Reconstruction operation")]
    uint32 SuspendRecon;
[Description (
          "1=resume Reconstruction operation")]
    uint32 ResumeRecon;	
    
    [Description (
          "1=LD can be associated with an SSC")]
    boolean SSCCacheable;
};

//Package -cim::prov::smi13::hhr::diskdrivelite::DiskDriveOperationalCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_DiskDriveOperationalCapabilities : CIM_Capabilities {
[Description (
          "An array of integers indicating the operations that can "
          "be performed on the associated disk drive."),
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
          "10", "11", "12", "13", "14" , "15", "16", "17", "18", "19"}, 
       Values { "None", "Set State to Online", "Fail",
          "Set State to Bad", "Set State to Unconfigured",
          "Use as Hot Spare", "Remove Spare Designation",
          "Replace", "Set State to Missing",
          "Rebuild", "Stop Rebuild", "Locate", "Clear", "Import",
          "Copy Back", "Stop Copy Back", "Download  Firmware", "Reprovision", 
          "Use as JBOD", "Set State to offline"}, ArrayType ( "Indexed" )]
    uint16 CurrentlySupportedOperations[];
[Description (
          "1=suspend Copyback operation")]
    uint32 SuspendCopyback;
[Description (
          "1=resume Copyback operation")]
    uint32 ResumeCopyback;
[Description (
          "1=suspend Rebuild operation")]
    uint32 SuspendRebuild;
[Description (
          "1=resume Rebuild operation")]
    uint32 ResumeRebuild;

};

//Package -cim::prov::smi13::hhr::base::PortControllerOperationalCapabilitiesProvider
[ Version ("1.0.0")]
class LSIESG_PortControllerOperationalCapabilities : CIM_Capabilities {
[Description (
          "An array of integers indicating the operations that can "
          "be performed on the associated PortController."),
       ValueMap { "0", "1", "2"}, 
       Values { "None", "Change Configuration", "Clear Configuration"}, ArrayType ( "Indexed" )]
    uint16 CurrentlySupportedOperations[];

};

//Package -cim::prov::smi13::hhr::association::ElementCapabilitiesProvider
[Association,  Version ("1.0.0")]
class LSIESG_ElementCapabilities : CIM_ElementCapabilities {
   
};

//Package -cim::prov::smi13::hhr::base::DataEncryptionServiceProvider
[ Version ("1.0.0")]
class LSIESG_DataEncryptionService : CIM_Service {

     [Implemented, Description (
          "Prior to using any of the data encryption features the user must supply "
          "a security key and identifier.  The security key controls access to encrypted "
          "data.  This method can be used to establish an initial security key or "
          "to modify an existing security key.  When establishing the initial "
          "security key the CurrentSecurityKey parameter is not supplied. "
          "When changing an existing pass phrase the identifier must be supplied "
          "and must not be the same as the current identifier.An optional pass phrase "
          "can also be supplied.  If set, "
          "the pass phrase must be supplied by the user when the server boots." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8"}, 
       Values {"Success", "Not Supported", "Unknown", "Failed", 
       "Access Denied", "Security key Format Error", "Security Key Id Error", 
       "Pass Phrase Format Error", "Invalid Parameter Combination"}]
   uint32 Initialize( 
         [IN, Description (
             "The security key that will control access to encrypted "
             "data blocks. ")]
      string NewSecurityKey,
         [IN, Description(
             "If a security key has already been set on the controller it "
             "it must be supplied to authorize the change. ")]
      string CurrentSecurityKey,
         [IN, Description(
             "The security key must be associated with a unique identifier. ")]
      string SecurityKeyId,
         [IN, Description(
             "Optional parameter that initializes boot time security. ")]
      string PassPhrase);

     [Implemented, Description (
          "Deletes the data encryption security key thereby disabling the encryption feature."), 
       ValueMap { "0", "1", "2", "3", "4", "5"}, 
       Values {"Success", "Not Supported", "Unknown", "Failed", 
       "Encryption Not Initialized", "Encrypted Storage Volumes Exist"}] 
   uint32 Disable( );
   
};

//Package -cim::prov::smi13::hhr::base::MegaRAIDHBAServiceProvider
[ Version ("1.0.0")]
class LSIESG_MegaRAIDHBAService : CIM_Service {
  
        [Implemented,Description (
  	 "This method is used to set controller default spindown time"),
	 ValueMap { "0","1","4","5" },
	  Values {"Success","Method Not Supported","Failed","invalid parameter"}]
   uint32 SetSpinDownTime (
	  [IN , Description (
	  "idle minute before the device is spun down ")]
	  uint16 spindowntime );

        [Implemented,Description (
  	 "This method is used to update the link speed of the given phy connection"),
	 ValueMap { "0","1","4","5" },
	  Values {"Success","Not Supported", "Failed","invalid parameter"}]
   uint32 SetLinkSpeed (
	  [IN , Description (
	  "phy index of the device connection")]
	  uint8 phyindex,
	  [IN , Description (
	  "link speed to be set"),
	   ValueMap { "0","1", "3", "6", "12"}, 
         Values { "No Limit", "1.5Gb/s","3.0 Gb/s","6.0 Gb/s","12.0 Gb/s"}]
	  uint8 linkspeed
	 );
	 
	[Implemented, Description (
          "This extrinsic method is to set the controller property enablePI"
		  "to disable (or enable) the PI even if it is supported by FW."
		  "This will be available only if controller supportPIcontroller"
		  "is set."), 
		ValueMap {"0", "1", "4", "5" },
		Values { "Success", "Not Supported", "Failed", "Invalid parameter"} ]
    uint32 setEnablePI( 
	  	  [IN ,OUT ( false ), Description (
             "Value to enable or disable PI"), 
			ValueMap { "0", "1" }, 
			Values { "Disable SCSI PI for controller", "Enable SCSI PI for controller"}]
    uint32 enablePIState);
	
	[Implemented, Description (
          "This extrinsic method is to get the controller property enablePI"
		  "to disable (or enable) the PI even if it is supported by FW."
		  "This will be available only if controller supportPIcontroller"
		  "is set."), 
		ValueMap {"0", "1", "4", "5" },
		Values { "Success", "Not Supported", "Failed", "Invalid parameter"} ]
    uint32 getEnablePI( 
	  	  [IN ( false ),OUT , Description (
            "Value to enable or disable PI"), 
			ValueMap { "0", "1" }, 
			Values { "PI disabled for controller", "PI enabledfor controller"}]
    uint32 enablePI);
	
	[Implemented, Description (
        "This extrinsic method is to set the controller property preventPIImport"
		"to change the foreign import behavior," ), 
		ValueMap {"0", "1", "4", "5" },
		Values { "Success", "Not Supported", "Failed", "Invalid parameter"} ]
    uint32 setPreventPIImport( 
	  	  [IN ,OUT ( false ), Description (
             "Value to enable or disable preventPIImport"), 
			ValueMap { "0", "1" }, 
			Values { "Allow import of SCSI PI protected logical disks",
			         "Prevent import of SCSI PI protected logical disks"}  ]
    uint32 preventPIImportState);
	
	[Implemented, Description (
          "This extrinsic method is to get the controller property enablePI"
		  "to disable (or enable) the PI even if it is supported by FW."
		  "This will be available only if controller supportPIcontroller"
		  "is set."), 
		ValueMap {"0", "1", "4", "5" },
		Values { "Success", "Not Supported", "Failed", "Invalid parameter"} ] 
    uint32 getPreventPIImport( 
	  	  [IN ( false ),OUT , Description (
             "Value to get state of preventPIImport"),
			 ValueMap { "0", "1" }, 
			 Values {"Allow import of SCSI PI protected logical disks",
			         "Prevent import of SCSI PI protected logical disks"}  ]
    uint32 preventPIImport);	 
};

//Package -cim::prov::smi13::hhr::jobcontrol::PdSecureEraseJobProvider
[ Version ("1.0.0")]
class LSIESG_PdSecureEraseJob : CIM_ConcreteJob {
	[Implemented, Description (
          "When the job is executing or has terminated without error, "
          "then this method returns no CIM_Error instance. However, if "
          "the job has failed because of some internal problem or "
          "because the job has been terminated by a client, then a "
          "CIM_Error instance is returned."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 GetError ( 
         [OUT, Description (
             "If the OperationalStatus on the Job is not \"OK\", then "
             "this method will return a CIM Error instance. Otherwise, "
             "when the Job is \"OK\", null is returned."), 
          EmbeddedInstance ( "CIM_Error" )]
      string Error);
};
	  
//Package -cim::prov::smi13::hhr::jobcontrol::LdSecureEraseJobProvider
[ Version ("1.0.0")]
class LSIESG_LdSecureEraseJob : CIM_ConcreteJob {
	[Implemented, Description (
          "When the job is executing or has terminated without error, "
          "then this method returns no CIM_Error instance. However, if "
          "the job has failed because of some internal problem or "
          "because the job has been terminated by a client, then a "
          "CIM_Error instance is returned."), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
          "32768..65535" }, 
       Values { "Success", "Not Supported", "Unspecified Error",
          "Timeout", "Failed", "Invalid Parameter", "Access Denied",
          "DMTF Reserved", "Vendor Specific" }]
   uint32 GetError ( 
         [OUT, Description (
             "If the OperationalStatus on the Job is not \"OK\", then "
             "this method will return a CIM Error instance. Otherwise, "
             "when the Job is \"OK\", null is returned."), 
          EmbeddedInstance ( "CIM_Error" )]
      string Error);
};
	 

//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[ Association, Version ( "1.0.0" ) ]
class LSIESG_ElementConformsToProfile : CIM_ElementConformsToProfile
{
};
//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[ Association,  Version ( "2.8.0" ) ]
class LSIESG_InstalledSoftwareIdentity: CIM_InstalledSoftwareIdentity
{
};
//Package -cim::prov::smi13::hhr::association::MegaRAIDHBAAssociationDefaultProvider
[ Association,  Version ( "2.13.0" ) ]
class LSIESG_SystemPackage: CIM_SystemPackage
{
};

