// Copyright (c) 2007 DMTF.  All Rights Reserved.
   [Abstract, Version ( "2.17.0" ), 
    UMLPackagePath ( "CIM::Core::CoreElements" ), 
    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 ( 
          "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);

};
