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

   1 karl  1.1 // ===================================================================
   2           // Title:  Device Storage Services
   3           // $State: Preliminary $
   4           // $Date: 2004/07/21 17:37:54 $
   5           // $Source: /home/dmtf2/dotorg/var/cvs/repositories/dev/Schema/MOF/Device_StorageServices.mof,v $
   6           // $Revision: 1.14 $
   7           // ===================================================================
   8           //#pragma inLine ("Includes/copyright.inc")
   9           // Copyright 1998-2004 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 karl  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 karl  1.1 // http://www.dmtf.org/about/policies/disclosures.php.
  44           //#pragma inLine
  45           // ===================================================================
  46           // Description: The Device Model extends the management concepts that
  47           //              are related to LogicalDevices. This file defines
  48           //              a model for storage services.
  49           // 
  50           //              The object classes below are listed in an order that
  51           //              avoids forward references. Required objects, defined
  52           //              by other working groups, are omitted.
  53           // ==================================================================
  54           // Change Log for v2.9 Preliminary Company Review
  55           // CR1449 - Missing other element types from GetSupported* methods
  56           //          on StoragePool
  57           // CR1427 - Add a method to scan for SCSI configuration changes.
  58           // 
  59           // Change Log for v2.9 Preliminary
  60           // CR1293 - Add GetAvailableExtents to StoragePool
  61           // CR1331 - Add CreateOrModifyElementFromElements to Storage
  62           //          Configuration Service.
  63           // CR1376 - Add "InExtents" to Values of
  64 karl  1.1 //          StorageConfigurationCapabilities.
  65           //          SupportedStorageElementFeatures for support of
  66           //          CreateOrModifyStoragePool method.
  67           //  CR1328 - StorageCapabilities and StorageSettings: Settings
  68           //           not associated
  69           //  CR1329 - Incorporate additional properties in StorageConfiguration
  70           //           (and Settings) to better describe RAID levels.
  71           // 
  72           // Change Log for v2.8 Final
  73           //  CR1279 - Add LogicalDisk to supported element types in
  74           //  StorageServices
  75           // 
  76           // Change Log for v2.8 Final
  77           //  CR1171 - Add WRITE qualifiers to StorageSetting.x
  78           //  CR1151 -  Clarify description of
  79           //  AllocatedFromStoragePool.SpaceConsummed
  80           //  CR1227 - Missing commas in ModelCorrespondences in StorageSetting
  81           //  CR1202 - Remove Experimental to Final for Device
  82           //  CR1223 - Omnibus SysDev Cr - minor MOF corrections
  83           // 
  84           // Change Log for v2.8 Preliminary
  85 karl  1.1 //  CR997  - clarify StorageEfficiencyHint
  86           //  CR1028 - Add CreateSetting to StorageCapabilities
  87           //  CR1033 - Extent copy services.
  88           //  CR1044 - Add:
  89           //             StoragePool.TotalManagedSpace
  90           //             StoragePool.TotalAvailableSpace
  91           //             StoragePool.Primordial
  92           //         - Remove TotalAvailableSpace
  93           //  CR1046 - Add StorageConfigurationCapabilities
  94           //  CR1141 - Correction of StorageSynchronized.SyncState.
  95           // 
  96           // Change Log for v2.7.1
  97           //       - Fix MaxValue declarations in StorageSettingWithHints - the
  98           //         properties, AccessDirectionHint and AccessBandwidthWeight
  99           // 
 100           // Change Log for v2.7 Final
 101           // CR970 - Removal of the Experimental qualifier
 102           //       - Remove StoragePool.GetSupportedSize and StoragePool.
 103           //         GetSupportedSizeRange so they can remain experimental in 2.8
 104           // CR978 - Clarify the use of settings and capabilities
 105           //       - Change 'spindle' to 'package'
 106 karl  1.1 //       - Add ElementType in StoragePool methods
 107           //       - Add ElementName to creation methods
 108           //       - Fix ValueMap issues
 109           //       - Generalize the "goal" parameter in CreateOrModifyElement
 110           //       - Change units from megabytes to bytes.
 111           // CR994 - Update description for InstanceID
 112           // 
 113           // Change Log for v2.7
 114           // CR775 - Add StorageSetting, StoragePool, StorageCapabilities,
 115           //         StorageConfigurationService, StorageSettingsWithHints,
 116           //         HostedStoragePool, and AllocatedStoragePool
 117           // CR759 - Add ConfigurationReportingService
 118           // CR777 - Add StorageSynchrononized
 119           //         Add StorageSetting.DeltaReservation,
 120           //         StorageCpabilities.DeltaReservationMin,
 121           //         StorageCpabilities.DeltaReservationMax,
 122           //         StorageCpabilities.DeltaReservationDefault,
 123           //         StorageConfigurationService.CreateReplica() and
 124           //         StorageConfigurationService.ModifySynchronization()
 125           // CR895 - Correct the method return Values/ValueMaps for all the
 126           //         methods in the ConfigurationReportingService.
 127 karl  1.1 // ==================================================================
 128           
 129           #pragma locale ("en_US")
 130           
 131           
 132           // ==================================================================
 133           // StorageSynchronized
 134           // ==================================================================
 135              [Association, Version ( "2.8.0" ), Description (
 136                  "Indicates that two Storage objects were replicated at the "
 137                  "specified point in time. If the CopyType property is set to "
 138                  "'Sync' (=3), then synchronization of the Storage objects is "
 139                  "preserved.")]
 140           class CIM_StorageSynchronized : CIM_Synchronized {
 141           
 142                 [Override ( "SystemElement" ), Description (
 143                     "SystemElement represents the Storage that is the source of "
 144                     "the replication.")]
 145              CIM_ManagedElement REF SystemElement;
 146           
 147                 [Override ( "SyncedElement" ), Description (
 148 karl  1.1           "SyncedElement represents the Storage that is the target of "
 149                     "the replication.")]
 150              CIM_ManagedElement REF SyncedElement;
 151           
 152                 [Description (
 153                     "CopyType describes the Replication Policy. Values are: \n"
 154                     "Async: create and maintain an asynchronous copy of the "
 155                     "source. \n"
 156                     "Sync: create and maintain a synchronized copy of the "
 157                     "source. \n"
 158                     "UnSyncAssoc: create an unsynchronized copy and maintain an "
 159                     "association to the source."), 
 160                  ValueMap { "2", "3", "4", "..", "0x8000.." }, 
 161                  Values { "Async", "Sync", "UnSyncAssoc", "DMTF Reserved",
 162                     "Vendor Specific" }]
 163              uint16 CopyType;
 164           
 165                 [Description (
 166                     "ReplicaType provides information on how the Replica is "
 167                     "being maintained. Values are: \n"
 168                     "Full Copy: This indicates that a full copy of the source "
 169 karl  1.1           "object is (or will be) generated . \n"
 170                     "Before Delta: This indicates that the source object will be "
 171                     "maintained as a delta data from the replica. \n"
 172                     "After Delta: This indicates that the replica will be "
 173                     "maintained as delta data from the source object. \n"
 174                     "Log: This indicates that the replica object is being "
 175                     "maintained as a log of changes to the source. \n"
 176                     "Not Specified: The method of maintaining the copy is not "
 177                     "specified."), 
 178                  ValueMap { "0", "2", "3", "4", "5","..", "0x8000.." }, 
 179                  Values { "Not Specified", "Full Copy", "Before Delta",
 180                     "After Delta", "Log","DMTF Reserved", "Vendor Specific" }]
 181              uint16 ReplicaType;
 182           
 183                 [Description (
 184                     "SyncState describes the state of the association with "
 185                     "respect to Replication activity. Values are: \n"
 186                     "Initialized: The link to enable replication is established. "
 187                     "\nPrepareInProgress: Preparation for Replication is in "
 188                     "progress. \n"
 189                     "Prepared: All necessary preparation has completed. \n"
 190 karl  1.1           "ResyncInProgress: Synchronization or Resynchronization is "
 191                     "in progress. \n"
 192                     "This may be the initial 'copy' or subsequent changes being "
 193                     "copied. \n"
 194                     "Synchronized: An Async or Sync replication is currently "
 195                     "synchronized. When this value is set, SyncMaintained will "
 196                     "be true. \n"
 197                     "FractureInProgress: An operation to fracture an Async or "
 198                     "Sync replication is in progress. \n"
 199                     "Fractured: An Async or Sync replication is fractured. \n"
 200                     "QuiesceInProgress: A quiesce operation is in progress. \n"
 201                     "Quiesced: The replication has been quiesced and is ready "
 202                     "for a change. \n"
 203                     "RestoreInProgress: An operation is in progress to copy the "
 204                     "Synced object to the System object. \n"
 205                     "Idle: The 'normal' state for an UnSyncAssoc replica. \n"
 206                     "Broken: The relationship is non-functional due to errors in "
 207                     "the source, the target, the path between the two or space "
 208                     "constraints."), 
 209                  ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
 210                     "12", "13", "..", "0x8000.." }, 
 211 karl  1.1        Values { "Initialized", "PrepareInProgress", "Prepared",
 212                     "ResyncInProgress", "Synchronized", "Fracture In Progress",
 213                     "QuiesceInProgress", "Quiesced", "Restore In Progresss",
 214                     "Idle", "Broken", "Fractured", "DMTF Reserved",
 215                     "Vendor Specific" }]
 216              uint16 SyncState;
 217           };
 218           
 219           
 220           // ==================================================================
 221           // StorageSetting
 222           // ==================================================================
 223              [Version ( "2.8.1000" ), Description (
 224                  "StorageSetting is roughly equivalent to a Service Level "
 225                  "Agreement (SLA) It defines the characteristics, qualities of "
 226                  "service and goals when used in a CreateOrModifyElement "
 227                  "FromStoragePool or CreateOrModifyStoragePool method in the "
 228                  "StorageConfigurationService. It specifies a series of "
 229                  "properties with Maximum and Minimum values that define the "
 230                  "(inclusive) bounds that the object should maintain. Note that "
 231                  "the setting is associated to a StorageVolume or LogicalDisk, "
 232 karl  1.1        "using ElementSetting. \n"
 233                  "The use of these properties differs depending on whether the "
 234                  "StorageSetting instance is being used as a goal for a "
 235                  "configuration operation or being used as a Service Level "
 236                  "Agreement for a created Volume. In addition the properties "
 237                  "fall into two categories: The QOS "
 238                  "properties(PackageRedundancy, Data Redundancy, & "
 239                  "NoSinglePointOfFailure) and the Detailed RAID "
 240                  "properties(ExtentStripeLength, ParityLayout, and "
 241                  "UserDataStripeDepth). In a Setting used as a goal, the QOS "
 242                  "properties are required as a set; The Detailed RAID "
 243                  "properties(if supported as indicated by the scoping "
 244                  "StorageCapabilities instance) may be used optionally in any "
 245                  "combination. The implementation MUST supply it's own best "
 246                  "practice in the case where one or more supported RAID "
 247                  "properties are not supplied. In this situation the use of "
 248                  "StorageSettingWithHints can be useful to provide direction to "
 249                  "the implementation. \n"
 250                  "In a Setting used as a service agreement for a Volume, the QOS "
 251                  "properties reflect the Service Level Agreement, with goal, "
 252                  "min, & max. The actual current service level is exposed by "
 253 karl  1.1        "corresponding values in StorageExtent. \n"
 254                  "The Detailed RAID properties, by contrast, reflect specific "
 255                  "values that reflect the RAID construction of the Volume. Only "
 256                  "the primary values are meaningful; Min and Max are set to "
 257                  "match. \n"
 258                  "Certain StorageSetting instances may be classed as \"Fixed\", "
 259                  "by using the \"ChangeableType\" property, indicating the "
 260                  "setting is preset. Such settings are used when the possible "
 261                  "setting variations are low enough to be instantiated in their "
 262                  "entirety. The StorageCapabilities \"CreateSetting\" method MAY "
 263                  "NOT be used to return settings that are not changeable. \n"
 264                  "Other StorageSetting instances are created using the "
 265                  "\"CreateSetting\" method. If the capabilities specifies "
 266                  "ranges, then the setting can be used by a client to narrow the "
 267                  "range to particular values within the range. In other words, "
 268                  "the capabilities MAY be broad, but the related setting MUST be "
 269                  "as capable or less capable, that is more narrowly defined, "
 270                  "before it is used to create or modify resources. \n"
 271                  "These created StorageSetting instances MUST have their "
 272                  "\"ChangeableType\" property = 1, \"Changeable - Transient\". \n"
 273                  "GeneratedSettings MAY not remain after the restart or reset of "
 274 karl  1.1        "the implementation. They may be deleted by implementation at "
 275                  "any time. A reasonable minimal time to retain the generated "
 276                  "transient settings is five minutes, although there is no "
 277                  "minimal retention time.")]
 278           class CIM_StorageSetting : CIM_SettingData {
 279           
 280                 [Write, Description (
 281                     "Indicates the desired value for No Single Point of Failure. "
 282                     "Possible values are false = single point of failure, and "
 283                     "true = no single point of failure.")]
 284              boolean NoSinglePointOfFailure;
 285           
 286                 [Write, Description (
 287                     "DataRedundancyMax describes the maximum number of complete "
 288                     "copies of data to be maintained. Examples would be RAID 5 "
 289                     "where 1 copy is maintained and RAID 1 where 2 or more "
 290                     "copies are maintained. Possible values are 1 to n. The "
 291                     "desired redundancy is specified using DataRedundancyGoal, "
 292                     "while the minimum is defined by DataRedundancyMin."), 
 293                  MinValue ( 1 ), 
 294                  ModelCorrespondence { "CIM_StorageSetting.DataRedundancyMin",
 295 karl  1.1           "CIM_StorageSetting.DataRedundancyGoal" }]
 296              uint16 DataRedundancyMax;
 297           
 298                 [Write, Description (
 299                     "DataRedundancyMin describes the minimum number of complete "
 300                     "copies of data to be maintained. Examples would be RAID 5 "
 301                     "where 1 copy is maintained and RAID 1 where 2 or more "
 302                     "copies are maintained. Possible values are 1 to n. The "
 303                     "desired redundancy is specified using DataRedundancyGoal, "
 304                     "while the maximum is defined by DataRedundancyMax."), 
 305                  MinValue ( 1 ), 
 306                  ModelCorrespondence { "CIM_StorageSetting.DataRedundancyMax",
 307                     "CIM_StorageSetting.DataRedundancyGoal" }]
 308              uint16 DataRedundancyMin;
 309           
 310                 [Write, Description (
 311                     "DataRedundancyGoal describes the desired number of complete "
 312                     "copies of data to be maintained. Examples would be RAID 5 "
 313                     "where 1 copy is maintained and RAID 1 where 2 or more "
 314                     "copies are maintained. Possible values are 1 to n. The "
 315                     "bounds (max and min) for redundancy are defined using the "
 316 karl  1.1           "properties, DataRedundancyMax and DataRedundancyMin."), 
 317                  MinValue ( 1 ), 
 318                  ModelCorrespondence { "CIM_StorageSetting.DataRedundancyMax",
 319                     "CIM_StorageSetting.DataRedundancyMin" }]
 320              uint16 DataRedundancyGoal;
 321           
 322                 [Write, Description (
 323                     "PackageRedundancyMax describes the maximum number of "
 324                     "redundant packages to be used. For example, in the storage "
 325                     "domain, package redundancy describes how many disk spindles "
 326                     "can fail without data loss including, at most, one spare. "
 327                     "An example would be RAID5 with a spare disk which would "
 328                     "have a PackageRedundancy of 2. Possible values are 0 to n. "
 329                     "The desired redundancy is specified using "
 330                     "PackageRedundancyGoal, while the minimum is defined by "
 331                     "PackageRedundancyMin."), 
 332                  ModelCorrespondence { "CIM_StorageSetting.PackageRedundancyMin",
 333                     "CIM_StorageSetting.PackageRedundancyGoal" }]
 334              uint16 PackageRedundancyMax;
 335           
 336                 [Write, Description (
 337 karl  1.1           "PackageRedundancyMin describes the minimum number of "
 338                     "redundant packages to be used. For example, in the storage "
 339                     "domain, package redundancy describes how many disk spindles "
 340                     "can fail without data loss including, at most, one spare. "
 341                     "An example would be RAID5 with a spare disk which would "
 342                     "have a PackageRedundancy of 2. Possible values are 0 to n. "
 343                     "The desired redundancy is specified using "
 344                     "PackageRedundancyGoal, while the maximum is defined by "
 345                     "PackageRedundancyMax."), 
 346                  ModelCorrespondence { "CIM_StorageSetting.PackageRedundancyMax",
 347                     "CIM_StorageSetting.PackageRedundancyGoal" }]
 348              uint16 PackageRedundancyMin;
 349           
 350                 [Write, Description (
 351                     "PackageRedundancyGoal describes the desired number of "
 352                     "redundant packages to be used. For example, in the storage "
 353                     "domain, package redundancy describes how many disk spindles "
 354                     "can fail without data loss including, at most, one spare. "
 355                     "An example would be RAID5 with a spare disk which would "
 356                     "have a PackageRedundancy of 2. Possible values are 0 to n. "
 357                     "The bounds (max and min) for redundancy are defined using "
 358 karl  1.1           "the properties, PackageRedundancyMax and "
 359                     "PackageRedundancyMin."), 
 360                  ModelCorrespondence { "CIM_StorageSetting.PackageRedundancyMax",
 361                     "CIM_StorageSetting.PackageRedundancyMin" }]
 362              uint16 PackageRedundancyGoal;
 363           
 364                 [Write, Description (
 365                     "DeltaReservationMax is a number between 1 (1%) and a 100 "
 366                     "(100%) which specifies the maximum amount of space that "
 367                     "should be reserved in a replica for caching changes. For a "
 368                     "complete copy this would be 100%. The desired reservation "
 369                     "is specified using DeltaReservationGoal, while the minimum "
 370                     "is defined by DeltaReservationMin."), 
 371                  Units ( "Percentage" ), MinValue ( 1 ), MaxValue ( 100 ), 
 372                  ModelCorrespondence { "CIM_StorageSetting.DeltaReservationMin",
 373                     "CIM_StorageSetting.DeltaReservationGoal" }]
 374              uint8 DeltaReservationMax;
 375           
 376                 [Write, Description (
 377                     "DeltaReservationMin is a number between 1 (1%) and a 100 "
 378                     "(100%) which specifies the minimum amount of space that "
 379 karl  1.1           "should be reserved in a replica for caching changes. For a "
 380                     "complete copy this would be 100%. The desired reservation "
 381                     "is specified using DeltaReservationGoal, while the maximum "
 382                     "is defined by DeltaReservationMax."), 
 383                  Units ( "Percentage" ), MinValue ( 1 ), MaxValue ( 100 ), 
 384                  ModelCorrespondence { "CIM_StorageSetting.DeltaReservationMax",
 385                     "CIM_StorageSetting.DeltaReservationGoal" }]
 386              uint8 DeltaReservationMin;
 387           
 388                 [Write, Description (
 389                     "DeltaReservationGoal is a number between 1 (1%) and a 100 "
 390                     "(100%) which specifies the desired amount of space that "
 391                     "should be reserved in a replica for caching changes. For a "
 392                     "complete copy this would be 100%. The bounds (max and min) "
 393                     "for the reservation are defined using the properties, "
 394                     "DeltaReservationMax and DeltaReservationMin."), 
 395                  Units ( "Percentage" ), MinValue ( 1 ), MaxValue ( 100 ), 
 396                  ModelCorrespondence { "CIM_StorageSetting.DeltaReservationMin",
 397                     "CIM_StorageSetting.DeltaReservationMax" }]
 398              uint8 DeltaReservationGoal;
 399           
 400 karl  1.1       [Experimental, Description (
 401                     "Enumeration indicating the type of setting. \"Fixed - Not "
 402                     "Changeable\" settings are primordial. These setting are "
 403                     "defined at the implementor of the class. \"Changeable - "
 404                     "Transient\" is the type of setting produced by the "
 405                     "\"CreateSetting\" method. A client can subsequently request "
 406                     "that the implementation persist the generated and "
 407                     "potentially modified setting indefinately. Only a "
 408                     "\"Changeable - Transient\" setting SHALL be converted to a "
 409                     "\"Changeable = Persistent\" setting; the setting SHALL NOT "
 410                     "be changed back."), 
 411                  ValueMap { "0", "1", "2" }, 
 412                  Values { "Fixed - Not Changeable", "Changeable - Transient",
 413                     "Changeable - Persistent" }]
 414              uint16 ChangeableType;
 415           
 416                 [Experimental, Write, Description (
 417                     "ExtentStripeLength describes the number of underlying "
 418                     "StorageExtents across which data is striped in the common "
 419                     "striping-based storage organizations. This is also known as "
 420                     "the number of 'members' or 'columns'. When used in a goal "
 421 karl  1.1           "setting instance, ExtentStripeLength is the optimal desired "
 422                     "value. The bounds (max and min) for Stripe Length are "
 423                     "defined using the properties ExtentStripeLengthMax and "
 424                     "ExtentStripeLengthMin. ExtentStripeLength MUST be set to "
 425                     "NULL if the scoping StorageCapablities indicates that it is "
 426                     "not supported in this context. ExtentStripeLength can be "
 427                     "used in conjunction with CreateOrModifyElementFromELements "
 428                     "to explicitly configure storage. An example would be RAID "
 429                     "0+1 with mirroring two stripe sets, each set being three "
 430                     "wide. In this case CreateOrModifyElementFromElements would "
 431                     "be passed a goal setting with DataRedundancy = 2 and "
 432                     "ExtentStripeLength = 3. The size of the InElements array "
 433                     "would be 6 and would contain the StorageExtents to be used "
 434                     "to construct the StorageElement as a RAID 0+1. "
 435                     "ExtentStripeLengthMin and ExtentStripeLengthMax are "
 436                     "meaningless and wouldbe set to NULL. If the property is "
 437                     "supported, and is part of StorageSettingWithHints it MAY be "
 438                     "set to NULL. If used it will constrain the effects of Hint "
 439                     "selections. When used in a Setting instance associated to a "
 440                     "Volume, this property indicates the specific value that the "
 441                     "Volume was created with, and ExtentStripeLengthMin and "
 442 karl  1.1           "ExtentStripeLengthMax will be set to the same specific "
 443                     "value."), 
 444                  MinValue ( 1 ), 
 445                  ModelCorrespondence { 
 446                     "CIM_StorageSetting.ExtentStripeLengthMax",
 447                     "CIM_StorageSetting.ExtentStripeLengthMin" }]
 448              uint16 ExtentStripeLength;
 449           
 450                 [Experimental, Write, Description (
 451                     "ExtentStripeLength describes the number of underlying "
 452                     "StorageExtents across which data is striped in the common "
 453                     "striping-based storage organizations. This is also known as "
 454                     "the number of 'members' or 'columns'. When used in a goal "
 455                     "setting instance, ExtentStripeLengthMin is the minimum "
 456                     "acceptable value. The desired Stripe Length is specified "
 457                     "using ExtentStripeLength, while the maximum is defined by "
 458                     "ExtentStripeLengthMax. ExtentStripeLengthMin MUST be set to "
 459                     "NULL if the scoping StorageCapablities indicates that it is "
 460                     "not supported in this context. If the property is "
 461                     "supported, and is part of StorageSettingWithHints it MAY be "
 462                     "set to NULL. If used it will constrain the effects of Hint "
 463 karl  1.1           "selections. When used in a Setting instance associated to a "
 464                     "Volume, this property is set to the specific value of "
 465                     "ExtentStripeLength."), 
 466                  MinValue ( 1 ), 
 467                  ModelCorrespondence { 
 468                     "CIM_StorageSetting.ExtentStripeLengthMax",
 469                     "CIM_StorageSetting.ExtentStripeLength" }]
 470              uint16 ExtentStripeLengthMin;
 471           
 472                 [Experimental, Write, Description (
 473                     "ExtentStripeLength describes the number of underlying "
 474                     "StorageExtents across which data is striped in the common "
 475                     "striping-based storage organizations. This is also known as "
 476                     "the number of 'members' or 'columns'. When used in a goal "
 477                     "setting instance, ExtentStripeLengthMax is the maximum "
 478                     "acceptable value. The desired Stripe Length is specified "
 479                     "using ExtentStripeLength, while the minimum is defined by "
 480                     "ExtentStripeLengthMin. ExtentStripeLengthMax MUST be set to "
 481                     "NULL if the scoping StorageCapablities indicates that it is "
 482                     "not supported in this context. If the property is "
 483                     "supported, and is part of StorageSettingWithHints it MAY be "
 484 karl  1.1           "set to NULL. If used it will constrain the effects of Hint "
 485                     "selections. When used in a Setting instance associated to a "
 486                     "Volume, this property is set to the specific value of "
 487                     "ExtentStripeLength."), 
 488                  MinValue ( 1 ), 
 489                  ModelCorrespondence { 
 490                     "CIM_StorageSetting.ExtentStripeLengthMin",
 491                     "CIM_StorageSetting.ExtentStripeLength" }]
 492              uint16 ExtentStripeLengthMax;
 493           
 494                 [Experimental, Write, Description (
 495                     "ParityLayout specifies whether a parity-based storage "
 496                     "organization is using rotated or non-rotated parity. When "
 497                     "used in a goal setting instance, ParityLayout is the "
 498                     "desired value. It MUST be set to NULL if the scoping "
 499                     "StorageCapablities indicates that it is not supported in "
 500                     "this context. If the property is supported, and is part of "
 501                     "StorageSettingWithHints it MAY be set to NULL. If used it "
 502                     "will constrain the effects of Hint selections. When used in "
 503                     "a Setting instance associated to a Volume, this property "
 504                     "indicates the specific value that the Volume was created "
 505 karl  1.1           "with."), 
 506                  ValueMap { "1", "2" }, 
 507                  Values { "Non-rotated Parity", "Rotated Parity" }]
 508              uint16 ParityLayout;
 509           
 510                 [Experimental, Write, Description (
 511                     "UserDataStripeDepth describes the number of bytes forming a "
 512                     "strip in common striping-based storage organizations. The "
 513                     "strip is defined as the size of the portion of a stripe "
 514                     "that lies on one extent. Thus, ExtentStripeLength * "
 515                     "UserDataStripeDepth will yield the size of one stripe of "
 516                     "user data. When used in a goal setting instance, "
 517                     "UserDataStripeDepth is the optimal desired value. The "
 518                     "bounds (max and min) for Stripe Depth are defined using the "
 519                     "properties UserDataStripeDepthMax and "
 520                     "UserDataStripeDepthMin. UserDataStripeDepth MUST be set to "
 521                     "NULL if the scoping StorageCapablities indicates that it is "
 522                     "not supported in this context. If the property is "
 523                     "supported, and is part of StorageSettingWithHints it MAY be "
 524                     "set to NULL. If used it will constrain the effects of Hint "
 525                     "selections. When used in a Setting instance associated to a "
 526 karl  1.1           "Volume, this property indicates the specific value that the "
 527                     "Volume was created with, and UserDataStripeDepthMin and "
 528                     "UserDataStripeDepthMax will be set to the same specific "
 529                     "value."), 
 530                  Units ( "Bytes" ), MinValue ( 1 ), 
 531                  ModelCorrespondence { 
 532                     "CIM_StorageSetting.UserDataStripeDepthMax",
 533                     "CIM_StorageSetting.UserDataStripeDepthMin" }]
 534              uint64 UserDataStripeDepth;
 535           
 536                 [Experimental, Write, Description (
 537                     "UserDataStripeDepth describes the number of bytes forming a "
 538                     "strip in common striping-based storage organizations. The "
 539                     "strip is defined as the size of the portion of a stripe "
 540                     "that lies on one extent. Thus, ExtentStripeLength * "
 541                     "UserDataStripeDepth will yield the size of one stripe of "
 542                     "user data. When used in a goal setting instance, "
 543                     "UserDataStripeDepthMin is the minimum acceptable value. The "
 544                     "desired Stripe Depth is specified using "
 545                     "UserDataStripeDepth, while the maximum is defined by "
 546                     "UserDataStripeDepthMax. UserDataStripeDepthMin MUST be set "
 547 karl  1.1           "to NULL if the scoping StorageCapablities indicates that it "
 548                     "is not supported in this context. If the property is "
 549                     "supported, and is part of StorageSettingWithHints it MAY be "
 550                     "set to NULL. If used it will constrain the effects of Hint "
 551                     "selections. When used in a Setting instance associated to a "
 552                     "Volume, this property is set to the specific value of "
 553                     "UserDataStripeDepth."), 
 554                  Units ( "Bytes" ), MinValue ( 1 ), 
 555                  ModelCorrespondence { 
 556                     "CIM_StorageSetting.UserDataStripeDepthMax",
 557                     "CIM_StorageSetting.UserDataStripeDepth" }]
 558              uint64 UserDataStripeDepthMin;
 559           
 560                 [Experimental, Write, Description (
 561                     "UserDataStripeDepth describes the number of bytes forming a "
 562                     "strip in common striping-based storage organizations. The "
 563                     "strip is defined as the size of the portion of a stripe "
 564                     "that lies on one extent. Thus, ExtentStripeLength * "
 565                     "UserDataStripeDepth will yield the size of one stripe of "
 566                     "user data. When used in a goal setting instance, "
 567                     "UserDataStripeDepthMax is the maximum acceptable value. The "
 568 karl  1.1           "desired Stripe Depth is specified using "
 569                     "UserDataStripeDepthGoal, while the minimum is defined by "
 570                     "UserDataStripeDepthMin. UserDataStripeDepthMax MUST be set "
 571                     "to NULL if the scoping StorageCapablities indicates that it "
 572                     "is not supported in this context. If the property is "
 573                     "supported, and is part of StorageSettingwWithHints it MAY "
 574                     "be set to NULL. If used it will constrain the effects of "
 575                     "Hint selections. When used in a Setting instance associated "
 576                     "to a Volume, this property is set to the specific value of "
 577                     "UserDataStripeDepth."), 
 578                  Units ( "Bytes" ), MinValue ( 1 ), 
 579                  ModelCorrespondence { 
 580                     "CIM_StorageSetting.UserDataStripeDepthMin",
 581                     "CIM_StorageSetting.UserDataStripeDepth" }]
 582              uint64 UserDataStripeDepthMax;
 583           };
 584           
 585           
 586           // ==================================================================
 587           // StoragePool
 588           // ==================================================================
 589 karl  1.1    [Version ( "2.8.1000" ), Description (
 590                  "A pool of Storage that is managed within the scope of a "
 591                  "particular System. StoragePools may consist of component "
 592                  "StoragePools or StorageExtents. StorageExtents that belong to "
 593                  "the StoragePool have a Component relationship to the "
 594                  "StoragePool. StorageExtents/StoragePools that are elements of "
 595                  "a pool have their available space aggregated into the pool. "
 596                  "StoragePools, StorageVolumes and LogicalDisks may be created "
 597                  "from StoragePools. This is indicated by the "
 598                  "AllocatedFromStoragePool association. StoragePool is scoped to "
 599                  "a system by the HostedStoragePool association.")]
 600           class CIM_StoragePool : CIM_LogicalElement {
 601           
 602                 [Key, Description (
 603                     "Within the scope of the instantiating Namespace, InstanceID "
 604                     "opaquely and uniquely identifies an instance of this class. "
 605                     "In order to ensure uniqueness within the NameSpace, the "
 606                     "value of InstanceID SHOULD be constructed using the "
 607                     "following 'preferred' algorithm: \n"
 608                     "<OrgID>:<LocalID> \n"
 609                     "Where <OrgID> and <LocalID> are separated by a colon ':', "
 610 karl  1.1           "and where <OrgID> MUST include a copyrighted, trademarked "
 611                     "or otherwise unique name that is owned by the business "
 612                     "entity creating/defining the InstanceID, or is a registered "
 613                     "ID that is assigned to the business entity by a recognized "
 614                     "global authority (This is similar to the <Schema "
 615                     "Name>_<Class Name> structure of Schema class names.) In "
 616                     "addition, to ensure uniqueness <OrgID> MUST NOT contain a "
 617                     "colon (':'). When using this algorithm, the first colon to "
 618                     "appear in InstanceID MUST appear between <OrgID> and "
 619                     "<LocalID>. \n"
 620                     "<LocalID> is chosen by the business entity and SHOULD not "
 621                     "be re-used to identify different underlying (real-world) "
 622                     "elements. If the above 'preferred' algorithm is not used, "
 623                     "the defining entity MUST assure that the resultant "
 624                     "InstanceID is not re-used across any InstanceIDs produced "
 625                     "by this or other providers for this instance's NameSpace. \n"
 626                     "For DMTF defined instances, the 'preferred' algorithm MUST "
 627                     "be used with the <OrgID> set to 'CIM'.")]
 628              string InstanceID;
 629           
 630                 [Required, Description (
 631 karl  1.1           "A unique name in the context of the System that identifies "
 632                     "this pool."), 
 633                  MaxLen ( 256 )]
 634              string PoolID;
 635           
 636                 [Description (
 637                     "If true, \"Primordial\" indicates that the containing "
 638                     "System does not have the ability to create or delete this "
 639                     "operational element. This is important because higher-level "
 640                     "StoragePools may be assembled using the Component or "
 641                     "AllocatedFromStoragePool associations. Although the "
 642                     "higher-level abstractions can be created and deleted, the "
 643                     "most basic, (i.e. primordial), hardware-based StoragePools "
 644                     "cannot. They are physically realized as part of the System, "
 645                     "or are actually managed by some other System and imported "
 646                     "as if they were physically realized.")]
 647              boolean Primordial=false;
 648           
 649                 [Description (
 650                     "The total amount of raw storage (in bytes) managed by this "
 651                     "StoragePool. This includes all of the bytes consumed to "
 652 karl  1.1           "create the storage surfaced by this StoragePool, including "
 653                     "all of the overhead bytes that are not reflected in the "
 654                     "size of the logical storage allocated from this "
 655                     "StoragePool. \n"
 656                     "Conceptually TotalManagedSpace reflects all storage known "
 657                     "via Component associations to underlying StorageExtents or "
 658                     "via AllocatedFromStoragePool associations to underlying "
 659                     "StoragePools. However, note that this underlying storage "
 660                     "may not be surfaced by the instrumentation."), 
 661                  Units ( "Bytes" ), 
 662                  ModelCorrespondence { "CIM_StoragePool.RemainingManagedSpace" }]
 663              uint64 TotalManagedSpace;
 664           
 665                 [Required, Description (
 666                     "The remaining amount of raw storage (in bytes) from the "
 667                     "TotalManagedSpace of this StoragePool. This property is "
 668                     "maintained here to provide efficient access to this "
 669                     "information. However, note that it is possible to compute "
 670                     "RemainingManagedSpace as (TotalManagedSpace minus the sum "
 671                     "of SpaceConsumed from all of the AllocatedFromStoragePool "
 672                     "references from this StoragePool). Note that SpaceConsumed "
 673 karl  1.1           "remains useful to determine the amount of raw storage "
 674                     "consumed by a particular allocated element."), 
 675                  Units ( "Bytes" ), 
 676                  ModelCorrespondence { "CIM_StoragePool.TotalManagedSpace",
 677                     "CIM_AllocatedFromStoragePool.SpaceConsumed" }]
 678              uint64 RemainingManagedSpace;
 679           
 680                 [Description (
 681                     "For pools that support discrete sizes for volume or pool "
 682                     "creation, this method can be used to retrieve a list of "
 683                     "supported sizes. Note that different pool implementations "
 684                     "may support either or both the GetSupportedSizes and "
 685                     "GetSupportedSizeRanges methods at different times, "
 686                     "depending on Pool configuration. Also note that the "
 687                     "advertised sizes may change after the call due to requests "
 688                     "from other clients. If the pool currently only supports a "
 689                     "range of sizes, then the return value will be set to 1."), 
 690                  ValueMap { "0", "1", "2" }, 
 691                  Values { "Method completed OK", "Method not supported",
 692                     "Use GetSupportedSizeRange instead" }]
 693              uint32 GetSupportedSizes ( 
 694 karl  1.1          [IN, Description (
 695                        "The type of element for which supported sizes are "
 696                        "reported for."), 
 697                     ValueMap { "2", "3", "4" }, 
 698                     Values { "Storage Pool", "Storage Volume", "Logical Disk" }]
 699                 uint16 ElementType, 
 700                    [IN, Description (
 701                        "The StorageSetting for which supported sizes should be "
 702                        "reported for.")]
 703                 CIM_StorageSetting REF Goal, 
 704                    [IN ( false ), OUT, Description (
 705                        "List of supported sizes for a Volume/Pool creation or "
 706                        "modification."), 
 707                     Units ( "Bytes" )]
 708                 uint64 Sizes[] ); 
 709           
 710                 [Description (
 711                     "For pools that that support a range of sizes for volume or "
 712                     "pool creation, this method can be used to retrieve the "
 713                     "supported range. Note that different pool implementations "
 714                     "may support either or both the GetSupportedSizes and "
 715 karl  1.1           "GetSupportedSizeRanges methods at different times, "
 716                     "depending on Pool configuration. Also note that the "
 717                     "advertised sizes may change after the call due to requests "
 718                     "from other clients. If the pool currently only supports "
 719                     "discrete sizes, then the return value will be set to 1."), 
 720                  ValueMap { "0", "1", "2" }, 
 721                  Values { "Method completed OK", "Method not supported",
 722                     "Use GetSupportedSizes instead" }]
 723              uint32 GetSupportedSizeRange ( 
 724                    [IN, Description (
 725                        "The type of element for which supported size ranges are "
 726                        "reported for."), 
 727                     ValueMap { "2", "3", "4" }, 
 728                     Values { "Storage Pool", "Storage Volume", "Logical Disk" }]
 729                 uint16 ElementType, 
 730                    [IN, Description (
 731                        "The StorageSetting for which supported size ranges "
 732                        "should be reported for.")]
 733                 CIM_StorageSetting REF Goal, 
 734                    [IN ( false ), OUT, Description (
 735                        "The minimum size for a volume/pool in bytes."), 
 736 karl  1.1           Units ( "Bytes" )]
 737                 uint64 MinimumVolumeSize, 
 738                    [IN ( false ), OUT, Description (
 739                        "The maximum size for a volume/pool in bytes."), 
 740                     Units ( "Bytes" )]
 741                 uint64 MaximumVolumeSize, 
 742                    [IN ( false ), OUT, Description (
 743                        "A volume/pool size must be a multiple of this value "
 744                        "which is specified in bytes."), 
 745                     Units ( "Bytes" )]
 746                 uint64 VolumeSizeDivisor); 
 747           
 748                 [Experimental, Description (
 749                     "This method can be used to retrieve a list of available "
 750                     "Extents that may be used in the creation or modification of "
 751                     "a StoragePool, StorageVolume, or LogicalDisk. The "
 752                     "GetAvailableExtents method MUST return the Extents from the "
 753                     "set of Component Extents of the Pool on which the method is "
 754                     "being invoked. The returned Extents are available at the "
 755                     "time the method returns. There is no guarantee that the "
 756                     "same Extents will be available later. This method MUST "
 757 karl  1.1           "return the Extents that are not being used as supporting "
 758                     "capacity for any other Pools, Volumes, or LogicalDisks that "
 759                     "have been allocated from this Pool. The Extent returned "
 760                     "MUST be a component Extent of the Pool or subdivisions of a "
 761                     "component Extent, the subdivisions themselves represented "
 762                     "as Extents."), 
 763                  ValueMap { "0", "1", "2", "3", "4", "5", "6", "..",
 764                     "4098..32767", "32768..65535" }, 
 765                  Values { "Completed with No Error", "Not Supported", "Unknown",
 766                     "Timeout", "Failed", "Invalid Parameter", "In Use",
 767                     "DMTF Reserved", "Method Reserved", "Vendor Specific" }]
 768              uint32 GetAvailableExtents ( 
 769                    [IN, Description (
 770                        "The StorageSetting (Goal) for which supported extents "
 771                        "should be retrieved as available. \n"
 772                        "If a NULL is passed for the Goal, the method will return "
 773                        "all available extents, regardless of the goal. There "
 774                        "exists a possibility of error in creating a Pool, "
 775                        "Volume, or LogicalDisk retrieved in this manner.")]
 776                 CIM_StorageSetting REF Goal, 
 777                    [OUT, Description (
 778 karl  1.1              "List of references to available StorageExtents, or "
 779                        "subclass instances.")]
 780                 CIM_StorageExtent REF AvailableExtents[] ); 
 781           };
 782           
 783           
 784           // ==================================================================
 785           // StorageCapabilities
 786           // ==================================================================
 787              [Version ( "2.8.1000" ), Description (
 788                  "A subclass of Capabilities that defines the Capabilities of a "
 789                  "StorageService or StoragePool. For example, an instance of "
 790                  "StorageCapabilities could be associated with either a "
 791                  "StorageConfigurationService or StoragePool by using "
 792                  "ElementCapabilities.")]
 793           class CIM_StorageCapabilities : CIM_Capabilities {
 794           
 795                 [Description (
 796                     "Enumeration indicating the type of element to which this "
 797                     "StorageCapabilities applies."), 
 798                  ValueMap { "0", "1", "2", "3", "4", "5", "6", "7" }, 
 799 karl  1.1        Values { "Unknown", "Reserved", "Any Type", "StorageVolume",
 800                     "StorageExtent", "StoragePool",
 801                     "StorageConfigurationService", "LogicalDisk" }]
 802              uint16 ElementType;
 803           
 804                 [Description (
 805                     "Indicates whether or not the associated element supports no "
 806                     "single point of failure. Values are: FALSE = does not "
 807                     "support no single point of failure, and TRUE = supports no "
 808                     "single point of failure."), 
 809                  ModelCorrespondence { 
 810                     "CIM_StorageCapabilities.NoSinglePointOfFailureDefault" }]
 811              boolean NoSinglePointOfFailure;
 812           
 813                 [Description (
 814                     "Indicates the default value for the NoSinglePointOfFailure "
 815                     "property."), 
 816                  ModelCorrespondence { 
 817                     "CIM_StorageCapabilities.NoSinglePointOfFailure" }]
 818              boolean NoSinglePointOfFailureDefault;
 819           
 820 karl  1.1       [Description (
 821                     "DataRedundancyMax describes the maximum number of complete "
 822                     "copies of data that can be maintained. Examples would be "
 823                     "RAID 5 (where 1 copy is maintained) and RAID 1 (where 2 or "
 824                     "more copies are maintained). Possible values are 1 to n. "
 825                     "The default redundancy is specified using "
 826                     "DataRedundancyDefault, while the minimum is defined by "
 827                     "DataRedundancyMin."), 
 828                  MinValue ( 1 ), 
 829                  ModelCorrespondence { 
 830                     "CIM_StorageCapabilities.DataRedundancyMin",
 831                     "CIM_StorageCapabilities.DataRedundancyDefault" }]
 832              uint16 DataRedundancyMax;
 833           
 834                 [Description (
 835                     "DataRedundancyMin describes the minimum number of complete "
 836                     "copies of data that can be maintained. Examples would be "
 837                     "RAID 5 where 1 copy is maintained and RAID 1 where 2 or "
 838                     "more copies are maintained). Possible values are 1 to n. "
 839                     "The default redundancy is specified using "
 840                     "DataRedundancyDefault, while the maximum is defined by "
 841 karl  1.1           "DataRedundancyMax."), 
 842                  MinValue ( 1 ), 
 843                  ModelCorrespondence { 
 844                     "CIM_StorageCapabilities.DataRedundancyMax",
 845                     "CIM_StorageCapabilities.DataRedundancyDefault" }]
 846              uint16 DataRedundancyMin;
 847           
 848                 [Description (
 849                     "DataRedundancyDefault describes the default number of "
 850                     "complete copies of data that can be maintained. Examples "
 851                     "would be RAID 5 where 1 copy is maintained and RAID 1 where "
 852                     "2 or more copies are maintained. Possible values are 1 to "
 853                     "n. The bounds for the redundancy (max and min) are defined "
 854                     "by DataRedundancyMax and DataRedundancyMin."), 
 855                  MinValue ( 1 ), 
 856                  ModelCorrespondence { 
 857                     "CIM_StorageCapabilities.DataRedundancyMax",
 858                     "CIM_StorageCapabilities.DataRedundancyMin" }]
 859              uint16 DataRedundancyDefault;
 860           
 861                 [Description (
 862 karl  1.1           "PackageRedundancyMax describes the maximum number of "
 863                     "redundant packages that can be used. For example, in the "
 864                     "storage domain, package redundancy describes how many disk "
 865                     "spindles can fail without data loss including, at most, one "
 866                     "spare. An example would be RAID5 with a spare disk which "
 867                     "would have a PackageRedundancy of 2. Possible values are 0 "
 868                     "to n. The default redundancy is specified using "
 869                     "PackageRedundancyDefault, while the maximum is defined by "
 870                     "PackageRedundancyMax."), 
 871                  ModelCorrespondence { 
 872                     "CIM_StorageCapabilities.PackageRedundancyMin",
 873                     "CIM_StorageCapabilities.PackageRedundancyDefault" }]
 874              uint16 PackageRedundancyMax;
 875           
 876                 [Description (
 877                     "PackageRedundancyMin describes the minimum number of "
 878                     "redundant packages that can be used. For example, in the "
 879                     "storage domain, package redundancy describes how many disk "
 880                     "spindles can fail without data loss including, at most, one "
 881                     "spare. An example would be RAID5 with a spare disk which "
 882                     "would have a PackageRedundancy of 2. Possible values are 0 "
 883 karl  1.1           "to n. The default redundancy is specified using "
 884                     "PackageRedundancyDefault, while the minimum is defined by "
 885                     "PackageRedundancyMin."), 
 886                  ModelCorrespondence { 
 887                     "CIM_StorageCapabilities.PackageRedundancyMax",
 888                     "CIM_StorageCapabilities.PackageRedundancyDefault" }]
 889              uint16 PackageRedundancyMin;
 890           
 891                 [Description (
 892                     "PackageRedundancyDefault describes the default number of "
 893                     "redundant packages that will be used. For example, in the "
 894                     "storage domain, package redundancy describes how many disk "
 895                     "spindles can fail without data loss including, at most, one "
 896                     "spare. An example would be RAID5 with a spare disk which "
 897                     "would have a PackageRedundancy of 2. Possible values are 0 "
 898                     "to n. The bounds for redundancy are specified using the "
 899                     "properties, PackageRedundancyMax and PackageRedundancyMin."), 
 900                  ModelCorrespondence { 
 901                     "CIM_StorageCapabilities.PackageRedundancyMin",
 902                     "CIM_StorageCapabilities.PackageRedundancyMax" }]
 903              uint16 PackageRedundancyDefault;
 904 karl  1.1 
 905                 [Description (
 906                     "DeltaReservatioMax is a number between 1 (1%) and a 100 "
 907                     "(100%) that specifies the maximum amount of space reserved "
 908                     "in a replica for caching changes. For a complete copy this "
 909                     "would be 100%, but it can be lower in some implementations. "
 910                     "This parameter sets the upper limit, while "
 911                     "DeltaReservationMin sets the lower limit."), 
 912                  Units ( "Percentage" ), MinValue ( 0 ), MaxValue ( 100 ), 
 913                  ModelCorrespondence { 
 914                     "CIM_StorageCapabilities.DeltaReservationMin",
 915                     "CIM_StorageCapabilities.DeltaReservationDefault" }]
 916              uint16 DeltaReservationMax;
 917           
 918                 [Description (
 919                     "DeltaReservationMin is a number between 1 (1%) and a 100 "
 920                     "(100%) that specifies the minimum amount of space that "
 921                     "should be reserved in a replica for caching changes. For a "
 922                     "complete copy this would be 100%, but it can be lower in "
 923                     "some implementations. This parameter sets the lower limit, "
 924                     "while DeltaReservationMax sets the upper limit."), 
 925 karl  1.1        Units ( "Percentage" ), MinValue ( 0 ), MaxValue ( 100 ), 
 926                  ModelCorrespondence { 
 927                     "CIM_StorageCapabilities.DeltaReservationMax",
 928                     "CIM_StorageCapabilities.DeltaReservationDefault" }]
 929              uint16 DeltaReservationMin;
 930           
 931                 [Description (
 932                     "Delta reservation is a number between 1 (1%) and a 100 "
 933                     "(100%) that specifies how much space should be reserved by "
 934                     "default in a replica for caching changes. For a complete "
 935                     "copy this would be 100%, but it can be lower in some "
 936                     "implementations. This parameter sets the default value, "
 937                     "while DeletaReservationMax and DeltReservationMin set the "
 938                     "upper and lower bounds."), 
 939                  Units ( "Percentage" ), MinValue ( 0 ), MaxValue ( 100 ), 
 940                  ModelCorrespondence { 
 941                     "CIM_StorageCapabilities.DeltaReservationMax",
 942                     "CIM_StorageCapabilities.DeltaReservationMin" }]
 943              uint16 DeltaReservationDefault;
 944           
 945                 [Description (
 946 karl  1.1           "Method to create and populate a StorageSetting instance "
 947                     "from a StorageCapability instance. This removes the need to "
 948                     "populate default settings and other settings in the context "
 949                     "of each StorageCapabilities (which could be numerous). If "
 950                     "the underlying instrumentation supports the "
 951                     "StorageSettingWithHints subclass, then an instance of that "
 952                     "class will be created instead."), 
 953                  ValueMap { "0", "1", "2", "3", "4", "5", "..", "32768..65535" }, 
 954                  Values { "Success", "Not Supported", "Unspecified Error",
 955                     "Timeout", "Failed", "Invalid Parameter", "DMTF Reserved",
 956                     "Vendor Specific" }]
 957              uint32 CreateSetting ( 
 958                    [IN, Description (
 959                        "If 'Default' is passed for the CreateDefault parameter, "
 960                        "the Max, Goal, and Min setting attributes are set to the "
 961                        "Default values of the parent StorageCapabilities when "
 962                        "the instance is created. \n"
 963                        "If set to 'Goal' the new StorageSetting attributes are "
 964                        "set to the related attributes of the parent "
 965                        "StorageCapabilities, e.g. Min to Min, Goal to Default, "
 966                        "and Max to Max. \n"
 967 karl  1.1              "\n"
 968                        "This method maybe deprecated in lieu of intrinsics once "
 969                        "limitations in the CIM Operations are addressed."), 
 970                     ValueMap { "2", "3" }, 
 971                     Values { "Default", "Goal" }]
 972                 uint16 SettingType, 
 973                    [IN ( False ), OUT, Description (
 974                        "Reference to the created StorageSetting instance.")]
 975                 CIM_StorageSetting REF NewSetting ); 
 976           
 977                 [Experimental, Description (
 978                     "Extent Stripe Length describes the number of underlying "
 979                     "StorageExtents across which data is striped in the common "
 980                     "striping-based storage organizations. This is also known as "
 981                     "the number of 'members' or 'columns'. \n"
 982                     "A NULL value for ExtentStripeLengthDefault indicates that "
 983                     "the system does not support configuration of storage by "
 984                     "specifying Stripe Length. \n"
 985                     "If Extent Stripe Length is supported, and this Capabilities "
 986                     "instance is associated with a pool that was created with a "
 987                     "range of QOS then ExtentStripeLengthDefault represents the "
 988 karl  1.1           "default value. Other available values(such as min, max, and "
 989                     "discrete values) can be determined by using the "
 990                     "'GetSupportedStripeLengths' and "
 991                     "'GetSupportedStripeLengthRange' methods. \n"
 992                     "If Extent Stripe Length is supported and the pool was "
 993                     "created with a single specific QOS, representing a Raid "
 994                     "group, set, or rank, then this property represents the "
 995                     "current/fixed value for the pool, and Extent Stripe Length "
 996                     "is not supported in subsequent creation of elements from "
 997                     "this pool. Consequently, the 'GetSupportedStripeLength' "
 998                     "methods cannot be used, and in a StorageSetting instance "
 999                     "used as a goal when creating or modifying a child element "
1000                     "of the pool, ExtentStripeLengthGoal, ExtentStripeLengthMin, "
1001                     "and ExtentStripeLengthMax MUST be set to NULL."), 
1002                  MinValue ( 1 )]
1003              uint16 ExtentStripeLengthDefault;
1004           
1005                 [Experimental, Description (
1006                     "ParityLayout specifies whether a parity-based storage "
1007                     "organization is using rotated or non-rotated parity. If "
1008                     "this capabilities instance is associated with a pool that "
1009 karl  1.1           "was created with a range of QOS then ParityLayoutDefault "
1010                     "represents the default value. Other available values can be "
1011                     "determined by using the 'GetSupportedParityLayouts' method. "
1012                     "If the pool was created with a single specific QOS, "
1013                     "representing a Raid group, set, or rank, then this property "
1014                     "represents the current/fixed value for the pool, and "
1015                     "ParityLayout is not supported in subsequent creation of "
1016                     "elements from this pool. Consequently, the "
1017                     "'GetSupportedParityLayouts' method cannot be used, and the "
1018                     "ParityLayoutGoal property in StorageSetting instances used "
1019                     "in child element operations on this pool MUST be set to "
1020                     "NULL. A NULL value for ParityLayoutDefault indicates that "
1021                     "the system does not support configuration of storage by "
1022                     "specifying ParityLayout."), 
1023                  ValueMap { "2", "3" }, 
1024                  Values { "Non-Rotated Parity", "Rotated Parity" }]
1025              uint16 ParityLayoutDefault;
1026           
1027                 [Experimental, Description (
1028                     "User Data Stripe Depth describes the number of bytes "
1029                     "forming a strip in common striping-based storage "
1030 karl  1.1           "organizations. The strip is defined as the size of the "
1031                     "portion of a stripe that lies on one extent. Thus, "
1032                     "ExtentStripeLength * UserDataStripeDepth will yield the "
1033                     "size of one stripe of user data. A NULL value for "
1034                     "UserDataStripeDepthDefault indicates that the system does "
1035                     "not support configuration of storage by specifying Stripe "
1036                     "Depth. \n"
1037                     "If User Data Stripe Depth is supported, and this "
1038                     "Capabilities instance is associated with a pool that was "
1039                     "created with a range of QOS then UserDataStripeDepthDefault "
1040                     "represents the default value. Other available values(such "
1041                     "as min, max, and discrete values) can be determined by "
1042                     "using the 'GetSupportedStripeDepths' and "
1043                     "'GetSupportedStripeDepthRange' methods. \n"
1044                     "If User Data Stripe Depth is supported and the pool was "
1045                     "created with a single specific QOS, representing a Raid "
1046                     "group, set, or rank, then this property represents the "
1047                     "current/fixed value for the pool, and User Data Stripe "
1048                     "Depth is not supported in subsequent creation of elements "
1049                     "from this pool. Consequently, the 'GetSupportedStripeDepth' "
1050                     "methods cannot be used, and in a StorageSetting instance "
1051 karl  1.1           "used as a goal when creating or modifying a child element "
1052                     "of the pool, UserDataStripeDepthGoal, UserStripeDepthMin, "
1053                     "and UserDataStripeDepthMax MUST be set to NULL."), 
1054                  Units ( "Bytes" ), MinValue ( 1 )]
1055              uint64 UserDataStripeDepthDefault;
1056           
1057           
1058                 [Experimental, Description (
1059                     "For systems that support discrete ExtentStripeLengths for "
1060                     "volume or pool creation, this method can be used to "
1061                     "retrieve a list of supported values. Note that different "
1062                     "implementations may support either the "
1063                     "GetSupportedStripeLengths or the "
1064                     "GetSupportedStripeLengthRange method. Also note that the "
1065                     "advertised sizes may change after the call due to requests "
1066                     "from other clients. If the system only supports a range of "
1067                     "sizes, then the return value will be set to 3."), 
1068                  ValueMap { "0", "1", "2", "3" }, 
1069                  Values { "Method completed OK", "Method not supported",
1070                     "Choices not available for this Capability",
1071                     "Use GetSupportedStripeLengthRange instead" }]
1072 karl  1.1    uint32 GetSupportedStripeLengths ( 
1073                    [IN ( false ), OUT, Description (
1074                        "List of supported ExtentStripeLengths for a Volume/Pool "
1075                        "creation or modification."), 
1076                     ArrayType ( "Indexed" )]
1077                 uint16 StripeLengths[] ); 
1078           
1079                 [Experimental, Description (
1080                     "For systems that support a range of ExtentStripeLengths for "
1081                     "volume or pool creation, this method can be used to "
1082                     "retrieve the supported range. Note that different "
1083                     "implementations may support either the "
1084                     "GetSupportedExtentLengths or the "
1085                     "GetSupportedExtentLengthRange method. Also note that the "
1086                     "advertised sizes may change after the call due to requests "
1087                     "from other clients. If the system only supports discrete "
1088                     "values, then the return value will be set to 3."), 
1089                  ValueMap { "0", "1", "2", "3" }, 
1090                  Values { "Method completed OK", "Method not supported",
1091                     "Choices not available for this Capability",
1092                     "Use GetSupportedStripeLengths instead" }]
1093 karl  1.1    uint32 GetSupportedStripeLengthRange ( 
1094                    [IN ( false ), OUT, Description (
1095                        "The minimum ExtentStripeDepth for a volume/pool in "
1096                        "bytes.")]
1097                 uint16 MinimumStripeLength, 
1098                    [IN ( false ), OUT, Description (
1099                        "The maximum ExtentStripeLength for a volume/pool in "
1100                        "bytes.")]
1101                 uint16 MaximumStripeLength, 
1102                    [IN ( false ), OUT, Description (
1103                        "A volume/pool ExtentStripeLength must be a multiple of "
1104                        "this value which is specified in bytes.")]
1105                 uint32 StripeLengthDivisor ); 
1106           
1107                 [Description (
1108                     "For systems that support Parity-based storage organizations "
1109                     "for volume or pool creation, this method can be used to the "
1110                     "supported parity layouts."), 
1111                  ValueMap { "0", "1", "2" }, 
1112                  Values { "Method completed OK", "Method not supported",
1113                     "Choice not aavailable for this capability" }]
1114 karl  1.1    uint32 GetSupportedParityLayouts ( 
1115                    [IN ( false ), OUT, Description (
1116                        "List of supported Parity for a Volume/Pool creation or "
1117                        "modification."), 
1118                     ValueMap { "2", "3" }, 
1119                     Values { "Non-Rotated Parity", "Rotated Parity" },
1120                     ArrayType ( "Indexed" )]
1121                 uint16 ParityLayout[] ); 
1122           
1123           
1124                 [Experimental, Description (
1125                     "For systems that support discrete UserDataStripeDepths for "
1126                     "volume or pool creation, this method can be used to "
1127                     "retrieve a list of supported values. Note that different "
1128                     "implementations may support either the "
1129                     "GetSupportedStripeDepths or the "
1130                     "GetSupportedStripeDepthRange method. If the system only "
1131                     "supports a range of sizes, then the return value will be "
1132                     "set to 2."), 
1133                  ValueMap { "0", "1", "2" }, 
1134                  Values { "Method completed OK", "Method not supported",
1135 karl  1.1           "Use GetSupportedStripeDepthRange instead" }]
1136              uint32 GetSupportedStripeDepths ( 
1137                    [IN ( false ), OUT, Description (
1138                        "List of supported UserDataStripeDepths for a Volume/Pool "
1139                        "creation or modification."), 
1140                     Units ( "Bytes" ), ArrayType ( "Indexed" )]
1141                 uint64 StripeDepths[] ); 
1142           
1143                 [Experimental, Description (
1144                     "For systems that support a range of UserDataStripeDepths "
1145                     "for volume or pool creation, this method can be used to "
1146                     "retrieve the supported range. Note that different "
1147                     "implementations may support either the "
1148                     "GetSupportedStripeDepths or the "
1149                     "GetSupportedStripeDepthRange method. If the system only "
1150                     "supports discrete values, then the return value will be set "
1151                     "to 2."), 
1152                  ValueMap { "0", "1", "2" }, 
1153                  Values { "Method completed OK", "Method not supported",
1154                     "Use GetSupportedStripeDepths instead" }]
1155              uint32 GetSupportedStripeDepthRange ( 
1156 karl  1.1          [IN ( false ), OUT, Description (
1157                        "The minimum UserDataStripeDepth for a volume/pool in "
1158                        "bytes."), 
1159                     Units ( "Bytes" )]
1160                 uint64 MinimumStripeDepth, 
1161                    [IN ( false ), OUT, Description (
1162                        "The maximum UserDataStripeDepth for a volume/pool in "
1163                        "bytes."), 
1164                     Units ( "Bytes" )]
1165                 uint64 MaximumStripeDepth, 
1166                    [IN ( false ), OUT, Description (
1167                        "A volume/pool UserDataStripeDepth must be a multiple of "
1168                        "this value which is specified in bytes."), 
1169                     Units ( "Bytes" )]
1170                 uint64 StripeDepthDivisor ); 
1171           
1172           };
1173           
1174           // ==================================================================
1175           // StorageConfigurationService
1176           // ==================================================================
1177 karl  1.1    [Version ( "2.8.1000" ), Description (
1178                  "This service allows the active management of a Storage Server. "
1179                  "It allows jobs to be started for the creation, modification "
1180                  "and deletion of storage objects (StoragePools, StorageVolumes "
1181                  "and LogicalDisks).")]
1182           class CIM_StorageConfigurationService : CIM_Service {
1183           
1184                 [Description (
1185                     "Starts a job to create (or modify) a StoragePool. The "
1186                     "StoragePool will be (or must be) scoped to the same System "
1187                     "as this Service. One of the parameters for this method is "
1188                     "Size. As an input parameter, Size specifies the desired "
1189                     "size of the pool. As an output parameter, it specifies the "
1190                     "size achieved. Space is taken from either or both of the "
1191                     "specified input StoragePools and StorageExtents (InPools "
1192                     "and InExtents). The capability requirements that the Pool "
1193                     "must support are defined using the Goal parameter. If the "
1194                     "requested pool size cannot be created, no action will be "
1195                     "taken, the Return Value will be 4097/0x1001, and the output "
1196                     "value of Size will be set to the nearest possible size. If "
1197                     "0 is returned, then the task completed successfully and the "
1198 karl  1.1           "use of ConcreteJob was not required. If the task will take "
1199                     "some time to complete, a ConcreteJob will be created and "
1200                     "its reference returned in the output parameter Job."), 
1201                  ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
1202                     "4097", "4098..32767", "32768..65535" }, 
1203                  Values { "Job Completed with No Error", "Not Supported",
1204                     "Unknown", "Timeout", "Failed", "Invalid Parameter",
1205                     "In Use", "DMTF Reserved",
1206                     "Method Parameters Checked - Job Started",
1207                     "Size Not Supported", "Method Reserved", "Vendor Specific" }]
1208              uint32 CreateOrModifyStoragePool ( 
1209                    [IN, Description (
1210                        "A end user relevant name for the pool being created. If "
1211                        "NULL, then a system supplied default name can be used. "
1212                        "The value will be stored in the 'ElementName' property "
1213                        "for the created pool. If not NULL, this parameter will "
1214                        "supply a new name when modifying an existing pool.")]
1215                 string ElementName, 
1216                    [IN ( false ), OUT, Description (
1217                        "Reference to the job (may be null if job completed).")]
1218                 CIM_ConcreteJob REF Job, 
1219 karl  1.1          [IN, Description (
1220                        "Reference to an instance of StorageSetting that defines "
1221                        "the desired capabilities of the StoragePool. If set to a "
1222                        "null value, the default configuration from the source "
1223                        "pool will be used. If not NULL, this parameter will "
1224                        "supply a new Goal setting when modifying an existing "
1225                        "pool.")]
1226                 CIM_StorageSetting REF Goal, 
1227                    [IN, OUT, Description (
1228                        "As an input parameter this specifies the desired pool "
1229                        "size in bytes. As an output parameter this specifies the "
1230                        "size achieved."), 
1231                     Units ( "Bytes" )]
1232                 uint64 Size, 
1233                    [IN, Description (
1234                        "Array of strings containing representations of "
1235                        "references to CIM_StoragePool instances, that are used "
1236                        "to create the Pool or modify the source pools.")]
1237                 string InPools[], 
1238                    [IN, Description (
1239                        "Array of strings containing representations of "
1240 karl  1.1              "references to CIM_StorageExtent instances, that are used "
1241                        "to create the Pool or modify the source extents.")]
1242                 string InExtents[], 
1243                    [IN, OUT, Description (
1244                        "As an input parameter: if null, creates a new "
1245                        "StoragePool. If not null, modifies the referenced Pool. "
1246                        "When returned, it is a reference to the resulting "
1247                        "StoragePool.")]
1248                 CIM_StoragePool REF Pool); 
1249           
1250                 [Description (
1251                     "Start a job to create (or modify) a specified element (for "
1252                     "example a StorageVolume or StorageExtent) from a "
1253                     "StoragePool. One of the parameters for this method is Size. "
1254                     "As an input parameter, Size specifies the desired size of "
1255                     "the element. As an output parameter, it specifies the size "
1256                     "achieved. Space is taken from the input StoragePool. The "
1257                     "desired settings for the element are specified by the Goal "
1258                     "parameter. If the requested size cannot be created, no "
1259                     "action will be taken, and the Return Value will be "
1260                     "4097/0x1001. Also, the output value of Size is set to the "
1261 karl  1.1           "nearest possible size. If 0 is returned, the function "
1262                     "completed successfully and no ConcreteJob instance was "
1263                     "required. If 4096/0x1000 is returned, a ConcreteJob will be "
1264                     "started to create the element. The Job's reference will be "
1265                     "returned in the output parameter Job."), 
1266                  ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
1267                     "4097", "4098..32767", "32768..65535" }, 
1268                  Values { "Job Completed with No Error", "Not Supported",
1269                     "Unknown", "Timeout", "Failed", "Invalid Parameter",
1270                     "In Use", "DMTF Reserved",
1271                     "Method Parameters Checked - Job Started",
1272                     "Size Not Supported", "Method Reserved", "Vendor Specific" }]
1273              uint32 CreateOrModifyElementFromStoragePool( 
1274                    [IN, Description (
1275                        "A end user relevant name for the element being created. "
1276                        "If NULL, then a system supplied default name can be "
1277                        "used. The value will be stored in the 'ElementName' "
1278                        "property for the created element. If not NULL, this "
1279                        "parameter will supply a new name when modifying an "
1280                        "existing element.")]
1281                 string ElementName, 
1282 karl  1.1          [IN, Description (
1283                        "Enumeration indicating the type of element being created "
1284                        "or modified. If the input parameter TheElement is "
1285                        "specified when the operation is a 'modify', this type "
1286                        "value must match the type of that instance."), 
1287                     ValueMap { "0", "1", "2", "3", "4", "..", "32768..65535" }, 
1288                     Values { "Unknown", "Reserved", "StorageVolume",
1289                        "StorageExtent", "LogicalDisk", "DMTF Reserved",
1290                        "Vendor Specific" }]
1291                 uint16 ElementType, 
1292                    [IN ( false ), OUT, Description (
1293                        "Reference to the job (may be null if job completed).")]
1294                 CIM_ConcreteJob REF Job, 
1295                    [IN, Description (
1296                        "The requirements for the element to maintain. If set to "
1297                        "a null value, the default configuration from the source "
1298                        "pool will be used. This parameter should be a reference "
1299                        "to a Setting or Profile appropriate to the element being "
1300                        "created. If not NULL, this parameter will supply a new "
1301                        "Goal when modifying an existing element.")]
1302                 CIM_ManagedElement REF Goal, 
1303 karl  1.1          [IN, OUT, Description (
1304                        "As an input parameter Size specifies the desired size. "
1305                        "If not NULL, this parameter will supply a new size when "
1306                        "modifying an existing element. As an output parameter "
1307                        "Size specifies the size achieved."), 
1308                     Units ( "Bytes" )]
1309                 uint64 Size, 
1310                    [IN, Description (
1311                        "The Pool from which to create the element. This "
1312                        "parameter must be set to null if the input parameter "
1313                        "TheElement is specified (in the case of a 'modify' "
1314                        "operation).")]
1315                 CIM_StoragePool REF InPool, 
1316                    [IN, OUT, Description (
1317                        "As an input parameter: if null, creates a new element. "
1318                        "If not null, then the method modifies the specified "
1319                        "element. As an output parameter, it is a reference to "
1320                        "the resulting element.")]
1321                 CIM_LogicalElement REF TheElement); 
1322           
1323                 [Description (
1324 karl  1.1           "Start a job to delete a StoragePool. The freed space is "
1325                     "returned source StoragePools (indicated by AllocatedFrom "
1326                     "StoragePool) or back to underlying storage extents. If 0 is "
1327                     "returned, the function completed successfully, and no "
1328                     "ConcreteJob was required. If 4096/0x1000 is returned, a "
1329                     "ConcreteJob will be started to delete the StoragePool. A "
1330                     "reference to the Job is returned in the Job parameter."), 
1331                  ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
1332                     "4097..32767", "32768..65535" }, 
1333                  Values { "Job Completed with No Error", "Not Supported",
1334                     "Unknown", "Timeout", "Failed", "Invalid Parameter",
1335                     "In Use", "DMTF Reserved",
1336                     "Method Parameters Checked - Job Started", "Method Reserved",
1337                     "Vendor Specific" }]
1338              uint32 DeleteStoragePool ( 
1339                    [IN ( false ), OUT, Description (
1340                        "Reference to the job (may be null if job completed).")]
1341                 CIM_ConcreteJob REF Job, 
1342                    [IN, Description (
1343                        "Reference to the pool to delete.")]
1344                 CIM_StoragePool REF Pool); 
1345 karl  1.1 
1346                 [Description (
1347                     "Start a job to delete an element previously created from a "
1348                     "StoragePool. The freed space is returned to the source "
1349                     "StoragePool. If 0 is returned, the function completed "
1350                     "successfully and no ConcreteJob was required. If "
1351                     "4096/0x1000 is returned, a ConcreteJob will be started to "
1352                     "delete the element. A reference to the Job is returned in "
1353                     "the Job parameter."), 
1354                  ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
1355                     "4097..32767", "32768..65535" }, 
1356                  Values { "Job Completed with No Error", "Not Supported",
1357                     "Unknown", "Timeout", "Failed", "Invalid Parameter",
1358                     "In Use", "DMTF Reserved",
1359                     "Method Parameters Checked - Job Started", "Method Reserved",
1360                     "Vendor Specific" }]
1361              uint32 ReturnToStoragePool( 
1362                    [IN ( false ), OUT, Description (
1363                        "Reference to the job (may be null if job completed).")]
1364                 CIM_ConcreteJob REF Job, 
1365                    [IN, Description (
1366 karl  1.1              "Reference to the element to return to the StoragePool.")]
1367                 CIM_LogicalElement REF TheElement); 
1368           
1369                 [Description (
1370                     "Start a job to create a new storage object which is a "
1371                     "replica of the specified source storage object. "
1372                     "(SourceElement). Note that using the input paramter, "
1373                     "CopyType, this function can be used to instantiate the "
1374                     "replica, and to create an ongoing association between the "
1375                     "source and replica. If 0 is returned, the function "
1376                     "completed successfully and no ConcreteJob instance is "
1377                     "created. If 4096/0x1000 is returned, a ConcreteJob is "
1378                     "started, a reference to which is returned in the Job output "
1379                     "parameter."), 
1380                  ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
1381                     "4097..32767", "32768..65535" }, 
1382                  Values { "Job Completed with No Error", "Not Supported",
1383                     "Unknown", "Timeout", "Failed", "Invalid Parameter",
1384                     "In Use", "DMTF Reserved",
1385                     "Method Parameters Checked - Job Started", "Method Reserved",
1386                     "Vendor Specific" }]
1387 karl  1.1    uint32 CreateReplica( 
1388                    [IN, Description (
1389                        "A end user relevant name for the element being created. "
1390                        "If NULL, then a system supplied default name can be "
1391                        "used. The value will be stored in the 'ElementName' "
1392                        "property for the created element.")]
1393                 string ElementName, 
1394                    [IN ( false ), OUT, Description (
1395                        "Reference to the job (may be null if job completed).")]
1396                 CIM_ConcreteJob REF Job, 
1397                    [Required, IN, Description (
1398                        "The source storage object which may be a StorageVolume "
1399                        "or storage object.")]
1400                 CIM_LogicalElement REF SourceElement, 
1401                    [IN ( false ), OUT, Description (
1402                        "Reference to the created target storage element (i.e., "
1403                        "the replica).")]
1404                 CIM_LogicalElement REF TargetElement, 
1405                    [IN, Description (
1406                        "The definition for the StorageSetting to be maintained "
1407                        "by the target storage object (the replica).")]
1408 karl  1.1       CIM_StorageSetting REF TargetSettingGoal, 
1409                    [IN, Description (
1410                        "The underlying storage for the target element (the "
1411                        "replica) will be drawn from TargetPool if specified, "
1412                        "otherwise the allocation is implementation specific.")]
1413                 CIM_StoragePool REF TargetPool, 
1414                    [IN, Description (
1415                        "CopyType describes the type of copy that will be made. "
1416                        "Values are: \n"
1417                        "Async: Create and maintain an asynchronous copy of the "
1418                        "source. \n"
1419                        "Sync: Create and maintain a synchronized copy of the "
1420                        "source. \n"
1421                        "UnSyncAssoc: Create an unsynchronized copy and maintain "
1422                        "an association to the source. \n"
1423                        "UnSyncUnAssoc: Create unassociated copy of the source "
1424                        "element."), 
1425                     ValueMap { "2", "3", "4", "5", "..", "32768..65535" }, 
1426                     Values { "Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc",
1427                        "DMTF Reserved", "Vendor Specific" }]
1428                 uint16 CopyType); 
1429 karl  1.1 
1430                 [Description (
1431                     "Modify (or start a job to modify) the synchronization "
1432                     "association between two storage objects. If 0 is returned, "
1433                     "the function completed successfully and no ConcreteJob "
1434                     "instance was created. If 0x1000 is returned, a ConcreteJob "
1435                     "was started and a reference to this Job is returned in the "
1436                     "Job output parameter. A return value of 1 indicates the "
1437                     "method is not supported. All other values indicate some "
1438                     "type of error condition."), 
1439                  ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
1440                     "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
1441                  Values { "Job Completed with No Error", "Not Supported",
1442                     "Unspecified Error", "Timeout", "Failed",
1443                     "Invalid Parameter", "In Use", "DMTF Reserved",
1444                     "Method Parameters Checked - Job Started", "Method Reserved",
1445                     "Vendor Specific" }]
1446              uint32 ModifySynchronization( 
1447                    [IN, Description (
1448                        "Operation describes the type of modification to be made "
1449                        "to the replica. Values are: \n"
1450 karl  1.1              "Detach: 'Forget' the synchronization between two storage "
1451                        "objects. Start to treat the objects as independent. \n"
1452                        "Fracture: Suspend the synchronization between two "
1453                        "storage objects. The association and (typically) changes "
1454                        "are remembered to allow a fast resynchronization. This "
1455                        "may be used during a backup cycle to allow one of the "
1456                        "objects to be copied while the other remains in "
1457                        "production. \n"
1458                        "Resync Replica: Re-establish the synchronization of a "
1459                        "replica. This will negate the action of a previous "
1460                        "Fracture operation. \n"
1461                        "Restore from Replica: Renew the contents of the original "
1462                        "storage object from a replica. \n"
1463                        "Prepare: Get the link ready for a Resync operation to "
1464                        "take place. Some implementations will require this "
1465                        "operation to be invoked to keep the Resync operation as "
1466                        "fast as possible. \n"
1467                        "Unprepare: Clear a prepared state if a Prepare is not to "
1468                        "be followed by a Resync operation. \n"
1469                        "Quiesce: Some applications require notification so that "
1470                        "they can ready the link for an operation. For example "
1471 karl  1.1              "flush any cached data or buffered changes. \n"
1472                        "Unquiesce: Take the link from the quiesced state "
1473                        "(without executing the intended operation. \n"
1474                        "Reset To Sync: Change the CopyType of the association to "
1475                        "Sync (e.g., from the Async CopyType). \n"
1476                        "Reset To Async: Change the CopyType of the association "
1477                        "to Async (e.g., from the Sync CopyType)."), 
1478                     ValueMap { "0","1","2", "3", "4", "5", "6", "7", "8", "9",
1479                        "10", "11", "..", "0x8000..0xFFFF" }, 
1480                     Values { "DMTF Reserved", "DMTF Reserved", "Detach",
1481                        "Fracture", "Resync Replica", "Restore from Replica",
1482                        "Prepare", "Unprepare", "Quiesce", "Unquiesce",
1483                        "Reset To Sync", "Reset To Async", "DMTF Reserved",
1484                        "Vendor Specific" }]
1485                 uint16 Operation, 
1486                    [IN ( false ), OUT, Description (
1487                        "Reference to the job (may be null if the task "
1488                        "completed).")]
1489                 CIM_ConcreteJob REF Job, 
1490                    [IN, Description (
1491                        "The referenced to the StorageSynchronized association "
1492 karl  1.1              "describing the storage source/replica relationship.")]
1493                 CIM_StorageSynchronized REF Synchronization); 
1494           
1495                 [Description (
1496                     "Create (or start a job to create) a StorageSynchronized "
1497                     "relationship between two existing storage objects. Note "
1498                     "that using the input parameter, CopyType, this function can "
1499                     "be used to to create an ongoing association between the "
1500                     "source and replica. If 0 is returned, the function "
1501                     "completed successfully and no ConcreteJob instance is "
1502                     "created. If 0x1000 is returned, a ConcreteJob is started, a "
1503                     "reference to which is returned in the Job output parameter. "
1504                     "A return value of 1 indicates the method is not supported. "
1505                     "All other values indicate some type of error condition."), 
1506                  ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "0x1000",
1507                     "0x1001..0x7FFF", "0x8000..0xFFFF" }, 
1508                  Values { "Job Completed with No Error", "Not Supported",
1509                     "Unspecified Error", "Timeout", "Failed",
1510                     "Invalid Parameter", "In Use", "DMTF Reserved",
1511                     "Method Parameters Checked - Job Started", "Method Reserved",
1512                     "Vendor Specific" }]
1513 karl  1.1    uint32 AttachReplica( 
1514                    [IN ( false ), OUT, Description (
1515                        "Reference to the job (may be null if the task "
1516                        "completed).")]
1517                 CIM_ConcreteJob REF Job, 
1518                    [Required, IN, Description (
1519                        "The source storage object which may be a StorageVolume "
1520                        "or other storage object.")]
1521                 CIM_ManagedElement REF SourceElement, 
1522                    [IN, Description (
1523                        "Reference to the target storage element (i.e., the "
1524                        "replica).")]
1525                 CIM_ManagedElement REF TargetElement, 
1526                    [IN, Description (
1527                        "CopyType describes the type of Synchronized relationship "
1528                        "that will be created. Values are: \n"
1529                        "Async: Create and maintain an asynchronous copy of the "
1530                        "source. \n"
1531                        "Sync: Create and maintain a synchronized copy of the "
1532                        "source. \n"
1533                        "UnSyncAssoc: Create an unsynchronized copy and maintain "
1534 karl  1.1              "an association to the source. \n"
1535                        "UnSyncUnAssoc: Create unassociated copy of the source "
1536                        "element."), 
1537                     ValueMap { "2", "3", "4", "5", "..", "0x8000..0xFFFF" }, 
1538                     Values { "Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc",
1539                        "DMTF Reserved", "Vendor Specific" }]
1540                 uint16 CopyType); 
1541           
1542                 [Experimental, Description (
1543                     "Start a job to create (or modify) a specified storage "
1544                     "element from specified input StorageExtents. The created or "
1545                     "modified storage element can be a StorageExtent, "
1546                     "StorageVolume, LogicalDisk, or StoragePool. An input list "
1547                     "of InElements must be specified. The GetAvailableExtents "
1548                     "method can be used to get a list of valid extents that can "
1549                     "be used to achieve a desired goal. Validity of the extents "
1550                     "is determined by the implementation. As an input parameter, "
1551                     "Size specifies the desired size of the element. As an "
1552                     "output parameter, it specifies the size achieved. Space is "
1553                     "taken from the input InElements. The desired Settings for "
1554                     "the element are specified by the Goal parameter. If the "
1555 karl  1.1           "size of Extents passed is less than the size requested, "
1556                     "then the capacity is drawn from the extents in the order, "
1557                     "left to right, that the Extents were specified. The partial "
1558                     "consumption of an Extent is represented by an Extent for "
1559                     "the capacity used and an Extent for the capacity not used. "
1560                     "If the Size is NULL, then a configuration using all Extents "
1561                     "passed will be attempted. If the requested size cannot be "
1562                     "created, no action will be taken, and the Return Value will "
1563                     "be 4097/0x1001. Also, the output value of Size is set to "
1564                     "the nearest possible size. If 0 is returned, the function "
1565                     "completed successfully and no ConcreteJob instance was "
1566                     "required. If 4096/0x1000 is returned, a ConcreteJob will be "
1567                     "started to create the element. The Job's reference will be "
1568                     "returned in the output parameter Job."), 
1569                  ValueMap { "0", "1", "2", "3", "4", "5", "6", "..", "4096",
1570                     "4097", "4098..32767", "32768..65535" }, 
1571                  Values { "Completed with No Error", "Not Supported", "Unknown",
1572                     "Timeout", "Failed", "Invalid Parameter", "In Use",
1573                     "DMTF Reserved", "Method Parameters Checked - Job Started",
1574                     "Size Not Supported", "Method Reserved", "Vendor Specific" }]
1575              uint32 CreateOrModifyElementFromElements( 
1576 karl  1.1          [IN, Description (
1577                        "A end user relevant name for the element being created. "
1578                        "If NULL, then a system-supplied default name can be "
1579                        "used. The value will be stored in the 'ElementName' "
1580                        "property for the created element. If not NULL, this "
1581                        "parameter will supply a new name when modifying an "
1582                        "existing element.")]
1583                 string ElementName, 
1584                    [Required, IN, Description (
1585                        "Enumeration indicating the type of element being created "
1586                        "or modified. If the input parameter TheElement is "
1587                        "specified when the operation is a 'modify', this type "
1588                        "value must match the type of that instance. The actual "
1589                        "CIM class of the created TheElement can be "
1590                        "vendor-specific, but it must be a derived class of the "
1591                        "appropriate CIM class -- i.e., CIM_StorageVolume, "
1592                        "CIM_StorageExtent, CIM_LogicalDisk, or CIM_StoragePool."), 
1593                     ValueMap { "0", "1", "2", "3", "4", "5", "..",
1594                     "32768..65535" }, 
1595                     Values { "Unknown", "Reserved", "Storage Volume",
1596                        "Storage Extent", "Storage Pool", "Logical Disk",
1597 karl  1.1              "DMTF Reserved", "Vendor Specific" }]
1598                 uint16 ElementType, 
1599                    [IN ( false ), OUT, Description (
1600                        "Reference to the job (may be null if job completed).")]
1601                 CIM_ConcreteJob REF Job, 
1602                    [Required, IN, Description (
1603                        "The requirements for the element to maintain. If set to "
1604                        "a null value, the default configuration associated with "
1605                        "the Service will be used. This parameter should be a "
1606                        "reference to a Setting, SettingData, or Profile "
1607                        "appropriate to the element being created. If not NULL, "
1608                        "this parameter will supply a new Goal when modifying an "
1609                        "existing element.")]
1610                 CIM_ManagedElement REF Goal, 
1611                    [IN, OUT, Description (
1612                        "As an input parameter Size specifies the desired size. "
1613                        "If not NULL, this parameter will supply a new size when "
1614                        "modifying an existing element. As an output parameter "
1615                        "Size specifies the size achieved."), 
1616                     Units ( "Bytes" )]
1617                 uint64 Size, 
1618 karl  1.1          [Required, IN, Description (
1619                        "Array of references to storage element instances that "
1620                        "are used to create or modify TheElement.")]
1621                 CIM_StorageExtent REF InElements[], 
1622                    [IN, OUT, Description (
1623                        "As an input parameter: if null, creates a new element. "
1624                        "If not null, then the method modifies the specified "
1625                        "element. As an output parameter, it is a reference to "
1626                        "the resulting element.")]
1627                 CIM_LogicalElement REF TheElement); 
1628           
1629                 [Experimental, Description (
1630                     "This method requests that the system rescan SCSI devices "
1631                     "for changes in their configuration. If called on a "
1632                     "general-purpose host, the changes are reflected in the list "
1633                     "of devices available to applications (for example, the UNIX "
1634                     "'device tree'. This method may also be used on a storage "
1635                     "appliance to force rescanning of attached SCSI devices. \n"
1636                     "\n"
1637                     "This operation can be disruptive; optional parameters allow "
1638                     "the caller to limit the scan to a single or set of SCSI "
1639 karl  1.1           "device elements. All parameters are optional; if parameters "
1640                     "other Job are passed in as null, a full scan is invoked."), 
1641                  ValueMap { "0", "1", "2", "3", "4", "5", "6..4095", "4096",
1642                     "4097", "4098", "4099", "4100", "..", "32768..65535" }, 
1643                  Values { "Success", "Not Supported", "Unknown", "Timeout",
1644                     "Failed", "Invalid Parameter", "DMTF Reserved",
1645                     "Invalid connection type", "Invalid Initiator",
1646                     "No matching target found", "No matching LUs found",
1647                     "Prohibited by name binding configuration", "DMTF Reserved",
1648                     "Vendor Specific" }]
1649              uint32 ScsiScan ( 
1650                    [IN, OUT, Description (
1651                        "Reference to the job (may be null if job completed).")]
1652                 CIM_ConcreteJob REF Job,
1653                 
1654                    [Description (
1655                        "The type of connection, constrains the scan to initiator "
1656                        "ports of this type. Only used if the Initiators "
1657                        "parameter is null."), 
1658                     ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9" }, 
1659                     Values { "Other", "Fibre Channel", "Parallel SCSI", "SSA",
1660 karl  1.1              "IEEE 1394", "RDMA", "iSCSI", "SAS", "ADT" }, 
1661                     ModelCorrespondence { 
1662                        "CIM_SCSIProtocolEndpoint.ConnectionType" }]
1663                 uint16 ConnectionType,
1664                 
1665                    [Description (
1666                        "The connection type, if the ConnectionType parameter is "
1667                        "\"Other\".")]
1668                 string OtherConnectionType,
1669                 
1670                    [Description (
1671                        "A list of references to initiators. Scanning will be "
1672                        "limited to SCSI targets attached to these initiators. If "
1673                        "this parameter is null and connection is specified, all "
1674                        "initiators of that connection type are scanned. If this "
1675                        "parameter and ConnectionType are null, all targets on "
1676                        "all system initiators are probed.")]
1677                 CIM_SCSIProtocolEndpoint REF Initiators[],
1678                 
1679                    [Description (
1680                        "A list of names or numbers for targets. These should be "
1681 karl  1.1              "formatted to match the appropriate connection type, For "
1682                        "example, PortWWNs would be specified for Fibre Channel "
1683                        "targets.")]
1684                 string Targets[],
1685                 
1686                    [Description (
1687                        "A list of SCSI logical unit numbers representing logical "
1688                        "units hosted on the targets specified in the Targets "
1689                        "argument.")]
1690                 string LogicalUnits[]); 
1691           };
1692           
1693           // ==================================================================
1694           //  StorageConfigurationCapabilities
1695           // ==================================================================
1696              [Version ( "2.8.1000" ), Description (
1697                  "A subclass of Capabilities that defines the Capabilities of a "
1698                  "StorageConfigurationService. An instance of "
1699                  "StorageConfigurationCapabilities is associated with a "
1700                  "StorageConfigurationService using ElementCapabilities. The "
1701                  "properties in this class specify the envelope of capabilites "
1702 karl  1.1        "for storage configuration in the context of the Service or "
1703                  "Pool with which the instance is associated. These properties "
1704                  "correspond to the properties of the same base names in "
1705                  "StorageSetting and StorageSettingWithHints when either is used "
1706                  "as a goal parameter to the StorageConfigurationService methods "
1707                  "(CreateOrModifyStoragePool, "
1708                  "CreateOrModifyElementFromStoragePool, or "
1709                  "CreateOrModifyElementFromElements).")]
1710           class CIM_StorageConfigurationCapabilities : CIM_Capabilities {
1711           
1712                 [Description (
1713                     "Enumeration indicating what operations will be executed as "
1714                     "asynchronous jobs. If an operation is included in both this "
1715                     "and SupportedSynchronousActions then the underlying "
1716                     "implementation is indicating that it may or may not create "
1717                     "a job."), 
1718                  ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10" }, 
1719                  Values { "Storage Pool Creation", "Storage Pool Deletion",
1720                     "Storage Pool Modification", "Storage Element Creation",
1721                     "Storage Element Return", "Storage Element Modification",
1722                     "Replica Creation", "Replica Modification",
1723 karl  1.1           "Replica Attachment" }, 
1724                  ModelCorrespondence { 
1725                     "CIM_StorageConfigurationCapabilities.SupportedSynchronousActions" 
1726                     }]
1727              uint16 SupportedAsynchronousActions[];
1728           
1729                 [Description (
1730                     "Enumeration indicating what operations will be executed "
1731                     "without the creation of a job. If an operation is included "
1732                     "in both this and SupportedAsynchronousActions then the "
1733                     "underlying instrumentation is indicating that it may or may "
1734                     "not create a job."), 
1735                  ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10" }, 
1736                  Values { "Storage Pool Creation", "Storage Pool Deletion",
1737                     "Storage Pool Modification", "Storage Element Creation",
1738                     "Storage Element Return", "Storage Element Modification",
1739                     "Replica Creation", "Replica Modification",
1740                     "Replica Attachment" }, 
1741                  ModelCorrespondence { "CIM_StorageConfigurationCapabilities." 
1742                     "SupportedAsynchronousActions" }]
1743              uint16 SupportedSynchronousActions[];
1744 karl  1.1 
1745                 [Description (
1746                     "Enumeration indicating the type of storage elements that "
1747                     "are supported by the associated "
1748                     "StorageConfigurationService."), 
1749                  ValueMap { "2", "3", "4", "..", "0x8000..0xFFFF" }, 
1750                  Values { "StorageVolume", "StorageExtent", "LogicalDisk",
1751                     "DMTF Reserved", "Vendor Specific" }, 
1752                  ModelCorrespondence { "CIM_StorageConfigurationService." 
1753                     "CreateOrModifyElementFromStoragePool.ElementType" }]
1754              uint16 SupportedStorageElementTypes[];
1755           
1756                 [Description (
1757                     "Enumeration indicating features supported by the "
1758                     "StoragePool methods."), 
1759                  ValueMap { "2", "3", "4", "..", "0x8000..0xFFFF" }, 
1760                  Values { "InExtents", "Single InPool", "Multiple InPools",
1761                     "DMTF Reserved", "Vendor Specific" }, 
1762                  ModelCorrespondence { "CIM_StorageConfigurationService." 
1763                     "CreateOrModifyStoragePool.InPools",
1764                     "CIM_StorageConfigurationService." 
1765 karl  1.1           "CreateOrModifyStoragePool.InExtents" }]
1766              uint16 SupportedStoragePoolFeatures[];
1767           
1768                 [Description (
1769                     "Enumeration indicating features supported by the Storage "
1770                     "Element methods."), 
1771                  ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10", "..",
1772                     "0x8000..0xFFFF" }, 
1773                  Values { "StorageExtent Creation", "StorageVolume Creation",
1774                     "StorageExtent Modification", "StorageVolume Modification",
1775                     "Single InPool", "Multiple InPools", "LogicalDisk Creation",
1776                     "LogicalDisk Modification", "InExtents", "DMTF Reserved",
1777                     "Vendor Specific" }, 
1778                  ModelCorrespondence { "CIM_StorageConfigurationService." 
1779                     "CreateOrModifyElementFromStoragePool.ElementType",
1780                     "CIM_StorageConfigurationService." 
1781                     "CreateOrModifyElementFromStoragePool.InPool",
1782                     "CIM_StorageConfigurationService." 
1783                     "CreateOrModifyElementFromElements.InElements" }]
1784              uint16 SupportedStorageElementFeatures[];
1785           
1786 karl  1.1       [Description (
1787                     "SupportedCopyTypes describes the replication capabilities "
1788                     "supported by the associated StorageConfigurationServices. "
1789                     "Values are: \n"
1790                     "Async: asynchronous copies may be created and maintained. \n"
1791                     "Sync: synchronous copies may be created and maintained. \n"
1792                     "UnSyncAssoc: unsynchronized copies may be created and "
1793                     "maintained. \n"
1794                     "UnSyncUnAssoc: a 'straight copy' may be created."), 
1795                  ValueMap { "2", "3", "4", "5", "..", "0x8000..0xFFFF" }, 
1796                  Values { "Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc",
1797                     "DMTF Reserved", "Vendor Specific" }, 
1798                  ModelCorrespondence { 
1799                     "CIM_StorageConfigurationService.CreateReplica.CopyType" }]
1800              uint16 SupportedCopyTypes[];
1801           
1802                 [Description (
1803                     "InitialReplicationState specifies which initial "
1804                     "ReplicationState is supported by a particular provider. "
1805                     "Values are: \n"
1806                     "Initialized: The replication relationship is known and "
1807 karl  1.1           "unsynchronized, but time required to synchronize may be "
1808                     "long. \n"
1809                     "Prepared: The replication relationship is known and "
1810                     "unsynchronized and the time required to synchronize will be "
1811                     "short. \n"
1812                     "Synchronized: The replicas are synchronized."), 
1813                  ValueMap { "2", "3", "4", "..", "0x8000..0xFFFF" }, 
1814                  Values { "Initialized", "Prepared", "Synchronized",
1815                     "DMTF Reserved", "Vendor Specific" }, 
1816                  ModelCorrespondence { 
1817                     "CIM_StorageConfigurationService.AttachReplica",
1818                     "CIM_StorageConfigurationService.CreateReplica" }]
1819              uint16 InitialReplicationState;
1820           
1821           };
1822           
1823           // ====================================================================
1824           // StorageSettingWithHints
1825           // ====================================================================
1826              [Version ( "2.7.1" ), Description (
1827                  "This subclass of StorageSetting allows a client to specify "
1828 karl  1.1        "'hint's for optimization of the volume performance. The effect "
1829                  "of these hints is implementation dependent.")]
1830           class CIM_StorageSettingWithHints : CIM_StorageSetting {
1831           
1832                 [Write, Description (
1833                     "This hint is an indication from a client of the importance "
1834                     "placed on data availability. Values are 0=Don't Care to "
1835                     "10=Very Important."), 
1836                  MinValue ( 0 ), MaxValue ( 10 )]
1837              uint16 DataAvailabilityHint;
1838           
1839                 [Write, Description (
1840                     "This hint is an indication from a client of the randomness "
1841                     "of accesses. Values are 0=Entirely Sequential to "
1842                     "10=Entirely Random."), 
1843                  MinValue ( 0 ), MaxValue ( 10 )]
1844              uint16 AccessRandomnessHint;
1845           
1846                 [Write, Description (
1847                     "This hint is an indication from a client of the direction "
1848                     "of accesses. Values are 0=Entirely Read to 10=Entirely "
1849 karl  1.1           "Write."), 
1850                  MinValue ( 0 ), MaxValue ( 10 )]
1851              uint16 AccessDirectionHint;
1852           
1853                 [Write, Description (
1854                     "This hint is an indication from a client of the optimal "
1855                     "access sizes (in bytes). Since this property is an array, "
1856                     "several sizes can be specified."), 
1857                  Units ( "Bytes" )]
1858              uint16 AccessSizeHint[];
1859           
1860                 [Write, Description (
1861                     "This hint is an indication from a client how important "
1862                     "access latency is. Values are 0=Don't Care to 10=Very "
1863                     "Important."), 
1864                  MinValue ( 0 ), MaxValue ( 10 )]
1865              uint16 AccessLatencyHint;
1866           
1867                 [Write, Description (
1868                     "This hint is an indication from a client of bandwidth "
1869                     "prioritization. Values are 0=Don't Care to 10=Very "
1870 karl  1.1           "Important."), 
1871                  MinValue ( 0 ), MaxValue ( 10 )]
1872              uint16 AccessBandwidthWeight;
1873           
1874                 [Write, Description (
1875                     "This hint is an indication of the importance the client "
1876                     "places on the cost of storage. Values are 0=Don't Care to "
1877                     "10=Very Important. A StorageVolume provider might choose to "
1878                     "place data on low cost or high cost drives based on this "
1879                     "parameter."), 
1880                  MinValue ( 0 ), MaxValue ( 10 )]
1881              uint16 StorageCostHint;
1882           
1883                 [Write, Description (
1884                     "This hint is an indication of the importance placed on "
1885                     "storage space efficiency by the client. Values are 0=Don't "
1886                     "Care to 10=Very Important. A StorageVolume provider might "
1887                     "choose different RAID levels based on this hint."), 
1888                  MinValue ( 0 ), MaxValue ( 10 )]
1889              uint16 StorageEfficiencyHint;
1890           };
1891 karl  1.1 
1892           
1893           // ===================================================================
1894           // AllocatedFromStoragePool
1895           // ===================================================================
1896              [Association, Version ( "2.8.0" ), Description (
1897                  "AllocatedFromStoragePool is an association describing how "
1898                  "LogicalElements are allocated from underlying StoragePools. "
1899                  "These elements typically would be subclasses of StorageExtents "
1900                  "or StoragePools.")]
1901           class CIM_AllocatedFromStoragePool : CIM_Dependency {
1902           
1903                 [Override ( "Antecedent" ), Description (
1904                     "The StoragePool.")]
1905              CIM_StoragePool REF Antecedent;
1906           
1907                 [Override ( "Dependent" ), Description (
1908                     "The subsidiary element.")]
1909              CIM_LogicalElement REF Dependent;
1910           
1911                 [Required, Description (
1912 karl  1.1           "Space consumed from this Pool, in bytes. This value MUST be "
1913                     "maintained so that, relative to the Antecedent StoragePool, "
1914                     "it is possible to compute TotalManagedSpace as "
1915                     "StoragePool.RemainingManagedSpace plus the sum of "
1916                     "SpaceConsumed from all of the AllocatedFromStoragePool "
1917                     "references from the antecedent StoragePool."), 
1918                  Units ( "Bytes" ), 
1919                  ModelCorrespondence { "CIM_StoragePool.TotalManagedSpace",
1920                     "CIM_StoragePool.RemainingManagedSpace" }]
1921              uint64 SpaceConsumed;
1922           
1923           };
1924           
1925           
1926           // ==================================================================
1927           // HostedStoragePool
1928           // ==================================================================
1929              [Association, Aggregation, Composition, Version ( "2.7.0" ), 
1930               Description (
1931                  "SystemStoragePool is a specialization of SystemComponent "
1932                  "association that establishes that the StoragePool is defined "
1933 karl  1.1        "in the context of the System.")]
1934           class CIM_HostedStoragePool : CIM_SystemComponent {
1935           
1936                 [Aggregate, Override ( "GroupComponent" ), Min ( 1 ), Max ( 1 ), 
1937                  Description (
1938                     "The parent system in the Association.")]
1939              CIM_System REF GroupComponent;
1940           
1941                 [Override ( "PartComponent" ), Description (
1942                     "The StoragePool that is a component of a System.")]
1943              CIM_StoragePool REF PartComponent;
1944           };
1945           
1946           
1947           // ===================================================================
1948           // ConfigurationReportingService
1949           // ===================================================================
1950              [Version ( "2.7.0" ), Description (
1951                  "Service to provide reports on current configuration and "
1952                  "potential for growth. The service may be used in several "
1953                  "circumstances: \n"
1954 karl  1.1        "- To report growth potential (how many can I have) \n"
1955                  "- To report information on objects not directly modeled for "
1956                  "performance or other reasons. \n"
1957                  "It can also report counts of 'things' or counts of 'units'. "
1958                  "For example, the number of disk drives could be reported or "
1959                  "the capacity that they would provide.")]
1960           class CIM_ConfigurationReportingService : CIM_Service {
1961           
1962                 [Description (
1963                     "Returns a list of classes that the given Managed Element "
1964                     "supports or has installed."), 
1965                  ValueMap { "0", "1", "2", "3", "4", "..", "32768..65535" }, 
1966                  Values { "Success", "Not Supported", "Unknown", "Timeout",
1967                     "Failed", "DMTF Reserved", "Vendor Specific" }]
1968              uint32 GetClassTypes( 
1969                    [IN, Description (
1970                        "The type of inquiry to be performed."), 
1971                     ValueMap { "2", "3" }, 
1972                     Values { "Supports", "Installed" }]
1973                 uint16 InquiryType, 
1974                    [IN, Description (
1975 karl  1.1              "False : Only report on elements directly contained "
1976                        "in/attached to the given ManagedElement. \n"
1977                        "True : Report on all objects contained in/attached to "
1978                        "the given ManagedElement.")]
1979                 boolean Recursive, 
1980                    [IN, Description (
1981                        "The target of query, for example a rack or a chassis.")]
1982                 CIM_ManagedElement REF Target, 
1983                    [IN ( false ), OUT, Description (
1984                        "Array containing the class names (typically the leaf "
1985                        "classes) that the given ManagedElement can support or "
1986                        "has installed.")]
1987                 string ClassTypes[]); 
1988           
1989                 [Description (
1990                     "Returns a list of UnitTypes that are installed for a given "
1991                     "ClassType on a given ManagedElement."), 
1992                  ValueMap { "0", "1", "2", "3", "4", "..", "32768..65535" }, 
1993                  Values { "Success", "Not Supported", "Unknown", "Timeout",
1994                     "Failed", "DMTF Reserved", "Vendor Specific" }]
1995              uint32 GetUnitTypes( 
1996 karl  1.1          [IN, Description (
1997                        "The type of inquiry to be performed."), 
1998                     ValueMap { "2", "3" }, 
1999                     Values { "Supported", "Installed" }]
2000                 uint16 InquiryType, 
2001                    [IN, Description (
2002                        "False : Only report on elements directly contained "
2003                        "in/attached to the given ManagedElement. \n"
2004                        "True : Report on all objects contained in/attached to "
2005                        "the given ManagedElement.")]
2006                 boolean Recursive, 
2007                    [IN, Description (
2008                        "The target of query, for example a rack or a chassis.")]
2009                 CIM_ManagedElement REF Target, 
2010                    [IN, Description (
2011                        "The ClassType for the query. This should be a entry "
2012                        "returned in the GetClassTypes.ClassTypes property.")]
2013                 string ClassType, 
2014                    [IN ( false ), OUT, Description (
2015                        "A list of supported UnitTypes."), 
2016                     ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10",
2017 karl  1.1              "..", "32768..65535" }, 
2018                     Values { "None", "Front Side", "Back Side", "Contained",
2019                        "Connected", "I/O", "Memory", "StorageMediaLocation",
2020                        "Megabytes", "DMTF Reserved", "Vendor Specific" }, 
2021                     ModelCorrespondence { "CIM_ConfigurationReportingService." 
2022                        "ReportCapacity(UnitType)" }]
2023                 uint16 UnitTypes[]); 
2024           
2025                 [Description (
2026                     "Returns the maximum number supported or the number of "
2027                     "currently installed units for the given UnitType, for a "
2028                     "given ClassType on a given ManagedElement."), 
2029                  ValueMap { "0", "1", "2", "3", "4", "..", "32768..65535" }, 
2030                  Values { "Success", "Not Supported", "Unknown", "Timeout",
2031                     "Failed", "DMTF Reserved", "Vendor Specific" }]
2032              uint32 ReportCapacity( 
2033                    [IN, Description (
2034                        "The type of inquiry to be performed."), 
2035                     ValueMap { "2", "3" }, 
2036                     Values { "Supported", "Installed" }]
2037                 uint16 InquiryType, 
2038 karl  1.1          [IN, Description (
2039                        "False : Only report on elements directly contained "
2040                        "in/attached to the given ManagedElement. \n"
2041                        "True : Report on all objects contained in/attached to "
2042                        "the given ManagedElement.")]
2043                 boolean Recursive, 
2044                    [IN, Description (
2045                        "The target of query, for example a rack or a chassis.")]
2046                 CIM_ManagedElement REF Target, 
2047                    [IN, Description (
2048                        "The ClassType for the query. This should be a entry "
2049                        "returned in the GetClassTypes.ClassTypes property.")]
2050                 string ClassType, 
2051                    [IN, Description (
2052                        "The UnitType for the query."), 
2053                     ValueMap { "2", "3", "4", "5", "6", "7", "8", "9", "10",
2054                        "..", "32768..65535" }, 
2055                     Values { "None", "Front Side", "Back Side", "Contained",
2056                        "Connected", "I/O", "Memory", "StorageMediaLocation",
2057                        "Megabytes", "DMTF Reserved", "Vendor Specific" }, 
2058                     ModelCorrespondence { "CIM_ConfigurationReportingService." 
2059 karl  1.1              "GetUnitTypes(UnitTypes)" }]
2060                 uint16 UnitType, 
2061                    [IN ( false ), OUT, Description (
2062                        "The maximum number of supported or the number of "
2063                        "currently installed units.")]
2064                 uint64 NumberOfUnits); 
2065           };
2066           
2067           // ===================================================================
2068           // StorageSettingsAssociatedToCapabilities
2069           // ===================================================================
2070              [Association, Experimental, Version ( "2.8.1000" ), Description (
2071                  "This association define StorageSettings that reflect the "
2072                  "capabilities of the associated StorageCapabilities. The "
2073                  "associated StorageSetting MAY NOT define the operational "
2074                  "characteristics (through settings properties) of any storage "
2075                  "element. Certain StorageSetting instances can be defined as "
2076                  "\"Fixed = Not Changeable\" by using the \"ChangeableType\" "
2077                  "attribute. \"Fixed\" settings have this special association. "
2078                  "This association SHALL be defined between \"Fixed - Not "
2079                  "Changeable\" instances of StorageSetting with the "
2080 karl  1.1        "StorageCapabilities instances that are associated with the "
2081                  "StoragePools which support the storage characteristics "
2082                  "described by the StorageSetting instance. \n"
2083                  "Fixed settings MAY be associated to many StorageCapabilities.")]
2084           class CIM_StorageSettingsAssociatedToCapabilities : CIM_Dependency {
2085           
2086                 [Override ( "Antecedent" ), Description (
2087                     "The StorageCapabilities.")]
2088              CIM_StorageCapabilities REF Antecedent;
2089           
2090                 [Override ( "Dependent" ), Description (
2091                     "The StorageSetting.")]
2092              CIM_StorageSetting REF Dependent;
2093           
2094                 [Required, Description (
2095                     "The default association associates the setting that will be "
2096                     "used to create or modify a Storage Element if a no setting "
2097                     "is passed as a Goal. \n"
2098                     "There MUST be only one default Setting per pool.")]
2099              boolean DefaultSetting = FALSE;
2100           
2101 karl  1.1 };
2102           
2103           
2104           // ===================================================================
2105           // StorageSettingsGeneratedFromCapabilities
2106           // ===================================================================
2107              [Association, Experimental, Version ( "2.8.1000" ), Description (
2108                  "This association define StorageSettings that reflect the "
2109                  "capabilities of the associated StorageCapabilities. The "
2110                  "associated StorageSetting MAY NOT define the operational "
2111                  "characteristics (through settings properties) of any storage "
2112                  "element. StorageSettingsGeneratedFromCapabilities is the "
2113                  "association between instances of StorageCapabilities and those "
2114                  "instances of StorageSetting that have been created from the "
2115                  "StorageCapabilities instance using the StorageCapabilities "
2116                  "\"CreateSetting\" method. These settings are either "
2117                  "\"Changeable - Transient\" or \"Changeable - Persistent\" The "
2118                  "settings associated by this class reflect the capabilities "
2119                  "from which they are generated. These setting SHALL be "
2120                  "associated with one StorageCapabilities. \n"
2121                  "A generated setting can be deleted by the implementation at "
2122 karl  1.1        "any time if the it is a \"Changed - Transient\" setting. \n"
2123                  "A client SHOULD not use this association to find transient "
2124                  "Settings to subsequently modify and/or use because that would "
2125                  "increase the likelihood of setting contention across clients. "
2126                  "Instead the implementation uses this association to define "
2127                  "transient settings, which can be located through any means, "
2128                  "that have special temporal based life cycle.")]
2129           class CIM_StorageSettingsGeneratedFromCapabilities : CIM_Dependency {
2130           
2131                 [Override ( "Antecedent" ), Max ( 1 ), Description (
2132                     "The StorageCapabilities.")]
2133              CIM_StorageCapabilities REF Antecedent;
2134           
2135                 [Override ( "Dependent" ), Description (
2136                     "The StorageSetting.")]
2137              CIM_StorageSetting REF Dependent;
2138           };
2139           
2140           // ===================================================================
2141           // end of file
2142           // ===================================================================

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2