(file) Return to CIM_Core25.mof CVS log (file) (dir) Up to [Pegasus] / pegasus / Schemas / CIM25

File: [Pegasus] / pegasus / Schemas / CIM25 / CIM_Core25.mof (download)
Revision: 1.2, Thu Dec 13 14:53:06 2001 UTC (22 years, 5 months ago) by mike
Branch: MAIN
CVS Tags: test, preBug9676, postBug9676, pep_88, pegasus25BeforeLicenseUpdate, merge_of_dev, mday-merge-start, mday-merge-pegasus/src/Pegasus/Server, mday-merge-pegasus/src/Pegasus/Common, mday-2-0-patches, local, VERSION_2_1_RELEASE_HEAD, VERSION_2_1_RELEASE_BRANCH, VERSION_2_1_RELEASE, VERSION_2_1_1_RELEASE, VERSION_2_01_01, VERSION_2_00_RC_4, VERSION_2_00_RC_3, VERSION_2_00_RC_2, VERSION_2_00_RC_1, VERSION_2_00_BRANCH, VERSION_1_10, VERSION_1_09, VERSION_1_08, VERSION_1_07, TEST, TASK_PEP328_SOLARIS_NEVADA_PORT, TASK_PEP317_1JUNE_2013, TASK_PEP233_EmbeddedInstSupport-merge_out_trunk, TASK_BUG_5314_IPC_REFACTORING_ROOT, TASK_BUG_5314_IPC_REFACTORING_BRANCH, TASK_BUG_5314_IPC_REFACTORING-V1, TASK_BUG_5191_QUEUE_CONSOLIDATION_ROOT, TASK_BUG_5191_QUEUE_CONSOLIDATION_BRANCH, TASK-TASK_PEP362_RestfulService_branch-root, TASK-TASK_PEP362_RestfulService_branch-merged_out_from_trunk, TASK-TASK_PEP362_RestfulService_branch-merged_in_to_trunk, TASK-TASK_PEP362_RestfulService_branch-merged_in_from_branch, TASK-TASK_PEP362_RestfulService_branch-branch, TASK-TASK-BUG4011_WinLocalConnect-branch-New-root, TASK-TASK-BUG4011_WinLocalConnect-branch-New-merged_out_to_branch, TASK-TASK-BUG4011_WinLocalConnect-branch-New-merged_out_from_trunk, TASK-TASK-BUG4011_WinLocalConnect-branch-New-merged_in_to_trunk, TASK-TASK-BUG4011_WinLocalConnect-branch-New-merged_in_from_branch, TASK-TASK-BUG4011_WinLocalConnect-branch-New-branch, TASK-PEP362_RestfulService-root, TASK-PEP362_RestfulService-merged_out_to_branch, TASK-PEP362_RestfulService-merged_out_from_trunk, TASK-PEP362_RestfulService-merged_in_to_trunk, TASK-PEP362_RestfulService-merged_in_from_branch, TASK-PEP362_RestfulService-branch, TASK-PEP348_SCMO-root, TASK-PEP348_SCMO-merged_out_to_branch, TASK-PEP348_SCMO-merged_out_from_trunk, TASK-PEP348_SCMO-merged_in_to_trunk, TASK-PEP348_SCMO-merged_in_from_branch, TASK-PEP348_SCMO-branch, TASK-PEP328_SOLARIS_NEVADA_PORT_v2-root, TASK-PEP328_SOLARIS_NEVADA_PORT_v2-branch, TASK-PEP328_SOLARIS_NEVADA_PORT-root, TASK-PEP328_SOLARIS_NEVADA_PORT-branch, TASK-PEP328_SOLARIS_IX86_CC_PORT-root, TASK-PEP328_SOLARIS_IX86_CC_PORT-branch-v2, TASK-PEP328_SOLARIS_IX86_CC_PORT-branch, TASK-PEP317_pullop-root, TASK-PEP317_pullop-merged_out_to_branch, TASK-PEP317_pullop-merged_out_from_trunk, TASK-PEP317_pullop-merged_in_to_trunk, TASK-PEP317_pullop-merged_in_from_branch, TASK-PEP317_pullop-branch, TASK-PEP311_WSMan-root, TASK-PEP311_WSMan-branch, TASK-PEP305_VXWORKS-root, TASK-PEP305_VXWORKS-branch-pre-solaris-port, TASK-PEP305_VXWORKS-branch-post-solaris-port, TASK-PEP305_VXWORKS-branch-beta2, TASK-PEP305_VXWORKS-branch, TASK-PEP305_VXWORKS-2008-10-23, TASK-PEP291_IPV6-root, TASK-PEP291_IPV6-branch, TASK-PEP286_PRIVILEGE_SEPARATION-root, TASK-PEP286_PRIVILEGE_SEPARATION-branch, TASK-PEP274_dacim-root, TASK-PEP274_dacim-merged_out_to_branch, TASK-PEP274_dacim-merged_out_from_trunk, TASK-PEP274_dacim-merged_in_to_trunk, TASK-PEP274_dacim-merged_in_from_branch, TASK-PEP274_dacim-branch, TASK-PEP268_SSLClientCertificatePropagation-root, TASK-PEP268_SSLClientCertificatePropagation-merged_out_to_branch, TASK-PEP268_SSLClientCertificatePropagation-merged_out_from_trunk, TASK-PEP268_SSLClientCertificatePropagation-merged_in_to_trunk, TASK-PEP268_SSLClientCertificatePropagation-merged_in_from_branch, TASK-PEP268_SSLClientCertificatePropagation-branch, TASK-PEP267_SLPReregistrationSupport-root, TASK-PEP267_SLPReregistrationSupport-merging_out_to_branch, TASK-PEP267_SLPReregistrationSupport-merging_out_from_trunk, TASK-PEP267_SLPReregistrationSupport-merged_out_to_branch, TASK-PEP267_SLPReregistrationSupport-merged_out_from_trunk, TASK-PEP267_SLPReregistrationSupport-merged_in_to_trunk, TASK-PEP267_SLPReregistrationSupport-merged_in_from_branch, TASK-PEP267_SLPReregistrationSupport-branch, TASK-PEP250_RPMProvider-root, TASK-PEP250_RPMProvider-merged_out_to_branch, TASK-PEP250_RPMProvider-merged_out_from_trunk, TASK-PEP250_RPMProvider-merged_in_to_trunk, TASK-PEP250_RPMProvider-merged_in_from_branch, TASK-PEP250_RPMProvider-branch, TASK-PEP245_CimErrorInfrastructure-root, TASK-PEP245_CimErrorInfrastructure-merged_out_to_branch, TASK-PEP245_CimErrorInfrastructure-merged_out_from_trunk, TASK-PEP245_CimErrorInfrastructure-merged_in_to_trunk, TASK-PEP245_CimErrorInfrastructure-merged_in_from_branch, TASK-PEP245_CimErrorInfrastructure-branch, TASK-PEP241_OpenPegasusStressTests-root, TASK-PEP241_OpenPegasusStressTests-merged_out_to_branch, TASK-PEP241_OpenPegasusStressTests-merged_out_from_trunk, TASK-PEP241_OpenPegasusStressTests-merged_in_to_trunk, TASK-PEP241_OpenPegasusStressTests-merged_in_from_branch, TASK-PEP241_OpenPegasusStressTests-branch, TASK-Bugs5690_3913_RemoteCMPI-root, TASK-Bugs5690_3913_RemoteCMPI-merged_out_to_branch, TASK-Bugs5690_3913_RemoteCMPI-merged_out_from_trunk, TASK-Bugs5690_3913_RemoteCMPI-merged_in_to_trunk, TASK-Bugs5690_3913_RemoteCMPI-merged_in_from_branch, TASK-Bugs5690_3913_RemoteCMPI-branch, TASK-Bug2102_RCMPIWindows-root, TASK-Bug2102_RCMPIWindows-merged_out_to_branch, TASK-Bug2102_RCMPIWindows-merged_out_from_trunk, TASK-Bug2102_RCMPIWindows-merged_in_to_trunk, TASK-Bug2102_RCMPIWindows-merged_in_from_branch, TASK-Bug2102_RCMPIWindows-branch, TASK-Bug2102Final-root, TASK-Bug2102Final-merged_out_to_branch, TASK-Bug2102Final-merged_out_from_trunk, TASK-Bug2102Final-merged_in_to_trunk, TASK-Bug2102Final-merged_in_from_branch, TASK-Bug2102Final-branch, TASK-Bug2021_RemoteCMPIonWindows-root, TASK-Bug2021_RemoteCMPIonWindows-merged_out_to_branch, TASK-Bug2021_RemoteCMPIonWindows-merged_out_from_trunk, TASK-Bug2021_RemoteCMPIonWindows-merged_in_to_trunk, TASK-Bug2021_RemoteCMPIonWindows-merged_in_from_branch, TASK-Bug2021_RemoteCMPIonWindows-branch, TASK-Bug2021_RCMPIonWindows-root, TASK-Bug2021_RCMPIonWindows-merged_out_to_branch, TASK-Bug2021_RCMPIonWindows-merged_out_from_trunk, TASK-Bug2021_RCMPIonWindows-merged_in_to_trunk, TASK-Bug2021_RCMPIonWindows-merged_in_from_branch, TASK-Bug2021_RCMPIonWindows-branch, TASK-BUG7240-root, TASK-BUG7240-branch, TASK-BUG7146_SqlRepositoryPrototype-root, TASK-BUG7146_SqlRepositoryPrototype-merged_out_to_branch, TASK-BUG7146_SqlRepositoryPrototype-merged_out_from_trunk, TASK-BUG7146_SqlRepositoryPrototype-merged_in_to_trunk, TASK-BUG7146_SqlRepositoryPrototype-merged_in_from_branch, TASK-BUG7146_SqlRepositoryPrototype-branch, TASK-BUG4011_WinLocalConnect-root, TASK-BUG4011_WinLocalConnect-merged_out_to_branch, TASK-BUG4011_WinLocalConnect-merged_out_from_trunk, TASK-BUG4011_WinLocalConnect-merged_in_to_trunk, TASK-BUG4011_WinLocalConnect-merged_in_from_branch, TASK-BUG4011_WinLocalConnect-branch-New, TASK-BUG4011_WinLocalConnect-branch, STABLE, SLPPERFINST-root, SLPPERFINST-branch, RELEASE_2_9_2-RC2, RELEASE_2_9_2-RC1, RELEASE_2_9_2, RELEASE_2_9_1-RC1, RELEASE_2_9_1, RELEASE_2_9_0-RC1, RELEASE_2_9_0-FC, RELEASE_2_9_0, RELEASE_2_9-root, RELEASE_2_9-branch, RELEASE_2_8_2-RC1, RELEASE_2_8_2, RELEASE_2_8_1-RC1, RELEASE_2_8_1, RELEASE_2_8_0_BETA, RELEASE_2_8_0-RC2, RELEASE_2_8_0-RC1, RELEASE_2_8_0-FC, RELEASE_2_8_0, RELEASE_2_8-root, RELEASE_2_8-branch, RELEASE_2_7_3-RC1, RELEASE_2_7_3, RELEASE_2_7_2-RC1, RELEASE_2_7_2, RELEASE_2_7_1-RC1, RELEASE_2_7_1, RELEASE_2_7_0-RC1, RELEASE_2_7_0-BETA, RELEASE_2_7_0, RELEASE_2_7-root, RELEASE_2_7-branch, RELEASE_2_6_3-RC2, RELEASE_2_6_3-RC1, RELEASE_2_6_3, RELEASE_2_6_2-RC1, RELEASE_2_6_2, RELEASE_2_6_1-RC1, RELEASE_2_6_1, RELEASE_2_6_0-RC1, RELEASE_2_6_0-FC, RELEASE_2_6_0, RELEASE_2_6-root, RELEASE_2_6-branch-clean, RELEASE_2_6-branch, RELEASE_2_5_5-RC2, RELEASE_2_5_5-RC1, RELEASE_2_5_5, RELEASE_2_5_4-RC2, RELEASE_2_5_4-RC1, RELEASE_2_5_4, RELEASE_2_5_3-RC1, RELEASE_2_5_3, RELEASE_2_5_2-RC1, RELEASE_2_5_2, RELEASE_2_5_1-RC1, RELEASE_2_5_1, RELEASE_2_5_0-RC1, RELEASE_2_5_0, RELEASE_2_5-root, RELEASE_2_5-branch, RELEASE_2_4_FC_CANDIDATE_1, RELEASE_2_4_3, RELEASE_2_4_2, RELEASE_2_4_1-BETA3, RELEASE_2_4_1-BETA2, RELEASE_2_4_1-BETA1, RELEASE_2_4_1, RELEASE_2_4_0-RC3, RELEASE_2_4_0-RC2, RELEASE_2_4_0, RELEASE_2_4-root, RELEASE_2_4-branch, RELEASE_2_3_2-testfreeze, RELEASE_2_3_2-root, RELEASE_2_3_2-releasesnapshot, RELEASE_2_3_2-branch-freeze, RELEASE_2_3_2-branch, RELEASE_2_3_1-root, RELEASE_2_3_1-branch, RELEASE_2_3_0-root, RELEASE_2_3_0-msg-freeze, RELEASE_2_3_0-branch, RELEASE_2_2_1-snapshot, RELEASE_2_2_0_0-release, RELEASE_2_2_0-root, RELEASE_2_2_0-branch, RELEASE_2_2-root, RELEASE_2_14_1, RELEASE_2_14_0-RC2, RELEASE_2_14_0-RC1, RELEASE_2_14_0, RELEASE_2_14-root, RELEASE_2_14-branch, RELEASE_2_13_0-RC2, RELEASE_2_13_0-RC1, RELEASE_2_13_0-FC, RELEASE_2_13_0, RELEASE_2_13-root, RELEASE_2_13-branch, RELEASE_2_12_1-RC1, RELEASE_2_12_1, RELEASE_2_12_0-RC1, RELEASE_2_12_0-FC, RELEASE_2_12_0, RELEASE_2_12-root, RELEASE_2_12-branch, RELEASE_2_11_2-RC1, RELEASE_2_11_2, RELEASE_2_11_1-RC1, RELEASE_2_11_1, RELEASE_2_11_0-RC1, RELEASE_2_11_0-FC, RELEASE_2_11_0, RELEASE_2_11-root, RELEASE_2_11-branch, RELEASE_2_10_1-RC1, RELEASE_2_10_1, RELEASE_2_10_0-RC2, RELEASE_2_10_0-RC1, RELEASE_2_10_0, RELEASE_2_10-root, RELEASE_2_10-branch, PRE_LICENSE_UPDATE_2003, PREAUG25UPDATE, POST_LICENSE_UPDATE_2003, POSTAUG25UPDATE, PEP286_PRIVILEGE_SEPARATION_ROOT, PEP286_PRIVILEGE_SEPARATION_CODE_FREEZE, PEP286_PRIVILEGE_SEPARATION_BRANCH, PEP286_PRIVILEGE_SEPARATION_1, PEP244_ServerProfile-root, PEP244_ServerProfile-branch, PEP233_EmbeddedInstSupport-root, PEP233_EmbeddedInstSupport-branch, PEP217_PRE_BRANCH, PEP217_POST_BRANCH, PEP217_BRANCH, PEP214ROOT, PEP214BRANCH, PEP214-root, PEP214-branch, PEP213_SIZE_OPTIMIZATIONS, PEP-214B-root, PEGASUS_FC_VERSION_2_2, PEGASUS_2_5_0_PerformanceDev-string-end, PEGASUS_2_5_0_PerformanceDev-rootlt, PEGASUS_2_5_0_PerformanceDev-root, PEGASUS_2_5_0_PerformanceDev-r2, PEGASUS_2_5_0_PerformanceDev-r1, PEGASUS_2_5_0_PerformanceDev-lit-end, PEGASUS_2_5_0_PerformanceDev-buffer-end, PEGASUS_2_5_0_PerformanceDev-branch, PEGASUS_2_5_0_PerformanceDev-AtomicInt-branch, PEG25_IBM_5_16_05, NPEGASUS_2_5_0_PerformanceDev-String-root, NNPEGASUS_2_5_0_PerformanceDev-String-branch, Makefile, MONITOR_CONSOLIDATION_2_5_BRANCH, LOCAL_ASSOCPROV-ROOT, LOCAL_ASSOCPROV-BRANCH, IBM_241_April1405, HPUX_TEST, HEAD, CQL_2_5_BRANCH, CIMRS_WORK_20130824, CHUNKTESTDONE_PEP140, BeforeUpdateToHeadOct82011, BUG_4225_PERFORMANCE_VERSION_1_DONE
Changes since 1.1: +2151 -2089 lines
Merged dev branch into main trunk.

// ==================================================================
// Title:       Core MOF Specification 2.5
// Filename:    CIM_Core25.MOF
// Version:     2.5
// Release:     0
// Date:        06/12/2001
// ===================================================================
// Copyright "2001" 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 cited should always be noted.
// ===================================================================
// Description: The object classes below are listed in an order that
//              avoids forward references. Required objects, defined 
//              by other working groups, are omitted.
// ===================================================================
// Author:      DMTF System and Devices Working Group
// ===================================================================
//      06/16/1998 - V2.0 Errata
//      - CR224, CIM_ missed in 3 class names
//                CIM_ProductPhysicalElements, CIM_FRUPhysicalElements
//                and CIM_FRUIncludesProduct
//      - CR231, Format for specifying Propagated keys uses
//                period, not colon
//      09/29/1998 - Version 2.1 
//      - CR238, Add CompatibleProduct association
//      - CR239, Add ProductProductDependency association
//      - CR240, Add statistics-related objects
//          CIM_StatisticalInformation, CIM_Statistics and
//          CIM_RelatedStatistics
//      - CR241, Remove "general" from the description of the
//          compute capabilities of ComputerSystem
//      - CR242a, Add to the enumeration for MSE.Status
//      - CR249, Add LastErrorCode, ErrorDescription and
//          ErrorCleared properties to LogicalDevice
//      - CR250, Add CreationClassName (key) to PhysicalElement
//      - CR252, Add OtherIdentifyingInfo and PoweredOn properties
//          to PhysicalElement
//      - CR270, Correct the descriptions for Product and FRU
//      - CR272, Remove repetition of the Values array from the
//          descriptions of several properties
//      - CR276b, Add to the enumeration for LogicalDevice.
//          Availability 
//      - CR282, Add PartNumber property to PhysicalElement
//      06/08/1999 - Version 2.2
//      - CR291a, Write qualifier "False" by default
//      - CR295a, Clarify Descriptions for CIM_Product and its
//          property, IdentifyingNumber 
//      - CR300a, Enhance Description for CIM_SettingContext
//      - CR304, Create the NullValue qualifier
//      - CR305, Add DisableOverride flavor to In, Out, Override
//      - CR306, Add DisableOverride flavor to Aggregation 
//          (Already present in V2.1, Spec change only)
//      - CR307b, Allow ArrayType, MaxLen, Units, ValueMap, Values,
//          Syntax and SyntaxType qualifiers to pertain to methods
//          and method parameters 
//      - CR308a, Add LogicalIdentity association
//      - CR309, Remove Min(1) from ManagedSystemElement 
//                 reference of ElementSetting
//      - CR315, Create ProvidesServiceToElement association
//      - CR317, Create DefaultSetting association
//      - CR320, Add UnknownValues and UnsupportedValues qualifiers
//      - CR321, Create ConfigurationComponent association
//      - CR322b and 323a, Add 4 methods to 'apply' CIM_Settings
//      - CR324a, Add CollectionOfMSE object and its associations
//      - CR352b, New statuses in ManagedSystemElement.Status
//                 (NonRecover and Stressed added)
//      - CR353b, Add EnableDevice method to LogicalDevice
//      - CR355a, Use Values-ValueMap qualifiers for the PowerState  
//           parameter of LogicaDevice.SetPowerState / Update
//           the method descriptions indicating that Values-
//           ValueMap qualifiers can be defined for return codes
//          - CR356a, Put keys on the references of Dependency,
//           Component, and all of the non-subclassed Setting, 
//                 Configuration, Product and Collection associations 
//      - CR359, Clarify PhysicalElement.Manufacturer and 
//           Product.Vendor
//      - CR361a, Add Terminal and DisplayName qualifiers
//      - CR362a, Add 3 properties to ComputerSystem (Dedicated,
//           OtherIdentifyingInfo and IdentifyingDescriptions) /
//           Update the Description for System.Roles
//      - CR376, Add OtherIdentifyingInfo and 
//             IdentifyingDescriptions properties to LogicalDevice
//      - CR387, Add PowerOnHours and TotalPowerOnHours properties
//           to LogicalDevice / Update the Availability enum
//      - CR389, Add MinValue and MaxValue qualifiers
//      - CR390a, Create subclasses of StatisticalInformation
//           to formalize naming
//      - CR391b, 400a and 401b, Add Counter, Gauge, BitMap, 
//                 BitValue and Static qualifiers / Update MinValue 
//                 and MaxValue to apply to methods and parameters
//      - CR396d, Add NonlocalType and SourceType qualifiers
//      - CR404a, Add ServiceComponent association
//      - CR405, Add Counter qualifier to PowerOnHours and
//                 and TotalPowerOnHours properties of LogicalDevice
//      - CR411, Add Provider qualifier
//      - CR413, Fix propagation of keys from 390a
//        07/06/1999 - Version 2.2.1
//      - CR423, Locale should be specified as en_US
//      - CR425, Update the DMI MappingStrings using the June
//          release of the master.mif
//  Date  02/18/2000 - Version 2.3
//      - CR433, New properties and enums from Master.MIF 
//              and new ModelCorrespondences
//      - CR444, Add the RestartService property to the 
//              CIM_ServiceServiceDependency association in the 
//              core mof to support diagnostics. 
//      - CR445e Modify the LogicalDevice for Fault Tolerance: 
//              Update the Availability property, add an AdditionalAvailability 
//              property, change the description for the StatusInfo property
//              add new methods, and add a MaxQuiesceTime property
//      - CR446c add Octetstring Qualifier 
//      - CR448b Add ManagedElement, Collection  and MemberOfCollection Classes, 
//              update ManagedSystemElement and Dependency classes accordingly
//      - CR456 Add "Management" to the end of the Values array for 
//              CIM_ComputerSystem.Dedicated
//      - CR458c Add a new association, CIM_Synchronized  
//      - CR461 Subclass from CIM_ManagedElement, CIM_Collection and 
//          CIM_MemberOfCollection.  
//          Remove Description & Caption from the above classes, where exist.
//      - CR462 Update the Description for ManagedElement, Add qualifier in 
//          MemberOfCollection
//  Date 06/04/2000 - Version 2.3.2
//      - Errata, Changes in CR448b not complete / Missing delete of
//          Caption and Description properties where inherited from
//          CIM_ManagedElement for CIM_CollectionOfMSEs
//  Date 06/09/2000 - Version 2.4
//      - CR481 Change the CIM_Statistics association to reference ManagedElement,
//           not just ManagedSystemElement.
//      - CR491a Add to new values to the enumeration for 
//          ManagedSystemElement.Status and update the property's Description.
//  Date 07/14/2000 Version 2.4
//      - CR505 
//          1. Clarify the subclassing of ServiceServiceDependency
//          2. ProvidesServiceToElement needs to come before 
//             ServiceServiceDependency in MOF
//          3. Update the Description for CollectionOfMSEs to include 'bags'
//      - CR519 ERRATA CIM 2.3: correct ValueMap syntax errors in 
//              CIM_LogicalDevice.Availability 
//  Date 12/01/2000 Version 2.5
//      - CR514j Add Deprecated qualifier
//      - CR529 CIM_LogicalDisk.StatusInfo property description refers to it as 
//              a string even though the property is a uint16
//      - CR532 Update description on PhysicalElement.OtherIdentifyingInfo 
//              to remove word "asset"
//      - CR534 Update MappingStrings Qualifiers to stay in sync with 
//              updates to the MASTER.MIF.
//      - CR536a Add EXPERIMENTAL Qualifier
//      - CR537a Add Stopped as a valid state in the enumeration for 
//               ManagedSystemElement.Status.
//      - CR544a Add DN qualifier 
//      - CR447e Add PropertyUsage qualifier
//      - CR548a Add a methods to CIM_Setting to allow a subset of the 
//               properties in the CIM_Setting instance to be verified 
//               and/or applied
//      - CR557 Change the reference for ProvidesServiceToElement.
//              Dependent to ME (was MSE) 
//      - CR564 Move AdminDomain to the Core Model, change to concrete, 
//              and update description 
//      - CR568a Corrections to CIM_CollectionOfMSEs Description 
//      - CR569 Add EmbeddedObject qualifier 
//      - CR581 Revise the description of CIM_AdminDomain.NameFormat 
//              to alter reference to Network model 
//      - CR585 Company review Changes from Compaq
//          1) Remove word "schema" from qualifier scope declarations 
//             per CIM_Spec_Errat221
//  Date 05/20/2001 Version 2.5 Final
//          Changed format of classes to be consistent.
//          Changed order of class definition to match Visio
// ==================================================================

// ==================================================================
// Pragmas
// ==================================================================
#pragma locale ("en_US")

// ==================================================================
// Qualifiers
// ==================================================================
Qualifier Abstract : boolean = false, Scope(class, association, 
    indication), Flavor(DisableOverride, Restricted);
Qualifier Aggregate: boolean = false, Scope (reference),
    Flavor(DisableOverride);
Qualifier Aggregation : boolean = false, Scope(association),
    Flavor(DisableOverride);
Qualifier Alias : string = null, Scope(property, reference, 
    method), Flavor(Translatable);
Qualifier ArrayType : string = "Bag", Scope(property, parameter);
Qualifier Association : boolean = false, Scope(class, association), 
      Flavor(DisableOverride);
Qualifier BitMap : string[], Scope(property, method, parameter);
Qualifier BitValues : string[], Scope(property, method,
    parameter), Flavor(Translatable);
Qualifier Counter : boolean = false, Scope(property, method, 
    parameter);
Qualifier Delete : boolean = false, Scope(association, reference);
Qualifier Deprecated : string [], Scope(class, association, property, method);
Qualifier Description : string = null, Scope(any), 
    Flavor(Translatable);
Qualifier DisplayName : string = null, Scope(any),
    Flavor(Translatable);
Qualifier DN : boolean=false, 
    Scope(property, parameter), Flavor(DisableOverride); 
Qualifier EmbeddedObject : boolean = false, Scope(property);
Qualifier Expensive : boolean = false, 
    Scope(property, reference, method, class, association);
Qualifier Experimental : boolean = false, 
    Scope(any), Flavor (DisableOverride); 
Qualifier Gauge : boolean = false, Scope(property, method, 
    parameter);
Qualifier Ifdeleted : boolean = false, Scope(association, 
    reference);
Qualifier In : boolean = true, Scope(parameter),
    Flavor(DisableOverride);
Qualifier Indication : boolean = false, Scope(class, indication), 
    Flavor(DisableOverride);
Qualifier Invisible : boolean = false,
    Scope(reference, association, class, property, method);
Qualifier Key : boolean = false, Scope(property, reference), 
    Flavor(DisableOverride);
Qualifier Large : boolean = false, Scope(property, class);
Qualifier MappingStrings : string[],
    Scope(class, property, association, indication, reference);
Qualifier Max : uint32 = null, Scope(reference);
Qualifier MaxLen : uint32 = null, Scope(property, method, 
    parameter);
Qualifier MaxValue : sint64 = null, Scope(property, method,
    parameter);
Qualifier Min : uint32 = 0, Scope(reference);
Qualifier MinValue : sint64 = null, Scope(property, method,
    parameter);
Qualifier ModelCorrespondence : string[], Scope(property);
Qualifier Nonlocal : string = null, Scope(reference);
Qualifier NonlocalType : string = null, Scope(reference);
Qualifier NullValue : string = null, Scope (property),
      Flavor(DisableOverride);
Qualifier Octetstring : boolean = false, Scope(property, parameter);
Qualifier Out : boolean = false, Scope(parameter),
    Flavor(DisableOverride);
Qualifier Override : string = null, Scope(property, method, 
    reference), Flavor(DisableOverride);
Qualifier Propagated : string = null, Scope(property),
    Flavor(DisableOverride);
Qualifier PropertyUsage : string = "CurrentContext", Scope(property) ; 
Qualifier Provider : string = null, Scope(any);
Qualifier Read : boolean = true, Scope(property);
Qualifier Required : boolean = false, Scope(property);
Qualifier Revision : string = ".5", Scope(class, 
    association, indication ), Flavor(Translatable);
Qualifier Schema : string = null, Scope (property, method), 
    Flavor(DisableOverride, Translatable);
Qualifier Source : string = null, Scope(class, association, 
    indication);
Qualifier SourceType : string = null, Scope(class, association, 
      indication, reference);
Qualifier Static : boolean = false, Scope(method, property),
    Flavor(DisableOverride);
Qualifier Syntax : string = null, Scope(property, reference,
    method, parameter);
Qualifier SyntaxType : string = null, Scope(property, reference,
    method, parameter);
Qualifier Terminal : boolean = FALSE, Scope(class);
Qualifier TriggerType : string = null,
    Scope(class, property, reference, method, association, 
    indication);
Qualifier Units : string = null, Scope(property, method,  
    parameter), Flavor(Translatable);
Qualifier UnknownValues : string[], Scope(property),
    Flavor(DisableOverride);
Qualifier UnsupportedValues : string[], Scope(property),
    Flavor(DisableOverride);
Qualifier ValueMap : string[], Scope(property, method, parameter);
Qualifier Values : string[], Scope(property, method, parameter), 
    Flavor(Translatable);
Qualifier Version : string = "V2.5", Scope(class, 
    association, indication), Flavor(Translatable);
Qualifier Weak : boolean = false, Scope(reference), 
      Flavor(DisableOverride, ToSubclass);
Qualifier Write : boolean = false, Scope(property);

// ==================================================================
//
//  Elements and Collections
//
// ==================================================================
// ==================================================================
// ManagedElement
// ================================================================== 
   [Abstract, 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 {  
      [MaxLen (64), Description (  
        "The Caption property is a short textual description (one-"    
        "line string) of the object.") ]   
   string Caption;  
      [Description (  
        "The Description property provides a textual description of "
        "the object.") ]   
   string Description;    
};
     

// ================================================================== 
//    ManagedSystemElement
// ==================================================================
   [Abstract, Description (
     "CIM_ManagedSystemElement is the base class for the System "
     "Element hierarchy. Membership Criteria: Any distinguishable "
     "component of a System is a candidate for inclusion in this "
     "class. Examples: software components, such as files; and "
     "devices, such as disk drives and controllers, and physical "
     "components such as chips and cards.") ] 
class CIM_ManagedSystemElement : CIM_ManagedElement {
      [Description (
        "A datetime value indicating when the object was installed. "
        "A lack of a value does not indicate that the object is not "
        "installed."), 
       MappingStrings {"MIF.DMTF|ComponentID|001.5"} ] 
   datetime InstallDate;
      [MaxLen (256), 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.") ] 
   string Name;
      [MaxLen (10), Description ( 
        "  A string indicating the current status of the object. " 
        "Various operational and non-operational statuses are " 
        "defined. Operational statuses are \"OK\", \"Degraded\", " 
        "\"Stressed\" and \"Pred Fail\". \"Stressed\" indicates that " 
        "the Element is functioning, but needs attention. Examples " 
        "of \"Stressed\" states are overload, overheated, etc. The " 
        "condition \"Pred Fail\" (failure predicted) indicates that " 
        "an Element is functioning properly but predicting a failure " 
        "in the near future. An example is a SMART-enabled hard " 
        "drive. \n" 
        "  Non-operational statuses can also be specified. These " 
        "are \"Error\", \"NonRecover\", \"Starting\", \"Stopping\", " 
        " \"Stopped\", " 
        "\"Service\", \"No Contact\" and \"Lost Comm\". \"NonRecover\" " 
        "indicates that a non-recoverable error has occurred. " 
        "\"Service\" describes an Element being configured, maintained, " 
        "cleaned, or otherwise administered. This status could apply " 
        "during mirror-resilvering of a disk, reload of a user " 
        "permissions list, or other administrative task. Not all such " 
        "work is on-line, yet the Element is neither \"OK\" nor in " 
        "one of the other states. \"No Contact\" indicates that the " 
        "current instance of the monitoring system has knowledge of " 
        "this Element but has never been able to establish " 
        "communications with it. \"Lost Comm\" indicates that " 
        "the ManagedSystemElement is known to exist and has been " 
        "contacted successfully in the past, but is currently unreachable." 
        "\"Stopped\" indicates that the ManagedSystemElement is known " 
        "to exist, it is not operational (i.e. it is unable to " 
        "provide service to users), but it has not failed. It has purposely " 
        "been made non-operational. The Element " 
        "may have never been \"OK\", the Element may have initiated its " 
        "own stop, or a management system may have initiated the stop."), 
       ValueMap {"OK", "Error", "Degraded", "Unknown", "Pred Fail", 
                 "Starting", "Stopping", "Service", "Stressed", 
                 "NonRecover", "No Contact", "Lost Comm", "Stopped"} ] 
   string Status; 
};


// ==================================================================
// Collection 
// ================================================================== 
   [Abstract, 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 {   
};


// ===================================================================
//    CollectionOfMSEs
// ===================================================================
   [Abstract, Description (
     "The CollectionOfMSEs object allows the grouping of Managed"
     "SystemElements for various identification purposesand to "
     "reduce the complexity of associating Settings and"
     "Configurations. It is abstract to require furtherdefinition "
     "and semantic refinement in subclasses. TheCollectionOfMSEs "
     "object does not carry any state or statusinformation, but "
     "only represents a grouping or 'bag' of Elements. Forthis "
     "reason, it is incorrect to subclass groups that havestate/"
     "status from CollectionOfMSEs - an example isCIM_Redundancy"
     "Group (which is correctly subclassed fromLogicalElement).\n"
     "Collections typically aggregate 'like'objects, but are " 
     "not required to do so.  They simply identify 'bags' and "
     "may represent an optimization. This is especiallytrue "
     "with respect to their association to Settings and"
     "Configurations. Without Collections, one is forcedto "
     "define individual ElementSetting andElementConfiguration "
     "associations, to tie Settings and Configurationobjects to "
     "individual ManagedSystemElements. There may be much"
     "duplication in assigning the same Setting tomultiple objects. "
     "In addition, using the Collection object allows the"
     "determination that the Setting and Configurationassociations "
     "are indeed the same for the Collection's members.This "
     "information would otherwise be obtained by definingthe "
     "Collection in a proprietary manner, and thenquerying "
     "the ElementSetting and ElementConfigurationassociations to "
     "determine ifthe Collection set is completely covered.") ]
class CIM_CollectionOfMSEs : CIM_Collection {
      [MaxLen (256), Description (
        "The identification of the Collection object. When subclassed, "
        "the CollectionID property can be overridden to be a Key "
        "property.") ]
   string CollectionID;
};


// ==================================================================
//    CollectedCollections
// ==================================================================
   [Association, Aggregation, Description (
     "CIM_CollectedCollections is an aggregation association "
     "representing that a CollectionOfMSEs may itself be contained "
     "in a CollectionOfMSEs.") ]
class CIM_CollectedCollections {
      [Aggregate, Key, Description (
        "The 'higher level' or parent element in the aggregation.") ]
   CIM_CollectionOfMSEs REF Collection;
      [Key, Description ("The 'collected' Collection.") ]
   CIM_CollectionOfMSEs REF CollectionInCollection;
};

     
// ================================================================= 
//    PhysicalElement
// ==================================================================
   [Abstract, Description (
     "Subclasses of CIM_PhysicalElement define any component of a " 
     "System that has a distinct physical identity. Instances of "
     "this class can be defined in terms of labels that can be "
     "physically attached to the object. All Processes, Files, "
     "and LogicalDevices are considered not to be Physical"
     "Elements. For example, it is not possible to attach a "
     "label to a modem. It is only possible to attach a label to "
     "the card that implements the modem. The same card could "
     "also implement a LAN  adapter. These are tangible Managed "
     "System Elements (usually actual hardware items) that have a "
     "physical manifestation of some sort. A Managed System "
     "Element is not necessarily a discrete component. For "
     "example, it is possible for a single Card (which is a type "
     "of Physical Element) to host more than one Logical Device. "
     "The card would be represented by a single Physical Element "
     "associated with multiple Logical Devices.") ] 
class CIM_PhysicalElement : CIM_ManagedSystemElement {
      [Key, MaxLen (256), Description (
        "An arbitrary string that uniquely identifies the Physical"
        "Element and serves as the Element's key.  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/entity, regardless of physical placement in or on "
        "Cabinets, Adapters, etc.  For example, a hotswappable or "
        "removeable component may be taken from its containing "
        "(scoping) Package and be temporarily unused.  The object "
        "still continues to exist - and may 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.") ]
   string Tag;
      [Key, MaxLen (256), 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.") ]
   string CreationClassName;
      [MaxLen (256), Description (
        "The name of the organization responsible for producing the "
        "PhysicalElement. This may 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.") ] 
   string Manufacturer;
      [MaxLen (64), Description (
        "The name by which the PhysicalElement is generally known.") ] 
   string Model;
      [MaxLen (64), Description (
        "The stock keeping unit number for this PhysicalElement.") ] 
   string SKU;
      [MaxLen (64), Description (
        "A manufacturer-allocated number used to identify the Physical"
        "Element.") ] 
   string SerialNumber;
      [MaxLen (64), Description (
        "A string indicating the version of the PhysicalElement.") ] 
   string Version;
      [MaxLen (256), Description (
        "The part number assigned by the organization responsible for "
        "producing or manufacturing the PhysicalElement.") ]
   string PartNumber;
      [Description (
        "OtherIdentifyingInfo captures additional data, beyond that of " 
        "Tag information, that 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/able to be used as an " 
        "Element key, this property would be NULL and the bar code " 
        "data used as the class key, in the Tag property.") ] 
   string OtherIdentifyingInfo;
      [Description (
        "Boolean indicating that the PhysicalElement is powered on "
        "(TRUE), or is currently off (FALSE).") ]
   boolean PoweredOn;
      [Description (
        "Date that this PhysicalElement was manufactured.") ]
   datetime ManufactureDate;
};

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

     
// ==================================================================
//    LogicalIdentity
// ==================================================================
   [Association, Abstract, Description (
     "CIM_LogicalIdentity is an abstract and generic association, "
     "indicating that two LogicalElements represent different "
     "aspects of the same underlying entity. This relationship "
     "conveys what could be defined with multiple inheritance. It "
     "is restricted to the 'logical' aspects of a ManagedSystem"
     "Element. In most scenarios, the Identity relationship is "
     "determined by the equivalence of Keys or some other "
     "identifying properties of the related Elements. The "
     "association should only be used in well understood scenarios. "
     "This is why the association is abstract - allowing more "
     "concrete definition and clarification in subclasses. One of "
     "the scenarios where this relationship is reasonable is to "
     "represent that a Device is both a 'bus' entity and a "
     "'functional' entity. For example, a Device could be both a "
     "USB (bus) and a Keyboard (functional) entity.") ]
class CIM_LogicalIdentity {
      [Key, Description (
        "SystemElement represents one aspect of the Logical"
        "Element.") ]
   CIM_LogicalElement ref SystemElement;
      [Key, Description (
        "SameElement represents an alternate aspect of the "
        "System entity.") ]
   CIM_LogicalElement ref SameElement;
};


// ==================================================================
//    System
// ==================================================================
   [Abstract, Description (
     "A CIM_System is a LogicalElement that aggregates an "
     "enumerable set of Managed System Elements. The aggregation "
     "operates as a functional whole. Within any particular "
     "subclass of System, there is a well-defined list of "
     "Managed System Element classes whose instances must be "
     "aggregated.") ] 
class CIM_System : CIM_LogicalElement {
      [Key, MaxLen (256), 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.") ]
   string CreationClassName;
      [Key, MaxLen (256), Override ("Name"), Description (
        "The inherited Name serves as key of a System instance in " 
        "an enterprise environment.") ] 
   string Name;
      [MaxLen (64), 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 subclass' heuristic.") ] 
   string NameFormat;
      [MaxLen (64), Description (
        "The name of the primary system owner."),
       MappingStrings {"MIF.DMTF|General Information|001.4"} ]  
   string PrimaryOwnerName;
      [MaxLen (256), Description (
        "A string that provides information on how the primary system "
        "owner can be reached (e.g. phone number, email address, "
        "...)."),
       MappingStrings {"MIF.DMTF|General Information|001.3"} ] 
   string PrimaryOwnerContact;
      [Description (
        "An array (bag) of strings that specify the roles this System "
        "plays in the IT-environment. Subclasses of System may "
        "override this property to define explicit Roles values. "
        "Alternately, a Working Group may describe the heuristics, "
        "conventions and guidelines for specifying Roles. For "
        "example, for an instance of a networking system, the Roles "
        "property might contain the string, 'Switch' or 'Bridge'.") ]
   string Roles[];
};


// ===================================================================
//    ComputerSystem
// ===================================================================
   [Abstract, 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. "
        "A heuristic is defined to create the ComputerSystem Name "
        "to attempt to always generate the same Name, independent of "
        "discovery protocol. This prevents inventory and management "
        "problems where the same asset or entity is discovered "
        "multiple times, but can not be resolved to a single object. "
        "Use of the heuristic is optional, but recommended.\n\n"
        "The NameFormat property identifies how the ComputerSystem "
        "Name is generated, using a heuristic. The heuristic is "
        "outlined, in detail, in the CIM V2 System Model spec. "
        "It assumes that the documented rules are traversed in order, "
        "to determine and assign a Name. The NameFormat Values "
        "list defines the precedence order for assigning the Computer"
        "System Name. Several rules do map to the same Value.\n\n"
        "Note that the ComputerSystem Name calculated using the "
        "heuristic is the System's key value. Other names can be "
        "assigned and used for the ComputerSystem, that better suit "
        "a business, using Aliases."), 
       ValueMap {"Other", "IP", "Dial", "HID", "NWA", "HWA", "X25", 
                 "ISDN", "IPX", "DCC", "ICD", "E.164", "SNA", "OID/OSI"} ]
   string NameFormat;
      [MaxLen (256), ArrayType ("Indexed"), 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."),
       ModelCorrespondence {
        "CIM_ComputerSystem.IdentifyingDescriptions"} ]
   string OtherIdentifyingInfo[];
      [ArrayType ("Indexed"), 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."),
       ModelCorrespondence {
        "CIM_ComputerSystem.OtherIdentifyingInfo"} ]
   string IdentifyingDescriptions[];
      [Description (
        "Enumeration indicating whether the ComputerSystem is "
        "a special-purpose System (ie, dedicated to a particular "
        "use), versus being 'general purpose'. For example, one "
        "could specify that the System is dedicated to \"Print\" "
        "(value=11) or acts as a \"Hub\" (value=8)."),
       Values {"Not Dedicated", "Unknown", "Other", "Storage", 
               "Router", "Switch", "Layer 3 Switch", 
               "Central Office Switch", "Hub", "Access Server", 
               "Firewall", "Print", "I/O", "Web Caching", "Management"} ]
   uint16 Dedicated[];
};
     

// ===================================================================
//    LogicalDevice
// ===================================================================
   [Abstract, 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_LogicalElement {
      [Propagated("CIM_System.CreationClassName"), 
       Key, MaxLen (256), Description (
        "The scoping System's CreationClassName.") ]
   string SystemCreationClassName;
      [Propagated("CIM_System.Name"),
       Key, MaxLen (256), Description (
        "The scoping System's Name.") ]
   string SystemName;
      [Key, MaxLen (256), 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.") ]
   string CreationClassName;
      [Key, MaxLen (64), Description (
        "An address or other identifying information to uniquely "
        "name the LogicalDevice.") ]
   string DeviceID;
      [Description (
        "Boolean indicating that the Device can be power managed "
        "- ie, put into a power save state. This boolean does not "
        "indicate that power management features are currently "
        "enabled, or if enabled, what features are supported. "
        "Refer to the PowerManagementCapabilities array for this "
        "information. If this boolean is false, the integer value "
        "1, for the string, \"Not Supported\", should be the only "
        "entry in the PowerManagementCapabilities array.") ]    
   boolean PowerManagementSupported;
      [Description(
        "Indicates the specific power-related capabilities of a "
        "LogicalDevice. The array values, 0=\"Unknown\", 1="
        "\"Not Supported\" and 2=\"Disabled\" are self-explanatory. "
        "The value, 3=\"Enabled\" indicates that the power management "
        "features are currently enabled but the exact feature set "
        "is unknown or the information is unavailable. "
        "\"Power Saving Modes Entered Automatically\" (4) describes "
        "that a Device can change its power state based on usage or "
        "other criteria. \"Power State Settable\" (5) indicates that "
        "the SetPowerState method is supported. \"Power Cycling "
        "Supported\" (6) indicates that the SetPowerState method "
        "can be invoked with the PowerState input variable set to 5 ("
        "\"Power Cycle\"). \"Timed Power On Supported\" (7) indicates "
        "that the SetPowerState method can be invoked with the Power"
        "State input variable set to 5 (\"Power Cycle\") and the Time "
        "parameter set to a specific date and time, or interval, "
        "for power-on."),
       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 AdditionalAvailability "
        "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",
        "MIB.IETF|HOST-RESOURCES-MIB.hrDeviceStatus", 
        "MIF.DMTF|Host Device|001.5"},
       ModelCorrespondence {"CIM_LogicalDevice.AdditionalAvailability"}]
   uint16 Availability;
      [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.  "
        "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"} ]
   uint16 StatusInfo;
      [Description (
        "LastErrorCode captures the last error code reported by " 
        "the LogicalDevice.")]
   uint32 LastErrorCode;
      [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;
      [Description (
        "ErrorCleared is a boolean property indicating that the " 
        "error reported in LastErrorCode is now cleared.")]
   boolean ErrorCleared;
      [MaxLen (256), ArrayType ("Indexed"), 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."),
       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;
      [ArrayType ("Indexed"), 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."),
       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 (Additional"
        "Availability 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[];
      [Description (
        "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;
      [Description(
        "SetPowerState defines the desired power state for a "
        "LogicalDevice and when a Device should be put into that "
        "state. The desired power state is specified by setting "
        "the PowerState parameter to one of the "
        "following integer values: 1=\"Full Power\", 2=\"Power Save "
        "- Low Power Mode\", 3=\"Power Save - Standby\", 4=\"Power "
        "Save - Other\", 5=\"Power Cycle\" or 6=\"Power Off\". "
        "The Time parameter (for all state changes but 5, "
        "\"Power Cycle\") 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). When the PowerState parameter is "
        "equal to 5, \"Power Cycle\", the Time parameter indicates "
        "when the Device should power on again. Power off is "
        "immediate. SetPowerState should return 0 if successful, 1 "
        "if the specified PowerState and Time 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 SetPowerState(
      [IN, 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] 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();
      [Description (
        "Requests that the LogicalDevice be enabled (\"Enabled\" "
        "input parameter = TRUE) or disabled (= FALSE). If "
        "successful, the Device's StatusInfo property should also "
        "reflect the desired state (enabled/disabled). 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] boolean Enabled);
      [Description (
        "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 a StatusInfo of \"Enabled\" (value=3) 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.") ]
   uint32 OnlineDevice(
      [IN] boolean Online);
      [Description (
        "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 a "
        "StatusInfo of \"Enabled\" (value=3). 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 Additional"
        "Availability) of \"Quiesced\" (value=21) and a StatusInfo of "
        "\"Enabled\" (value=3). 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] 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();        
};  

   
// ==================================================================
//    Service
// ==================================================================  
   [Abstract, Description (
     "A CIM_Service is a Logical Element that contains the "
     "information necessary to represent and manage the "
     "functionality provided by a Device and/or SoftwareFeature. "
     "A Service is a general-purpose object to configure and "
     "manage the implementation of functionality.  It is not the "
     "functionality itself.") ] 
class CIM_Service : CIM_LogicalElement {
      [Propagated ("CIM_System.CreationClassName"), Key, 
       MaxLen (256), Description (
        "The scoping System's CreationClassName. ") ] 
   string SystemCreationClassName;
      [Propagated ("CIM_System.Name"), Key, MaxLen (256),
       Description ("The scoping System's Name.") ] 
   string SystemName;
      [Key, MaxLen (256), 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.") ]
   string CreationClassName;
      [Override ("Name"), Key, MaxLen (256), 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 object's Description property. ") ] 
   string Name;
      [MaxLen (10), Description (
        "StartMode is a string value indicating whether the Service "
        "is automatically started by a System, Operating System, etc. "
        "or only started upon request."), 
       ValueMap {"Automatic", "Manual"} ] 
   string StartMode;
      [Description (
        "Started is a boolean indicating whether the Service "
        "has been started (TRUE), or stopped (FALSE).") ] 
   boolean Started;
      [Description (
        "The StartService method places the Service in the started "
        "state. It 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' may also be specified in "
        "the subclass as a Values array qualifier.") ] 
   uint32 StartService();
      [Description (
        "The StopService method places the Service in the stopped "
        "state. It 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' may also be specified in "
        "the subclass as a Values array qualifier.") ] 
   uint32 StopService();
};

     
// ==================================================================
//    ServiceAccessPoint
// ==================================================================
   [Abstract, Description (
     "CIM_ServiceAccessPoint represents the ability to utilize or "
     "invoke a Service.  Access points represent that a Service is "
     "made available to other entities for use.") ] 
class CIM_ServiceAccessPoint : CIM_LogicalElement {
      [Propagated ("CIM_System.CreationClassName"), Key, 
       MaxLen (256), Description (
        "The scoping System's CreationClassName.") ] 
   string SystemCreationClassName;
      [Propagated ("CIM_System.Name"), Key, MaxLen (256),
       Description ("The scoping System's Name.") ] 
   string SystemName;
      [Key, MaxLen (256), 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.") ]
   string CreationClassName;
      [Override ("Name"), Key, MaxLen (256), 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 object's Description property.") ] 
   string Name;
};

     
// ==================================================================
// Dependency   
// ==================================================================
   [Association, Abstract, 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 dependent on the "   
        "Antecedent.") ]    
   CIM_ManagedElement REF Dependent;   
};   
 
                 
// ==================================================================
// MemberOfCollection    
// ==================================================================
   [Association, Aggregation, 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;   
};   


// ==================================================================
//    CollectedMSEs
// ==================================================================
   [Association, Aggregation, Description (
     "CIM_CollectedMSEs is a generic association used to "
     "establish the members of the grouping object, CollectionOf"
     "MSEs.") ]
class CIM_CollectedMSEs : CIM_MemberOfCollection {
      [Aggregate, Description (
        "The grouping or 'bag' object that represents the "
        "Collection."), Override("Collection") ]
   CIM_CollectionOfMSEs REF Collection;
      [Description ("The members of the Collection."),
       Override("Member") ]
   CIM_ManagedSystemElement REF Member;
};


// ==================================================================
//    ServiceAccessBySAP
// ==================================================================
   [Association, Description (
     "CIM_ServiceAccessBySAP is an association that identifies the "
     "access points for a Service. For example, a printer may be "
     "accessed by Netware, MacIntosh or Windows ServiceAccess"
     "Points, potentially hosted on different Systems.") ] 
class CIM_ServiceAccessBySAP : CIM_Dependency {
      [Override ("Antecedent"),
       Description ("The Service. ") ] 
   CIM_Service REF Antecedent;
      [Override ("Dependent"), Description (
        "An Access Point for a Service. Access points are dependent " 
        "in this relationship since they have no function without a "
        "corresponding Service. ") ] 
   CIM_ServiceAccessPoint REF Dependent;
};

     
// ==================================================================
//    HostedService
// ==================================================================
   [Association, Description (
     "CIM_HostedService is an association between a Service and "
     "the System on which the functionality resides.  The "
     "cardinality of this association is 1-to-many.  A System may "
     "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.  This is "
     "modeled as an ApplicationSystem that acts as an aggregation "
     "point for Services, that are each located on a single "
     "host.") ] 
class CIM_HostedService : CIM_Dependency {
      [Override ("Antecedent"), Max (1), Min (1),
       Description ("The hosting System.") ] 
   CIM_System REF Antecedent;
      [Override ("Dependent"), Weak,
       Description ("The Service hosted on the System.") ] 
   CIM_Service REF Dependent;
};

     
// ==================================================================
//    HostedAccessPoint
// ==================================================================
   [Association, Description (
     "CIM_HostedAccessPoint is an association between a Service"
     "AccessPoint and the System on which it is provided.  The "
     "cardinality of this association is 1-to-many and is weak "
     "with respect to the System. Each System may 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 hosting the ServiceAccessPoint.") ] 
class CIM_HostedAccessPoint:CIM_Dependency {
      [Override ("Antecedent"), Max (1), Min (1), 
       Description ("The hosting System.") ] 
   CIM_System REF Antecedent;
      [Override ("Dependent"), Weak,
       Description ("The SAP(s) that are hosted on this System.") ] 
   CIM_ServiceAccessPoint REF Dependent;
};
   

// ==================================================================
//    ProvidesServiceToElement
// ==================================================================
   [Association, Description (
     "CIM_ProvidesServiceToElement is used to describe that "
     "ManagedElements may be dependent on the functionality "
     "of one or more Services. An example is that a Processor "
     "and an Enclosure (PhysicalElement) are dependent on AlertOn"
     "LAN Services to signal an incomplete or erroneous boot, and "
     "hardware-related errors.") ]
class CIM_ProvidesServiceToElement : CIM_Dependency {
      [Override ("Antecedent"), Description (
        "The Service provided.") ]
   CIM_Service ref Antecedent;
      [Override ("Dependent"), Description (
        "The ManagedElement dependent on the Service.") ]
   CIM_ManagedElement ref Dependent;
};


// ==================================================================
//    ServiceServiceDependency
// ==================================================================
   [Association, Description (
     "CIM_ServiceServiceDependency is an association between a " 
     "Service and another Service, indicating that the latter is "
     "required to be present, required to have completed, or must " 
     "be absent for the former Service to provide its "
     "functionality. For example, Boot Services may be dependent "
     "upon underlying BIOS Disk and initialization Services. "
     "In the case of the initialization Services, the Boot Service "
     "is simply dependent on the init Services completing.  For "
     "the Disk Services, Boot Services may actually utilize the "
      "SAPs of this Service.  This usage dependency is modeled via "
     "the CIM_ServiceSAPDependency association.") ] 
class CIM_ServiceServiceDependency : CIM_ProvidesServiceToElement {
      [Override ("Antecedent"), 
       Description ("The required Service.") ] 
   CIM_Service REF Antecedent;
      [Override ("Dependent"), Description (
        "The Service that is dependent on an underlying Service.") ] 
   CIM_Service REF Dependent;
      [Description (
        "The nature of the Service to Service dependency. This "
        "property describes that the associated Service must have "
        "completed (value=2), must be started (3) or must not be "
        "started (4) in order for the Service to function."),  
       Values {"Unknown", "Other", "Service Must Have Completed",
               "Service Must Be Started", 
               "Service Must Not Be Started"} ]
   uint16 TypeOfDependency;
      [Description(
        "this property describes that the antecedent service "
        "must be restarted after the dependent operation is complete.")]
   boolean RestartService;
};


// ==================================================================
//    ServiceSAPDependency
// ==================================================================
   [Association, Description (
     "CIM_ServiceSAPDependency is an association between a Service "
     "and a ServiceAccessPoint indicating that the referenced SAP "
     "is utilized by the Service to provide its functionality. For "
     "example, Boot Services may invoke BIOS' Disk Services "
     "(interrupts) in order to function.") ] 
class CIM_ServiceSAPDependency : CIM_Dependency {
      [Override ("Antecedent"), 
       Description ("The required ServiceAccessPoint") ] 
   CIM_ServiceAccessPoint REF Antecedent;
      [Override ("Dependent"), Description (
        "The Service that is dependent on an underlying SAP.") ] 
   CIM_Service REF Dependent;
};

     
// ==================================================================
//    SAPSAPDependency
// ==================================================================
   [Association, Description (
     "CIM_SAPSAPDependency is an association between a Service"
     "AccessPoint and another ServiceAccessPoint indicating that "
     "the latter is required in order for the former ServiceAccess"
     "Point to utilize or connect with its Service. For example, "
     "to print at a network printer, local Print Access Points "
     "must utilize underlying network-related SAPs, or "
     "ProtocolEndpoints, in order to send the print request.") ] 
class CIM_SAPSAPDependency:CIM_Dependency {
      [Override ("Antecedent"), Description (
        "The required ServiceAccessPoint.") ] 
   CIM_ServiceAccessPoint REF Antecedent;
      [Override ("Dependent"), Description (
        "The ServiceAccessPoint that is dependent on an underlying "
        "SAP.") ] 
   CIM_ServiceAccessPoint REF Dependent;
};


// ==================================================================
//    Realizes
// ==================================================================
   [Association, Description (
     "CIM_Realizes is the association that defines the mapping "
     "between a Logical Device and the physical component that "
     "implements the Device.") ] 
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;
};

     
// ==================================================================
//    Component
// ==================================================================
   [Association, Abstract, Aggregation, Description (
     "CIM_Component is a generic association used to establish "
     "'part of' relationships between Managed System Elements. For "
     "example, the SystemComponent association defines parts of "
     "a System.") ] 
class CIM_Component {
      [Aggregate, Key, Description (
        "The parent element in the association.") ] 
   CIM_ManagedSystemElement REF GroupComponent;
      [Key, Description (
        "The child element in the association.") ] 
   CIM_ManagedSystemElement REF PartComponent;
};

     
// ==================================================================
//    SystemComponent
// ==================================================================
   [Association, Aggregation, Description (
     "CIM_SystemComponent is a specialization of the CIM_Component "
     "association that establishes 'part of' relationships between "
     "a System and the Managed System Elements of which it is "
     "composed.") ] 
class CIM_SystemComponent : CIM_Component {
      [Override ("GroupComponent"), Aggregate, 
       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;
}; 
     
// ==================================================================
//    SystemDevice
// ==================================================================
   [Association, Aggregation, Description (
     "LogicalDevices may be aggregated by a System.  This " 
     "relationship is made explicit by the SystemDevice "
     "association. ") ]
class CIM_SystemDevice:CIM_SystemComponent {
      [Override ("GroupComponent"), Aggregate, Max (1), Min (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;
};


// ==================================================================
//    ServiceComponent
// ==================================================================
   [Association, Aggregation, Description (
     "The ServiceComponent aggregation models a set of "
     "subordinate Services that are aggregated together to form "
     "a higher-level service.") ]
class CIM_ServiceComponent : CIM_Component {
      [Override ("GroupComponent"), Aggregate, 
       Description ("The parent Service.") ]
   CIM_Service REF GroupComponent;
      [Override ("PartComponent"), 
       Description ("The component Service.") ]
   CIM_Service REF PartComponent;
};

     
// ==================================================================
//    Synchrononized
// ==================================================================
   [Association, Description (
     "Indicates that two LogicalElements 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 LogicalElement that is "
        "synchronized with the entity referenced as SyncedElement.") ]
   CIM_LogicalElement ref SystemElement;
      [Key, Description (
        "SyncedElement represents another LogicalElement that is "
        "synchronized with the entity referenced as SystemElement.") ]
   CIM_LogicalElement ref SyncedElement;
      [Description (
        "The point in time that the Elements were synchronized.") ]
   datetime WhenSynced;
      [Description (
        "Boolean indicating whether synchronization is "
        "maintained.") ]
   boolean SyncMaintained;
};


// ==================================================================
//     AdminDomain
// ==================================================================
   [Description (
     "This is a special grouping of ManagedSystemElements. The "
     "grouping is viewed as a single entity, reflecting that all "
     "of its components are administered similarly - either by "
     "the same user, group of users or policy. It serves as "
     "an aggregation point to associate one or more of the "
     "following elements: network devices, such as routers and "
     "switches, servers, and other resources that can be "
     "accessed by end systems. This grouping of devices "
     "plays an essential role in ensuring that the same "
     "administrative policy and actions are applied to all "
     "of the devices in the grouping. The specific behavior "
     "and/or semantics of the AdminDomain can be identified "
     "through its aggregated and associated entities."
     "\n\n"
     "The System class and its subclasses provide the scope for "
     "numerous types of managed objects. As such, these classes "
     "must have the ability to create unique keys. This attribute "
     "is used by the System class and its subclasses to define a "
     "unique Name, independent of the specific discovery protocol "
     "used. Use of the heuristic is optional, but recommended."
     "\n\n"
     "AdminDomain is a part of the Core model, which has frequently "
     "been used in the Networks Model to group "
     "together various network resources that must be "
     "administered the same way, perhaps using the same "
     "policies. Viewed in this light, its principal subclass is "
     "AutonomousSystem.") ]
class CIM_AdminDomain : CIM_System {
      [Override ("NameFormat"), Description (
        "The NameFormat property identifies how the Name of the "
        "AdminDomain is generated, using the heuristic specified "
        "in the CIM V2 System Model spec. It assumes that the "
        "documented rules are traversed in order, to determine and "
        "assign a Name. The NameFormat Values list defines the "
        "precedence order for assigning the Name of the "
        "AdminDomain."), 
       ValueMap {"Other", "AS", "NAP", "NOC", "POP", "RNP", "IP",
            "IPX", "SNA", "Dial", "WAN", "LAN", "ISDN", "Frame Relay",
            "ATM", "E.164", "IB", "FC", "Policy Repository" },
       Values {"Other", "Autonomous System",
               "Network Access Provider", "Network Operations Center",
               "Point of Presence", "Regional Network Provider",
               "IP", "IPX", "SNA", "Dial", "WAN", "LAN", "ISDN",
               "Frame Relay", "ATM", "E.164", "Infiniband", 
               "Fibre Channel", "Policy Repository"} ]
   string NameFormat;
};


// ==================================================================
//
//  Products, FRUs, and Statistics
//
// ==================================================================


// ==================================================================
//    Product
// ==================================================================
   [Description (
     "CIM_Product is a concrete class that is a collection of "
     "PhysicalElements, SoftwareFeatures and/or other Products, "
     "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.") ] 
class CIM_Product : CIM_ManagedElement {
      [Key, MaxLen (256),
       Description ("Commonly used Product name."), 
       MappingStrings {"MIF.DMTF|ComponentID|001.2"} ] 
   string Name;
      [Key, MaxLen (64), 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."), 
       MappingStrings {"MIF.DMTF|ComponentID|001.4"} ] 
   string IdentifyingNumber;
      [Key, MaxLen (256), 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."), 
       MappingStrings {"MIF.DMTF|ComponentID|001.1"} ] 
   string Vendor;
      [Key, MaxLen (64), Description (
        "Product version information.  Corresponds to the Version "
        "property in the Product object in the DMTF Solution "
        "Exchange Standard."), 
       MappingStrings {"MIF.DMTF|ComponentID|001.3"} ] 
   string Version;
      [MaxLen (64), Description (
        "Product SKU (stock keeping unit) information.") ] 
   string SKUNumber;
      [Description (
        "If this Product is under warranty, the start date of the "
        "warranty."),
       ModelCorrespondence {"CIM_Product.WarrantyDuration"},
       MappingStrings {"MIF.DMTF|FRU|002.9"} ]
   datetime WarrantyStartDate;
      [Description (
        "If this Product is under warranty, the duration of the "
        "warranty in days."), Units ("Days"), 
       ModelCorrespondence {"CIM_Product.WarrantyStartDate"},
       MappingStrings {"MIF.DMTF|FRU|002.10"}]
   uint32 WarrantyDuration;
};

     
// ==================================================================
//    ProductParentChild
// ==================================================================
   [Association, Aggregation, Description (
     "The CIM_ProductParentChild association defines a parent "
     "child hierarchy among Products.  For example, a Product may "
     "come bundled with other Products. ") ] 
class CIM_ProductParentChild {
      [Aggregate, Key, Description (
        "The parent Product in the association.") ] 
   CIM_Product REF Parent;
      [Key, Description (
        "The child Product in the association.") ] 
   CIM_Product REF Child;
};


// ==================================================================
//    CompatibleProduct
// ================================================================== 
   [Association, Description ( 
     "CIM_CompatibleProduct is an association between Products " 
     "that can indicate a wide variety of information. For " 
     "example, it can indicate that the two referenced Products " 
     "interoperate, that they can be installed together, that " 
     "one can be the physical container for the other, etc. The " 
     "string property, CompatibilityDescription, defines how the " 
     "Products interoperate or are compatible, any limitations " 
     "regarding interoperability or installation, ...") ]
class CIM_CompatibleProduct {
      [Key, Description ( 
        "The Product for which compatible offerings are defined.") ] 
   CIM_Product REF Product; 
      [Key, Description (
        "The compatible Product.") ]
   CIM_Product REF CompatibleProduct; 
      [Description ( 
        "CompatibilityDescription is a free-form string defining " 
        "how the two referenced Products interoperate or are " 
        "compatible, any limitations to compatibility, etc.") ]
   string CompatibilityDescription;
};


// ==================================================================
//    ProductProductDependency
// ================================================================== 
   [Association, Description ( 
     "CIM_ProductProductDependency is an association between two " 
     "Products, indicating that one must be installed, or must be " 
     "absent, for the other to function. This is conceptually " 
     "equivalent to the ServiceServiceDependency association.") ] 
class CIM_ProductProductDependency { 
      [Key, Description ("The required Product.") ] 
   CIM_Product REF RequiredProduct; 
      [Key, Description ( 
        "The Product that is dependent on another Product.") ] 
   CIM_Product REF DependentProduct; 
      [Description ( 
        "The nature of the Product dependency. This property " 
        "describes that the associated Product must be installed "
        "(value=2) or must be absent (value=3) in order for the "
        "Product to function."),  
       Values {"Unknown", "Other", "Product Must Be Installed", 
               "Product Must Not Be Installed"} ]
   uint16 TypeOfDependency; 
};

     
// ==================================================================
//    SupportAccess
// ==================================================================
   [Description (
     "The CIM_SupportAccess association defines how to obtain "
     "assistance for a Product.") ] 
class CIM_SupportAccess : CIM_ManagedElement {
      [Override ("Description"), Description (
        "A textual description of the type of Support provided."),
       MappingStrings {"MIF.DMTF|Support|001.3"} ] 
   string Description;
      [Key, MaxLen (256), Description (
        "SupportAccessID is an arbitrary, free form string defined by "
        "the Product Vendor or by the organization that deploys the "
        "Product.  This property, since it is a key, should be unique "
        "throughout the enterprise.") ] 
   string SupportAccessId;
      [Description (
        "CommunicationInfo provides the details of the Communication"
        "Mode. For example, if the CommunicationMode is 'Phone', "
        "CommunicationInfo specifies the phone number to be called."), 
       MappingStrings {"MIF.DMTF|FRU|002.11", "MIF.DMTF|FRU|002.12"} ] 
   string CommunicationInfo;
      [Description (
        "CommunicationMode defines the form of communication in order "
        "to obtain support. For example, phone communication (value"
        "=2), fax (3) or email (8) can be specified."), 
       ValueMap {"1", "2", "3", "4", "5", "6", "7", "8"}, 
       Values {"Other", "Phone", "Fax", "BBS", 
               "Online Service", "Web Page", "FTP", "E-mail"}, 
       MappingStrings {"MIF.DMTF|Support|001.5"} ] 
   uint16 CommunicationMode;
      [MaxLen (64), Description (
        "Locale defines the geographic region and/or language dialect "
        "to which this Support resource pertains."), 
       MappingStrings {"MIF.DMTF|Support|001.2"} ] 
   string Locale;
};

     
// ==================================================================
//    ProductSupport
// ==================================================================
   [Association, Description (
     "CIM_ProductSupport is an association between Product and "
     "SupportAccess that conveys how support is obtained for the "
     "Product.  This is a many-to-many relationship, implying that "
     "various types of Support are available for a Product, and "
     "that the same Support object can provide assistance for "
     "multiple Products.") ] 
class CIM_ProductSupport {
      [Key, Description ("The Product.") ]     
   CIM_Product REF Product;
      [Key, Description ("Support for the Product.") ]
   CIM_SupportAccess REF Support;
};

     
// ==================================================================
//    FRU
// ==================================================================
   [Description (
     "The CIM_FRU class is a vendor-defined collection of Products "
     "and/or PhysicalElements that is associated with a "
     "Product for the purpose of supporting, maintaining or "
     "upgrading that Product at the customer's location. FRU is "
     "an acronym for 'field replaceable unit'. ") ] 
class CIM_FRU : CIM_ManagedElement {
      [Override ("Description"), Description (
        "A textual description of the FRU."), 
       MappingStrings {"MIF.DMTF|FRU|002.3"} ] 
   string Description;
      [Key, MaxLen (64), Description (
        "FRU ordering information."), 
       MappingStrings {"MIF.DMTF|FRU|002.6"} ] 
   string FRUNumber;
      [Key, MaxLen (64), Description (
        "FRU identification such as a serial number on software or "
        "a die number on a hardware chip."), 
       MappingStrings {"MIF.DMTF|FRU|002.7"} ] 
   string IdentifyingNumber;
      [Key, MaxLen (256),
       Description ("The name of the FRU's supplier."), 
       MappingStrings {"MIF.DMTF|FRU|002.4"} ] 
   string Vendor;
      [Description ("FRU name."), MaxLen (256) ] 
   string Name;
      [MaxLen (64), Description ("The FRU's revision level."),
       MappingStrings {"MIF.DMTF|FRU|002.8"} ] 
   string RevisionLevel;
};
    
     
// ==================================================================
//    ProductFRU
// ==================================================================
   [Association, Description (
     "CIM_ProductFRU is an association between Product and FRU "
     "that provides information regarding what Product components "
     "have been or are being replaced.  The association is one to "
     "many, conveying that a Product can have many FRUs, and that "
     "a particular instance of a FRU is only applied to one " 
     "(instance of a) Product.") ] 
class CIM_ProductFRU {
      [Max (1), Key, Description (
        "The Product to which the FRU is applied.") ] 
   CIM_Product REF Product;
      [Key, Description ("The FRU.") ]
   CIM_FRU REF FRU;
};

     
// ==================================================================
//    ProductPhysicalElements
// ==================================================================
   [Association, Aggregation, Description (
     "Indicates the PhysicalElements that make up a Product.") ]
class CIM_ProductPhysicalElements {
      [Max (1), Aggregate, Key, Description (
        "The Product.") ]
   CIM_Product REF Product;
      [Key, Description (
        "The PhysicalElement which is a part of the Product.") ]
   CIM_PhysicalElement REF Component;
};


// ==================================================================
//    FRUPhysicalElements
// ==================================================================
   [Association, Aggregation, Description (
     "Indicates the PhysicalElements that make up a FRU.") ]
class CIM_FRUPhysicalElements {
      [Max (1), Aggregate, Key, Description (
        "The FRU.") ]
   CIM_FRU REF FRU;
      [Key, Description (
        "The PhysicalElement which is a part of the FRU.") ]
   CIM_PhysicalElement REF Component;
};


// ==================================================================
//    FRUIncludesProduct
// ==================================================================
   [Association, Aggregation, Description (
     "Indicates that a FRU may be composed of other Product(s).") ]
class CIM_FRUIncludesProduct {
      [Max (1), Aggregate, Key, Description (
        "The FRU.") ]
   CIM_FRU REF FRU;
      [Key, Description (
        "The Product which is a part of the FRU.") ]
   CIM_Product REF Component;
};


// ==================================================================
//    StatisticalInformation
// ================================================================== 
   [Abstract, Description ( 
     "CIM_StatisticalInformation is a root class for any arbitrary " 
     "collection of statistical data and/or metrics applicable to " 
     "one or more ManagedSystemElements.") ] 
class CIM_StatisticalInformation : CIM_ManagedElement { 
      [MaxLen (256), 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. ") ] 
   string Name; 
};


// ==================================================================
//    Statistics
// ================================================================== 
   [Association, 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, 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
// ==================================================================
   [Description (
     "Statistical information associated with a System object "
     "or one of its subclasses.") ]
class CIM_SystemStatisticalInformation : CIM_StatisticalInformation {
      [Propagated("CIM_System.CreationClassName"), Key, 
       MaxLen (256), Description (
        "The scoping System's CreationClassName.") ]
   string SystemCreationClassName;
      [Propagated("CIM_System.Name"), Key, MaxLen (256), 
       Description ("The scoping System's Name.") ]
   string SystemName;
      [Key, MaxLen (256), 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.") ]
   string CreationClassName;
      [Key, MaxLen (256), Override ("Name"), Description (
        "The Name property, inherited from StatisticalInformation, "
        "serves as part of the object key.") ]
   string Name;
};


// ==================================================================
//    SystemStatistics
// ==================================================================
   [Association, 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
// ==================================================================
   [Description (
     "Statistical information associated with a Service object "
     "or one of its subclasses.") ]
class CIM_ServiceStatisticalInformation : CIM_StatisticalInformation {
      [Propagated("CIM_Service.SystemCreationClassName"), Key, 
       MaxLen (256), Description (
        "The scoping System's CreationClassName.") ]
   string SystemCreationClassName;
      [Propagated("CIM_Service.SystemName"), Key, MaxLen (256), 
       Description ("The scoping System's Name.") ]
   string SystemName;
      [Propagated("CIM_Service.CreationClassName"), Key, 
       MaxLen (256), Description (
        "The scoping Service's CreationClassName.") ]
   string ServiceCreationClassName;
      [Propagated("CIM_Service.Name"), Key, MaxLen (256), 
       Description ("The scoping Service's Name.") ]
   string ServiceName;
      [Key, MaxLen (256), 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.") ]
   string CreationClassName;
      [Key, MaxLen (256), Override ("Name"), Description (
        "The Name property, inherited from StatisticalInformation, "
        "serves as part of the object key.") ]
   string Name;
};


// ==================================================================
//    ServiceStatistics
// ==================================================================
   [Association, 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
// ==================================================================
   [Description (
     "Statistical information associated with a Service"
     "AccessPoint object or one of its subclasses.") ]
class CIM_SAPStatisticalInformation : CIM_StatisticalInformation {
      [Propagated("CIM_ServiceAccessPoint.SystemCreationClassName"),  
       Key, MaxLen (256), Description (
        "The scoping System's CreationClassName.") ]
   string SystemCreationClassName;
      [Propagated("CIM_ServiceAccessPoint.SystemName"), Key, 
       MaxLen (256), Description ("The scoping System's Name.") ]
   string SystemName;
      [Propagated("CIM_ServiceAccessPoint.CreationClassName"), 
       Key, MaxLen (256), Description (
        "The scoping SAP's CreationClassName.") ]
   string SAPCreationClassName;
      [Propagated("CIM_ServiceAccessPoint.Name"), Key, 
       MaxLen (256), Description ("The scoping SAP's Name.") ]
   string SAPName;
      [Key, MaxLen (256), 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.") ]
   string CreationClassName;
      [Key, MaxLen (256), Override ("Name"), Description (
        "The Name property, inherited from StatisticalInformation, "
        "serves as part of the object key.") ]
   string Name;
};


// ==================================================================
//    SAPStatistics
// ==================================================================
   [Association, 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
// ==================================================================
   [Description (
     "Statistical information associated with a LogicalDevice "
     "or one of its subclasses.") ]
class CIM_DeviceStatisticalInformation : CIM_StatisticalInformation {
      [Propagated("CIM_LogicalDevice.SystemCreationClassName"), Key, 
       MaxLen (256), Description (
        "The scoping System's CreationClassName.") ]
   string SystemCreationClassName;
      [Propagated("CIM_LogicalDevice.SystemName"), Key, MaxLen (256), 
       Description ("The scoping System's Name.") ]
   string SystemName;
      [Propagated("CIM_LogicalDevice.CreationClassName"), Key, 
       MaxLen (256), 
       Description ("The scoping Device's CreationClassName.") ]
   string DeviceCreationClassName;
      [Propagated("CIM_LogicalDevice.DeviceID"), Key, MaxLen (64), 
       Description ("The scoping Device's ID.") ]
   string DeviceID;
      [Key, MaxLen (256), 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.") ]
   string CreationClassName;
      [Key, MaxLen (256), Override ("Name"), Description (
        "The Name property, inherited from StatisticalInformation, "
        "serves as part of the object key.") ]
   string Name;
};


// ==================================================================
//    DeviceStatistics
// ==================================================================
   [Association, 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
// ==================================================================
   [Description (
     "Statistical information associated with a PhysicalElement "
     "or one of its subclasses.") ]
class CIM_PhysicalStatisticalInformation : CIM_StatisticalInformation {
      [Propagated("CIM_PhysicalElement.CreationClassName"), Key, 
       MaxLen (256), 
       Description ("The scoping Element's CreationClassName.") ]
   string PhysicalCreationClassName;
      [Propagated("CIM_PhysicalElement.Tag"), Key, MaxLen (256), 
       Description ("The scoping Element's identifying Tag.") ]
   string Tag;
      [Key, MaxLen (256), 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.") ]
   string CreationClassName;
      [Key, MaxLen (256), Override ("Name"), Description (
        "The Name property, inherited from StatisticalInformation, "
        "serves as part of the object key.") ]
   string Name;
};


// ==================================================================
//    PhysicalStatistics
// ==================================================================
   [Association, 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;
};


// ==================================================================
//
//  Settings and Configuration
//
// ==================================================================
// ===================================================================
//    Configuration
// ===================================================================
   [Description (
     "The Configuration object allows the grouping of sets of "
     "parameters (defined in Setting objects) and dependencies for "
     "one or more ManagedSystemElements. The Configuration object "
     "represents a certain behavior, or a desired functional state "
     "for the ManagedSystemElements. The desired functional state "
     "is typically driven by external requirements such as time or "
     "location. For example, to connect to a Mail System from "
     "'home', a dependency on a modem exists, but a dependency on "
     "a network adapter exists at 'work'. Settings for the "
     "pertinent LogicalDevices (in this example, POTSModem and "
     "NetworkAdapter) can be defined and aggregated by the "
     "Configuration. Therefore, two 'Connect to Mail' "
     "Configurations may be defined grouping the relevant "
     "dependencies and Setting objects.") ]
class CIM_Configuration : CIM_ManagedElement {
      [Key, MaxLen (256), Description (
        "The label by which the Configuration object is known.") ]
   string Name;
};


// ===================================================================
//    ConfigurationComponent
// ===================================================================
   [Association, Aggregation, Description (
     "ConfigurationComponent aggregates 'lower-level' "
     "Configuration objects into a 'high-level' Configuration. "
     "This enables the assembly of complex Configurations by "
     "grouping together simpler ones. For example, a logon policy "
     "for the United States could consist of two Configuration "
     "groups, one for the east coast and one for the west coast. "
     "Each of these could in turn consist of multiple "
     "Configurations to handle different aspects of the logon "
     "process.") ]
class CIM_ConfigurationComponent {
      [Aggregate, Key, Description (
        "The Configuration that aggregates additional "
        "Configurations." ) ]
   CIM_Configuration REF ConfigGroup;
      [Key, Description (
        "A Configuration that is part of a 'higher-level' "
        "Configuration.") ]
   CIM_Configuration REF ConfigComponent;
};


// ===================================================================
//    ElementConfiguration
// ===================================================================
   [Association, Description (
     "This association relates a Configuration object to one or "
     "more ManagedSystemElements. The Configuration object "
     "represents a certain behavior, or a desired functional state "
     "for the associated ManagedSystemElements.") ]
class CIM_ElementConfiguration {
      [Key, Description ("The ManagedSystemElement.")]
   CIM_ManagedSystemElement REF Element;
      [Key, Description (
        "The Configuration object that groups the Settings and "
        "dependencies associated with the ManagedSystemElement.") ] 
   CIM_Configuration REF Configuration;
};


// ===================================================================
//    CollectionConfiguration
// ===================================================================
   [Association, Description (
     "This association relates a Configuration object to one or "
     "more CollectionOfMSEs objects. The Configuration object "
     "represents a certain behavior, or a desired functional state "
     "for the associated Collection.") ]
class CIM_CollectionConfiguration {
      [Key, Description ("The CollectionOfMSEs.") ]
   CIM_CollectionOfMSEs REF Collection;
      [Key, Description (
        "The Configuration object that groups the Settings and "
        "dependencies associated with the Collection.") ]
   CIM_Configuration REF Configuration;
};


// ===================================================================
//    Setting
// ===================================================================
   [Abstract, Description (
     "The Setting class represents configuration-related and "
     "operational parameters for one or more ManagedSystem"
     "Element(s). A ManagedSystemElement may have multiple Setting "
     "objects associated with it. The current operational values "
     "for an Element's parameters 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 may have a "
     "Setting baud rate of 56Kb/sec but be operating "
     "at 19.2Kb/sec.") ]
class CIM_Setting : CIM_ManagedElement {
      [MaxLen (256), Description (
        "The identifier by which the Setting object is known.") ]
   string SettingID;
      [Description (
        "The VerifyOKToApplyToMSE method is used to verify that "
        "this Setting can be 'applied' to the referenced Managed"
        "SystemElement, 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 OK to apply the Setting, 1 if "
        "the method is not supported, 2 if the Setting can not 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' may also be specified in "
        "the subclass as a Values array qualifier.") ]
   uint32 VerifyOKToApplyToMSE(
      [IN] CIM_ManagedSystemElement ref MSE, 
      [IN] datetime TimeToApply, 
      [IN] datetime MustBeCompletedBy);
      [Description (
        "The ApplyToMSE method performs the actual application of "
        "the Setting to the referenced ManagedSystemElement. It "
        "takes three 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), 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' may also be specified in the subclass as a "
        "Values array qualifier.\n"
        "Note: If an error occurs in applying the Setting to a "
        "ManagedSystemElement, the Element must be configured as "
        "when the 'apply' attempt began. That is, the Element "
        "should NOT be left in an indeterminate state.") ]
   uint32 ApplyToMSE(
      [IN] CIM_ManagedSystemElement ref MSE, 
      [IN] datetime TimeToApply, 
      [IN] 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 "
        "aggregated by the Collection. This method takes three "
        "input parameters: Collection (the Collection of Managed"
        "SystemElements 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 OK to apply the Setting, 1 if "
        "the method is not supported, 2 if the Setting can not be "
        "applied within the specified times, and any other number if "
        "an error occurred. One output parameter is defined - "
        "CanNotApply - which is a string array that lists the keys of "
        "the ManagedSystemElements to which the Setting can NOT be "
        "applied. This enables those Elements to be revisited and "
        "either fixed, or other corrective action taken.\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 VerifyOKToApplyToCollection (
      [IN] CIM_CollectionOfMSEs ref Collection,
      [IN] datetime TimeToApply, 
      [IN] datetime MustBeCompletedBy,
      [OUT] string CanNotApply[]);
      [Description (
        "The ApplyToCollection method performs the application of "
        "the Setting to the referenced Collection of ManagedSystem"
        "Elements. The net effect is to execute the ApplyToMSE "
        "method against each of the Elements 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 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 means to continue "
        "processing on encountering an error), 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 can not be "
        "applied using the input value for ContinueOnError, and any "
        "other number if an error occurred. One output parameter is "
        "defined, CanNotApplystring, which is an array that lists "
        "the keys of the ManagedSystemElements to which the Setting "
        "was NOT able to 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' may "
        "also be specified in the subclass as a Values array "
        "qualifier.\n"
        "Note: if an error occurs in applying the Setting to a "
        "ManagedSystemElement in the Collection, the Element must be "
        "configured as when the 'apply' attempt began. That is, the "
        "Element should NOT be left in an indeterminate state.") ]
   uint32 ApplyToCollection(
      [IN] CIM_CollectionOfMSEs ref Collection, 
      [IN] datetime TimeToApply, 
      [IN] boolean ContinueOnError,
      [IN] datetime MustBeCompletedBy, 
      [OUT] 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 Managed" 
        "SystemElement, at the given time or time interval. This " 
        "method takes four 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), 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 they array is null or empty or constains the string \"all\" " 
        "as a property name then all Settings properties shall be " 
        "verified.  If it is set to \"none\" then no Settings properties " 
        "will be verified). The return " 
        "value should be 0 if it is OK to apply the Setting, 1 if " 
        "the method is not supported, 2 if the Setting can not 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' may also be specified in " 
        "the subclass as a Values array qualifier.") ] 
   uint32 VerifyOKToApplyIncrementalChangeToMSE( 
      [IN] CIM_ManagedSystemElement ref MSE, 
      [IN] datetime TimeToApply, 
      [IN] datetime MustBeCompletedBy, 
      [IN] 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 they array is null or empty or constains the string \"all\" " 
        "as a property name then all Settings properties shall be " 
        "applied.  If it is set to \"none\" then no Settings properties " 
        "will be applied. ). " 
        "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' may also be specified in the subclass as a " 
        "Values array qualifier.\n" 
        "Note: If an error occurs in applying the Setting to a " 
        "ManagedSystemElement, the Element must be configured as " 
        "when the 'apply' attempt began. That is, the Element " 
        "should NOT be left in an indeterminate state.") ] 
   uint32 ApplyIncrementalChangeToMSE( 
      [IN] CIM_ManagedSystemElement ref MSE, 
      [IN] datetime TimeToApply, 
      [IN] datetime MustBeCompletedBy, 
      [IN] 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 " 
        "aggregated by the Collection. This method takes three " 
        "input parameters: Collection (the Collection of Managed" 
        "SystemElements 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 they array is null or empty or constains the string \"all\" " 
        "as a property name then all Settings properties shall be " 
        "verified.  If it is set to \"none\" then no Settings properties " 
        "will be verified). The return " 
        "value should be 0 if it is OK to apply the Setting, 1 if " 
        "the method is not supported, 2 if the Setting can not be " 
        "applied within the specified times, and any other number if " 
        "an error occurred. One output parameter is defined - " 
        "CanNotApply - which is a string array that lists the keys of " 
        "the ManagedSystemElements to which the Setting can NOT be " 
        "applied. This enables those Elements to be revisited and " 
        "either fixed, or other corrective action taken.\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 VerifyOKToApplyIncrementalChangeToCollection ( 
      [IN] CIM_CollectionOfMSEs ref Collection, 
      [IN] datetime TimeToApply, 
      [IN] datetime MustBeCompletedBy, 
      [IN] string PropertiesToApply[], 
      [OUT] string CanNotApply[]); 
      [Description ( 
        "The ApplyIncrementalChangeToCollection method performs " 
        "the application of a subset of the properties in this " 
        "Setting to the referenced Collection of ManagedSystem" 
        "Elements. The net effect is to execute the " 
        "ApplyIncrementalChangeToMSE " 
        "method against each of the Elements 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 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 means to continue " 
        "processing on encountering an error), and 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 they array is null or empty or constains the string \"all\" " 
        "as a property name then all Settings properties shall be " 
        "applied.  If it is set to \"none\" then no Settings properties " 
        "will be applied. ). " 
        "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 can not be " 
        "applied using the input value for ContinueOnError, and any " 
        "other number if an error occurred. One output parameter is " 
        "defined, CanNotApplystring, which is an array that lists " 
        "the keys of the ManagedSystemElements to which the Setting " 
        "was NOT able to 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' may " 
        "also be specified in the subclass as a Values array " 
        "qualifier.\n" 
        "Note: if an error occurs in applying the Setting to a " 
        "ManagedSystemElement in the Collection, the Element must be " 
        "configured as when the 'apply' attempt began. That is, the " 
        "Element should NOT be left in an indeterminate state.") ] 
   uint32 ApplyIncrementalChangeToCollection( 
      [IN] CIM_CollectionOfMSEs ref Collection, 
      [IN] datetime TimeToApply, 
      [IN] boolean ContinueOnError, 
      [IN] datetime MustBeCompletedBy, 
      [IN] string PropertiesToApply[], 
      [OUT] string CanNotApply[]); 
};


// ===================================================================
//    ElementSetting
// ===================================================================
   [Association, Description (
     "ElementSetting represents the association between Managed"
     "SystemElements and the Setting class(es) defined for them.") ]
class CIM_ElementSetting {
      [Key, Description ("The ManagedSystemElement.") ]
   CIM_ManagedSystemElement REF Element;
      [Key, Description (
        "The Setting object associated with the ManagedSystem"
        "Element.") ]
   CIM_Setting REF Setting;
};


// ===================================================================
//    DefaultSetting
// ===================================================================
   [Association, Description (
     "DefaultSetting represents the association between a Managed"
     "SystemElement and the single Setting class that is defined "
     "to be the default setting for this Element.") ]
class CIM_DefaultSetting : CIM_ElementSetting {
      [Override ("Setting"), Max (1), Description (
        "The Setting object which is the default.") ]
   CIM_Setting REF Setting;
};


// ===================================================================
//    DependencyContext
// ===================================================================
   [Association, Aggregation, Description (
     "This relationship associates a Dependency with one or more "
     "Configuration objects. For example, a ComputerSystem's "
     "dependencies could change based on the site/network to which "
     "the System is attached.") ]
class CIM_DependencyContext {
      [Aggregate, Key, Description (
        "The Configuration object that aggregates the Dependency.") ]
   CIM_Configuration REF Context;
      [Key, Description ("An aggregated Dependency.") ]
   CIM_Dependency REF Dependency;
};

     
// ===================================================================
//    SettingContext
// ===================================================================
   [Association, Aggregation, Description (
     "This relationship associates Configuration objects with "
     "Setting objects. For example, a NetworkAdapter's Settings "
     "could change based on the site/network to which its hosting "
     "ComputerSystem is attached. In this case, the ComputerSystem "
     "would have two different Configuration objects, corresponding "
     "to the differences in network configuration for the two network "
     "segments. Configuration A would aggregate a Setting object for "
     "the NetworkAdapter when operating on segment \"ANet\", whereas "
     "Configuration B would aggregate a different NetworkAdapter "
     "Setting object, specific to segment \"BNet\". Note that many "
     "Settings of the computer are independent of the network "
     "Configuration. For example, both Configurations A and B would "
     "aggregate the same Setting object for the ComputerSystem's "
     "MonitorResolution.") ]
class CIM_SettingContext {
      [Aggregate, Key, Description (
        "The Configuration object that aggregates the Setting.") ]
   CIM_Configuration REF Context;
      [Key, Description ("An aggregated Setting.")]
   CIM_Setting REF Setting;
};


// ===================================================================
//    CollectionSetting
// ===================================================================
   [Association, Description (
     "CollectionSetting represents the association between a "
     "CollectionOfMSEs class and the Setting class(es) defined for "
     "them.") ]
class CIM_CollectionSetting {
      [Key, Description ("The CollectionOfMSEs.") ]
   CIM_CollectionOfMSEs REF Collection;
      [Key, Description (
        "The Setting object associated with the Collection.") ]
   CIM_Setting REF Setting;
};


// ==================================================================
// Pragmas for new classes in premliminary release status
// ==================================================================

#pragma include ("CIM_Core25_Add.mof")

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


No CVS admin address has been configured
Powered by
ViewCVS 0.9.2