1 kumpf 1.2 // ===================================================================
2 // Title: Device Storage Services 2.7
3 // Filename: Device27_StorageServices.mof
4 // Version: 2.7.1
5 // Release: Final
6 // Date: 04/22/03
7 // ===================================================================
8 // Copyright 2002-2003 Distributed Management Task Force, Inc. (DMTF).
9 // All rights reserved.
10 // DMTF is a not-for-profit association of industry members dedicated
11 // to promoting enterprise and systems management and interoperability.
12 // DMTF specifications and documents may be reproduced for uses
13 // consistent with this purpose by members and non-members,
14 // provided that correct attribution is given.
15 // As DMTF specifications may be revised from time to time,
16 // the particular version and release date should always be noted.
17 //
18 // Implementation of certain elements of this standard or proposed
19 // standard may be subject to third party patent rights, including
20 // provisional patent rights (herein "patent rights"). DMTF makes
21 // no representations to users of the standard as to the existence
22 kumpf 1.2 // of such rights, and is not responsible to recognize, disclose, or
23 // identify any or all such third party patent right, owners or
24 // claimants, nor for any incomplete or inaccurate identification or
25 // disclosure of such rights, owners or claimants. DMTF shall have no
26 // liability to any party, in any manner or circumstance, under any
27 // legal theory whatsoever, for failure to recognize, disclose, or
28 // identify any such third party patent rights, or for such party's
29 // reliance on the standard or incorporation thereof in its product,
30 // protocols or testing procedures. DMTF shall have no liability to
31 // any party implementing such standard, whether such implementation
32 // is foreseeable or not, nor to any patent owner or claimant, and shall
33 // have no liability or responsibility for costs or losses incurred if
34 // a standard is withdrawn or modified after publication, and shall be
35 // indemnified and held harmless by any party implementing the
36 // standard from any and all claims of infringement by a patent owner
37 // for such implementations.
38 //
39 // For information about patents held by third-parties which have
40 // notified the DMTF that, in their opinion, such patent may relate to
41 // or impact implementations of DMTF standards, visit
42 // http://www.dmtf.org/about/policies/disclosures.php.
43 kumpf 1.2 // ===================================================================
44 // Description: The Device Model extends the management concepts that
45 // are related to LogicalDevices. This file defines
46 // a model for storage services.
47 //
48 // The object classes below are listed in an order that
49 // avoids forward references. Required objects, defined
50 // by other working groups, are omitted.
51 // ==================================================================
52 // Change Log for v2.7.1
53 // - Fix MaxValue declarations in StorageSettingWithHints - the
54 // properties, AccessDirectionHint and AccessBandwidthWeight
55 //
56 // Change Log for v2.7 Final
57 // CR970 - Removal of the Experimental qualifier
58 // - Remove StoragePool.GetSupportedSize and StoragePool.
59 // GetSupportedSizeRange so they can remain experimental in 2.8
60 // CR978 - Clarify the use of settings and capabilities
61 // - Change 'spindle' to 'package'
62 // - Add ElementType in StoragePool methods
63 // - Add ElementName to creation methods
64 kumpf 1.2 // - Fix ValueMap issues
65 // - Generalize the "goal" parameter in CreateOrModifyElement
66 // - Change units from megabytes to bytes.
67 // CR994 - Update description for InstanceID
68 //
69 // Change Log for v2.7
70 // CR775 - Add StorageSetting, StoragePool, StorageCapabilities,
71 // StorageConfigurationService, StorageSettingsWithHints,
72 // HostedStoragePool, and AllocatedStoragePool
73 // CR759 - Add ConfigurationReportingService
74 // CR777 - Add StorageSynchrononized
75 // Add StorageSetting.DeltaReservation,
76 // StorageCpabilities.DeltaReservationMin,
77 // StorageCpabilities.DeltaReservationMax,
78 // StorageCpabilities.DeltaReservationDefault,
79 // StorageConfigurationService.CreateReplica() and
80 // StorageConfigurationService.ModifySynchronization()
81 // CR895 - Correct the method return Values/ValueMaps for all the
82 // methods in the ConfigurationReportingService.
83 // ==================================================================
84
85 kumpf 1.2 #pragma locale ("en_US")
86
87
88 // ==================================================================
89 // StorageSynchrononized
90 // ==================================================================
91 [Association, Version ("2.7.0"), Description (
92 "Indicates that two Storage objects were replicated "
93 "at the specified point in time. If the CopyType "
94 "property is set to 'Sync' (=3), then synchronization "
95 "of the Storage objects is preserved.") ]
96 class CIM_StorageSynchronized : CIM_Synchronized {
97
98 [Override("SystemElement"), Description (
99 "SystemElement represents the Storage that is "
100 "the source of the replication.") ]
101 CIM_LogicalElement REF SystemElement;
102
103 [Override("SyncedElement"), Description (
104 "SyncedElement represents the Storage that is "
105 "the target of the replication.") ]
106 kumpf 1.2 CIM_LogicalElement REF SyncedElement;
107
108 [Description(
109 "CopyType describes the Replication Policy. "
110 "Values are: \n"
111 " Async: create and maintain an asynchronous "
112 "copy of the source. \n"
113 " Sync: create and maintain a synchronized copy "
114 "of the source. \n"
115 " UnSyncAssoc: create an unsynchronized copy and "
116 "maintain an association to the source."),
117 ValueMap {"2", "3", "4", "..", "32768..65535"},
118 Values {"Async", "Sync", "UnSyncAssoc",
119 "DMTF Reserved", "Vendor Specific"} ]
120 uint16 CopyType;
121 };
122
123
124 // ==================================================================
125 // StorageSetting
126 // ==================================================================
127 kumpf 1.2 [Version ("2.7.0"), Description (
128 "StorageSetting is roughly equivalent to a Service Level "
129 "Agreement (SLA) It defines the characteristics, qualities "
130 "of service and goals when used in a "
131 "CreateOrModifyElementFromStoragePool or "
132 "CreateOrModifyStoragePool "
133 "method in the StorageConfigurationService. It specifies a "
134 "series of properties with Maximum and Minimum values that define "
135 "the (inclusive) bounds that the object should maintain. Note that "
136 "the setting is associated to a StorageVolume, using ElementSetting.") ]
137 class CIM_StorageSetting : CIM_SettingData {
138
139 [Write, Description (
140 "Indicates the desired value for No Single Point of Failure. "
141 "Possible values are false = single point of failure, and "
142 "true = no single point of failure.") ]
143 boolean NoSinglePointOfFailure;
144
145 [Write, MinValue(1), Description (
146 "DataRedundancyMax describes the maximum number of complete "
147 "copies of data to be maintained. Examples would be RAID 5 "
148 kumpf 1.2 "where 1 copy is maintained and RAID 1 where 2 or more copies "
149 "are maintained. Possible values are 1 to n. The desired "
150 "redundancy is specified using DataRedundancyGoal, while the "
151 "minimum is defined by DataRedundancyMin."),
152 ModelCorrespondence {"CIM_StorageSetting.DataRedundancyMin",
153 "CIM_StorageSetting.DataRedundancyGoal"} ]
154 uint16 DataRedundancyMax;
155
156 [Write, MinValue(1), Description (
157 "DataRedundancyMin describes the minimum number of complete "
158 "copies of data to be maintained. Examples would be RAID 5 "
159 "where 1 copy is maintained and RAID 1 where 2 or more copies "
160 "are maintained. Possible values are 1 to n. The desired "
161 "redundancy is specified using DataRedundancyGoal, while the "
162 "maximum is defined by DataRedundancyMax."),
163 ModelCorrespondence {"CIM_StorageSetting.DataRedundancyMax",
164 "CIM_StorageSetting.DataRedundancyGoal"} ]
165 uint16 DataRedundancyMin;
166
167 [Write, MinValue(1), Description (
168 "DataRedundancyGoal describes the desired number of complete "
169 kumpf 1.2 "copies of data to be maintained. Examples would be RAID 5 "
170 "where 1 copy is maintained and RAID 1 where 2 or more copies "
171 "are maintained. Possible values are 1 to n. The bounds (max "
172 "and min) for redundancy are defined using the properties, "
173 "DataRedundancyMax and DataRedundancyMin."),
174 ModelCorrespondence {"CIM_StorageSetting.DataRedundancyMax",
175 "CIM_StorageSetting.DataRedundancyMin"} ]
176 uint16 DataRedundancyGoal;
177
178 [Write, Description (
179 "PackageRedundancyMax describes the maximum number of redundant "
180 "packages to be used. For example, in the storage domain, "
181 "package redundancy describes how many disk "
182 "spindles can fail without data loss including, at most, one "
183 "spare. An example would be RAID5 with a spare disk which would "
184 "have a PackageRedundancy of 2. Possible values are 0 to n. The "
185 "desired redundancy is specified using PackageRedundancyGoal, "
186 "while the minimum is defined by PackageRedundancyMin."),
187 ModelCorrespondence {"CIM_StorageSetting.PackageRedundancyMin"
188 "CIM_StorageSetting.PackageRedundancyGoal"} ]
189 uint16 PackageRedundancyMax;
190 kumpf 1.2
191 [Write, Description (
192 "PackageRedundancyMin describes the minimum number of redundant "
193 "packages to be used. For example, in the storage domain, "
194 "package redundancy describes how many disk "
195 "spindles can fail without data loss including, at most, one "
196 "spare. An example would be RAID5 with a spare disk which would "
197 "have a PackageRedundancy of 2. Possible values are 0 to n. The "
198 "desired redundancy is specified using PackageRedundancyGoal, "
199 "while the maximum is defined by PackageRedundancyMax."),
200 ModelCorrespondence {"CIM_StorageSetting.PackageRedundancyMax"
201 "CIM_StorageSetting.PackageRedundancyGoal"} ]
202 uint16 PackageRedundancyMin;
203
204 [Write, Description (
205 "PackageRedundancyGoal describes the desired number of redundant "
206 "packages to be used. For example, in the storage domain, "
207 "package redundancy describes how many disk "
208 "spindles can fail without data loss including, at most, one "
209 "spare. An example would be RAID5 with a spare disk which would "
210 "have a PackageRedundancy of 2. Possible values are 0 to n. The "
211 kumpf 1.2 "bounds (max and min) for redundancy are defined using the properties, "
212 "PackageRedundancyMax and PackageRedundancyMin."),
213 ModelCorrespondence {"CIM_StorageSetting.PackageRedundancyMax"
214 "CIM_StorageSetting.PackageRedundancyMin"} ]
215 uint16 PackageRedundancyGoal;
216
217 [MinValue (1), MaxValue (100), Description (
218 "DeltaReservationMax is a number between 1 (1%) and a 100 (100%) "
219 "which specifies the maximum amount of space that should "
220 "be reserved in a replica for caching changes. For a complete copy "
221 "this would be 100%. The desired reservation is specified "
222 "using DeltaReservationGoal, while the minimum is defined by "
223 "DeltaReservationMin."), Units ("Percentage"),
224 ModelCorrespondence {"CIM_StorageSetting.DeltaReservationMin"
225 "CIM_StorageSetting.DeltaReservationGoal"} ]
226 uint8 DeltaReservationMax;
227
228 [MinValue (1), MaxValue (100), Description (
229 "DeltaReservationMin is a number between 1 (1%) and a 100 (100%) "
230 "which specifies the minimum amount of space that should "
231 "be reserved in a replica for caching changes. For a complete copy "
232 kumpf 1.2 "this would be 100%. The desired reservation is specified "
233 "using DeltaReservationGoal, while the maximum is defined by "
234 "DeltaReservationMax."), Units ("Percentage"),
235 ModelCorrespondence {"CIM_StorageSetting.DeltaReservationMax"
236 "CIM_StorageSetting.DeltaReservationGoal"} ]
237 uint8 DeltaReservationMin;
238
239 [MinValue (1), MaxValue (100), Description (
240 "DeltaReservationGoal is a number between 1 (1%) and a 100 (100%) "
241 "which specifies the desired amount of space that should "
242 "be reserved in a replica for caching changes. For a complete copy "
243 "this would be 100%. The bounds (max and min) for the reservation "
244 "are defined using the properties, DeltaReservationMax and "
245 "DeltaReservationMin."), Units ("Percentage"),
246 ModelCorrespondence {"CIM_StorageSetting.DeltaReservationMin"
247 "CIM_StorageSetting.DeltaReservationMax"} ]
248 uint8 DeltaReservationGoal;
249
250 };
251
252
253 kumpf 1.2 // ==================================================================
254 // StoragePool
255 // ==================================================================
256 [Version ("2.7.0"), Description (
257 "A pool of Storage that is managed within the scope of a particular "
258 "System. StoragePools may consist of component StoragePools or "
259 "StorageExtents. StorageExtents that belong to the "
260 "StoragePool have a Component relationship to the StoragePool. "
261 "StorageExtents/StoragePools that are elements of a "
262 "pool have their available space aggregated into the pool. "
263 "StoragePools and StorageVolumes may be created from StoragePools. "
264 "This is indicated by the AllocatedFromStoragePool association. "
265 "StoragePool is scoped to a system by the HostedStoragePool "
266 "association.") ]
267 class CIM_StoragePool : CIM_LogicalElement {
268
269 [Key, Description (
270 "Within the scope of the instantiating Namespace, InstanceID "
271 "opaquely and uniquely identifies an instance of this class. "
272 "In order to ensure uniqueness within the NameSpace, the "
273 "value of InstanceID SHOULD be constructed using the "
274 kumpf 1.2 "following 'preferred' algorithm: \n"
275 " <OrgID>:<LocalID> \n"
276 "Where <OrgID> and <LocalID> are separated by a colon ':', "
277 "and where <OrgID> MUST include a copyrighted, trademarked "
278 "or otherwise unique name that is owned by the business entity "
279 "creating/defining the InstanceID, or is a registered ID that is "
280 "assigned to the business entity by a recognized global "
281 "authority (This is similar to the <Schema Name>_<Class Name> "
282 "structure of Schema class names.) In addition, to ensure "
283 "uniqueness <OrgID> MUST NOT contain a colon (':'). When using "
284 "this algorithm, the first colon to appear in "
285 "InstanceID MUST appear between <OrgID> and <LocalID>. \n"
286 " <LocalID> is chosen by the business entity and SHOULD not be "
287 "re-used to identify different underlying (real-world) elements. "
288 "If the above 'preferred' algorithm is not used, the defining "
289 "entity MUST assure that the resultant InstanceID is not "
290 "re-used across any InstanceIDs produced by this or other "
291 "providers for this instance's NameSpace. \n"
292 "For DMTF defined instances, the 'preferred' algorithm MUST be "
293 "used with the <OrgID> set to 'CIM'.") ]
294 string InstanceID;
295 kumpf 1.2
296 [Required, MaxLen (256), Description (
297 "A unique name in the context of the System that "
298 "identifies this pool.") ]
299 string PoolID;
300
301 [Description (
302 "Maximum available formatted space (in bytes) available "
303 "via this pool."),
304 Units("Bytes") ]
305 uint64 TotalAvailableSpace;
306 };
307
308
309 // ==================================================================
310 // StorageCapabilities
311 // ==================================================================
312 [Version ("2.7.0"), Description (
313 "A subclass of Capabilities that defines the "
314 "Capabilities of a StorageService or StoragePool. "
315 "For example, an instance of StorageCapabilities could be"
316 kumpf 1.2 "associated with either a StorageConfigurationService or "
317 "StoragePool by using ElementCapabilities.") ]
318 class CIM_StorageCapabilities : CIM_Capabilities {
319
320 [Description (
321 "Enumeration indicating the type of element to which this "
322 "StorageCapabilities applies."),
323 ValueMap{"0", "1", "2", "3", "4", "5", "6"},
324 Values {"Unknown", "Reserved", "Any Type", "StorageVolume",
325 "StorageExtent", "StoragePool",
326 "StorageConfigurationService"} ]
327 uint16 ElementType;
328
329 [Description (
330 "Indicates whether or not the associated element supports "
331 "no single point of failure. Values are: "
332 "FALSE = does not support no single point of failure, "
333 "and TRUE = supports no single point of failure."),
334 ModelCorrespondence {
335 "CIM_StorageCapabilities.NoSinglePointOfFailureDefault"} ]
336 boolean NoSinglePointOfFailure;
337 kumpf 1.2
338 [Description (
339 "Indicates the default value for the NoSinglePointOfFailure "
340 "property."),
341 ModelCorrespondence {
342 "CIM_StorageCapabilities.NoSinglePointOfFailure"} ]
343 boolean NoSinglePointOfFailureDefault;
344
345 [MinValue (1), Description (
346 "DataRedundancyMax describes the maximum number of complete "
347 "copies of data that can be maintained. Examples would be "
348 "RAID 5 (where 1 copy is maintained) and RAID 1 (where 2 or "
349 "more copies are maintained). Possible values are 1 to n. The "
350 "default redundancy is specified using DataRedundancyDefault, "
351 "while the minimum is defined by DataRedundancyMin."),
352 ModelCorrespondence {"CIM_StorageCapabilities.DataRedundancyMin",
353 "CIM_StorageCapabilities.DataRedundancyDefault"} ]
354 uint16 DataRedundancyMax;
355
356 [MinValue (1), Description (
357 "DataRedundancyMin describes the minimum number of complete "
358 kumpf 1.2 "copies of data that can be maintained. Examples would be "
359 "RAID 5 where 1 copy is maintained and RAID 1 where 2 or "
360 "more copies are maintained). Possible values are 1 to n. The "
361 "default redundancy is specified using DataRedundancyDefault, "
362 "while the maximum is defined by DataRedundancyMax."),
363 ModelCorrespondence {"CIM_StorageCapabilities.DataRedundancyMax",
364 "CIM_StorageCapabilities.DataRedundancyDefault"} ]
365 uint16 DataRedundancyMin;
366
367 [MinValue(1), Description (
368 "DataRedundancyDefault describes the default number of "
369 "complete copies of data that can be maintained. Examples "
370 "would be RAID 5 where 1 copy is maintained and RAID 1 where "
371 "2 or more copies are maintained. Possible values are "
372 "1 to n. The bounds for the redundancy (max and min) are "
373 "defined by DataRedundancyMax and DataRedundancyMin."),
374 ModelCorrespondence {"CIM_StorageCapabilities.DataRedundancyMax",
375 "CIM_StorageCapabilities.DataRedundancyMin"} ]
376 uint16 DataRedundancyDefault;
377
378 [Description (
379 kumpf 1.2 "PackageRedundancyMax describes the maximum number of redundant "
380 "packages that can be used. For example, in the storage domain, "
381 "package redundancy describes how many disk "
382 "spindles can fail without data loss including, at most, one "
383 "spare. An example would be RAID5 with a spare disk which would "
384 "have a PackageRedundancy of 2. Possible values are 0 to n."
385 "The default redundancy is specified using PackageRedundancyDefault, "
386 "while the maximum is defined by PackageRedundancyMax."),
387 ModelCorrespondence {
388 "CIM_StorageCapabilities.PackageRedundancyMin",
389 "CIM_StorageCapabilities.PackageRedundancyDefault"} ]
390 uint16 PackageRedundancyMax;
391
392 [Description (
393 "PackageRedundancyMin describes the minimum number of redundant "
394 "packages that can be used. For example, in the storage domain, "
395 "package redundancy describes how many disk "
396 "spindles can fail without data loss including, at most, one "
397 "spare. An example would be RAID5 with a spare disk which would "
398 "have a PackageRedundancy of 2. Possible values are 0 to n."
399 "The default redundancy is specified using PackageRedundancyDefault, "
400 kumpf 1.2 "while the minimum is defined by PackageRedundancyMin."),
401 ModelCorrespondence {
402 "CIM_StorageCapabilities.PackageRedundancyMax",
403 "CIM_StorageCapabilities.PackageRedundancyDefault"} ]
404 uint16 PackageRedundancyMin;
405
406 [Description (
407 "PackageRedundancyDefault describes the default number of redundant "
408 "packages that will be used. For example, in the storage domain, "
409 "package redundancy describes how many disk "
410 "spindles can fail without data loss including, at most, one "
411 "spare. An example would be RAID5 with a spare disk which would "
412 "have a PackageRedundancy of 2. Possible values are 0 to n."
413 "The bounds for redundancy are specified using the properties, "
414 "PackageRedundancyMax and PackageRedundancyMin."),
415 ModelCorrespondence {
416 "CIM_StorageCapabilities.PackageRedundancyMin",
417 "CIM_StorageCapabilities.PackageRedundancyMax"} ]
418 uint16 PackageRedundancyDefault;
419
420 [MinValue (1), MaxValue (100), Description (
421 kumpf 1.2 "DeltaReservatioMax is a number between 1 (1%) and a 100 (100%) "
422 "that specifies the maximum amount of space reserved in a replica "
423 "for caching changes. For a complete copy this would be 100%, "
424 "but it can be lower in some implementations. This parameter "
425 "sets the upper limit, while DeltaReservationMin sets the lower limit."),
426 Units ("Percentage"), ModelCorrespondence {
427 "CIM_StorageCapabilities.DeltaReservationMin",
428 "CIM_StorageCapabilities.DeltaReservationDefault"} ]
429 uint16 DeltaReservationMax;
430
431 [MinValue (1), MaxValue (100), Description (
432 "DeltaReservationMin is a number between 1 (1%) and a 100 (100%) "
433 "that specifies the minimum amount of space that should be reserved "
434 "in a replica for caching changes. For a complete copy this would be 100%, "
435 "but it can be lower in some implementations. This parameter "
436 "sets the lower limit, while DeltaReservationMax sets the upper limit."),
437 Units ("Percentage"), ModelCorrespondence {
438 "CIM_StorageCapabilities.DeltaReservationMax",
439 "CIM_StorageCapabilities.DeltaReservationDefault"} ]
440 uint16 DeltaReservationMin;
441
442 kumpf 1.2 [MinValue (1), MaxValue (100), Description (
443 "Delta reservation is a number between 1 (1%) and a 100 (100%) "
444 "that specifies how much space should be reserved by default in a "
445 "replica for caching changes. For a complete copy this would be 100%, "
446 "but it can be lower in some implementations. This parameter "
447 "sets the default value, while DeletaReservationMax and DeltReservationMin "
448 "set the upper and lower bounds."),
449 Units ("Percentage"), ModelCorrespondence {
450 "CIM_StorageCapabilities.DeltaReservationMax",
451 "CIM_StorageCapabilities.DeltaReservationMin"} ]
452 uint16 DeltaReservationDefault;
453 };
454
455 // ==================================================================
456 // StorageConfigurationService
457 // ==================================================================
458 [Version ("2.7.0"), Description (
459 "This service allows the active management of a Storage "
460 "Server. It allows jobs to be started for the creation, "
461 "modification and deletion of storage objects (StoragePools "
462 "and StorageVolumes).") ]
463 kumpf 1.2 class CIM_StorageConfigurationService : CIM_Service {
464
465 [Description (
466 "Starts a job to create (or modify) a StoragePool. The "
467 "StoragePool will be (or must be) scoped to the same System "
468 "as this Service. One of the parameters for this method is "
469 "Size. As an input parameter, Size specifies the desired size of "
470 "the pool. As an output parameter, it specifies the size achieved. "
471 "Space is taken from either or both of the specified input "
472 "StoragePools and StorageExtents (InPools and InExtents). "
473 "The capability requirements that the Pool must support "
474 "are defined using the Goal parameter. If the requested "
475 "pool size cannot be created, no action will be taken, the "
476 "Return Value will be 4097/0x1001, and the output value of "
477 "Size will be set to the nearest possible size. If 0 is "
478 "returned, then the task completed successfully and the "
479 "use of ConcreteJob was not required. If the task will take "
480 "some time to complete, a ConcreteJob will be created "
481 "and its reference returned in the output parameter Job."),
482 ValueMap {"0", "1", "2", "3", "4", "5", "6", "..",
483 "4096", "4097", "4098..32767", "32768..65535"},
484 kumpf 1.2 Values {"Job Completed with No Error", "Not Supported",
485 "Unknown", "Timeout", "Failed", "Invalid Parameter",
486 "In Use",
487 "DMTF Reserved", "Method Parameters Checked - Job Started",
488 "Size Not Supported", "Method Reserved",
489 "Vendor Specific"} ]
490 uint32 CreateOrModifyStoragePool (
491 [IN, Description (
492 "A end user relevant name for the pool being created. If "
493 "NULL, then a system supplied default name can be used. The "
494 "value will be stored in the 'ElementName' property for "
495 "the created pool. If not NULL, this parameter "
496 "will supply a new name when modifying an existing pool.") ]
497 string ElementName,
498 [OUT, IN(false), Description(
499 "Reference to the job (may be null if job completed).") ]
500 CIM_ConcreteJob REF Job,
501 [IN, Description (
502 "Reference to an instance of StorageSetting that defines "
503 "the desired capabilities of the StoragePool. If set to a "
504 "null value, the default configuration from the source "
505 kumpf 1.2 "pool will be used. If not NULL, this parameter will supply a "
506 "new Goal setting when modifying an existing pool." ) ]
507 CIM_StorageSetting REF Goal,
508 [IN, OUT, Description(
509 "As an input parameter this specifies the desired pool size in bytes. "
510 "As an output parameter this specifies the size "
511 "achieved."), Units ("Bytes") ]
512 uint64 Size,
513 [IN, Description (
514 "Array of strings containing representations of "
515 "references to CIM_StoragePool instances, that are used "
516 "to create the Pool or modify the source pools.") ]
517 string InPools[],
518 [IN, Description (
519 "Array of strings containing representations of "
520 "references to CIM_StorageExtent instances, that are used "
521 "to create the Pool or modify the source extents.") ]
522 string InExtents[],
523 [IN, OUT, Description (
524 "As an input parameter: if null, creates a new StoragePool. "
525 "If not null, modifies the referenced Pool. When returned, it is a "
526 kumpf 1.2 "reference to the resulting StoragePool.") ]
527 CIM_StoragePool REF Pool);
528
529 [Description (
530 "Start a job to create (or modify) a specified element (for "
531 "example a StorageVolume or StorageExtent) from "
532 "a StoragePool. One of the parameters for this method is "
533 "Size. As an input parameter, Size specifies the desired size of the element. "
534 "As an output parameter, it specifies the size achieved. "
535 "Space is taken from the input StoragePool. The desired "
536 "settings for the element are specified by the Goal parameter. "
537 "If the requested size cannot be created, no action will be "
538 "taken, and the Return Value will be 4097/0x1001. Also, "
539 "the output value of Size is set to the nearest possible "
540 "size. If 0 is returned, the function completed successfully "
541 "and no ConcreteJob instance was required. If 4096/0x1000 is "
542 "returned, a ConcreteJob will be started to create the "
543 "element. The Job's reference will be returned in the "
544 "output parameter Job."),
545 ValueMap {"0", "1", "2", "3", "4", "5", "6", "..",
546 "4096", "4097", "4098..32767", "32768..65535"},
547 kumpf 1.2 Values {"Job Completed with No Error", "Not Supported",
548 "Unknown", "Timeout", "Failed", "Invalid Parameter",
549 "In Use",
550 "DMTF Reserved", "Method Parameters Checked - Job Started",
551 "Size Not Supported", "Method Reserved",
552 "Vendor Specific"} ]
553 uint32 CreateOrModifyElementFromStoragePool(
554 [IN, Description (
555 "A end user relevant name for the element being created. If "
556 "NULL, then a system supplied default name can be used. The "
557 "value will be stored in the 'ElementName' property for "
558 "the created element. If not NULL, this parameter "
559 "will supply a new name when modifying an existing element.") ]
560 string ElementName,
561 [IN, Description (
562 "Enumeration indicating the type of element being created "
563 "or modified. If the input parameter TheElement is specified "
564 "when the operation is a 'modify', this type value must "
565 "match the type of that instance."),
566 ValueMap{"0", "1", "2", "3", "..", "32768..65535"},
567 Values {"Unknown", "Reserved", "StorageVolume",
568 kumpf 1.2 "StorageExtent", "DMTF Reserved", "Vendor Specific"} ]
569 uint16 ElementType,
570 [OUT, IN(false), Description(
571 "Reference to the job (may be null if job completed).") ]
572 CIM_ConcreteJob REF Job,
573 [IN, Description(
574 "The requirements for the element to maintain. If set to "
575 "a null value, the default configuration from the source "
576 "pool will be used. This parameter should be a reference to "
577 "a Setting or Profile appropriate to the element being "
578 "created. If not NULL, this parameter "
579 "will supply a new Goal when modifying an existing element.") ]
580 CIM_ManagedElement REF Goal,
581 [IN, OUT, Description (
582 "As an input parameter Size specifies the desired size. "
583 "If not NULL, this parameter "
584 "will supply a new size when modifying an existing element."
585 "As an output parameter Size specifies the size "
586 "achieved."), Units ("Bytes") ]
587 uint64 Size,
588 [IN, Description(
589 kumpf 1.2 "The Pool from which to create the element. This parameter "
590 "must be set to null if the input parameter TheElement is "
591 "specified (in the case of a 'modify' operation).") ]
592 CIM_StoragePool REF InPool,
593 [IN, OUT, Description (
594 "As an input parameter: if null, creates a new element. If "
595 "not null, then the method modifies the specified element. "
596 "As an output parameter, it is a reference to the "
597 "resulting element.") ]
598 CIM_LogicalElement REF TheElement);
599
600 [Description (
601 "Start a job to delete a StoragePool. The freed space is "
602 "returned source StoragePools (indicated by AllocatedFromStoragePool) "
603 "or back to underlying storage extents. If 0 is returned, the "
604 "function completed successfully, and no ConcreteJob was required. "
605 "If 4096/0x1000 is returned, a ConcreteJob will be started "
606 "to delete the StoragePool. A reference to the Job is returned "
607 "in the Job parameter."),
608 ValueMap {"0", "1", "2", "3", "4", "5", "6", "..", "4096",
609 "4097..32767", "32768..65535"},
610 kumpf 1.2 Values {"Job Completed with No Error", "Not Supported",
611 "Unknown", "Timeout", "Failed", "Invalid Parameter",
612 "In Use",
613 "DMTF Reserved", "Method Parameters Checked - Job Started",
614 "Method Reserved", "Vendor Specific"} ]
615 uint32 DeleteStoragePool (
616 [OUT, IN(false), Description(
617 "Reference to the job (may be null if job completed).") ]
618 CIM_ConcreteJob REF Job,
619 [IN, Description(
620 "Reference to the pool to delete.") ]
621 CIM_StoragePool REF Pool);
622
623 [Description (
624 "Start a job to delete an element previously created from a "
625 "StoragePool. The freed space is returned to the source "
626 "StoragePool. If 0 is returned, the function completed "
627 "successfully and no ConcreteJob was required. If 4096/0x1000 "
628 "is returned, a ConcreteJob will be started to delete the "
629 "element. A reference to the Job is returned in the Job "
630 "parameter."),
631 kumpf 1.2 ValueMap {"0", "1", "2", "3", "4", "5", "6", "..", "4096",
632 "4097..32767", "32768..65535"},
633 Values {"Job Completed with No Error", "Not Supported",
634 "Unknown", "Timeout", "Failed", "Invalid Parameter",
635 "In Use",
636 "DMTF Reserved", "Method Parameters Checked - Job Started",
637 "Method Reserved", "Vendor Specific"} ]
638 uint32 ReturnToStoragePool(
639 [OUT, IN(false), Description(
640 "Reference to the job (may be null if job completed).") ]
641 CIM_ConcreteJob REF Job,
642 [IN, Description(
643 "Reference to the element to return to the StoragePool.") ]
644 CIM_LogicalElement REF TheElement);
645
646 [Description (
647 "Start a job to create a new storage object which "
648 "is a replica of the specified source storage object. "
649 " (SourceElement). Note that using "
650 "the input paramter, CopyType, this function can be used to "
651 "instantiate the replica, and to create an ongoing "
652 kumpf 1.2 "association between the source and replica. If 0 is "
653 "returned, the function completed successfully and no "
654 "ConcreteJob instance is created. If 4096/0x1000 is returned, "
655 "a ConcreteJob is started, a reference to which is "
656 "returned in the Job output parameter."),
657 ValueMap {"0", "1", "2", "3", "4", "5", "6", "..", "4096",
658 "4097..32767", "32768..65535"},
659 Values {"Job Completed with No Error", "Not Supported",
660 "Unknown", "Timeout", "Failed", "Invalid Parameter",
661 "In Use",
662 "DMTF Reserved", "Method Parameters Checked - Job Started",
663 "Method Reserved", "Vendor Specific"} ]
664 uint32 CreateReplica(
665 [IN, Description (
666 "A end user relevant name for the element being created. If "
667 "NULL, then a system supplied default name can be used. The "
668 "value will be stored in the 'ElementName' property for "
669 "the created element.") ]
670 string ElementName,
671 [OUT, IN(false), Description(
672 "Reference to the job (may be null if job completed).") ]
673 kumpf 1.2 CIM_ConcreteJob REF Job,
674 [IN, Required, Description(
675 "The source storage object which may be a StorageVolume or "
676 "storage object.") ]
677 CIM_LogicalElement REF SourceElement,
678 [OUT, IN(false), Description(
679 "Reference to the created target storage element "
680 "(i.e., the replica).") ]
681 CIM_LogicalElement REF TargetElement,
682 [IN, Description(
683 "The definition for the StorageSetting to be maintained "
684 "by the target storage object (the replica).") ]
685 CIM_StorageSetting REF TargetSettingGoal,
686 [IN, Description(
687 "The underlying storage for the target element (the "
688 "replica) will be drawn from TargetPool if specified, "
689 "otherwise the allocation is implementation specific.") ]
690 CIM_StoragePool REF TargetPool,
691 [IN, Description(
692 "CopyType describes the type of copy that will be made. "
693 "Values are: \n "
694 kumpf 1.2 " Async: Create and maintain an asynchronous "
695 "copy of the source. \n "
696 " Sync: Create and maintain a synchronized copy "
697 "of the source. \n"
698 " UnSyncAssoc: Create an unsynchronized copy and "
699 "maintain an association to the source. \n "
700 " UnSyncUnAssoc: Create unassociated copy of the "
701 "source element."),
702 ValueMap {"2", "3", "4", "5", "..", "32768..65535"},
703 Values {"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc",
704 "DMTF Reserved", "Vendor Specific"} ]
705 uint16 CopyType);
706
707 [Description (
708 "Starts a job to modify the synchronization association "
709 "between two storage objects. If 0 is returned, the "
710 "function completed successfully and no ConcreteJob instance "
711 "was created. If 4096/0x1000 is returned, a ConcreteJob "
712 "was started. A reference to this Job is returned in "
713 "the Job output parameter."),
714 ValueMap {"0", "1", "2", "3", "4", "5", "6", "..", "4096",
715 kumpf 1.2 "4097..32767", "32768..65535"},
716 Values {"Job Completed with No Error", "Not Supported",
717 "Unknown", "Timeout", "Failed", "Invalid Parameter",
718 "In Use","DMTF Reserved",
719 "Method Parameters Checked - Job Started",
720 "Method Reserved", "Vendor Specific"} ]
721 uint32 ModifySynchronization(
722 [IN, Description(
723 "Operation describes the type of modification "
724 "to be made to the replica. Values are: \n "
725 " Detach: 'Forget' the synchronization between "
726 "two storage objects. Start to treat the objects as "
727 "independent. \n "
728 " Fracture: Suspend the synchronization between "
729 "two storage objects. The association and "
730 "(typically) changes are remembered to allow a fast "
731 "resynchronization. This may be used during "
732 "a backup cycle to allow one of the objects to be "
733 "copied while the other remains in production. \n"
734 " Resync Replica: Re-establish the synchronization of "
735 "a replica. This will negate the action of a previous "
736 kumpf 1.2 "Fracture operation. \n"
737 " Restore from Replica: Renew the contents of "
738 "the original storage object from a replica."),
739 ValueMap {"0","1","2", "3", "4", "5", "..",
740 "32768..65535"},
741 Values {" DMTF Reserved", "DMTF Reserved", "Detach",
742 "Fracture", "Resync Replica", "Restore from Replica"
743 "DMTF Reserved", "Vendor Specific"} ]
744 uint16 Operation,
745 [OUT, IN(false), Description(
746 "Reference to the job (may be null if job completed).") ]
747 CIM_ConcreteJob REF Job,
748 [IN, Description(
749 "The referenced to the StorageSynchronized association "
750 "describing the storage source/replica relationship.") ]
751 CIM_StorageSynchronized REF Synchronization);
752 };
753
754
755 // ====================================================================
756 // StorageSettingWithHints
757 kumpf 1.2 // ====================================================================
758 [Version("2.7.1"), Description (
759 "This subclass of StorageSetting allows a client to specify "
760 "'hint's for optimization of the volume performance. The effect "
761 "of these hints is implementation dependent.") ]
762 class CIM_StorageSettingWithHints: CIM_StorageSetting {
763
764 [MinValue (0), MaxValue (10), Description (
765 "This hint is an indication from a client of the importance "
766 "placed on data availability. Values are 0=Don't Care to "
767 "10=Very Important.") ]
768 uint16 DataAvailabilityHint;
769
770 [MinValue (0), MaxValue (10), Description (
771 "This hint is an indication from a client of the randomness "
772 "of accesses. Values are 0=Entirely Sequential to "
773 "10=Entirely Random.") ]
774 uint16 AccessRandomnessHint;
775
776 [MinValue (0), MaxValue (10), Description (
777 "This hint is an indication from a client of the direction "
778 kumpf 1.2 "of accesses. Values are 0=Entirely Read to "
779 "10=Entirely Write.") ]
780 uint16 AccessDirectionHint;
781
782 [Description (
783 "This hint is an indication from a client of the optimal "
784 "access sizes (in bytes). Since this property is an array, "
785 "several sizes can be specified. "),
786 Units ("Bytes") ]
787 uint16 AccessSizeHint[];
788
789 [MinValue (0), MaxValue (10), Description (
790 "This hint is an indication from a client how important "
791 "access latency is. Values are 0=Don't Care to "
792 "10=Very Important.") ]
793 uint16 AccessLatencyHint;
794
795 [MinValue (0), MaxValue (10), Description (
796 "This hint is an indication from a client of bandwidth "
797 "prioritization. Values are 0=Don't Care to "
798 "10=Very Important.") ]
799 kumpf 1.2 uint16 AccessBandwidthWeight;
800
801 [MinValue (0), MaxValue (10),Description (
802 "This hint is an indication of the importance the client "
803 "places on the cost of storage. Values are 0=Don't Care to "
804 "10=Very Important. A StorageVolume provider might choose "
805 "to place data on low cost or high cost drives based on "
806 "this parameter.") ]
807 uint16 StorageCostHint;
808
809 [MinValue (0), MaxValue (10), Description (
810 "This hint is an indication of the importance placed on "
811 "storage space efficiency by the client. Values are 0=Don't Care "
812 "to 10=Very Important. A StorageVolume provider might choose "
813 "different RAID levels based on this hint.") ]
814 uint16 StorageEfficiencyHint;
815 };
816
817
818 // ===================================================================
819 // AllocatedFromStoragePool
820 kumpf 1.2 // ===================================================================
821 [Association, Version ("2.7.0"), Description (
822 "AllocatedFromStoragePool is an association describing how "
823 "LogicalElements are allocated from underlying StoragePools. "
824 "These elements typically would be subclasses of StorageExtents "
825 "or StoragePools.") ]
826 class CIM_AllocatedFromStoragePool : CIM_Dependency {
827
828 [Override ("Antecedent"),
829 Description ("The StoragePool.") ]
830 CIM_StoragePool REF Antecedent;
831
832 [Override ("Dependent"),
833 Description ("The subsidiary element.") ]
834 CIM_LogicalElement REF Dependent;
835
836 [Description (
837 "Space consumed from this Pool, in bytes."), Units("Bytes") ]
838 uint64 SpaceConsumed;
839 };
840
841 kumpf 1.2
842 // ==================================================================
843 // HostedStoragePool
844 // ==================================================================
845 [Association, Aggregation, Composition,
846 Version ("2.7.0"), Description (
847 "SystemStoragePool is a specialization of SystemComponent "
848 "association that establishes that the StoragePool is "
849 "defined in the context of the System.") ]
850 class CIM_HostedStoragePool : CIM_SystemComponent {
851
852 [Override ("GroupComponent"), Aggregate, Max (1), Min (1),
853 Description ("The parent system in the Association.") ]
854 CIM_System REF GroupComponent;
855
856 [Override ("PartComponent"), Description (
857 "The StoragePool that is a component of a System.") ]
858 CIM_StoragePool REF PartComponent;
859 };
860
861
862 kumpf 1.2 // ===================================================================
863 // ConfigurationReportingService
864 // ===================================================================
865 [Description (
866 "Service to provide reports on current configuration and "
867 "potential for growth. The service may be used in several "
868 "circumstances: \n"
869 "- To report growth potential (how many can I have) \n"
870 "- To report information on objects not directly modeled for "
871 "performance or other reasons. \n "
872 "It can also report counts of 'things' or counts of 'units'. "
873 "For example, the number of disk drives could be reported or the "
874 "capacity that they would provide.") ]
875 class CIM_ConfigurationReportingService : CIM_Service {
876
877 [Description(
878 "Returns a list of classes that the given Managed"
879 "Element supports or has installed."),
880 ValueMap {"0", "1", "2", "3", "4", "..", "32768..65535"},
881 Values {"Success", "Not Supported", "Unknown",
882 "Timeout", "Failed", "DMTF Reserved",
883 kumpf 1.2 "Vendor Specific"} ]
884 uint32 GetClassTypes(
885 [IN, ValueMap {"2", "3"},
886 Values {"Supports", "Installed"},
887 Description (
888 "The type of inquiry to be performed.") ]
889 uint16 InquiryType,
890 [IN, Description(
891 "False : Only report on elements directly contained "
892 "in/attached to the given ManagedElement. \n"
893 "True : Report on all objects contained in/attached "
894 "to the given ManagedElement.") ]
895 boolean Recursive,
896 [IN, Description(
897 "The target of query, for example a rack or a chassis.") ]
898 CIM_ManagedElement REF Target,
899 [OUT, IN (false), Description(
900 "Array containing the class names (typically the leaf "
901 "classes) that the given ManagedElement can support or "
902 "has installed.") ]
903 string ClassTypes[]);
904 kumpf 1.2
905 [Description(
906 "Returns a list of UnitTypes that are installed for "
907 "a given ClassType on a given ManagedElement."),
908 ValueMap {"0", "1", "2", "3", "4", "..", "32768..65535"},
909 Values {"Success", "Not Supported", "Unknown",
910 "Timeout", "Failed", "DMTF Reserved",
911 "Vendor Specific"} ]
912 uint32 GetUnitTypes(
913 [IN, ValueMap {"2", "3"},
914 Values {"Supported", "Installed"},
915 Description ("The type of inquiry to be performed.") ]
916 uint16 InquiryType,
917 [IN, Description(
918 "False : Only report on elements directly contained "
919 "in/attached to the given ManagedElement. \n"
920 "True : Report on all objects contained in/attached "
921 "to the given ManagedElement.") ]
922 boolean Recursive,
923 [IN, Description(
924 "The target of query, for example a rack or a chassis.") ]
925 kumpf 1.2 CIM_ManagedElement REF Target,
926 [IN, Description(
927 "The ClassType for the query. This should be a entry "
928 "returned in the GetClassTypes.ClassTypes property.") ]
929 string ClassType,
930 [OUT, IN (false), Description(
931 "A list of supported UnitTypes."),
932 ValueMap{"2", "3", "4", "5", "6", "7", "8", "9",
933 "10", "..", "32768..65535"},
934 Values {"None", "Front Side", "Back Side", "Contained",
935 "Connected", "I/O", "Memory", "StorageMediaLocation",
936 "Megabytes", "DMTF Reserved", "Vendor Specific"},
937 ModelCorrespondence {
938 "CIM_ConfigurationReportingService."
939 "ReportCapacity(UnitType)"} ]
940 uint16 UnitTypes[]);
941
942 [Description(
943 "Returns the maximum number supported or the "
944 "number of currently installed units for the given UnitType, "
945 "for a given ClassType on a given ManagedElement."),
946 kumpf 1.2 ValueMap {"0", "1", "2", "3", "4", "..",
947 "32768..65535"},
948 Values {"Success", "Not Supported", "Unknown",
949 "Timeout", "Failed", "DMTF Reserved",
950 "Vendor Specific"} ]
951 uint32 ReportCapacity(
952 [IN, ValueMap {"2", "3"},
953 Values {"Supported", "Installed"},
954 Description ("The type of inquiry to be performed.") ]
955 uint16 InquiryType,
956 [IN, Description(
957 "False : Only report on elements directly contained "
958 "in/attached to the given ManagedElement. \n"
959 "True : Report on all objects contained in/attached "
960 "to the given ManagedElement.") ]
961 boolean Recursive,
962 [IN, Description(
963 "The target of query, for example a rack or a chassis.") ]
964 CIM_ManagedElement REF Target,
965 [IN, Description(
966 "The ClassType for the query. This should be a entry "
967 kumpf 1.2 "returned in the GetClassTypes.ClassTypes property.") ]
968 string ClassType,
969 [IN, Description(
970 "The UnitType for the query."),
971 ValueMap{"2", "3", "4", "5", "6", "7", "8", "9",
972 "10", "..", "32768..65535"},
973 Values {"None", "Front Side", "Back Side", "Contained",
974 "Connected", "I/O", "Memory", "StorageMediaLocation",
975 "Megabytes", "DMTF Reserved", "Vendor Specific"},
976 ModelCorrespondence {
977 "CIM_ConfigurationReportingService."
978 "GetUnitTypes(UnitTypes)"} ]
979 uint16 UnitType,
980 [OUT, IN (false), Description (
981 "The maximum number of supported or the number of "
982 "currently installed units.") ]
983 uint64 NumberOfUnits);
984 };
985
986
987 // ===================================================================
988 kumpf 1.2 // end of file
989 // ===================================================================
|