// Copyright (c) 2005 DMTF.  All rights reserved.
// <change cr="ArchCR00066.004" type="add">Add UmlPackagePath
// qualifier values to CIM Schema.</change>
// ==================================================================
//  CIM_DiagnosticSetting 
// ==================================================================
   [Version ( "2.9.0" ), 
    UMLPackagePath ( "CIM::System::Diagnostics" ), 
    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. \n"
          "Count(=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[];


};
