1 karl 1.1 // ===================================================================
2 // Title: Device Storage Services 2.7.1
3 // Filename: Device27_StorageServices.mof
4 // Version: 2.7.1
5 // Release: Preliminary
6 // Date: November 12 2002
7 // ===================================================================
8 // Copyright 2002 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 karl 1.1 // 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 karl 1.1 // ===================================================================
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 // CR914 - Define the MaxValue qualifier (as 10) for
54 // AccessBandwidthWeight and AccessDirectionHint in
55 // StorageSettingWithHints
56 // CR920 - StorageConfigurationService.ModifySynchronization's Operation
57 // parameter requires a comma in its Values array after
58 // "Restore From Replica"
59 //
60 // Change Log for v2.7
61 // CR775 - Add StorageSetting, StoragePool, StorageCapabilities,
62 // StorageConfigurationService, StorageSettingsWithHints,
63 // HostedStoragePool, and AllocatedStoragePool
64 karl 1.1 // CR759 - Add ConfigurationReportingService
65 // CR777 - Add StorageSynchrononized
66 // Add StorageSetting.DeltaReservation,
67 // StorageCpabilities.DeltaReservationMin,
68 // StorageCpabilities.DeltaReservationMax,
69 // StorageCpabilities.DeltaReservationDefault,
70 // StorageConfigurationService.CreateReplica() and
71 // StorageConfigurationService.ModifySynchronization()
72 // CR895 - Correct the method return Values/ValueMaps for all the
73 // methods in the ConfigurationReportingService.
74 // ==================================================================
75
76 #pragma locale ("en_US")
77
78
79 // ==================================================================
80 // StorageSynchrononized
81 // ==================================================================
82 [Association, Experimental, Version ("2.7.0"), Description (
83 "Indicates that two Storage objects were replicated "
84 "at the specified point in time. If the CopyType "
85 karl 1.1 "property is set to 'Sync' (=3), then synchronization "
86 "of the Storage objects is preserved.") ]
87 class CIM_StorageSynchronized : CIM_Synchronized {
88
89 [Override("SystemElement"), Description (
90 "SystemElement represents the Storage that is "
91 "the source of the replication.") ]
92 CIM_LogicalElement REF SystemElement;
93
94 [Override("SyncedElement"), Description (
95 "SyncedElement represents the Storage that is "
96 "the target of the replication.") ]
97 CIM_LogicalElement REF SyncedElement;
98
99 [Description (
100 "CopyType describes the Replication Policy. "
101 "Values are: \n"
102 " Async: create and maintain an asynchronous "
103 "copy of the source. \n"
104 " Sync: create and maintain a synchronized copy "
105 "of the source. \n"
106 karl 1.1 " UnSyncAssoc: create an unsynchronized copy and "
107 "maintain an association to the source."),
108 ValueMap {"2", "3", "4", "..", "0x8000.."},
109 Values {"Async", "Sync", "UnSyncAssoc",
110 "DMTF Reserved", "Vendor Specific"} ]
111 uint16 CopyType;
112 };
113
114
115 // ==================================================================
116 // StorageSetting
117 // ==================================================================
118 [Experimental, Version ("2.7.0"), Description (
119 "StorageSetting is roughly equivalent to a Service Level "
120 "Agreement (SLA) when associated by ElementSetting "
121 "to a StorageVolume. StorageSetting is a Service "
122 "Level Objective (SLO) when used in a StartCreateStorageVolume "
123 "method. It defines a series of properties with Maximum and "
124 "Minimum values that the object should maintain.") ]
125 class CIM_StorageSetting : CIM_SettingData {
126
127 karl 1.1 [Write, Description (
128 "Indicates the desired value for No Single Point of Failure. "
129 "Possible values are false = single point of failure, and "
130 "true = no single point of failure.") ]
131 boolean NoSinglePointOfFailure;
132
133 [Write, MinValue(1), Description (
134 "DataRedundancyMax describes the maximum number of complete "
135 "copies of data to be maintained. Examples would be RAID 5 "
136 "where 1 copy is maintained and RAID 1 where 2 or more copies "
137 "are maintained. Possible values are 1 to n."),
138 ModelCorrespondence {"CIM_StorageSetting.DataRedundancyMin"} ]
139 uint16 DataRedundancyMax;
140
141 [Write, MinValue(1), Description (
142 "DataRedundancyMin describes the minimum number of complete "
143 "copies of data to be maintained. Examples would be RAID 5 "
144 "where 1 copy is maintained and RAID 1 where 2 or more copies "
145 "are maintained. Possible values are 1 to n."),
146 ModelCorrespondence {"CIM_StorageSetting.DataRedundancyMax"} ]
147 uint16 DataRedundancyMin;
148 karl 1.1
149 [Write, Description (
150 "SpindleRedundancyMax describes the maximum number of spindles "
151 "to be used. Spindle redundancy describes how many disk "
152 "spindles can fail without data loss including, at most, one "
153 "spare. Examples would be RAID5 with a Spindle Redundancy of "
154 "1, RAID6 with 2, RAID 6 with 2 spares would be 3. Possible "
155 "values are 0 to n."),
156 ModelCorrespondence {"CIM_StorageSetting.SpindleRedundancyMin"} ]
157 uint16 SpindleRedundancyMax;
158
159 [Write, Description (
160 "SpindleRedundancyMin describes the minimum number of spindles "
161 "to be used. Spindle redundancy describes how many disk "
162 "spindles can fail without data loss including, at most, one "
163 "spare. Examples would be RAID5 with a Spindle Redundancy of "
164 "1, RAID6 with 2, RAID 6 with 2 spares would be 3. Possible "
165 "values are 0 to n."),
166 ModelCorrespondence {"CIM_StorageSetting.SpindleRedundancyMax"} ]
167 uint16 SpindleRedundancyMin;
168
169 karl 1.1 [MinValue (1), MaxValue (100), Description (
170 "Delta reservation is a number between 1 (1%) and a 100 (100%) "
171 "that specifies how much space should reserved in a replica "
172 "for caching changes. For a complete copy this would be 100%, "
173 "but it can be lower in some implementations.") ]
174 uint16 DeltaReservation;
175 };
176
177
178 // ==================================================================
179 // StoragePool
180 // ==================================================================
181 [Experimental, Version ("2.7.0"), Description (
182 "A pool of Storage that is managed by a particular "
183 "System. StoragePools may consist of component StoragePools or "
184 "StorageExtents. StorageExtents/StoragePools that belong to the "
185 "StoragePool have a Component relationship to the StoragePool. "
186 "StorageExtents/StoragePools that are components of a "
187 "pool have their available space aggregated into the pool. "
188 "StoragePools and StorageVolumes may be created from StoragePools. "
189 "This is indicated by the AllocatedFromStoragePool association. "
190 karl 1.1 "StoragePool is scoped to a system by the SystemStoragePool "
191 "association.") ]
192 class CIM_StoragePool : CIM_LogicalElement {
193
194 [Key, Description (
195 "InstanceID opaquely identifies a unique instance of "
196 "StoragePool. The InstanceID must be unique within a "
197 "namespace. In order to ensure uniqueness, the value of "
198 "InstanceID SHOULD be constructed in the following manner: \n"
199 "<Vendor ID><ID> \n"
200 " <Vendor ID> MUST include a copyrighted, trademarked "
201 "or otherwise unique name that is owned by the business "
202 "entity or a registered ID that is assigned to the business "
203 "entity that is defining the InstanceID. (This is similar to "
204 "the <Schema Name>_<Class Name> structure of Schema class "
205 "names.) The purpose of <Vendor ID> is to ensure that <ID> is "
206 "truly unique across multiple vendor implementations. "
207 "If such a name is not used, the defining entity MUST assure "
208 "that the <ID> portion of the Instance ID is unique when "
209 "compared with other instance providers. For DMTF defined "
210 "instances, the <Vendor ID> is 'CIM'. \n"
211 karl 1.1 " <ID> MUST include a vendor specified unique "
212 "identifier.") ]
213 string InstanceID;
214
215 [Required, MaxLen (256), Description (
216 "A unique name in the context of the System that "
217 "identifies this pool.") ]
218 string PoolID;
219
220 [Description (
221 "For pools that support discrete sizes for volume or "
222 "pool creation, this method can be used to retrieve a "
223 "list of supported sizes. Note that different pool "
224 "implementations may support either or both the "
225 "GetSupportedSizes and GetSupportedSizeRanges at different "
226 "times, depending on Pool configuration. Also note that the "
227 "advertised size may change after the call due to requests "
228 "from other clients. If the pool currently only supports a "
229 "range of sizes, then the return value will be set to 1."),
230 ValueMap {"0", "1", "2"},
231 Values {"Method completed OK", "Method not supported",
232 karl 1.1 "Use GetSupportedSizeRange instead"} ]
233 uint32 GetSupportedSizes (
234 [IN, Description (
235 "Specifies the size requirements.") ]
236 CIM_StorageSetting REF Goal,
237 [OUT, IN(false), Description (
238 "List of support sizes for a Volume/Pool creation or "
239 "modification."),
240 Units ("MegaBytes") ]
241 uint64 Sizes[] );
242
243 [Description (
244 "For pools that that support a range of sizes for volume or "
245 "pool creation, this method can be used to retrieve the "
246 "supported range. Note that different pool implementations "
247 "may support either or both the GetSupportedSizes and "
248 "GetSupportedSizeRanges at different times, depending on Pool "
249 "configuration. Also note that the advertised size may change "
250 "after the call due to requests from other clients. If the "
251 "pool currently only supports discrete sizes, then the return "
252 "value will be set to 1."),
253 karl 1.1 ValueMap {"0", "1", "2"},
254 Values {"Method completed OK", "Method not supported",
255 "Use GetSupportedSizes instead"} ]
256 uint32 GetSupportedSizeRange (
257 [IN, Description (
258 "Specifies the size requirements.") ]
259 CIM_StorageSetting REF Goal,
260 [OUT, IN(false), Description (
261 "The minimum size for a volume/pool."),
262 Units ("MegaBytes") ]
263 uint64 MinimumVolumeSize,
264 [OUT, IN(false), Description (
265 "The maximum size for a volume/pool."),
266 Units ("MegaBytes") ]
267 uint64 MaximumVolumeSize,
268 [OUT, IN(false), Description (
269 "A volume/pool size must be a multiple of this value."),
270 Units ("MegaBytes") ]
271 uint64 VolumeSizeDivisor);
272
273 [Description (
274 karl 1.1 "Raw available space in the pool."), Units("MegaBytes") ]
275 uint64 TotalAvailableSpace;
276 };
277
278
279 // ==================================================================
280 // StorageCapabilities
281 // ==================================================================
282 [Experimental, Version ("2.7.0"), Description (
283 "A subclass of Capabilities that defines the "
284 "Capabilities of a StorageService or StoragePool. "
285 "For example, an instance of StorageCapabilities could be"
286 "associated with either a StorageConfigurationService or "
287 "StoragePool by using ElementCapabilities.") ]
288 class CIM_StorageCapabilities : CIM_Capabilities {
289
290 [Description (
291 "Enumeration indicating the type of instance to which this "
292 "StorageCapabilities applies."),
293 ValueMap{"0", "1", "2", "3", "4", "5", "6"},
294 Values {"Unknown", "Reserved", "Any Type", "StorageVolume",
295 karl 1.1 "StorageExtent", "StoragePool",
296 "StorageConfigurationService"} ]
297 uint16 InstanceType;
298
299 [Description (
300 "Indicates whether or not the associated instance supports "
301 "no single point of failure. Values are: "
302 "FALSE = does not support no single point of failure, "
303 "and TRUE = supports no single point of failure.") ]
304 boolean NoSinglePointOfFailure;
305
306 [Description (
307 "Indicates the default value for the NoSinglePointOfFailure "
308 "property."),
309 ModelCorrespondence {
310 "CIM_StorageCapabilities.NoSinglePointOfFailure"} ]
311 boolean NoSinglePointOfFailureDefault;
312
313 [MinValue (1), Description (
314 "DataRedundancyMax describes the maximum number of complete "
315 "copies of data that can be maintained. Examples would be "
316 karl 1.1 "RAID 5 where 1 copy is maintained and RAID 1 where 2 or "
317 "more copies are maintained. Possible values are 1 to n."),
318 ModelCorrespondence {"CIM_StorageCapabilities.DataRedundancyMin"} ]
319 uint16 DataRedundancyMax;
320
321 [MinValue (1), Description (
322 "DataRedundancyMin describes the minimum number of complete "
323 "copies of data that can be maintained. Examples would be "
324 "RAID 5 where 1 copy is maintained and RAID 1 where 2 or "
325 "more copies are maintained. Possible values are 1 to n."),
326 ModelCorrespondence {"CIM_StorageCapabilities.DataRedundancyMax"} ]
327 uint16 DataRedundancyMin;
328
329 [MinValue(1), Description (
330 "DataRedundancyDefault describes the default number of "
331 "complete copies of data that can be maintained. Examples "
332 "would be RAID 5 where 1 copy is maintained and RAID 1 where "
333 "2 or more copies are maintained. Possible values are "
334 "1 to n.") ]
335 uint16 DataRedundancyDefault;
336
337 karl 1.1 [Description (
338 "SpindleRedundancyMax describes the maximum number of spindles "
339 "that can be used. Spindle redundancy describes how many disk "
340 "spindles can fail without data loss including, at most, one "
341 "spare. Examples would be RAID5 with a Spindle Redundancy of "
342 "1, RAID6 with 2, RAID 6 with 2 spares would be 3. Possible "
343 "values are 0 to n."),
344 ModelCorrespondence {
345 "CIM_StorageCapabilities.SpindleRedundancyMin"} ]
346 uint16 SpindleRedundancyMax;
347
348 [Description (
349 "SpindleRedundancyMin describes the minimum number of spindles "
350 "that can be used. Spindle redundancy describes how many disk "
351 "spindles can fail without data loss including, at most, one "
352 "spare. Examples would be RAID5 with a Spindle Redundancy of "
353 "1, RAID6 with 2, RAID 6 with 2 spares would be 3. Possible "
354 "values are 0 to n."),
355 ModelCorrespondence {
356 "CIM_StorageCapabilities.SpindleRedundancyMax"} ]
357 uint16 SpindleRedundancyMin;
358 karl 1.1
359 [Description (
360 "SpindleRedundancyDefault describes the default number of "
361 "spindles that can be used. Spindle redundancy describes "
362 "how many disk spindles can fail without data loss including, "
363 "at most, one spare. Examples would be RAID5 with a Spindle "
364 "Redundancy of 1, RAID6 with 2, RAID 6 with 2 spares would be "
365 "3. Possible values are 0 to n.") ]
366 uint16 SpindleRedundancyDefault;
367
368 [MinValue (1), MaxValue (100), Description (
369 "Delta reservation is a number between 1 (1%) and a 100 (100%) "
370 "that specifies how much space should be reserved in a replica "
371 "for caching changes. For a complete copy this would be 100%, "
372 "but it can be lower in some implementations. This parameter "
373 "sets the upper limit."),
374 ModelCorrespondence {
375 "CIM_StorageCapabilities.DeltaReservationMin"} ]
376 uint16 DeltaReservationMax;
377
378 [MinValue (1), MaxValue (100), Description (
379 karl 1.1 "Delta reservation is a number between 1 (1%) and a 100 (100%) "
380 "that specifies how much space should be reserved in a replica "
381 "for caching changes. For a complete copy this would be 100%, "
382 "but it can be lower in some implementations. This parameter "
383 "sets the lower limit."),
384 ModelCorrespondence {
385 "CIM_StorageCapabilities.DeltaReservationMax"} ]
386 uint16 DeltaReservationMin;
387
388 [MinValue (1), MaxValue (100), Description (
389 "Delta reservation is a number between 1 (1%) and a 100 (100%) "
390 "that specifies how much space should be reserved in a replica "
391 "for caching changes. For a complete copy this would be 100%, "
392 "but it can be lower in some implementations. This parameter "
393 "sets the default value.") ]
394 uint16 DeltaReservationDefault;
395 };
396
397
398 // ==================================================================
399 // StorageConfigurationService
400 karl 1.1 // ==================================================================
401 [Experimental, Version ("2.7.1"), Description (
402 "This service allows the active management of a Storage "
403 "Server. It allows jobs to be started for the creation, "
404 "modification and deletion of storage objects (StoragePools "
405 "and StorageVolumes).") ]
406 class CIM_StorageConfigurationService : CIM_Service {
407
408 [Description (
409 "Starts a job to create (or modify) a StoragePool. The "
410 "StoragePool will be (or must be) scoped to the same System "
411 "as this Service. One of the parameters for this method is "
412 "Size. As an input parameter, Size specifies the desired size. "
413 "As an output parameter, Size specifies the size achieved. "
414 "Space is taken from either or both of the specified input "
415 "StoragePools and StorageExtents (InPools and InExtents). "
416 "The capability requirements that the Pool must support "
417 "are defined using the Goal parameter. If the requested "
418 "pool size cannot be created, no action will be taken, the "
419 "Return Value will be 0x1002, and the output value of "
420 "Size will be set to the nearest possible size. If 0 is "
421 karl 1.1 "returned, then the task completed successfully and the "
422 "use of ConcreteJob was not required. If the task will take "
423 "some time to complete, a ConcreteJob will be created "
424 "and its reference returned in the output paramter Job."),
425 ValueMap {"0", "1", "2", "3", "4", "5", "..",
426 "0x1000", "0x1001", "0x1002..0x7777", "0x8000.."},
427 Values {"Job Completed with No Error", "Not Supported",
428 "Unknown", "Timeout", "Failed", "Invalid Parameter",
429 "DMTF Reserved", "Method Parameters Checked - Job Started",
430 "Size Not Supported", "Method Reserved",
431 "Vendor Specific"} ]
432 uint32 CreateOrModifyStoragePool (
433 [OUT, IN(false), Description (
434 "Reference to the job (may be null if job completed).") ]
435 CIM_ConcreteJob REF Job,
436 [IN, Description (
437 "Reference to an instance of StorageSetting that defines "
438 "the desired capabilities of the StoragePool. If set to a "
439 "null value, the default configuration from the source "
440 "pool will be used.") ]
441 CIM_StorageSetting REF Goal,
442 karl 1.1 [IN, OUT, Description (
443 "As an input parameter this specifies the desired pool size. "
444 "As an output parameter this specifies the size "
445 "achieved.") ]
446 uint64 Size,
447 [IN, Description (
448 "Array of strings containing representations of "
449 "references to CIM_StoragePool instances, that are used "
450 "to create the Pool.") ]
451 string InPools[],
452 [IN, Description (
453 "Array of strings containing representations of "
454 "references to CIM_StorageExtent instances, that are used "
455 "to create the Pool.") ]
456 string InExtents[],
457 [IN, OUT, Description (
458 "As an input parameter: if null, creates a new StoragePool. "
459 "If not null, modifies the Pool. When returned, it is a "
460 "reference to the resulting StoragePool.") ]
461 CIM_StoragePool REF Pool);
462
463 karl 1.1 [Description (
464 "Start a job to create (or modify) a specified element (for "
465 "example a StorageVolume, StorageExtent, or StoragePool) from "
466 "a StoragePool. One of the parameters for this method is "
467 "Size. As an input parameter, Size specifies the desired size. "
468 "As an output parameter, Size specifies the size achieved. "
469 "Space is taken from the input StoragePool. The desired "
470 "settings for the element are specified by the Goal parameter. "
471 "If the requested size cannot be created, no action "
472 "will be taken, and the Return Value will be 0x1001. Also, "
473 "the output value of Size is set to the nearest possible "
474 "size. If 0 is returned, the function completed successfully "
475 "and no ConcreteJob instance was required. If 0x1000 is "
476 "returned, a ConcreteJob will be started to create the "
477 "element. The Job's reference will be returned in the "
478 "output paramter Job."),
479 ValueMap {"0", "1", "2", "3", "4", "5", "..",
480 "0x1000", "0x1001", "0x1002..0x7777", "0x8000.."},
481 Values {"Job Completed with No Error", "Not Supported",
482 "Unknown", "Timeout", "Failed", "Invalid Parameter",
483 "DMTF Reserved", "Method Parameters Checked - Job Started",
484 karl 1.1 "Size Not Supported", "Method Reserved",
485 "Vendor Specific"} ]
486 uint32 CreateOrModifyElementFromStoragePool(
487 [IN, Description (
488 "Enumeration indicating the type of element being created "
489 "or modified. If the input parameter Element is specified "
490 "when the operation is a 'modify', this type value must "
491 "match the type of that instance."),
492 ValueMap{"0", "1", "2", "3", "..", "0x8000.."},
493 Values {"Unknown", "Reserved", "StorageVolume",
494 "StorageExtent", "DMTF Reserved", "Vendor Specific"} ]
495 uint16 ElementType,
496 [OUT, IN(false), Description (
497 "Reference to the job (may be null if job completed).") ]
498 CIM_ConcreteJob REF Job,
499 [IN, Description (
500 "The requirements for the element to maintain. If set to "
501 "a null value, the default configuration from the source "
502 "pool will be used.") ]
503 CIM_StorageSetting REF Goal,
504 [IN, OUT, Description (
505 karl 1.1 "As an input parameter Size specifies the desired size. "
506 "As an output parameter Size specifies the size "
507 "achieved.") ]
508 uint64 Size,
509 [IN, Description (
510 "The Pool from which to create the element. This parameter "
511 "must be set to null if the input parameter Element is "
512 "specified (in the case of a 'modify' operation).") ]
513 CIM_StoragePool REF InPool,
514 [IN, OUT, Description (
515 "As an input parameter: if null, creates a new element. If "
516 "not null, then the method modifies the specified element. "
517 "As an output parameter, it is a reference to the "
518 "resulting element.") ]
519 CIM_LogicalElement REF TheElement);
520
521 [Description (
522 "Start a job to delete a StoragePool. The freed space is "
523 "returned to the source StoragePool. If 0 is returned, the "
524 "function completed successfully, and no ConcreteJob was "
525 "required. If 0x1000 is returned, a ConcreteJob will be started "
526 karl 1.1 "to delete the StoragePool. A reference to the Job is returned "
527 "in the Job parameter."),
528 ValueMap {"0", "1", "2", "3", "4", "5", "..", "0x1000",
529 "0x1001..0x7777", "0x8000.."},
530 Values {"Job Completed with No Error", "Not Supported",
531 "Unknown", "Timeout", "Failed", "Invalid Parameter",
532 "DMTF Reserved", "Method Parameters Checked - Job Started",
533 "Method Reserved", "Vendor Specific"} ]
534 uint32 DeleteStoragePool (
535 [OUT, IN(false), Description (
536 "Reference to the job (may be null if job completed).") ]
537 CIM_ConcreteJob REF Job,
538 [IN, Description (
539 "Reference to the pool to delete.") ]
540 CIM_StoragePool REF Pool);
541
542 [Description (
543 "Start a job to delete an element previously created from a "
544 "StoragePool. The freed space is returned to the source "
545 "StoragePool. If 0 is returned, the function completed "
546 "successfully and no ConcreteJob was required. If 0x1000 is "
547 karl 1.1 "returned, a ConcreteJob will be started to delete the element. "
548 "A reference to the Job is returned in the Job parameter."),
549 ValueMap {"0", "1", "2", "3", "4", "5", "..", "0x1000",
550 "0x1001..0x7777", "0x8000.."},
551 Values {"Job Completed with No Error", "Not Supported",
552 "Unknown", "Timeout", "Failed", "Invalid Parameter",
553 "DMTF Reserved", "Method Parameters Checked - Job Started",
554 "Method Reserved", "Vendor Specific"} ]
555 uint32 ReturnToStoragePool(
556 [OUT, IN(false), Description (
557 "Reference to the job (may be null if job completed).") ]
558 CIM_ConcreteJob REF Job,
559 [IN, Description (
560 "Reference to the element to return to the StoragePool.") ]
561 CIM_LogicalElement REF TheElement);
562
563 [Description (
564 "Start a job to create a new storage object which "
565 "is a replica of the source storage object. Note that using "
566 "the input paramter, CopyType, this function can be used to "
567 "instantiate the replica, and to create an ongoing "
568 karl 1.1 "association between the source and replica. If 0 is "
569 "returned, the function completed successfully and "
570 "no ConcreteJob instance is created. If 0x1000 is returned, "
571 "a ConcreteJob is started, a reference to which is "
572 "returned in the Job output parameter."),
573 ValueMap {"0", "1", "2", "3", "4", "5", "..", "0x1000",
574 "0x1001..0x7777", "0x8000.."},
575 Values {"Job Completed with No Error", "Not Supported",
576 "Unknown", "Timeout", "Failed", "Invalid Parameter",
577 "DMTF Reserved", "Method Parameters Checked - Job Started",
578 "Method Reserved", "Vendor Specific"} ]
579 uint32 CreateReplica(
580 [OUT, IN(false), Description (
581 "Reference to the job (may be null if job completed).") ]
582 CIM_ConcreteJob REF Job,
583 [IN, Required, Description (
584 "The source storage object.") ]
585 CIM_LogicalElement REF SourceElement,
586 [OUT, IN(false), Description (
587 "Reference to the created target storage element "
588 "(i.e., the replica).") ]
589 karl 1.1 CIM_LogicalElement REF TargetElement,
590 [IN, Description (
591 "The definition for the StorageSetting to be maintained "
592 "by the target storage object (the replica).") ]
593 CIM_StorageSetting REF TargetSettingGoal,
594 [IN, Description (
595 "The underlying storage for the target element (the "
596 "replica) will be drawn from TargetPool if specified, "
597 "otherwise the allocation is implementation specific.") ]
598 CIM_StoragePool REF TargetPool,
599 [IN, Description (
600 "CopyType describes the type of copy that will be made. "
601 "Values are: \n "
602 " Async: Create and maintain an asynchronous "
603 "copy of the source. \n "
604 " Sync: Create and maintain a synchronized copy "
605 "of the source. \n"
606 " UnSyncAssoc: Create an unsynchronized copy and "
607 "maintain an association to the source. \n "
608 " UnSyncUnAssoc: Create unassociated copy of the "
609 "source element."),
610 karl 1.1 ValueMap {"2", "3", "4", "5", "..", "0x8000.."},
611 Values {"Async", "Sync", "UnSyncAssoc", "UnSyncUnAssoc",
612 "DMTF Reserved", "Vendor Specific"} ]
613 uint16 CopyType);
614
615 [Description (
616 "Starts a job to modify the synchronization association "
617 "between two storage objects. If 0 is returned, the "
618 "function completed successfully and no ConcreteJob "
619 "instance was created. If 0x1000 is returned, a ConcreteJob "
620 "was started. A reference to this Job is returned in "
621 "the Job output parameter."),
622 ValueMap {"0", "1", "2", "3", "4", "5", "..", "0x1000",
623 "0x1001..0x7777", "0x8000.."},
624 Values {"Job Completed with No Error", "Not Supported",
625 "Unknown", "Timeout", "Failed", "Invalid Parameter",
626 "DMTF Reserved",
627 "Method Parameters Checked - Job Started",
628 "Method Reserved", "Vendor Specific"} ]
629 uint32 ModifySynchronization(
630 [IN, Description (
631 karl 1.1 "Operation describes the type of modification "
632 "to be made to the replica. Values are: \n "
633 " Detach: 'Forget' the synchronization between "
634 "two storage objects. Start to treat the objects as "
635 "independent. \n "
636 " Fracture: Suspend the synchronization between "
637 "two storage objects. The association and "
638 "(typically) changes are remembered to allow a fast "
639 "resynchronization. This may be used during "
640 "a backup cycle to allow one of the objects to be "
641 "copied while the other remains in production. \n"
642 " Resync Replica: Re-establish the synchronization of "
643 "a replica. If CopyJob is Sync or Async, this will "
644 "negate the action of a previous Fracture operation. \n"
645 " Restore from Replica: Renew the contents of "
646 "the original storage object from a replica."),
647 ValueMap {"0","1","2", "3", "4", "5", "..", "0x8000.."},
648 Values {" DMTF Reserved", "DMTF Reserved", "Detach",
649 "Fracture", "Resync Replica", "Restore from Replica",
650 "DMTF Reserved", "Vendor Specific"} ]
651 uint16 Operation,
652 karl 1.1 [OUT, IN(false), Description (
653 "Reference to the job (may be null if job completed).") ]
654 CIM_ConcreteJob REF Job,
655 [IN, Description (
656 "The referenced to the StorageSynchronized association "
657 "describing the storage source/replica relationship.") ]
658 CIM_StorageSynchronized REF Synchronization);
659 };
660
661
662 // ====================================================================
663 // StorageSettingWithHints
664 // ====================================================================
665 [Experimental, Version("2.7.1"), Description (
666 "This subclass of StorageSetting allows a client to specify "
667 "'hint's for optimization of the volume performance. The effect "
668 "of these hints is implementation dependent.") ]
669 class CIM_StorageSettingWithHints: CIM_StorageSetting {
670
671 [MinValue (0), MaxValue (10), Description (
672 "This hint is an indication from a client of the importance "
673 karl 1.1 "placed on data availability. Values are 0=Don't Care to "
674 "10=Very Important.") ]
675 uint16 DataAvailabilityHint;
676
677 [MinValue (0), MaxValue (10), Description (
678 "This hint is an indication from a client of the randomness "
679 "of accesses. Values are 0=Entirely Sequential to "
680 "10=Entirely Random.") ]
681 uint16 AccessRandomnessHint;
682
683 [MinValue (0), MaxValue (10), Description (
684 "This hint is an indication from a client of the direction "
685 "of accesses. Values are 0=Entirely Read to "
686 "10=Entirely Write.") ]
687 uint16 AccessDirectionHint;
688
689 [Description (
690 "This hint is an indication from a client of the optimal "
691 "access sizes. Several sizes can be specified."),
692 Units ("MegaBytes") ]
693 uint16 AccessSizeHint[];
694 karl 1.1
695 [MinValue (0), MaxValue (10), Description (
696 "This hint is an indication from a client how important "
697 "access latency is. Values are 0=Don't Care to "
698 "10=Very Important.") ]
699 uint16 AccessLatencyHint;
700
701 [MinValue (0), MaxValue (10), Description (
702 "This hint is an indication from a client of bandwidth "
703 "prioritization. Values are 0=Don't Care to "
704 "10=Very Important.") ]
705 uint16 AccessBandwidthWeight;
706
707 [MinValue (0), MaxValue (10), Description (
708 "This hint is an indication of the importance the client "
709 "places on the cost of storage. Values are 0=Don't Care to "
710 "10=Very Important. A StorageVolume provider might choose "
711 "to place data on low cost or high cost drives based on "
712 "this parameter.") ]
713 uint16 StorageCostHint;
714
715 karl 1.1 [MinValue (0), MaxValue (10), Description (
716 "This hint is an indication of the importance placed on "
717 "storage efficiency by the client. Values are 0=Don't Care "
718 "to 10=Very Important. A StorageVolume provider might choose "
719 "different RAID levels based on this hint.") ]
720 uint16 StorageEfficiencyHint;
721 };
722
723
724 // ==================================================================
725 // HostedStoragePool
726 // ==================================================================
727 [Association, Aggregation, Experimental, Composition,
728 Version ("2.7.0"), Description (
729 "SystemStoragePool is a specialization of SystemComponent "
730 "association that establishes that the StoragePool is "
731 "defined in the context of the System.") ]
732 class CIM_HostedStoragePool : CIM_SystemComponent {
733
734 [Override ("GroupComponent"), Aggregate, Max (1), Min (1),
735 Description ("The parent system in the Association.") ]
736 karl 1.1 CIM_System REF GroupComponent;
737
738 [Override ("PartComponent"), Description (
739 "The StoragePool that is a component of a System.") ]
740 CIM_StoragePool REF PartComponent;
741 };
742
743
744 // ===================================================================
745 // AllocatedFromStoragePool
746 // ===================================================================
747 [Association, Experimental, Version ("2.7.0"), Description (
748 "AllocatedFromStoragePool is an association describing how "
749 "LogicalElements are allocated from underlying StoragePools. "
750 "These elements typically would be subclasses of StorageExtents "
751 "or StoragePools.") ]
752 class CIM_AllocatedFromStoragePool : CIM_Dependency {
753
754 [Override ("Antecedent"),
755 Description ("The StoragePool.") ]
756 CIM_StoragePool REF Antecedent;
757 karl 1.1
758 [Override ("Dependent"),
759 Description ("The subsidiary element.") ]
760 CIM_LogicalElement REF Dependent;
761
762 [Description (
763 "Space Consumed from this Pool"), Units("MegaBytes") ]
764 uint64 SpaceConsumed;
765 };
766
767
768 // ===================================================================
769 // ConfigurationReportingService
770 // ===================================================================
771 [Experimental, Description (
772 "Service to provide reports on current configuration and "
773 "potential for growth. The service may be used in several "
774 "circumstances: \n"
775 "- To report growth potential (how many can I have) \n"
776 "- To report information on objects not directly modeled for "
777 "performance or other reasons. \n "
778 karl 1.1 "It can also report counts of 'things' or counts of 'units'. "
779 "For example, the number of disk drives could be reported or the "
780 "capacity that they would provide.") ]
781 class CIM_ConfigurationReportingService : CIM_Service {
782
783 [Description (
784 "Returns a list of classes that the given Managed"
785 "Element supports or has installed."),
786 ValueMap {"0", "1", "2", "3", "4", "..", "0x8000.."},
787 Values {"Success", "Not Supported", "Unknown",
788 "Timeout", "Failed", "DMTF Reserved",
789 "Vendor Specific"} ]
790 uint32 GetClassTypes(
791 [IN, ValueMap {"2", "3"},
792 Values {"Supports", "Installed"},
793 Description (
794 "The type of inquiry to be performed.") ]
795 uint16 InquiryType,
796 [IN, Description (
797 "False : Only report on elements directly contained "
798 "in/attached to the given ManagedElement. \n"
799 karl 1.1 "True : Report on all objects contained in/attached "
800 "to the given ManagedElement.") ]
801 boolean Recursive,
802 [IN, Description (
803 "The target of query, for example a rack or a chassis.") ]
804 CIM_ManagedElement REF Target,
805 [OUT, IN (false), Description (
806 "Array containing the class names (typically the leaf "
807 "classes) that the given ManagedElement can support or "
808 "has installed.") ]
809 string ClassTypes[]);
810
811 [Description (
812 "Returns a list of UnitTypes that are installed for "
813 "a given ClassType on a given ManagedElement."),
814 ValueMap {"0", "1", "2", "3", "4", "..", "0x8000.."},
815 Values {"Success", "Not Supported", "Unknown",
816 "Timeout", "Failed", "DMTF Reserved",
817 "Vendor Specific"} ]
818 uint32 GetUnitTypes(
819 [IN, ValueMap {"2", "3"},
820 karl 1.1 Values {"Supported", "Installed"},
821 Description ("The type of inquiry to be performed.") ]
822 uint16 InquiryType,
823 [IN, Description (
824 "False : Only report on elements directly contained "
825 "in/attached to the given ManagedElement. \n"
826 "True : Report on all objects contained in/attached "
827 "to the given ManagedElement.") ]
828 boolean Recursive,
829 [IN, Description (
830 "The target of query, for example a rack or a chassis.") ]
831 CIM_ManagedElement REF Target,
832 [IN, Description (
833 "The ClassType for the query. This should be a entry "
834 "returned in the GetClassTypes.ClassTypes property.") ]
835 string ClassType,
836 [OUT, IN (false), Description (
837 "A list of supported UnitTypes."),
838 ValueMap{"2", "3", "4", "5", "6", "7", "8", "9",
839 "10", "..", "0x8000.."},
840 Values {"None", "Front Side", "Back Side", "Contained",
841 karl 1.1 "Connected", "I/O", "Memory", "StorageMediaLocation",
842 "Megabytes", "DMTF Reserved", "Vendor Specific"},
843 ModelCorrespondence {
844 "CIM_ConfigurationReportingService."
845 "ReportCapacity(UnitType)"} ]
846 uint16 UnitTypes[]);
847
848 [Description (
849 "Returns the maximum number supported or the "
850 "number of currently installed units for the given UnitType, "
851 "for a given ClassType on a given ManagedElement."),
852 ValueMap {"0", "1", "2", "3", "4", "..", "0x8000.."},
853 Values {"Success", "Not Supported", "Unknown",
854 "Timeout", "Failed", "DMTF Reserved",
855 "Vendor Specific"} ]
856 uint32 ReportCapacity(
857 [IN, ValueMap {"2", "3"},
858 Values {"Supported", "Installed"},
859 Description ("The type of inquiry to be performed.") ]
860 uint16 InquiryType,
861 [IN, Description (
862 karl 1.1 "False : Only report on elements directly contained "
863 "in/attached to the given ManagedElement. \n"
864 "True : Report on all objects contained in/attached "
865 "to the given ManagedElement.") ]
866 boolean Recursive,
867 [IN, Description (
868 "The target of query, for example a rack or a chassis.") ]
869 CIM_ManagedElement REF Target,
870 [IN, Description (
871 "The ClassType for the query. This should be a entry "
872 "returned in the GetClassTypes.ClassTypes property.") ]
873 string ClassType,
874 [IN, Description (
875 "The UnitType for the query."),
876 ValueMap{"2", "3", "4", "5", "6", "7", "8", "9",
877 "10", "..", "0x8000.."},
878 Values {"None", "Front Side", "Back Side", "Contained",
879 "Connected", "I/O", "Memory", "StorageMediaLocation",
880 "Megabytes", "DMTF Reserved", "Vendor Specific"},
881 ModelCorrespondence {
882 "CIM_ConfigurationReportingService."
883 karl 1.1 "GetUnitTypes(UnitTypes)"} ]
884 uint16 UnitType,
885 [OUT, IN (false), Description (
886 "The maximum number of supported or the number of "
887 "currently installed units.") ]
888 uint64 NumberOfUnits);
889 };
890
891
892 // ===================================================================
893 // end of file
894 // ===================================================================
|