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

   1 a.dunfey 1.1 // ===================================================================
   2              // Title:  Core Elements
   3              // $State: Preliminary $
   4              // $Date: 2005/01/05 00:54:00 $
   5              // $Source: /home/dmtf2/dotorg/var/cvs/repositories/dev/Schema/MOF/Core_CoreElements.mof,v $
   6              // $Revision: 1.13 $
   7              // ===================================================================
   8              //#pragma inLine ("Includes/copyright.inc")
   9              // Copyright 1998-2005 Distributed Management Task Force, Inc. (DMTF).
  10              // All rights reserved.
  11              // DMTF is a not-for-profit association of industry members dedicated
  12              // to promoting enterprise and systems management and interoperability.
  13              // DMTF specifications and documents may be reproduced for uses
  14              // consistent with this purpose by members and non-members,
  15              // provided that correct attribution is given.
  16              // As DMTF specifications may be revised from time to time,
  17              // the particular version and release date should always be noted.
  18              // 
  19              // Implementation of certain elements of this standard or proposed
  20              // standard may be subject to third party patent rights, including
  21              // provisional patent rights (herein "patent rights"). DMTF makes
  22 a.dunfey 1.1 // no representations to users of the standard as to the existence
  23              // of such rights, and is not responsible to recognize, disclose, or
  24              // identify any or all such third party patent right, owners or
  25              // claimants, nor for any incomplete or inaccurate identification or
  26              // disclosure of such rights, owners or claimants. DMTF shall have no
  27              // liability to any party, in any manner or circumstance, under any
  28              // legal theory whatsoever, for failure to recognize, disclose, or
  29              // identify any such third party patent rights, or for such party's
  30              // reliance on the standard or incorporation thereof in its product,
  31              // protocols or testing procedures. DMTF shall have no liability to
  32              // any party implementing such standard, whether such implementation
  33              // is foreseeable or not, nor to any patent owner or claimant, and shall
  34              // have no liability or responsibility for costs or losses incurred if
  35              // a standard is withdrawn or modified after publication, and shall be
  36              // indemnified and held harmless by any party implementing the
  37              // standard from any and all claims of infringement by a patent owner
  38              // for such implementations.
  39              // 
  40              // For information about patents held by third-parties which have
  41              // notified the DMTF that, in their opinion, such patent may relate to
  42              // or impact implementations of DMTF standards, visit
  43 a.dunfey 1.1 // http://www.dmtf.org/about/policies/disclosures.php.
  44              //#pragma inLine
  45              // ===================================================================
  46              // Description: The Core Model defines basic management concepts.
  47              //              This file defines the concepts for the top of the CIM
  48              //              object hierarchies (ManagedElement,
  49              //              ManagedSystemElement,
  50              //              LogicalElement, Systems, Services, etc.) and the 'top'
  51              //              associations (Dependency, Component,
  52              //              LogicalIdentity, ...).
  53              // 
  54              //              The object classes below are listed in an order that
  55              //              avoids forward references. Required objects, defined
  56              //              by other working groups, are omitted.
  57              // ==================================================================
  58              // Change Log for v2.9 Preliminary
  59              //  CR1282 - Change the description of Job.PercentComplete and
  60              //           JobProcessingStatistics.PercentComplete
  61              //  CR1319 - Job Control enhancements
  62              // CR1338 - Define RelatedElementCausingError
  63              // CR1358 - Add EnabledLogicalElementCapabilities. Improve
  64 a.dunfey 1.1 //          EnabledLogicalElement.RequestedState
  65              //  CR1370 - Add HealthState to ManagedSystemElement
  66              // 
  67              // Change Log for v2.8 Final
  68              // CR1181 - Add properties/method to ConcreteJob to support state
  69              //          and enhance kill support
  70              // CR1203 - Reserved Range for OperationalStatus
  71              // CR1210 - Removal of experimental qualifiers for core.
  72              // CR1223 - Sysdev Omnibus CR - Minor MOF corrections.
  73              // 
  74              // Change Log for v2.8 Preliminary
  75              // CR932  - Add power mode status to OperationalStatus.
  76              //           Move the specific power mode states from availability
  77              //          to a property between the PowerMgmt service and its ME.
  78              //          Remove the overlapping properties from Logical Device.
  79              // CR950  - Add ArrayType to CIM_ManagedSystemElement properties
  80              // CR1006 - Improve description of ManagedSystemElement
  81              // CR1026 - Update the InfoFormat enum for RemoteAccessPoint
  82              // CR1019 - CIM Versioning for 2.8 Preliminary
  83              // CR1033 - relax key types for Synchronized
  84              // CR1030 - Update AdminDomain.NameFormat for WWN
  85 a.dunfey 1.1 // CR1045 - Add method for requesting a "EnabledState" change in
  86              //          EnabledLogicalElement class / Deprecate or explain overlap
  87              //          with LogicalDevice and Service properties and methods
  88              // CR1052 - Updates to ProtocolEndpoint and its
  89              //          subclasses to better align with the IF-MIB
  90              // CR1081 - Promote CIM_Job and ConcreteJob to the Core Model to
  91              //          avoid forward reference in EnabledLogicalElement's methods
  92              // CR1092  - Move Service and SAP related classes to their own file
  93              // CR1127  - Add new enums to RequestedState
  94              // CR1128  - Addition of HostedDependency
  95              // CR1135  - Job Recovery Properties and the RecoveryJob association
  96              // 
  97              // Change Log for v2.7 Final
  98              // CR961 - Rename EnabledLogicalElement. xxxStatus properties to be
  99              //         State.
 100              //       - Update description of xxxState properties to reflect the
 101              //         expected behavior of the state values.
 102              //       - Change references to EnabledStatus and RequestedStatus to
 103              //         EnabledState and RequestedState in the Service.
 104              //            StartService()
 105              //            StopService()
 106 a.dunfey 1.1 // CR966 - Remove the Terminal qualifier from ConcreteDependency,
 107              //         ConcreteComponent, and ConcreteIdentity associations and
 108              //         add text to describe the intent of the original placement
 109              // CR968 - Remove the Experimental qualifier
 110              // CR993 - Change property name and description of
 111              //            ManagedSystemElement.OtherStatusDescription
 112              // CR1009 - Add ServiceAccessURI class
 113              // CR1135 - Job Recovery Properties and the RecoveryJob association
 114              // 
 115              // Change Log for v2.7
 116              // CR641 - Add ConcreteDependency
 117              // CR643 - Promote Component to ManagedElement, and add
 118              //         ConcreteComponent
 119              // CR660 - Add RemoteServiceAccessPoint and RemotePort
 120              // CR663 - Update the Description of ActiveConnection and some of
 121              //         its properties.  Deprecate the properties, TrafficType
 122              //         and OtherTrafficDescription
 123              // CR670 - Promote LogicalIdentity to ManagedElement, and add
 124              //         ConcreteIdentity
 125              // CR671 - Deprecate ProvidesServiceToElement
 126              //       - Add ServiceAvailableToElement
 127 a.dunfey 1.1 //       - Update description for ServiceServiceDependency
 128              // CR672 - Update description for SystemComponent to clarify its use
 129              // CR677 - Add the array property OperationalStatus & OtherStatus
 130              //         Description, and deprecate the existing Status property of
 131              //         ManagedSystemElement
 132              //       - Deprecate StartMode in Service
 133              // CR717 - Clarify description of System.Roles
 134              // CR747 - Add the Write Qualifier and update description of System.
 135              //         Roles
 136              // CR751 - Promote ActiveConnection from ProtocolEndpoint to
 137              //         ServiceAccessPoint
 138              // CR757 - Add EnabledLogicalElement
 139              //       - Change subclass of System, Service, and ServiceAccessPoint
 140              //         from LogicalElement to EnabledLogicalElement
 141              //       - Update the descriptions to Service.StartService() and
 142              //         Service.StopService() to explain the overlap with
 143              //         RequestedStatus
 144              //       - Update the deprecation of Service.StartMode to
 145              //         EnabledDefault
 146              // CR758 - Add ElementName to ManagedElement
 147              // CR764 - Add ServiceAffectsElement
 148 a.dunfey 1.1 // CR779 - Extend ManagedSystemElement.OperationalStatus to include
 149              //         "Completed"
 150              // CR804 - Update the enumeration for ProtocolEndpoint.ProtocolType
 151              // CR833 - Extend EnabledLogicalElement.EnabledStatus & .Requested
 152              //         Status to include "In Test" and "Test" respectively
 153              // CR834 - Extend ManagedSystemElement.OperationalStatus to include
 154              //         "Aborted", "Dormant", and "Supported Entity in Error"
 155              // CR844 - Add PrimaryOwnerName and PrimaryOwnerContact to Service;
 156              //         Add Write qualifier to the same properties in System
 157              // CR894 - Clarify the description for System.
 158              // CR898 - Extend MaxLen qualifier on ManagedSystemElement.Name
 159              //         from 256 to 1024 (to match subclassing requriements)
 160              // ==================================================================
 161              
 162              #pragma locale ("en_US")
 163              
 164              
 165              // ==================================================================
 166              // ManagedElement
 167              // ==================================================================
 168                 [Abstract, Version ( "2.7.0" ), Description (
 169 a.dunfey 1.1        "ManagedElement is an abstract class that provides a common "
 170                     "superclass (or top of the inheritance tree) for the "
 171                     "non-association classes in the CIM Schema.")]
 172              class CIM_ManagedElement {
 173              
 174                    [Description (
 175                        "The Caption property is a short textual description (one- "
 176                        "line string) of the object."), 
 177                     MaxLen ( 64 )]
 178                 string Caption;
 179              
 180                    [Description (
 181                        "The Description property provides a textual description of "
 182                        "the object.")]
 183                 string Description;
 184              
 185                    [Description (
 186                        "A user-friendly name for the object. This property allows "
 187                        "each instance to define a user-friendly name IN ADDITION TO "
 188                        "its key properties/identity data, and description "
 189                        "information. \n"
 190 a.dunfey 1.1           "Note that ManagedSystemElement's Name property is also "
 191                        "defined as a user-friendly name. But, it is often "
 192                        "subclassed to be a Key. It is not reasonable that the same "
 193                        "property can convey both identity and a user friendly name, "
 194                        "without inconsistencies. Where Name exists and is not a Key "
 195                        "(such as for instances of LogicalDevice), the same "
 196                        "information MAY be present in both the Name and ElementName "
 197                        "properties.")]
 198                 string ElementName;
 199              };
 200              
 201              
 202              // ==================================================================
 203              // Dependency
 204              // ==================================================================
 205                 [Association, Abstract, Version ( "2.6.0" ), Description (
 206                     "CIM_Dependency is a generic association used to establish "
 207                     "dependency relationships between ManagedElements.")]
 208              class CIM_Dependency {
 209              
 210                    [Key, Description (
 211 a.dunfey 1.1           "Antecedent represents the independent object in this "
 212                        "association.")]
 213                 CIM_ManagedElement REF Antecedent;
 214              
 215                    [Key, Description (
 216                        "Dependent represents the object dependent on the "
 217                        "Antecedent.")]
 218                 CIM_ManagedElement REF Dependent;
 219              };
 220              
 221              
 222              // ==================================================================
 223              // ConcreteDependency
 224              // ==================================================================
 225                 [Association, Version ( "2.7.0" ), Description (
 226                     "CIM_ConcreteDependency is a generic association used to "
 227                     "establish dependency relationships between ManagedElements. It "
 228                     "is defined as a concrete subclass of the abstract "
 229                     "CIM_Dependency class, to be used in place of many specific "
 230                     "subclasses of Dependency that add no semantics - i.e., that do "
 231                     "not clarify the type of dependency, update cardinalities, or "
 232 a.dunfey 1.1        "add/remove qualifiers. Note that when defining additional "
 233                     "semantics for Dependency that this class MUST NOT be "
 234                     "subclassed. Specific semantics continue to be defined as "
 235                     "subclasses of the abstract CIM_Dependency. ConcreteDependency "
 236                     "is limited in its use as a concrete form of a general "
 237                     "dependency. \n"
 238                     "\n"
 239                     "It was deemed more prudent to create this concrete subclass "
 240                     "than to change Dependency from an abstract to a concrete "
 241                     "class. Dependency already had multiple abstract subclasses in "
 242                     "the CIM Schema, and wider industry usage and impact could not "
 243                     "be anticipated.")]
 244              class CIM_ConcreteDependency : CIM_Dependency {
 245              
 246                    [Override ( "Antecedent" ), Description (
 247                        "Antecedent represents the independent object in this "
 248                        "association.")]
 249                 CIM_ManagedElement REF Antecedent;
 250              
 251                    [Override ( "Dependent" ), Description (
 252                        "Dependent represents the object dependent on the "
 253 a.dunfey 1.1           "Antecedent.")]
 254                 CIM_ManagedElement REF Dependent;
 255              };
 256              
 257              // ==================================================================
 258              // Component
 259              // ==================================================================
 260                 [Association, Abstract, Aggregation, Version ( "2.7.0" ), 
 261                  Description (
 262                     "CIM_Component is a generic association used to establish 'part "
 263                     "of' relationships between Managed Elements. For example, it "
 264                     "could be used to define the components or parts of a System.")]
 265              class CIM_Component {
 266              
 267                    [Key, Aggregate, Description (
 268                        "The parent element in the association.")]
 269                 CIM_ManagedElement REF GroupComponent;
 270              
 271                    [Key, Description (
 272                        "The child element in the association.")]
 273                 CIM_ManagedElement REF PartComponent;
 274 a.dunfey 1.1 };
 275              
 276              
 277              // ==================================================================
 278              // ConcreteComponent
 279              // ==================================================================
 280                 [Association, Aggregation, Version ( "2.7.0" ), Description (
 281                     "CIM_ConcreteComponent is a generic association used to "
 282                     "establish 'part of' relationships between ManagedElements. It "
 283                     "is defined as a concrete subclass of the abstract "
 284                     "CIM_Component class, to be used in place of many specific "
 285                     "subclasses of Component that add no semantics - i.e., that do "
 286                     "not clarify the type of composition, update cardinalities, or "
 287                     "add/remove qualifiers. Note that when defining additional "
 288                     "semantics for Component that this class MUST NOT be "
 289                     "subclassed. Specific semantics continue to be defined as "
 290                     "subclasses of the abstract CIM_Component. ConcreteComponent is "
 291                     "limited in its use as a concrete form of a general "
 292                     "composition. \n"
 293                     "\n"
 294                     "It was deemed more prudent to create this concrete subclass "
 295 a.dunfey 1.1        "than to change Component from an abstract to a concrete class. "
 296                     "Industry usage and impact could not be anticipated.")]
 297              class CIM_ConcreteComponent : CIM_Component {
 298              
 299                    [Aggregate, Override ( "GroupComponent" ), Description (
 300                        "The parent element in the association.")]
 301                 CIM_ManagedElement REF GroupComponent;
 302              
 303                    [Override ( "PartComponent" ), Description (
 304                        "The child element in the association.")]
 305                 CIM_ManagedElement REF PartComponent;
 306              };
 307              
 308              
 309              // ==================================================================
 310              // LogicalIdentity
 311              // ==================================================================
 312                 [Association, Abstract, Version ( "2.7.0" ), Description (
 313                     "CIM_LogicalIdentity is an abstract and generic association, "
 314                     "indicating that two ManagedElements represent different "
 315                     "aspects of the same underlying entity. This relationship "
 316 a.dunfey 1.1        "conveys what could be defined with multiple inheritance. In "
 317                     "most scenarios, the Identity relationship is determined by the "
 318                     "equivalence of Keys or some other identifying properties of "
 319                     "the related Elements. \n"
 320                     "\n"
 321                     "One of the scenarios where this relationship is reasonable is "
 322                     "to represent that a LogicalDevice is both a 'bus' entity and a "
 323                     "'functional' entity. For example, a Device could be both a USB "
 324                     "(bus) and a Keyboard (functional) entity.")]
 325              class CIM_LogicalIdentity {
 326              
 327                    [Key, Description (
 328                        "SystemElement represents one aspect of the Managed Element. "
 329                        "The use of 'System' in the role name does not limit the "
 330                        "scope of the association. The role name was defined in the "
 331                        "original association, where the referenced elements were "
 332                        "limited to LogicalElements. Since that time, it has been "
 333                        "found valuable to instantiate these types of relationships "
 334                        "for ManagedElements, such as Collections. So, the "
 335                        "referenced elements of the association were redefined to be "
 336                        "ManagedElements. Unfortunately, the role name could not be "
 337 a.dunfey 1.1           "changed without deprecating the entire association. This "
 338                        "was not deemed necessary just to correct the role name.")]
 339                 CIM_ManagedElement REF SystemElement;
 340              
 341                    [Key, Description (
 342                        "SameElement represents an alternate aspect of the "
 343                        "ManagedElement.")]
 344                 CIM_ManagedElement REF SameElement;
 345              };
 346              
 347              
 348              // ==================================================================
 349              // ConcreteIdentity
 350              // ==================================================================
 351                 [Association, Version ( "2.7.0" ), Description (
 352                     "CIM_ConcreteIdentity associates two elements representing "
 353                     "different aspects of the same underlying entity. It is defined "
 354                     "as a concrete subclass of the abstract CIM_LogicalIdentity "
 355                     "class, to be used in place of many specific subclasses of "
 356                     "LogicalIdentity that add no semantics - i.e., that do not "
 357                     "clarify the type of identity, update cardinalities, or "
 358 a.dunfey 1.1        "add/remove qualifiers. Note -that when defining additional "
 359                     "semantics for LogicalIdentity that this class should not be "
 360                     "subclassed. Specifc semantics continue to be defined as "
 361                     "subclasses of the abstract CIM_LogicalIdentity. "
 362                     "ConcreteIdentity is limited in its use as a concrete form of a "
 363                     "general identity relationship. \n"
 364                     "\n"
 365                     "It was deemed more prudent to create this concrete subclass "
 366                     "than to change LogicalIdentity from an abstract to a concrete "
 367                     "class. LogicalIdentity already had multiple abstract "
 368                     "subclasses in the CIM Schema, and wider industry usage and "
 369                     "impact could not be anticipated.")]
 370              class CIM_ConcreteIdentity : CIM_LogicalIdentity {
 371              
 372                    [Override ( "SystemElement" ), Description (
 373                        "One aspect of the ManagedElement. The use of 'System' in "
 374                        "the name does not limit the scope of the association. This "
 375                        "is an artifact of the original definition of the "
 376                        "association.")]
 377                 CIM_ManagedElement REF SystemElement;
 378              
 379 a.dunfey 1.1       [Override ( "SameElement" ), Description (
 380                        "Another aspect of the ManagedElement.")]
 381                 CIM_ManagedElement REF SameElement;
 382              };
 383              
 384              
 385              // ==================================================================
 386              // ManagedSystemElement
 387              // ==================================================================
 388                 [Abstract, Version ( "2.8.1000" ), Description (
 389                     "CIM_ManagedSystemElement is the base class for the System "
 390                     "Element hierarchy. Any distinguishable component of a System "
 391                     "is a candidate for inclusion in this class. Examples of system "
 392                     "components include: \n"
 393                     "- software components such as application servers, databases, "
 394                     "and applications \n"
 395                     "- operating system components such as files, processes, and "
 396                     "threads \n"
 397                     "- device components such as disk drives, controllers, "
 398                     "processors, and printers \n"
 399                     "- physical components such as chips and cards.")]
 400 a.dunfey 1.1 class CIM_ManagedSystemElement : CIM_ManagedElement {
 401              
 402                    [Description (
 403                        "A datetime value indicating when the object was installed. "
 404                        "A lack of a value does not indicate that the object is not "
 405                        "installed."), 
 406                     MappingStrings { "MIF.DMTF|ComponentID|001.5" }]
 407                 datetime InstallDate;
 408              
 409                    [Description (
 410                        "The Name property defines the label by which the object is "
 411                        "known. When subclassed, the Name property can be overridden "
 412                        "to be a Key property."), 
 413                     MaxLen ( 1024 )]
 414                 string Name;
 415              
 416                    [Description (
 417                        "Indicates the current status(es) of the element. Various "
 418                        "operational statuses are defined. Many of the enumeration's "
 419                        "values are self- explanatory. However, a few are not and "
 420                        "are described in more detail. \n"
 421 a.dunfey 1.1           "\"Stressed\" indicates that the element is functioning, but "
 422                        "needs attention. Examples of \"Stressed\" states are "
 423                        "overload, overheated, etc. \n"
 424                        "\"Predictive Failure\" indicates that an element is "
 425                        "functioning nominally but predicting a failure in the near "
 426                        "future. \n"
 427                        "\"In Service\" describes an element being configured, "
 428                        "maintained, cleaned, or otherwise administered. \n"
 429                        "\"No Contact\" indicates that the monitoring system has "
 430                        "knowledge of this element, but has never been able to "
 431                        "establish communications with it. \n"
 432                        "\"Lost Communication\" indicates that the ManagedSystem "
 433                        "Element is known to exist and has been contacted "
 434                        "successfully in the past, but is currently unreachable. \n"
 435                        "\"Stopped\" and \"Aborted\" are similar, although the "
 436                        "former implies a clean and orderly stop, while the latter "
 437                        "implies an abrupt stop where the element's state and "
 438                        "configuration may need to be updated. \n"
 439                        "\"Dormant\" indicates that the element is inactive or "
 440                        "quiesced. \n"
 441                        "\"Supporting Entity in Error\" describes that this element "
 442 a.dunfey 1.1           "may be \"OK\" but that another element, on which it is "
 443                        "dependent, is in error. An example is a network service or "
 444                        "endpoint that cannot function due to lower layer networking "
 445                        "problems. \n"
 446                        "\"Completed\" indicates the element has completed its "
 447                        "operation. This value should be combined with either OK, "
 448                        "Error, or Degraded so that a client can till if the "
 449                        "complete operation passed (Completed with OK), and failure "
 450                        "(Completed with Error). Completed with Degraded would imply "
 451                        "the operation finished, but did not complete OK or report "
 452                        "an error. \n"
 453                        "\"Power Mode\" indicates the element has additional power "
 454                        "model information contained in the Associated "
 455                        "PowerManagementService association. \n"
 456                        "OperationalStatus replaces the Status property on "
 457                        "ManagedSystemElement to provide a consistent approach to "
 458                        "enumerations, to address implementation needs for an array "
 459                        "property, and to provide a migration path from today's "
 460                        "environment to the future. This change was not made earlier "
 461                        "since it required the DEPRECATED qualifier. Due to the "
 462                        "widespread use of the existing Status property in "
 463 a.dunfey 1.1           "management applications, it is strongly RECOMMENDED that "
 464                        "providers/instrumentation provide BOTH the Status and "
 465                        "OperationalStatus properties. Further, the first value of "
 466                        "OperationalStatus SHOULD contain the primary status for the "
 467                        "element. When instrumented, Status (since it is "
 468                        "single-valued) SHOULD also provide the primary status of "
 469                        "the element."), 
 470                     ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
 471                        "10", "11", "12", "13", "14", "15", "16", "17", "18", "..",
 472                        "0x8000.." }, 
 473                     Values { "Unknown", "Other", "OK", "Degraded", "Stressed",
 474                        "Predictive Failure", "Error", "Non-Recoverable Error",
 475                        "Starting", "Stopping", "Stopped", "In Service",
 476                        "No Contact", "Lost Communication", "Aborted", "Dormant",
 477                        "Supporting Entity in Error", "Completed", "Power Mode",
 478                        "DMTF Reserved", "Vendor Reserved" }, ArrayType ( "Indexed" ), 
 479                     ModelCorrespondence { 
 480                        "CIM_ManagedSystemElement.StatusDescriptions" }]
 481                 uint16 OperationalStatus[];
 482              
 483                    [Description (
 484 a.dunfey 1.1           "Strings describing the various OperationalStatus array "
 485                        "values. For example, if \"Stopping\" is the value assigned "
 486                        "to OperationalStatus, then this property may contain an "
 487                        "explanation as to why an object is being stopped. Note that "
 488                        "entries in this array are correlated with those at the same "
 489                        "array index in OperationalStatus."), 
 490                     ArrayType ( "Indexed" ), 
 491                     ModelCorrespondence { 
 492                        "CIM_ManagedSystemElement.OperationalStatus" }]
 493                 string StatusDescriptions[];
 494              
 495                    [Deprecated { "CIM_ManagedSystemElement.OperationalStatus" }, 
 496                     Description (
 497                        "A string indicating the current status of the object. "
 498                        "Various operational and non-operational statuses are "
 499                        "defined. This property is deprecated in lieu of "
 500                        "OperationalStatus, which includes the same semantics in its "
 501                        "enumeration. This change is made for 3 reasons: 1) Status "
 502                        "is more correctly defined as an array. This overcomes the "
 503                        "limitation of describing status via a single value, when it "
 504                        "is really a multi-valued property (for example, an element "
 505 a.dunfey 1.1           "may be OK AND Stopped. 2) A MaxLen of 10 is too restrictive "
 506                        "and leads to unclear enumerated values. And, 3) The change "
 507                        "to a uint16 data type was discussed when CIM V2.0 was "
 508                        "defined. However, existing V1.0 implementations used the "
 509                        "string property and did not want to modify their code. "
 510                        "Therefore, Status was grandfathered into the Schema. Use of "
 511                        "the Deprecated qualifier allows the maintenance of the "
 512                        "existing property, but also permits an improved definition "
 513                        "using OperationalStatus."), 
 514                     ValueMap { "OK", "Error", "Degraded", "Unknown", "Pred Fail",
 515                        "Starting", "Stopping", "Service", "Stressed", "NonRecover",
 516                        "No Contact", "Lost Comm", "Stopped" }, MaxLen ( 10 )]
 517                 string Status;
 518              
 519                    [Experimental, Description (
 520                        "Indicates the current health of the element. This attribute "
 521                        "expresses the health of this element but not necessarily "
 522                        "that of its subcomponents. The possible values are 0 to 30, "
 523                        "where 5 means the element is entirely healthy and 30 means "
 524                        "the element is completely non-functional. The following "
 525                        "continuum is defined: \n"
 526 a.dunfey 1.1           "\"Non-recoverable Error\" (30) - The element has completed "
 527                        "failed and recovery is not possible. All functionality "
 528                        "provided by this element has been lost. \n"
 529                        "\"Critical Failure\" (25) - The element is non-functional "
 530                        "and recovery MAY NOT be possible. \n"
 531                        "\"Major Failure\" (20) - The element is failing. It is "
 532                        "possible the some or all of the functionality of this "
 533                        "component is degraded or not working. \n"
 534                        "\"Minor Failure\" (15) - All functionality is available but "
 535                        "some MAY be degraded. \n"
 536                        "\"Degraded/Warning\" (10) - The element is in working order "
 537                        "and all functionality is provided. However, the element is "
 538                        "not working to the best of its abilities. For example, the "
 539                        "element may not be operating at optimal performance or it "
 540                        "may be reporting recoverable errors. \n"
 541                        "\"OK\" (5) - The element is fully functional and is "
 542                        "operating within normal operational parameters and without "
 543                        "error. \n"
 544                        "\"Unknown\" (0) - The implementation can not report on "
 545                        "HealthState at this time. \n"
 546                        "DMTF has reserved the unused portion of the continuum for "
 547 a.dunfey 1.1           "additional HealthStates in the future."), 
 548                     ValueMap { "0","5","10","15","20","25","30",".." }, 
 549                     Values { "Unknown","OK","Degraded/Warning",
 550                        "Minor failure","Major failure",
 551                        "Critical failure","Non-recoverable error","DMTF Reserved" }]
 552                 uint16 HealthState;
 553              };
 554              
 555              // ===================================================================
 556              // HostedDependency
 557              // ===================================================================
 558                 [Association, Version ( "2.8.0" ), Description (
 559                     "HostedDependency defines a ManagedElement in the context of "
 560                     "another ManagedElement in which it resides.")]
 561              class CIM_HostedDependency : CIM_Dependency {
 562              
 563                    [Override ( "Antecedent" ), Max ( 1 ), Description (
 564                        "The scoping ManagedElement.")]
 565                 CIM_ManagedElement REF Antecedent;
 566              
 567                    [Override ( "Dependent" ), Description (
 568 a.dunfey 1.1           "The hosted ManagedElement.")]
 569                 CIM_ManagedElement REF Dependent;
 570              };
 571              
 572              // ==================================================================
 573              // LogicalElement
 574              // ==================================================================
 575                 [Abstract, Version ( "2.6.0" ), Description (
 576                     "CIM_LogicalElement is a base class for all the components of a "
 577                     "System that represent abstract system components, such as "
 578                     "Files, Processes, or LogicalDevices.")]
 579              class CIM_LogicalElement : CIM_ManagedSystemElement {
 580              };
 581              
 582              
 583              // ===================================================================
 584              // Job
 585              // ===================================================================
 586                 [Abstract, Version ( "2.8.0" ), Description (
 587                     "A Job is a LogicalElement representing an executing unit of "
 588                     "work, such as a script or a print job. A Job is distinct from "
 589 a.dunfey 1.1        "a Process in that a Job can be scheduled, queued, and its "
 590                     "execution is not limited to a single system.")]
 591              class CIM_Job : CIM_LogicalElement {
 592              
 593                    [Description (
 594                        "A free form string representing the Job's status. The "
 595                        "primary status is reflected in the inherited "
 596                        "OperationalStatus property. JobStatus provides additional, "
 597                        "implementation-specific details."), 
 598                     ModelCorrespondence { 
 599                        "CIM_ManagedSystemElement.OperationalStatus" }]
 600                 string JobStatus;
 601              
 602                    [Description (
 603                        "The time that the Job was submitted to execute. A value of "
 604                        "all zeroes indicates that the owning element is not capable "
 605                        "of reporting a date and time. Therefore, the "
 606                        "ScheduledStartTime and StartTime are reported as intervals "
 607                        "relative to the time their values are requested.")]
 608                 datetime TimeSubmitted;
 609              
 610 a.dunfey 1.1       [Deprecated { "CIM_Job.RunMonth", "CIM_Job.RunDay",
 611                        "CIM_Job.RunDayOfWeek", "CIM_Job.RunStartInterval" }, Write, 
 612                     Description (
 613                        "The time that the current Job is scheduled to start. This "
 614                        "may be represented by the actual date and time, or an "
 615                        "interval relative to the time that this property is "
 616                        "requested. A value of all zeroes indicates that the Job is "
 617                        "already executing. The property is deprecated in lieu of "
 618                        "the more expressive scheduling properties, RunMonth, "
 619                        "RunDay, RunDayOfWeek and RunStartInterval.")]
 620                 datetime ScheduledStartTime;
 621              
 622                    [Description (
 623                        "The time that the Job was actually started. This may be "
 624                        "represented by an actual date and time, or by an interval "
 625                        "relative to the time that this property is requested. Note "
 626                        "that this property is also present in the "
 627                        "JobProcessingStatistics class. This is necessary to capture "
 628                        "the processing information for recurring Jobs, since only "
 629                        "the 'last' run time can be stored in this single-valued "
 630                        "property.")]
 631 a.dunfey 1.1    datetime StartTime;
 632              
 633                    [Description (
 634                        "The time interval that the Job has been executing or the "
 635                        "total execution time if the Job is complete. Note that this "
 636                        "property is also present in the JobProcessingStatistics "
 637                        "class. This is necessary to capture the processing "
 638                        "information for recurring Jobs, since only the 'last' run "
 639                        "time can be stored in this single-valued property.")]
 640                 datetime ElapsedTime;
 641              
 642                    [Write, Description (
 643                        "Number of times that the Job should be run. A value of 1 "
 644                        "indicates that the Job is NOT recurring, while any non-zero "
 645                        "value indicates a limit to the number of times that the Job "
 646                        "will recur. Zero indicates that there is no limit to the "
 647                        "number of times that the Job can be processed, but that it "
 648                        "is terminated either AFTER the UntilTime, or by manual "
 649                        "intervention. By default, a Job is processed once.")]
 650                 uint32 JobRunTimes = 1;
 651              
 652 a.dunfey 1.1       [Write, Description (
 653                        "The month during which the Job should be processed. Specify "
 654                        "0 for January, 1 for February, and so on."), 
 655                     ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
 656                        "10", "11" }, 
 657                     Values { "January", "February", "March", "April", "May", "June",
 658                        "July", "August", "September", "October", "November",
 659                        "December" }, 
 660                     ModelCorrespondence { "CIM_Job.RunDay", "CIM_Job.RunDayOfWeek",
 661                        "CIM_Job.RunStartInterval" }]
 662                 uint8 RunMonth;
 663              
 664                    [Write, Description (
 665                        "The day in the month on which the Job should be processed. "
 666                        "There are two different interpretations for this property, "
 667                        "depending on the value of DayOfWeek. In one case, RunDay "
 668                        "defines the day-in-month on which the Job is processed. "
 669                        "This interpretation is used when the DayOfWeek is 0. A "
 670                        "positive or negative integer indicates whether the RunDay "
 671                        "should be calculated from the beginning or the end of the "
 672                        "month. For example, 5 indicates the fifth day in RunMonth "
 673 a.dunfey 1.1           "and -1 indicates the last day in the RunMonth. \n"
 674                        "\n"
 675                        "When RunDayOfWeek is not 0, RunDay is the day-in-month on "
 676                        "which the Job is processed, defined in conjunction with "
 677                        "RunDayOfWeek. For example, if RunDay is 15 and RunDayOfWeek "
 678                        "is Saturday, then the Job is processed on the first "
 679                        "Saturday on or AFTER the 15th day in the RunMonth (e.g., "
 680                        "the third Saturday in the month). If RunDay is 20 and "
 681                        "RunDayOfWeek is -Saturday, then this indicates the first "
 682                        "Saturday on or BEFORE the 20th day in the RunMonth. If "
 683                        "RunDay is -1 and RunDayOfWeek is -Sunday, then this "
 684                        "indicates the last Sunday in the RunMonth."), 
 685                     MinValue ( -31 ), MaxValue ( 31 ), 
 686                     ModelCorrespondence { "CIM_Job.RunMonth",
 687                        "CIM_Job.RunDayOfWeek", "CIM_Job.RunStartInterval" }]
 688                 sint8 RunDay;
 689              
 690                    [Write, Description (
 691                        "Positive or negative integer used in conjunction with "
 692                        "RunDay to indicate the day of the week on which the Job is "
 693                        "processed. RunDayOfWeek is set to 0 to indicate an exact "
 694 a.dunfey 1.1           "day of the month, such as March 1. A positive integer "
 695                        "(representing Sunday, Monday, ..., Saturday) means that the "
 696                        "day of week is found on or AFTER the specified RunDay. A "
 697                        "negative integer (representing -Sunday, -Monday, ..., "
 698                        "-Saturday) means that the day of week is found on or BEFORE "
 699                        "the RunDay."), 
 700                     ValueMap { "-7", "-6", "-5", "-4", "-3", "-2", "-1", "0", "1",
 701                        "2", "3", "4", "5", "6", "7" }, 
 702                     Values { "-Saturday", "-Friday", "-Thursday", "-Wednesday",
 703                        "-Tuesday", "-Monday", "-Sunday", "ExactDayOfMonth",
 704                        "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
 705                        "Friday", "Saturday" }, 
 706                     ModelCorrespondence { "CIM_Job.RunMonth", "CIM_Job.RunDay",
 707                        "CIM_Job.RunStartInterval" }]
 708                 sint8 RunDayOfWeek;
 709              
 710                    [Write, Description (
 711                        "The time interval after midnight when the Job should be "
 712                        "processed. For example, \n"
 713                        "00000000020000.000000:000 \n"
 714                        "indicates that the Job should be run on or after two "
 715 a.dunfey 1.1           "o'clock, local time or UTC time (distinguished using the "
 716                        "LocalOrUtcTime property."), 
 717                     ModelCorrespondence { "CIM_Job.RunMonth", "CIM_Job.RunDay",
 718                        "CIM_Job.RunDayOfWeek", "CIM_Job.RunStartInterval" }]
 719                 datetime RunStartInterval;
 720              
 721                    [Write, Description (
 722                        "This property indicates whether the times represented in "
 723                        "the RunStartInterval and UntilTime properties represent "
 724                        "local times or UTC times. Time values are synchronized "
 725                        "worldwide by using the enumeration value 2, \"UTC Time\"."), 
 726                     ValueMap { "1", "2" }, 
 727                     Values { "Local Time", "UTC Time" }]
 728                 uint16 LocalOrUtcTime;
 729              
 730                    [Write, Description (
 731                        "The time after which the Job is invalid or should be "
 732                        "stopped. This may be represented by an actual date and "
 733                        "time, or by an interval relative to the time that this "
 734                        "property is requested. A value of all nines indicates that "
 735                        "the Job can run indefinitely."), 
 736 a.dunfey 1.1        ModelCorrespondence { "CIM_Job.LocalOrUtcTime" }]
 737                 datetime UntilTime;
 738              
 739                    [Write, Description (
 740                        "User to be notified upon the Job completion or failure.")]
 741                 string Notify;
 742              
 743                    [Description (
 744                        "The User that submitted the Job or the Service/method "
 745                        "name/etc. that caused the job to be created."), 
 746                     ModelCorrespondence { "CIM_OwningJobElement" }]
 747                 string Owner;
 748              
 749                    [Write, Description (
 750                        "Indicates the urgency or importance of execution of the "
 751                        "Job. The lower the number, the higher the priority. Note "
 752                        "that this property is also present in the "
 753                        "JobProcessingStatistics class. This is necessary to capture "
 754                        "the setting information that would influence a Job's "
 755                        "results.")]
 756                 uint32 Priority;
 757 a.dunfey 1.1 
 758                    [Description (
 759                        "The percentage of the job that has completed at the time "
 760                        "that this value is requested. Note that this property is "
 761                        "also present in the JobProcessingStatistics class. This is "
 762                        "necessary to capture the processing information for "
 763                        "recurring Jobs, since only the 'last' run data can be "
 764                        "stored in this single-valued property. \n"
 765                        "Note that the value 101 is undefined and will be not be "
 766                        "allowed in the next major revision of the specification."), 
 767                     Units ( "Percent" ), MinValue ( 0 ), MaxValue ( 101 )]
 768                 uint16 PercentComplete;
 769              
 770                    [Write, Description (
 771                        "Indicates whether or not the job should be automatically "
 772                        "deleted upon completion. Note that the 'completion' of a "
 773                        "recurring job is defined by its JobRunTimes or UntilTime "
 774                        "properties, OR when the Job is terminated by manual "
 775                        "intervention. If this property is set to false and the job "
 776                        "completes, then the extrinsic method DeleteInstance MUST be "
 777                        "used to delete the job versus updating this property.")]
 778 a.dunfey 1.1    boolean DeleteOnCompletion;
 779              
 780                    [Description (
 781                        "A vendor specific error code. This MUST be set to zero if "
 782                        "the Job completed without error. Note that this property is "
 783                        "also present in the JobProcessingStatistics class. This is "
 784                        "necessary to capture the processing information for "
 785                        "recurring Jobs, since only the 'last' run error can be "
 786                        "stored in this single-valued property."), 
 787                     ModelCorrespondence { "CIM_Job.ErrorDescription" }]
 788                 uint16 ErrorCode;
 789              
 790                    [Description (
 791                        "A free form string containing the vendor error description. "
 792                        "Note that this property is also present in the "
 793                        "JobProcessingStatistics class. This is necessary to capture "
 794                        "the processing information for recurring Jobs, since only "
 795                        "the 'last' run error can be stored in this single-valued "
 796                        "property."), 
 797                     ModelCorrespondence { "CIM_Job.ErrorCode" }]
 798                 string ErrorDescription;
 799 a.dunfey 1.1 
 800                    [Description (
 801                        "Describes the recovery action to be taken for an "
 802                        "unsuccessfully run Job. The possible values are: \n"
 803                        "0 = \"Unknown\", meaning it is unknown as to what recovery "
 804                        "action to take \n"
 805                        "1 = \"Other\", indicating that the recovery action will be "
 806                        "specified in the property, OtherRecoveryAction \n"
 807                        "2 = \"Do Not Continue\", meaning stop the execution of the "
 808                        "job and appropriately update its status \n"
 809                        "3 = \"Continue With Next Job\", meaning continue with the "
 810                        "next job in the queue \n"
 811                        "4 = \"Re-run Job\", indicating that the job should be "
 812                        "re-run \n"
 813                        "5 = \"Run Recovery Job\", meaning run the Job associated "
 814                        "using the RecoveryJob relationship. Note that the recovery "
 815                        "Job MUST already be on the queue from which it will run."), 
 816                     ValueMap { "0", "1", "2", "3", "4", "5" }, 
 817                     Values { "Unknown", "Other", "Do Not Continue",
 818                        "Continue With Next Job", "Re-run Job", "Run Recovery Job" }, 
 819                     ModelCorrespondence { "CIM_Job.OtherRecoveryAction" }]
 820 a.dunfey 1.1    uint16 RecoveryAction;
 821              
 822                    [Description (
 823                        "A string describing the recovery action when the instance's "
 824                        "RecoveryAction property is 1 (\"Other\")."), 
 825                     ModelCorrespondence { "CIM_Job.RecoveryAction" }]
 826                 string OtherRecoveryAction;
 827              
 828                    [Deprecated { "CIM_ConcreteJob.RequestStateChange()" }, 
 829                     Description (
 830                        "KillJob is being deprecated because there is no distiction "
 831                        "made between an orderly shutdown and an immediate kill. "
 832                        "CIM_ConcreteJob.RequestStateChange() provides 'Terminate' "
 833                        "and 'Kill' options to allow this distinction. \n"
 834                        "A method to kill this job and any underlying processes, and "
 835                        "to remove any 'dangling' associations."), 
 836                     ValueMap { "0", "1", "2", "3", "4", "6", "7", "..",
 837                        "32768..65535" }, 
 838                     Values { "Success", "Not Supported", "Unknown", "Timeout",
 839                        "Failed", "Access Denied", "Not Found", "DMTF Reserved",
 840                        "Vendor Specific" }]
 841 a.dunfey 1.1    uint32 KillJob( 
 842                       [IN, Description (
 843                           "Indicates whether or not the Job should be automatically "
 844                           "deleted upon termination. This parameter takes "
 845                           "precedence over the property, DeleteOnCompletion.")]
 846                    boolean DeleteOnKill); 
 847              
 848              };
 849              
 850              
 851              // ===================================================================
 852              // ConcreteJob
 853              // ===================================================================
 854                 [Version ( "2.8.1000" ), Description (
 855                     "A concrete version of Job. This class represents a generic and "
 856                     "instantiable unit of work, such as a batch or a print job.")]
 857              class CIM_ConcreteJob : CIM_Job {
 858              
 859                    [Key, Description (
 860                        "Within the scope of the instantiating Namespace, InstanceID "
 861                        "opaquely and uniquely identifies an instance of this class. "
 862 a.dunfey 1.1           "In order to ensure uniqueness within the NameSpace, the "
 863                        "value of InstanceID SHOULD be constructed using the "
 864                        "following 'preferred' algorithm: \n"
 865                        "<OrgID>:<LocalID> \n"
 866                        "Where <OrgID> and <LocalID> are separated by a colon ':', "
 867                        "and where <OrgID> MUST include a copyrighted, trademarked "
 868                        "or otherwise unique name that is owned by the business "
 869                        "entity creating/defining the InstanceID, or is a registered "
 870                        "ID that is assigned to the business entity by a recognized "
 871                        "global authority (This is similar to the <Schema "
 872                        "Name>_<Class Name> structure of Schema class names.) In "
 873                        "addition, to ensure uniqueness <OrgID> MUST NOT contain a "
 874                        "colon (':'). When using this algorithm, the first colon to "
 875                        "appear in InstanceID MUST appear between <OrgID> and "
 876                        "<LocalID>. \n"
 877                        "<LocalID> is chosen by the business entity and SHOULD not "
 878                        "be re-used to identify different underlying (real-world) "
 879                        "elements. If the above 'preferred' algorithm is not used, "
 880                        "the defining entity MUST assure that the resultant "
 881                        "InstanceID is not re-used across any InstanceIDs produced "
 882                        "by this or other providers for this instance's NameSpace. \n"
 883 a.dunfey 1.1           "For DMTF defined instances, the 'preferred' algorithm MUST "
 884                        "be used with the <OrgID> set to 'CIM'.")]
 885                 string InstanceID;
 886              
 887                    [Required, Override ( "Name" ), Description (
 888                        "The user friendly name for this instance of Job. In "
 889                        "addition, the user friendly name can be used as a property "
 890                        "for a search or query. (Note: Name does not have to be "
 891                        "unique within a namespace.)")]
 892                 string Name;
 893              
 894                    [Description (
 895                        "JobState is an integer enumeration that indicates the "
 896                        "operational state of a Job. It can also indicate "
 897                        "transitions between these states, for example, 'Shutting "
 898                        "Down' and 'Starting'. Following is a brief description of "
 899                        "the states: \n"
 900                        "New (2) indicates that the job has never been started. \n"
 901                        "Starting (3) indicates that the job is moving from the "
 902                        "'New', 'Suspended', or 'Service' states into the 'Running' "
 903                        "state. \n"
 904 a.dunfey 1.1           "Running (4) indicates that the Job is running. \n"
 905                        "Suspended (5) indicates that the Job is stopped, but may be "
 906                        "restarted in a seamless manner. \n"
 907                        "Shutting Down (6) indicates the job is moving to a "
 908                        "'Completed', 'Terminated', or 'Killed' state. \n"
 909                        "Completed (7) indicates that the job has completed "
 910                        "normally. \n"
 911                        "Terminated (8) indicates that the job has been stopped by a "
 912                        "'Terminate' state change request. The job and all its "
 913                        "underlying processes are ended and may be restarted (this "
 914                        "is job-specific) only as a new job. \n"
 915                        "Killed (9) indicates that the job has been stopped by a "
 916                        "'Kill' state change request. Underlying processes may have "
 917                        "been left running and cleanup may be required to free up "
 918                        "resources. \n"
 919                        "Exception (10) indicates that the Job is in an abnormal "
 920                        "state that may be indicative of an error condition. Actual "
 921                        "status may be surfaced though job-specific objects. \n"
 922                        "Service (11) indicates that the Job is in a vendor-specific "
 923                        "state that supports problem discovery and/or resolution."), 
 924                     ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
 925 a.dunfey 1.1           "12..32767", "32768..65535" }, 
 926                     Values { "New", "Starting", "Running", "Suspended",
 927                        "Shutting Down", "Completed", "Terminated", "Killed",
 928                        "Exception", "Service", "DMTF Reserved", "Vendor Reserved" }]
 929                 uint16 JobState;
 930              
 931                    [Description (
 932                        "The date/time when the Job's State last changed. If the "
 933                        "state of the Job has not changed and this property is "
 934                        "populated, then it MUST be set to a 0 interval value. If a "
 935                        "state change was requested, but rejected or not yet "
 936                        "processed, the property MUST NOT be updated.")]
 937                 datetime TimeOfLastStateChange;
 938              
 939                    [Description (
 940                        "Requests that the job's state be changed to the value "
 941                        "specified in the RequestedState parameter. Invoking the "
 942                        "RequestStateChange method multiple times could result in "
 943                        "earlier requests being overwritten/lost. \n"
 944                        "If 0 is returned, then the task completed successfully. Any "
 945                        "other return code indicates an error condition."), 
 946 a.dunfey 1.1        ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
 947                        "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
 948                     Values { "Completed with No Error", "Not Supported",
 949                        "Unknown/Unspecified Error",
 950                        "Can NOT complete within Timeout Period", "Failed",
 951                        "Invalid Parameter", "In Use", "DMTF Reserved",
 952                        "Method Parameters Checked - Transition Started",
 953                        "Invalid State Transition",
 954                        "Use of Timeout Parameter Not Supported", "Busy",
 955                        "Method Reserved", "Vendor Specific" }]
 956                 uint32 RequestStateChange( 
 957                       [IN, Description (
 958                           "Changes the state of a job. \n"
 959                           "Start (2) changes the state to 'Running'. \n"
 960                           "Suspend (3) stops the job temporarily. The intention is "
 961                           "to subsequently restart the job with 'Start'. It may be "
 962                           "possible to enter the 'Service' state while suspended - "
 963                           "this is job-specific. \n"
 964                           "Terminate (4) stops the job cleanly, saving data, "
 965                           "preserving state, and shutting down all underlying "
 966                           "processes in an orderly manner. \n"
 967 a.dunfey 1.1              "Kill (5) terminates the job immediately with no "
 968                           "requirement to save data or preserve state. Service (6) "
 969                           "puts the job into a vendor-specific service state. The "
 970                           "job may be able to be restarted."), 
 971                        ValueMap { "2", "3", "4", "5", "6", "7..32767",
 972                           "32768..65535" }, 
 973                        Values { "Start", "Suspend", "Terminate", "Kill", "Service",
 974                           "DMTF Reserved", "Vendor Reserved" }]
 975                    uint16 RequestedState, 
 976                       [IN, Description (
 977                           "A timeout period that specifies the maximum amount of "
 978                           "time that the client expects the transition to the new "
 979                           "state to take. The interval format MUST be used to "
 980                           "specify the TimeoutPeriod. A value of 0 or a null "
 981                           "parameter indicates that the client has no time "
 982                           "requirements for the transition. \n"
 983                           "If this property does not contain 0 or null and the "
 984                           "implementation doesn't support this parameter. A return "
 985                           "code of 'Use Of Timeout Parameter Not Supported' MUST be "
 986                           "returned.")]
 987                    datetime TimeoutPeriod); 
 988 a.dunfey 1.1 
 989                    [Experimental, Description (
 990                        "When the job is executing or has terminated without error, "
 991                        "then this method returns no CIM_Error instance. However, if "
 992                        "the job has failed because of some internal problem or "
 993                        "because the job has been terminated by a client, then a "
 994                        "CIM_Error instance is returned."), 
 995                     ValueMap { "0", "1", "2", "3", "4", "5", "6", "4098..32767",
 996                        "32768..65535" }, 
 997                     Values { "Success", "Not Supported","Unspecified Error",
 998                        "Timeout", "Failed", "Invalid Parameter", "Access Denied",
 999                        "DMTF Reserved", "Vendor Specific" }]
1000                 uint32 GetError ( 
1001                       [OUT, Description (
1002                           "If the OperationalStatus on the Job is not \"OK\", then "
1003                           "this method will return a CIM Error instance. Otherwise, "
1004                           "when the Job is \"OK\", null is returned."), 
1005                        EmbeddedInstance ( "CIM_Error" )]
1006                    string Error); 
1007              
1008                    [Required, Write, Description (
1009 a.dunfey 1.1           "The amount of time the Job is retained after it has "
1010                        "finished executing, either succeeding or failing in that "
1011                        "execution. The job MUST remain in existence for some period "
1012                        "of time regardless of the value of the DeleteOnCompletion "
1013                        "property. \n"
1014                        "The default is five minutes.")]
1015                 datetime TimeBeforeRemoval = "00000000000500.000000:000";
1016              
1017              };
1018              
1019              
1020              // ==================================================================
1021              // EnabledLogicalElement
1022              // ==================================================================
1023                 [Abstract, Version ( "2.8.1000" ), Description (
1024                     "This class extends LogicalElement to abstract the concept of "
1025                     "an element that is enabled and disabled, such as a "
1026                     "LogicalDevice or a ServiceAccessPoint.")]
1027              class CIM_EnabledLogicalElement : CIM_LogicalElement {
1028              
1029                    [Description (
1030 a.dunfey 1.1           "EnabledState is an integer enumeration that indicates the "
1031                        "enabled/disabled states of an element. It can also indicate "
1032                        "the transitions between these requested states. For "
1033                        "example, shutting down (value = 4) and starting (value=10) "
1034                        "are transient states between enabled and disabled. The "
1035                        "following text briefly summarizes the various "
1036                        "enabled/disabled states: \n"
1037                        "Enabled (2) indicates that the element is/could be "
1038                        "executing commands, will process any queued commands, and "
1039                        "queues new requests. \n"
1040                        "Disabled (3) indicates that the element will not execute "
1041                        "commands and will drop any new requests. \n"
1042                        "Shutting Down (4) indicates that the element is in the "
1043                        "process of going to a Disabled state. \n"
1044                        "Not Applicable (5) indicates the element doesn't support "
1045                        "being enabled/disabled. \n"
1046                        "Enabled but Offline (6) indicates that the element may be "
1047                        "completing commands, and will drop any new requests. \n"
1048                        "Test (7) indicates that the element is in a test state. \n"
1049                        "Deferred (8) indicates that the element may be completing "
1050                        "commands, but will queue any new requests. \n"
1051 a.dunfey 1.1           "Quiesce (9) indicates that the element is enabled but in a "
1052                        "restricted mode. The element's behavior is similar to the "
1053                        "Enabled state, but it only processes a restricted set of "
1054                        "commands. All other requests are queued. \n"
1055                        "Starting (10) indicates that the element is in the process "
1056                        "of going to an Enabled state. New requests are queued."), 
1057                     ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
1058                        "10", "11..32767", "32768..65535" }, 
1059                     Values { "Unknown", "Other", "Enabled", "Disabled",
1060                        "Shutting Down", "Not Applicable", "Enabled but Offline",
1061                        "In Test", "Deferred", "Quiesce", "Starting",
1062                        "DMTF Reserved", "Vendor Reserved" }, 
1063                     ModelCorrespondence { 
1064                        "CIM_EnabledLogicalElement.OtherEnabledState" }]
1065                 uint16 EnabledState = 5;
1066              
1067                    [Description (
1068                        "A string describing the element's enabled/disabled state "
1069                        "when the EnabledState property is set to 1 (\"Other\"). "
1070                        "This property MUST be set to NULL when EnabledState is any "
1071                        "value other than 1."), 
1072 a.dunfey 1.1        ModelCorrespondence { "CIM_EnabledLogicalElement.EnabledState" }]
1073                 string OtherEnabledState;
1074              
1075                    [Description (
1076                        "RequestedState is an integer enumeration indicating the "
1077                        "last requested or desired state for the element. The actual "
1078                        "state of the element is represented by EnabledState. This "
1079                        "property is provided to compare the last requested and "
1080                        "current enabled/disabled states. Note that when "
1081                        "EnabledState is set to 5 (\"Not Applicable\"), then this "
1082                        "property has no meaning. By default, the element's "
1083                        "RequestedState is 5 (\"No Change\"). Refer to the "
1084                        "EnabledState's property Description for explanations of the "
1085                        "values in the RequestedState enumeration. \n"
1086                        "\n"
1087                        "It should be noted that there are two new values in "
1088                        "RequestedState that build on the statuses of EnabledState. "
1089                        "These are \"Reboot\" (10) and \"Reset\" (11). The former, "
1090                        "Reboot, refers to doing a \"Shut Down\" and then moving to "
1091                        "an \"Enabled\" state. The latter, Reset, indicates that the "
1092                        "element is first \"Disabled\" and then \"Enabled\". The "
1093 a.dunfey 1.1           "distinction between requesting \"Shut Down\" and "
1094                        "\"Disabled\" should also be noted. The former, Shut Down, "
1095                        "requests an orderly transition to the Disabled state, and "
1096                        "MAY involve removing power, to completely erase any "
1097                        "existing state. The latter, the Disabled state, requests an "
1098                        "immediate disabling of the element, such that it will not "
1099                        "execute or accept any commands or processing requests. \n"
1100                        "\n"
1101                        "This property is set as the result of a method invocation "
1102                        "(such as Start or StopService on CIM_Service), or may be "
1103                        "overridden and defined as WRITEable in a subclass. The "
1104                        "method approach is considered superior to a WRITEable "
1105                        "property, since it allows an explicit invocation of the "
1106                        "operation and the return of a result code. \n"
1107                        "\n"
1108                        "It is possible that a particular instance of "
1109                        "EnabledLogicalElement may not support RequestedStateChange. "
1110                        "If this occurs, the value 12 (\"Not Applicable\") is used."), 
1111                     ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
1112                        "12", "..", "32768..65535" }, 
1113                     Values { "Enabled", "Disabled", "Shut Down", "No Change",
1114 a.dunfey 1.1           "Offline", "Test", "Deferred", "Quiesce", "Reboot", "Reset",
1115                        "Not Applicable", "DMTF Reserved", "Vendor Reserved" }, 
1116                     ModelCorrespondence { "CIM_EnabledLogicalElement.EnabledState" }]
1117                 uint16 RequestedState = 12;
1118              
1119                    [Write, Description (
1120                        "An enumerated value indicating an administrator's "
1121                        "default/startup configuration for an element's Enabled "
1122                        "State. By default, the element is \"Enabled\" (value=2)."), 
1123                     ValueMap { "2", "3", "5", "6", "7", "8..32767", "32768..65535" }, 
1124                     Values { "Enabled", "Disabled", "Not Applicable",
1125                        "Enabled but Offline", "No Default", "DMTF Reserved",
1126                        "Vendor Reserved" }]
1127                 uint16 EnabledDefault = 2;
1128              
1129                    [Description (
1130                        "The date/time when the element's EnabledState last changed. "
1131                        "If the state of the element has not changed and this "
1132                        "property is populated, then it MUST be set to a 0 interval "
1133                        "value. If a state change was requested, but rejected or not "
1134                        "yet processed, the property MUST NOT be updated.")]
1135 a.dunfey 1.1    datetime TimeOfLastStateChange;
1136              
1137                    [Description (
1138                        "Requests that the element's state be changed to the value "
1139                        "specified in the RequestedState parameter. When the "
1140                        "requested state change takes place, the element's "
1141                        "EnabledState and RequestedState will be the same. Invoking "
1142                        "the RequestStateChange method multiple times could result "
1143                        "in earlier requests being overwritten/lost. \n"
1144                        "If 0 is returned, then the task completed successfully and "
1145                        "the use of ConcreteJob was not required. If 4096 (0x1000) "
1146                        "is returned, then the task will take some time to complete, "
1147                        "ConcreteJob will be created, and its reference returned in "
1148                        "the output parameter Job. Any other return code indicates "
1149                        "an error condition."), 
1150                     ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
1151                        "4097", "4098", "4099", "4100..32767", "32768..65535" }, 
1152                     Values { "Completed with No Error", "Not Supported",
1153                        "Unknown/Unspecified Error",
1154                        "Can NOT complete within Timeout Period", "Failed",
1155                        "Invalid Parameter", "In Use", "DMTF Reserved",
1156 a.dunfey 1.1           "Method Parameters Checked - Job Started",
1157                        "Invalid State Transition",
1158                        "Use of Timeout Parameter Not Supported", "Busy",
1159                        "Method Reserved", "Vendor Specific" }, 
1160                     ModelCorrespondence { "CIM_EnabledLogicalElement.RequestedState" 
1161                        }]
1162                 uint32 RequestStateChange( 
1163                       [IN, Description (
1164                           "The state requested for the element. This information "
1165                           "will be placed into the instance's RequestedState "
1166                           "property if the RequestStateChange method's return code "
1167                           "is 0, 3, or 4096 (0x1000) - 'Completed with No Error', "
1168                           "'Timeout', or 'Job Started' respectively. Refer to the "
1169                           "description of the EnabledState and RequestedState "
1170                           "properties for the detailed meanings of the "
1171                           "RequestedState values."), 
1172                        ValueMap { "2", "3", "4", "6", "7", "8", "9", "10", "11",
1173                           "..", "32768..65535" }, 
1174                        Values { "Enabled", "Disabled", "Shut Down", "Offline",
1175                           "Test", "Defer", "Quiesce", "Reboot", "Reset",
1176                           "DMTF Reserved", "Vendor Reserved" }, 
1177 a.dunfey 1.1           ModelCorrespondence { 
1178                           "CIM_EnabledLogicalElement.RequestedState" }]
1179                    uint16 RequestedState, 
1180                       [IN ( false ), OUT, Description (
1181                           "Reference to the job (may be null if task completed).")]
1182                    CIM_ConcreteJob REF Job, 
1183                       [IN, Description (
1184                           "A timeout period that specifies the maximum amount of "
1185                           "time that the client expects the transition to the new "
1186                           "state to take. The interval format MUST be used to "
1187                           "specify the TimeoutPeriod. A value of 0 or a null "
1188                           "parameter indicates that the client has no time "
1189                           "requirements for the transition. \n"
1190                           "If this property does not contain 0 or null and the "
1191                           "implementation doesn't support this parameter. A return "
1192                           "code of 'Use Of Timeout Parameter Not Supported' MUST be "
1193                           "returned.")]
1194                    datetime TimeoutPeriod); 
1195              };
1196              
1197              
1198 a.dunfey 1.1 // ==================================================================
1199              // Synchronized
1200              // ==================================================================
1201                 [Association, Version ( "2.8.0" ), Description (
1202                     "Indicates that two ManagedElements were aligned or made to be "
1203                     "equivalent at the specified point in time. If the boolean "
1204                     "property SyncMaintained is TRUE, then synchronization of the "
1205                     "Elements is preserved. Both like and unlike objects may be "
1206                     "synchronized. For example, two WatchDog timers may be aligned, "
1207                     "or the contents of a LogicalFile may be synchronized with the "
1208                     "contents of a StorageExtent.")]
1209              class CIM_Synchronized {
1210              
1211                    [Key, Description (
1212                        "SystemElement represents one ManagedElement that is "
1213                        "synchronized with the entity referenced as SyncedElement.")]
1214                 CIM_ManagedElement REF SystemElement;
1215              
1216                    [Key, Description (
1217                        "SyncedElement represents another ManagedElement that is "
1218                        "synchronized with the entity referenced as SystemElement.")]
1219 a.dunfey 1.1    CIM_ManagedElement REF SyncedElement;
1220              
1221                    [Description (
1222                        "The point in time that the Elements were synchronized.")]
1223                 datetime WhenSynced;
1224              
1225                    [Description (
1226                        "Boolean indicating whether synchronization is maintained.")]
1227                 boolean SyncMaintained;
1228              };
1229              
1230              
1231              // ==================================================================
1232              // System
1233              // ==================================================================
1234                 [Abstract, Version ( "2.7.0" ), Description (
1235                     "CIM_System represents an entity made up of component parts "
1236                     "(defined by the SystemComponent relationship), that operates "
1237                     "as a 'functional whole'. Systems are top level objects in the "
1238                     "CIM hierarchy, requiring no scoping or weak relationships in "
1239                     "order to exist and have context. It should be reasonable to "
1240 a.dunfey 1.1        "uniquely name and manage a System at an enterprise level. For "
1241                     "example, a ComputerSystem is a kind of System that can be "
1242                     "uniquely named and independently managed in an enterprise. "
1243                     "However, this is not true for the power supply (or the power "
1244                     "supply sub-'system') within the computer. \n"
1245                     "\n"
1246                     "Although a System may be viewed as a Collection, this is not "
1247                     "the correct model. A Collection is simply a 'bag' that 'holds' "
1248                     "its members. A System is a higher level abstraction, built out "
1249                     "of its individual components. It is more than a sum of its "
1250                     "parts. Note that System is a subclass of EnabledLogicalElement "
1251                     "which allows the entire abstraction to be functionally "
1252                     "enabled/disabled - at a higher level than enabling/disabling "
1253                     "its component parts.")]
1254              class CIM_System : CIM_EnabledLogicalElement {
1255              
1256                    [Key, Description (
1257                        "CreationClassName indicates the name of the class or the "
1258                        "subclass used in the creation of an instance. When used "
1259                        "with the other key properties of this class, this property "
1260                        "allows all instances of this class and its subclasses to be "
1261 a.dunfey 1.1           "uniquely identified."), 
1262                     MaxLen ( 256 )]
1263                 string CreationClassName;
1264              
1265                    [Key, Override ( "Name" ), Description (
1266                        "The inherited Name serves as key of a System instance in an "
1267                        "enterprise environment."), 
1268                     MaxLen ( 256 )]
1269                 string Name;
1270              
1271                    [Description (
1272                        "The System object and its derivatives are Top Level Objects "
1273                        "of CIM. They provide the scope for numerous components. "
1274                        "Having unique System keys is required. A heuristic can be "
1275                        "defined in individual System subclasses to attempt to "
1276                        "always generate the same System Name Key. The NameFormat "
1277                        "property identifies how the System name was generated, "
1278                        "using the subclass' heuristic."), 
1279                     MaxLen ( 64 )]
1280                 string NameFormat;
1281              
1282 a.dunfey 1.1       [Write, Description (
1283                        "The name of the primary system owner. The system owner is "
1284                        "the primary user of the system."), 
1285                     MaxLen ( 64 ), 
1286                     MappingStrings { "MIF.DMTF|General Information|001.3" }]
1287                 string PrimaryOwnerName;
1288              
1289                    [Write, Description (
1290                        "A string that provides information on how the primary "
1291                        "system owner can be reached (e.g. phone number, email "
1292                        "address, ...)."), 
1293                     MaxLen ( 256 ), 
1294                     MappingStrings { "MIF.DMTF|General Information|001.4" }]
1295                 string PrimaryOwnerContact;
1296              
1297                    [Write, Description (
1298                        "An array (bag) of strings that specify the administrator "
1299                        "-defined roles this System plays in the managed "
1300                        "environment. Examples might be 'Building 8 print server' or "
1301                        "'Boise user directories'. A single system may perform "
1302                        "multiple roles. \n"
1303 a.dunfey 1.1           "Note that instrumentation's view of a System's 'roles' is "
1304                        "defined by instantiating a specific subclass of System and/ "
1305                        "or by properties in a subclass. For example, a "
1306                        "ComputerSystem's purpose is defined using the Dedicated and "
1307                        "OtherDedicatedDescription properties.")]
1308                 string Roles[];
1309              };
1310              
1311              
1312              // ==================================================================
1313              // SystemComponent
1314              // ==================================================================
1315                 [Association, Aggregation, Version ( "2.7.0" ), Description (
1316                     "CIM_SystemComponent is a specialization of the CIM_Component "
1317                     "association that establishes 'part of' relationships between a "
1318                     "System and any ManagedSystemElements of which it is composed. "
1319                     "\nThe use of this association is cautioned - versus the use of "
1320                     "a subclass such as SystemDevice, or a peer association such as "
1321                     "HostedService. This class is very broadly defined which can "
1322                     "lead to erroneous use. For example, Access Points that are "
1323                     "dependent on (and hosted on) a System are NOT Components of "
1324 a.dunfey 1.1        "the System. The System is not made up of any AccessPoint "
1325                     "'parts', which is why a Dependency association, "
1326                     "HostedAccessPoint, was defined. Similarly, a PhysicalPackage "
1327                     "is not a 'part' of a System, since the physical element exists "
1328                     "independently of any internal components, software, etc. In "
1329                     "fact, again, a Dependency relationship is true - where a "
1330                     "ComputerSystem is Dependent on its packaging, as described by "
1331                     "the ComputerSystemPackage association.")]
1332              class CIM_SystemComponent : CIM_Component {
1333              
1334                    [Aggregate, Override ( "GroupComponent" ), Description (
1335                        "The parent System in the Association.")]
1336                 CIM_System REF GroupComponent;
1337              
1338                    [Override ( "PartComponent" ), Description (
1339                        "The child element that is a component of a System.")]
1340                 CIM_ManagedSystemElement REF PartComponent;
1341              };
1342              
1343              
1344              // ==================================================================
1345 a.dunfey 1.1 // AdminDomain
1346              // ==================================================================
1347              
1348                 [Version ( "2.8.0" ), Description (
1349                     "This is a special grouping of ManagedSystemElements. The "
1350                     "grouping is viewed as a single entity, reflecting that all of "
1351                     "its components are administered similarly - either by the same "
1352                     "user, group of users or policy. It serves as an aggregation "
1353                     "point to associate one or more of the following elements: "
1354                     "network devices, such as routers and switches, servers, and "
1355                     "other resources that can be accessed by end systems. This "
1356                     "grouping of devices plays an essential role in ensuring that "
1357                     "the same administrative policy and actions are applied to all "
1358                     "of the devices in the grouping. The specific behavior and/or "
1359                     "semantics of the AdminDomain can be identified through its "
1360                     "aggregated and associated entities.")]
1361              class CIM_AdminDomain : CIM_System {
1362              
1363                    [Override ( "NameFormat" ), Description (
1364                        "The NameFormat property identifies how the Name of the "
1365                        "AdminDomain is generated, using the heuristic specified in "
1366 a.dunfey 1.1           "the CIM V2 System Model spec. It assumes that the "
1367                        "documented rules are traversed in order, to determine and "
1368                        "assign a Name. The NameFormat Values list defines the "
1369                        "precedence order for assigning the Name of the AdminDomain. "
1370                        "\n\n"
1371                        "\"FC\" has been deprecated and replaced by \"WWN\" to be "
1372                        "consistent with the other ValueMaps."), 
1373                     ValueMap { "Other", "AS", "NAP", "NOC", "POP", "RNP", "IP",
1374                        "IPX", "SNA", "Dial", "WAN", "LAN", "ISDN", "Frame Relay",
1375                        "ATM", "E.164", "IB", "FC", "Policy Repository", "WWN" }, 
1376                     Values { "Other", "Autonomous System",
1377                        "Network Access Provider", "Network Operations Center",
1378                        "Point of Presence", "Regional Network Provider", "IP",
1379                        "IPX", "SNA", "Dial", "WAN", "LAN", "ISDN", "Frame Relay",
1380                        "ATM", "E.164", "Infiniband", "Fibre Channel",
1381                        "Policy Repository", "Fibre Channel Worldwide Name" }, 
1382                     ModelCorrespondence { "CIM_AdminDomain.Name" }]
1383                 string NameFormat;
1384              };
1385              
1386              // ==================================================================
1387 a.dunfey 1.1 // ContainedDomain
1388              // ==================================================================
1389                 [Association, Aggregation, Version ( "2.6.0" ), Description (
1390                     "A relationship that aggregates one or more lower-level "
1391                     "AdminDomain instances into a higher-level AdminDomain.")]
1392              class CIM_ContainedDomain : CIM_SystemComponent {
1393              
1394                    [Aggregate, Override ( "GroupComponent" ), Description (
1395                        "An AdminDomain that aggregates other AdminDomains.")]
1396                 CIM_AdminDomain REF GroupComponent;
1397              
1398                    [Override ( "PartComponent" ), Description (
1399                        "An AdminDomain aggregated by another AdminDomain.")]
1400                 CIM_AdminDomain REF PartComponent;
1401              };
1402              
1403              // ==================================================================
1404              // RelatedElementCausingError
1405              // ==================================================================
1406                 [Association, Experimental, Version ( "2.8.1000" ), Description (
1407                     "This association defines the relationship between a failing "
1408 a.dunfey 1.1        "managed element and the managed element that is causing the "
1409                     "error. The cause and effect MAY be indirect. The cause MAY be "
1410                     "simply that the lack of functionality of one component causes "
1411                     "another component to be overworked. \n"
1412                     "The association instance MUST exist as long as the cause and "
1413                     "effect relationship exists.")]
1414              class CIM_RelatedElementCausingError : CIM_Dependency {
1415              
1416                    [Override ( "Dependent" ), Description (
1417                        "Dependent represents the object whose degradation or "
1418                        "failure is caused, in part, by the Antecedent.")]
1419                 CIM_ManagedElement REF Dependent;
1420              
1421                    [Override ( "Antecedent" ), Description (
1422                        "Antecedent represents the object causing the failure on the "
1423                        "Dependent.")]
1424                 CIM_ManagedElement REF Antecedent;
1425              
1426                    [Description (
1427                        "The time which this failure relationship was created. The "
1428                        "datetime SHOULD be provided because of the usefulness of "
1429 a.dunfey 1.1           "knowing when effect was initiated.")]
1430                 datetime FailureRelationshipInitiated;
1431              
1432                    [Required, Description (
1433                        "An enumeration which very generally describes the "
1434                        "correlation of the failure of the Antecedent to its effect "
1435                        "on the Dependent. Description of the weight of the effect "
1436                        "reported by an instance of this class. The effect of the "
1437                        "Antecedent element can have a strong or heavy impact of the "
1438                        "health of the Dependent element, or the impact may be weak "
1439                        "or light."), 
1440                     ValueMap { "2", "10", ".." }, 
1441                     Values { "Strong Correlated", "Weakly Correlated",
1442                        "DMTF Reserved" }]
1443                 uint16 EffectCorrelation = 10;
1444              
1445                    [Description (
1446                        "There MAY be more than one errant Managed Element that is "
1447                        "causing this Managed Element to fail. This ranking is used "
1448                        "to express the most significant cause. \n"
1449                        "The Rank attribute is used to declare the ranking of a "
1450 a.dunfey 1.1           "particular cause and effect relationship amongst all cause "
1451                        "and effect relationships defined by instances of this "
1452                        "association for a particular element. \n"
1453                        "1 is the highest ranking. A rank of 1 declares that this "
1454                        "cause and effect relationship is the most debilitating and "
1455                        "should be addressed with priority over all other cause and "
1456                        "effect relationships. As the rank increases, the affect "
1457                        "imposed of the Antecedent Managed Element failure "
1458                        "decreases. There SHOULD be only one instance of this "
1459                        "association with a particular ranking value per Dependent "
1460                        "instance. If there are more than one instance of the same "
1461                        "ranking per Dependent instance, then the observer can not "
1462                        "determine from the model which cause and effect "
1463                        "relationship to seek resolution on first. \n"
1464                        "The ranking of existing instances MAY change over time "
1465                        "based on the prevailing conditions of the device.")]
1466                 uint16 Ranking = 1;
1467              };
1468              
1469              // ===================================================================
1470              // end of file
1471 a.dunfey 1.1 // ===================================================================

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2