// Copyright (c) 2005 DMTF.  All rights reserved.
   [Version ( "2.10.0" ), 
    UMLPackagePath ( "CIM::Device::StorageStatistics" ), 
    Description ( 
       "A subclass of StatisticsService that provides services for "
       "filtering and retrieving statistics from a "
       "StatisticsManifestCollection that contains instances of "
       "BlockStatisticalData." )]
class CIM_BlockStatisticsService : CIM_StatisticsService {


      [Description ( 
          "Retrieves statistics in a well-defined bulk format. The "
          "collection of statistics returned is determined by the "
          "list of element types passed in to the method and the "
          "manifests for those types contained in the supplied "
          "BlockStatisticsManifestCollection. If both the Elements "
          "and BlockStatisticsManifestCollection parameters are "
          "supplied, then the types of elements returned is an "
          "intersection of the element types listed in the Elements "
          "parameter and the types for which "
          "BlockStatisticsManifest instances exist in the supplied "
          "BlockStatisticsManifestCollection. The statistics are "
          "returned through a well-defined array of strings, whose "
          "format is specified by the StatisticsFormat parameter, "
          "that can be parsed to retrieve the desired statistics as "
          "well as limited information about the elements that "
          "those metrics describe." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "4096", 
          "4097", "4098", "4099..32767", "32768..65535" }, 
       Values { "Job Completed with No Error", "Not Supported", 
          "Unknown", "Timeout", "Failed", "Invalid Parameter", 
          "Method Reserved", 
          "Method Parameters Checked - Job Started", 
          "Element Not Supported", 
          "Statistics Format Not Supported", "Method Reserved", 
          "Vendor Specific" }]
   uint32 GetStatisticsCollection(
         [IN ( false ), OUT, Description ( 
             "Reference to the job (may be null if job completed)."
              )]
      CIM_ConcreteJob REF Job, 
         [IN, Description ( 
             "Element types for which statistics should be "
             "returned. If not supplied (i.e. parameter is null) "
             "this parameter is not considered when filtering "
             "the instances of StatisticalData that will "
             "populate the Statistics output parameter. If the "
             "array is not null, but is empty, then no "
             "statistics will be returned by this method. A "
             "client SHOULD NOT specify this parameter if it is "
             "not meaningful (i.e. the service only provides "
             "statistics for a single type of element)." ), 
          ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", 
             "10", "11", "12", "..", "0x8000.." }, 
          Values { "Computer System", 
             "Front-end Computer System", "Peer Computer System", 
             "Back-end Computer System", "Front-end Port", 
             "Back-end Port", "Volume", "Extent", "Disk Drive", 
             "Arbitrary LUs", "Remote Replica Group", 
             "DMTF Reserved", "Vendor Specific" }, 
          ModelCorrespondence { 
             "CIM_BlockStorageStatisticalData.ElementType" }]
      uint16 ElementTypes[], 
         [IN, Description ( 
             "The BlockStatisticsManifestCollection that "
             "contains the manifests that list the metrics to be "
             "returned for each element type. If not supplied "
             "(i.e. parameter is null), then all available "
             "statistics will be returned unfiltered. Only "
             "elements that match the element type properties "
             "(if meaningful) of the BlockStatisticsManifest "
             "instances contained within the "
             "BlockStatisticsManifestCollection will have data "
             "returned by this method. If the supplied "
             "BlockStatisticsManifestCollection does not contain "
             "any BlockStatisticsManifest instances, then no "
             "statistics will be returned by this method." )]
      CIM_BlockStatisticsManifestCollection REF ManifestCollection, 
         [IN, Description ( 
             "Specifies the format of the Statistics output "
             "parameter. \n"
             "- CSV = Comma Separated Values." ), 
          ValueMap { "0", "1", "2", "..", "0x8000.." }, 
          Values { "Unknown", "Other", "CSV", "DMTF Reserved", 
             "Vendor Specific" }]
      uint16 StatisticsFormat, 
         [OUT, Description ( 
             "The statistics for all the elements as determined "
             "by the Elements, ManifestCollection parameters, "
             "and StatisticsFormat parameters." ), 
          ModelCorrespondence { 
             "CIM_BlockStatisticsService.GetStatisticsCollection(ElementTypes)", 
             "CIM_BlockStatisticsService.GetStatisticsCollection(ManifestCollection)", 
             "CIM_BlockStatisticsService.GetStatisticsCollection(StatisticsFormat)" }]
      string Statistics[]);

      [Description ( 
          "Creates a new BlockStatisticsManifestCollection "
          "instance, whose members can serve as a filter for "
          "metrics retrieved through the GetStatisticsCollection "
          "method." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6..32767", 
          "32768..65535" }, 
       Values { "Ok", "Not Supported", "Unknown", "Timeout", 
          "Failed", "Invalid Parameter", "Method Reserved", 
          "Vendor Specific" }]
   uint32 CreateManifestCollection(
         [IN, Description ( 
             "The collection of statistics that will be filtered "
             "using the new BlockStatisticsManifestCollection." )]
      CIM_StatisticsCollection REF Statistics, 
         [IN, Description ( 
             "Client-defined name for the new "
             "BlockStatisticsManifestCollection." )]
      string ElementName, 
         [OUT, Description ( 
             "Reference to the new BlockStatisticsManifestCollection."
              )]
      CIM_BlockStatisticsManifestCollection REF ManifestCollection);

      [Description ( 
          "Method that creates or modifies a "
          "BlockStatisticsManifest for this statistics service. A "
          "client supplies a BlockStatisticsManifestCollection in "
          "which the new BlockStatisticsManifest will be placed or "
          "an existing BlockStatisticsManifest will be modified, "
          "the element type of the statistics that the "
          "BlockStatisticsManifest will filter, and a list of "
          "metrics, which serves as a filter for statistical data "
          "of that element type." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "4096", 
          "4097", "4098", "4099..32767", "32768..65535" }, 
       Values { "Success", "Not Supported", "Unknown", "Timeout", 
          "Failed", "Invalid Parameter", "Method Reserved", 
          "Element Not Supported", "Metric not supported", 
          "ElementType Parameter Missing", "Method Reserved", 
          "Vendor Specific" }]
   uint32 AddOrModifyManifest(
         [IN, Description ( 
             "BlockStatisticsManifestCollection that the "
             "BlockStatisticsManifest is or should be a member "
             "of." )]
      CIM_BlockStatisticsManifestCollection REF ManifestCollection, 
         [IN, Description ( 
             "The type of elements whose statistics the "
             "BlockStatisticsManifest will filter." ), 
          ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", 
             "10", "11", "12", "13", "14", "15", "16", "17", 
             "18", "19", "20", "21", "22", "23", "..", "0x8000.." }, 
          Values { "Computer System", 
             "Front-end Computer System", "Peer Computer System", 
             "Back-end Computer System", "Front-end Port", 
             "Back-end Port", "Volume", "Extent", "Disk Drive", 
             "Arbitrary LUs", "Remote Replica Group", 
             "Computer System Rate", 
             "Front-end Computer System Rate", 
             "Peer Computer System Rate", 
             "Back-end Computer System Rate", 
             "Front-end Port Rate", "Back-end Port Rate", 
             "Volume Rate", "Extent Rate", "Disk Drive Rate", 
             "Arbitrary LUs Rate", "Remote Replica Group Rate", 
             "DMTF Reserved", "Vendor Specific" }, 
          ModelCorrespondence { 
             "CIM_BlockStatisticsManifest.ElementType" }]
      uint16 ElementType, 
         [IN, Description ( 
             "A client-defined string that identifies the "
             "BlockStatisticsManifest created or modified by "
             "this method." )]
      string ElementName, 
         [IN, Description ( 
             "The metrics that will be included by the filter. "
             "The metrics supplied here are the properties of "
             "CIM_StatisticalData or one of its subclasses that "
             "will remain after the BlockStatisticsManifest "
             "filter is applied." )]
      string StatisticsList[], 
         [OUT, Description ( 
             "The BlockStatisticsManifest that is created or "
             "modified on successful execution of the method." )]
      CIM_BlockStatisticsManifest REF Manifest);

      [Description ( 
          "Extrinsic method that removes manifests from a "
          "BlockStatisticsManifestCollection." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "..", "4096", 
          "4097..32767", "32768..65535" }, 
       Values { "Success", "Not Supported", "Unknown", "Timeout", 
          "Failed", "Invalid Parameter", "Method Reserved", 
          "Manifest not found", "Method Reserved", "Vendor Specific" }]
   uint32 RemoveManifests(
         [IN, Description ( 
             "BlockStatisticsManifestCollection from which the "
             "BlockStatisticsManifests will be removed." )]
      CIM_BlockStatisticsManifestCollection REF ManifestCollection, 
         [IN, Description ( 
             "List of BlockStatisticsManifests to be removed "
             "from the BlockStatisticsManifestCollection." )]
      CIM_BlockStatisticsManifest REF Manifests[]);

};
