// ===================================================================
// Title:  Core Statistics
// $State: Exp $
// $Date: 2004/08/15 05:55:36 $
// $Source: /cvsroot/wbemservices/open/mof/dmtf/2.9/Core_Statistics.mof,v $
// $Revision: 1.1 $
// ===================================================================
//#pragma inLine ("Includes/copyright.inc")
// Copyright 1998-2004 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.
// DMTF is a not-for-profit association of industry members dedicated
// to promoting enterprise and systems management and interoperability.
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members,
// provided that correct attribution is given.
// As DMTF specifications may be revised from time to time,
// the particular version and release date should always be noted.
// 
// Implementation of certain elements of this standard or proposed
// standard may be subject to third party patent rights, including
// provisional patent rights (herein "patent rights"). DMTF makes
// no representations to users of the standard as to the existence
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or
// claimants, nor for any incomplete or inaccurate identification or
// disclosure of such rights, owners or claimants. DMTF shall have no
// liability to any party, in any manner or circumstance, under any
// legal theory whatsoever, for failure to recognize, disclose, or
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product,
// protocols or testing procedures. DMTF shall have no liability to
// any party implementing such standard, whether such implementation
// is foreseeable or not, nor to any patent owner or claimant, and shall
// have no liability or responsibility for costs or losses incurred if
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the
// standard from any and all claims of infringement by a patent owner
// for such implementations.
// 
// For information about patents held by third-parties which have
// notified the DMTF that, in their opinion, such patent may relate to
// or impact implementations of DMTF standards, visit
// http://www.dmtf.org/about/policies/disclosures.php.
//#pragma inLine
// ===================================================================
// Description: The Core Model defines basic management concepts.
//              This file defines the top of the Statistics/
//              StatisticalData hierarchies.
// 
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined
//              by other working groups, are omitted.
// ==================================================================
// Change Log for v2.9 Preliminary
// CR1384 - Add StatisticsCollection
// 
// Change Log for v2.8 Final
// CR1210 - Removal of experimental Qualifiers for core.
// CR1223 - SysDev Omnibus CR - Minor MOF corrections.
// 
// Change Log for v2.8 Preliminary
// CR1082 - Fix reference of 0 value in StatisticalData.SampleInterval
//          to reference a zero time interval value.
// CR952 - Add some time related properties
// CR1019 - CIM Versioning for 2.8 Preliminary
// CR1047 - Create StatisticalSettings to coordinate
//          with changes made to StatisticalData.
// 
// Change Log for v2.7
// CR968 - Remove the Experimental qualifier
// CR994 - Update description of InstanceID
// 
// Change Log for v2.7
// CR721 - Introduce StatisticalData, ElementStatisticalData,
//         and ReleatedStatisticalData
// ==================================================================

#pragma locale ("en_US")


// ==================================================================
// StatisticalData
// ==================================================================
   [Abstract, Version ( "2.8.0" ), Description (
       "CIM_StatisticalData is a root class for any arbitrary "
       "collection of statistical data and/or metrics applicable to "
       "one or more ManagedElements. These statistics MUST represent "
       "the most recent observations and MUST NOT be provided if "
       "irrelevant or stale. Note that this class uses a simplified "
       "naming/identity algorithm as compared to "
       "CIM_StatisticalInformation.")]
class CIM_StatisticalData : 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 "
          "StatisticalData. 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;

      [Description (
          "The time, relative to managed element where the statistic "
          "was collected, when the first measurement was taken. If the "
          "statistic is reset, the StartStatisticTime is the time when "
          "the reset was performed.")]
   datetime StartStatisticTime;

      [Description (
          "The time the most recent measurement was taken, relative to "
          "the managed element where the statistic was collected.")]
   datetime StatisticTime;

      [Description (
          "Some statistics are sampled at consistent time intervals. "
          "This property provides the sample interval so that client "
          "applications can determine the minimum time that new "
          "statistics should be pulled. If the statistics are not "
          "sampled at consistent time intervals, this property must be "
          "set to a zero time interval.")]
   datetime SampleInterval = "00000000000000.000000:000";

      [Description (
          "Method to reset one or more of the instance's statistics. "
          "The method takes one parameter as input - an array of "
          "strings indicating which statistics to reset. If all the "
          "statistics in the instance should be reset, the first "
          "element of the array MUST be set to \"All\" or \"ALL\". If "
          "one or more individual statistics should be reset, the "
          "corresponding property names are entered into the elements "
          "of the array. \n"
          "The method returns 0 if successful, 1 if not supported, and "
          "any other value if an error occurred. A method is specified "
          "so that the StatisticalInformation's provider/ "
          "instrumentation, which calculates the statistics, can reset "
          "its internal processing, counters, 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 ResetSelectedStats ( 
         [IN, Description (
             "Array of strings indicating which statistics to reset.")]
      string SelectedStatistics[]); 
};


// ==================================================================
// ElementStatisticalData
// ==================================================================
   [Association, Version ( "2.7.0" ), Description (
       "CIM_ElementStatisticalData is an association that relates a "
       "ManagedElement to its StatisticalData. Note that the "
       "cardinality of the ManagedElement reference is Min(1), Max(1). "
       "This cardinality mandates the instantiation of the "
       "ElementStatisticalData association for the referenced instance "
       "of CIM_StatisticalData. ElementStatisticalData describes the "
       "existence requirements and context for the "
       "CIM_StatisticalData, relative to a specific ManagedElement.")]
class CIM_ElementStatisticalData {

      [Key, Min ( 1 ), Max ( 1 ), Description (
          "The ManagedElement for which statistical or metric data is "
          "defined.")]
   CIM_ManagedElement REF ManagedElement;

      [Key, Description (
          "The statistic information/object.")]
   CIM_StatisticalData REF Stats;
};


// ==================================================================
// RelatedStatisticalData
// ==================================================================
   [Association, Version ( "2.7.0" ), Description (
       "CIM_RelatedStatisticalData is an association that defines "
       "hierarchies and/or dependencies of related CIM_Statistical "
       "Data classes.")]
class CIM_RelatedStatisticalData {

      [Key, Description (
          "The statistic information/object.")]
   CIM_StatisticalData REF Stats;

      [Key, Description (
          "The related statistics.")]
   CIM_StatisticalData REF RelatedStats;

      [Description (
          "A free-form string describing how the statistics are "
          "related.")]
   string Description;
};


// ==================================================================
// StatisticalInformation
// ==================================================================
   [Abstract, Version ( "2.6.0" ), Description (
       "CIM_StatisticalInformation is a root class for any arbitrary "
       "collection of statistical data and/or metrics applicable to "
       "one or more ManagedSystemElements. Note that the CIM_ "
       "StatisticalData class uses a simplified naming/identity "
       "algorithm as compared to this class. StatisticalInformation is "
       "not deprecated since its naming algorithm is still in use in "
       "various implementations.")]
class CIM_StatisticalInformation : CIM_ManagedElement {

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


// ==================================================================
// Statistics
// ==================================================================
   [Association, Version ( "2.6.0" ), Description (
       "CIM_Statistics is an association that relates Managed Elements "
       "to the StatisticalGroup(s) that apply to them.")]
class CIM_Statistics {

      [Key, Description (
          "The statistic information/object.")]
   CIM_StatisticalInformation REF Stats;

      [Key, Description (
          "The ManagedElement for which statistical or metric data is "
          "defined.")]
   CIM_ManagedElement REF Element;
};


// ==================================================================
// RelatedStatistics
// ==================================================================
   [Association, Version ( "2.6.0" ), Description (
       "CIM_RelatedStatistics is an association that defines "
       "hierarchies and/or dependencies of related CIM_Statistical "
       "Information classes.")]
class CIM_RelatedStatistics {

      [Key, Description (
          "The statistic information/object.")]
   CIM_StatisticalInformation REF Stats;

      [Key, Description (
          "The related statistics or metrics.")]
   CIM_StatisticalInformation REF RelatedStats;
};


// ==================================================================
// SystemStatisticalInformation
// ==================================================================
   [Version ( "2.6.0" ), Description (
       "Statistical information associated with a System object or one "
       "of its subclasses.")]
class CIM_SystemStatisticalInformation : CIM_StatisticalInformation {

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

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

      [Key, Description (
          "CreationClassName indicates the name of the class or the "
          "subclass used in the creation of an instance. When used "
          "with the other key properties of this class, this property "
          "allows all instances of this class and its subclasses to be "
          "uniquely identified."), 
       MaxLen ( 256 )]
   string CreationClassName;

      [Key, Override ( "Name" ), Description (
          "The Name property, inherited from StatisticalInformation, "
          "serves as part of the object key."), 
       MaxLen ( 256 )]
   string Name;
};


// ==================================================================
// SystemStatistics
// ==================================================================
   [Association, Version ( "2.6.0" ), Description (
       "SystemStatistics relates the SystemStatisticalInformation "
       "class to the System to which it applies.")]
class CIM_SystemStatistics : CIM_Statistics {

      [Override ( "Stats" ), Weak, Description (
          "The statistical object.")]
   CIM_SystemStatisticalInformation REF Stats;

      [Override ( "Element" ), Min ( 1 ), Max ( 1 ), Description (
          "The System to which the statistics apply.")]
   CIM_System REF Element;
};


// ==================================================================
// ServiceStatisticalInformation
// ==================================================================
   [Version ( "2.6.0" ), Description (
       "Statistical information associated with a Service object or "
       "one of its subclasses.")]
class CIM_ServiceStatisticalInformation : CIM_StatisticalInformation {

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

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

      [Key, Propagated ( "CIM_Service.CreationClassName" ), 
       Description (
          "The scoping Service's CreationClassName."), 
       MaxLen ( 256 )]
   string ServiceCreationClassName;

      [Key, Propagated ( "CIM_Service.Name" ), Description (
          "The scoping Service's Name."), 
       MaxLen ( 256 )]
   string ServiceName;

      [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, inherited from StatisticalInformation, "
          "serves as part of the object key."), 
       MaxLen ( 256 )]
   string Name;
};


// ==================================================================
// ServiceStatistics
// ==================================================================
   [Association, Version ( "2.6.0" ), Description (
       "ServiceStatistics relates the ServiceStatisticalInformation "
       "class to the Service to which it applies.")]
class CIM_ServiceStatistics : CIM_Statistics {

      [Override ( "Stats" ), Weak, Description (
          "The statistical object.")]
   CIM_ServiceStatisticalInformation REF Stats;

      [Override ( "Element" ), Min ( 1 ), Max ( 1 ), Description (
          "The Service to which the statistics apply.")]
   CIM_Service REF Element;
};


// ==================================================================
// SAPStatisticalInformation
// ==================================================================
   [Version ( "2.6.0" ), Description (
       "Statistical information associated with a Service AccessPoint "
       "object or one of its subclasses.")]
class CIM_SAPStatisticalInformation : CIM_StatisticalInformation {

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

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

      [Key, Propagated ( "CIM_ServiceAccessPoint.CreationClassName" ), 
       Description (
          "The scoping SAP's CreationClassName."), 
       MaxLen ( 256 )]
   string SAPCreationClassName;

      [Key, Propagated ( "CIM_ServiceAccessPoint.Name" ), Description (
          "The scoping SAP's Name."), 
       MaxLen ( 256 )]
   string SAPName;

      [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, inherited from StatisticalInformation, "
          "serves as part of the object key."), 
       MaxLen ( 256 )]
   string Name;
};


// ==================================================================
// SAPStatistics
// ==================================================================
   [Association, Version ( "2.6.0" ), Description (
       "SAPStatistics relates the SAPStatisticalInformation class to "
       "the ServiceAccessPoint to which it applies.")]
class CIM_SAPStatistics : CIM_Statistics {

      [Override ( "Stats" ), Weak, Description (
          "The statistical object.")]
   CIM_SAPStatisticalInformation REF Stats;

      [Override ( "Element" ), Min ( 1 ), Max ( 1 ), Description (
          "The ServiceAccessPoint to which the statistics apply.")]
   CIM_ServiceAccessPoint REF Element;
};


// ==================================================================
// DeviceStatisticalInformation
// ==================================================================
   [Version ( "2.6.0" ), Description (
       "Statistical information associated with a LogicalDevice or one "
       "of its subclasses.")]
class CIM_DeviceStatisticalInformation : CIM_StatisticalInformation {

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

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

      [Key, Propagated ( "CIM_LogicalDevice.CreationClassName" ), 
       Description (
          "The scoping Device's CreationClassName."), 
       MaxLen ( 256 )]
   string DeviceCreationClassName;

      [Key, Propagated ( "CIM_LogicalDevice.DeviceID" ), Description (
          "The scoping Device's ID."), 
       MaxLen ( 64 )]
   string DeviceID;

      [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, inherited from StatisticalInformation, "
          "serves as part of the object key."), 
       MaxLen ( 256 )]
   string Name;
};


// ==================================================================
// DeviceStatistics
// ==================================================================
   [Association, Version ( "2.6.0" ), Description (
       "DeviceStatistics relates the DeviceStatisticalInformation "
       "class to the LogicalDevice to which it applies.")]
class CIM_DeviceStatistics : CIM_Statistics {

      [Override ( "Stats" ), Weak, Description (
          "The statistical object.")]
   CIM_DeviceStatisticalInformation REF Stats;

      [Override ( "Element" ), Min ( 1 ), Max ( 1 ), Description (
          "The Device to which the statistics apply.")]
   CIM_LogicalDevice REF Element;
};


// ==================================================================
// PhysicalStatisticalInformation
// ==================================================================
   [Version ( "2.6.0" ), Description (
       "Statistical information associated with a PhysicalElement or "
       "one of its subclasses.")]
class CIM_PhysicalStatisticalInformation : CIM_StatisticalInformation {

      [Key, Propagated ( "CIM_PhysicalElement.CreationClassName" ), 
       Description (
          "The scoping Element's CreationClassName."), 
       MaxLen ( 256 )]
   string PhysicalCreationClassName;

      [Key, Propagated ( "CIM_PhysicalElement.Tag" ), Description (
          "The scoping Element's identifying Tag."), 
       MaxLen ( 256 )]
   string Tag;

      [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, inherited from StatisticalInformation, "
          "serves as part of the object key."), 
       MaxLen ( 256 )]
   string Name;
};


// ==================================================================
// PhysicalStatistics
// ==================================================================
   [Association, Version ( "2.6.0" ), Description (
       "PhysicalStatistics relates the PhysicalStatisticalInformation "
       "class to the PhysicalElement to which it applies.")]
class CIM_PhysicalStatistics : CIM_Statistics {

      [Override ( "Stats" ), Weak, Description (
          "The statistical object.")]
   CIM_PhysicalStatisticalInformation REF Stats;

      [Override ( "Element" ), Min ( 1 ), Max ( 1 ), Description (
          "The PhysicalElement to which the statistics apply.")]
   CIM_PhysicalElement REF Element;
};

// ==================================================================
// StatisticalSetting
// ==================================================================
   [Version ( "2.8.0" ), Description (
       "CIM_StatisticalSetting is the class for setting the collection "
       "criteria of statistical data and/or metrics applicable to one "
       "or more ManagedElements.")]
class CIM_StatisticalSetting : CIM_SettingData {

      [Write, Description (
          "The time, relative to managed element where the statistic "
          "is to be collected, when the first measurement is to be "
          "taken."), 
       ModelCorrespondence { "CIM_StatisticalData.StartStatisticTime" }]
   datetime StartStatisticTime;

      [Write, Description (
          "The time, relative to managed element where the statistic "
          "is to be collected, when the measurement is to end.")]
   datetime EndStatisticTime;

      [Write, Description (
          "Some statistics are sampled at consistent time intervals. "
          "This property when set indicates the desired minimum time "
          "that new statistics should be polled or calculated."), 
       ModelCorrespondence { "CIM_StatisticalData.SampleInterval" }]
   datetime SampleInterval;
};

// ==================================================================
// StatisticsCollection
// ==================================================================
   [Experimental, Version ( "2.8.1000" ), Description (
       "A subclass of SystemSpecificCollection which collects together "
       "statistics for a system. This class forms an 'anchor point' "
       "from which all the statistics kept for the system can be found "
       "(via the MemberOfCollection associations).")]
class CIM_StatisticsCollection : CIM_SystemSpecificCollection {

      [Description (
          "This property provides the minimum sampling interval for "
          "the associated statistics so that client applications can "
          "determine the minimum interval that the "
          "StatisticsCollection should be sampled. If the statistics "
          "are sampled at different cycles, this property MUST be set "
          "to a zero time interval.")]
   datetime SampleInterval = "00000000000000.000000:000";

      [Description (
          "The time that the statistics collection was last sampled. "
          "Note that this property MAY be used to trigger an "
          "indication for 'push' delivery of statistics samples.")]
   dateTime TimeLastSampled;
};

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