1 a.dunfey 1.1 // ===================================================================
2 // Title: Storage Devices
3 // $State: Preliminary $
4 // $Date: 2005/01/05 00:54:00 $
5 // $Source: /home/dmtf2/dotorg/var/cvs/repositories/dev/Schema/MOF/Device_StorageDevices.mof,v $
6 // $Revision: 1.12 $
7 // ===================================================================
8 //#pragma inLine ("Includes/copyright.inc")
9 // Copyright 1998-2005 Distributed Management Task Force, Inc. (DMTF).
10 // All rights reserved.
11 // DMTF is a not-for-profit association of industry members dedicated
12 // to promoting enterprise and systems management and interoperability.
13 // DMTF specifications and documents may be reproduced for uses
14 // consistent with this purpose by members and non-members,
15 // provided that correct attribution is given.
16 // As DMTF specifications may be revised from time to time,
17 // the particular version and release date should always be noted.
18 //
19 // Implementation of certain elements of this standard or proposed
20 // standard may be subject to third party patent rights, including
21 // provisional patent rights (herein "patent rights"). DMTF makes
22 a.dunfey 1.1 // no representations to users of the standard as to the existence
23 // of such rights, and is not responsible to recognize, disclose, or
24 // identify any or all such third party patent right, owners or
25 // claimants, nor for any incomplete or inaccurate identification or
26 // disclosure of such rights, owners or claimants. DMTF shall have no
27 // liability to any party, in any manner or circumstance, under any
28 // legal theory whatsoever, for failure to recognize, disclose, or
29 // identify any such third party patent rights, or for such party's
30 // reliance on the standard or incorporation thereof in its product,
31 // protocols or testing procedures. DMTF shall have no liability to
32 // any party implementing such standard, whether such implementation
33 // is foreseeable or not, nor to any patent owner or claimant, and shall
34 // have no liability or responsibility for costs or losses incurred if
35 // a standard is withdrawn or modified after publication, and shall be
36 // indemnified and held harmless by any party implementing the
37 // standard from any and all claims of infringement by a patent owner
38 // for such implementations.
39 //
40 // For information about patents held by third-parties which have
41 // notified the DMTF that, in their opinion, such patent may relate to
42 // or impact implementations of DMTF standards, visit
43 a.dunfey 1.1 // http://www.dmtf.org/about/policies/disclosures.php.
44 //#pragma inLine
45 // ===================================================================
46 // Description: The Device Model extends the management concepts that
47 // are related to LogicalDevices. This file defines
48 // the management of storage devices (floppies,
49 // CD-ROMs, hard drives, etc.).
50 //
51 // The object classes below are listed in an order that
52 // avoids forward references. Required objects, defined
53 // by other working groups, are omitted.
54 // ==================================================================
55 // Change Log for v2.9 Preliminary Company Review
56 // CR1456 - Updates plus typo fixes for multipath interfaces
57 // CR1465 - Corrected compile errors and warnings.
58 //
59 // Change Log for v2.9 preliminary:
60 // CR1334 : Addition of storage multipath model.
61
62 // Change Log for v2.8 Final:
63 // CR1233 - SysDev omnibus CR - minor MOF corrections
64 a.dunfey 1.1 //
65 // Change Log for v2.7 Final
66 // CR970 - Removal of the Experimental qualifier
67 //
68 // Change Log for v2.7
69 // CR721 - Add DeviceErrorCountData that is part of the new statistics
70 // hierarchy
71 // ==================================================================
72
73 #pragma locale ("en_US")
74
75
76 // ===================================================================
77 // MediaAccessDevice
78 // ===================================================================
79 [Version ( "2.6.0" ), Description (
80 "A MediaAccessDevice represents the ability to access one or "
81 "more media and use this media to store and retrieve data.")]
82 class CIM_MediaAccessDevice : CIM_LogicalDevice {
83
84 [Description (
85 a.dunfey 1.1 "Capabilities of the MediaAccessDevice. For example, the "
86 "Device may support \"Random Access\", removeable media and "
87 "\"Automatic Cleaning\". In this case, the values 3, 7 and 9 "
88 "would be written to the array. \n"
89 "Several of the enumerated values require some explanation: "
90 "1) Value 11, Supports Dual Sided Media, distinguishes a "
91 "Device that can access both sides of dual sided Media, from "
92 "a Device that reads only a single side and requires the "
93 "Media to be flipped; and, 2) Value 12, Predismount Eject "
94 "Not Required, indicates that Media does not have to be "
95 "explicitly ejected from the Device before being accessed by "
96 "a PickerElement."),
97 ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
98 "10", "11", "12" },
99 Values { "Unknown", "Other", "Sequential Access",
100 "Random Access", "Supports Writing", "Encryption",
101 "Compression", "Supports Removeable Media",
102 "Manual Cleaning", "Automatic Cleaning",
103 // 10
104 "SMART Notification", "Supports Dual Sided Media",
105 "Predismount Eject Not Required" },
106 a.dunfey 1.1 MappingStrings { "MIF.DMTF|Storage Devices|001.9",
107 "MIF.DMTF|Storage Devices|001.11",
108 "MIF.DMTF|Storage Devices|001.12", "MIF.DMTF|Disks|003.7",
109 "MIF.DMTF|Host Disk|001.2", "MIF.DMTF|Host Disk|001.4" },
110 ArrayType ( "Indexed" ),
111 ModelCorrespondence {
112 "CIM_MediaAccessDevice.CapabilityDescriptions" }]
113 uint16 Capabilities[];
114
115 [Description (
116 "An array of free-form strings providing more detailed "
117 "explanations for any of the AccessDevice features indicated "
118 "in the Capabilities array. Note, each entry of this array "
119 "is related to the entry in the Capabilities array that is "
120 "located at the same index."),
121 ArrayType ( "Indexed" ),
122 ModelCorrespondence { "CIM_MediaAccessDevice.Capabilities" }]
123 string CapabilityDescriptions[];
124
125 [Description (
126 "ErrorMethodology is a free-form string describing the "
127 a.dunfey 1.1 "type(s) of error detection and correction supported by this "
128 "Device.")]
129 string ErrorMethodology;
130
131 [Description (
132 "A free form string indicating the algorithm or tool used by "
133 "the device to support compression. If it is not possible or "
134 "not desired to describe the compression scheme (perhaps "
135 "because it is not known), recommend using the following "
136 "words: \"Unknown\" to represent that it is not known "
137 "whether the device supports compression capabilities or "
138 "not, \"Compressed\" to represent that the device supports "
139 "compression capabilities but either its compression scheme "
140 "is not known or not disclosed, and \"Not Compressed\" to "
141 "represent that the devices does not support compression "
142 "capabilities.")]
143 string CompressionMethod;
144
145 [Description (
146 "When the MediaAccessDevice supports multiple individual "
147 "Media, this property defines the maximum number which can "
148 a.dunfey 1.1 "be supported or inserted.")]
149 uint32 NumberOfMediaSupported;
150
151 [Description (
152 "Maximum size, in KBytes, of media supported by this Device. "
153 "KBytes is interpreted as the number of bytes multiplied by "
154 "1000 (NOT the number of bytes multiplied by 1024)."),
155 MappingStrings { "MIF.DMTF|Sequential Access Devices|001.2",
156 "MIF.DMTF|Host Disk|001.5" }]
157 uint64 MaxMediaSize;
158
159 [Description (
160 "Default block size, in bytes, for this Device."),
161 Units ( "Bytes" )]
162 uint64 DefaultBlockSize;
163
164 [Description (
165 "Maximum block size, in bytes, for media accessed by this "
166 "Device."),
167 Units ( "Bytes" )]
168 uint64 MaxBlockSize;
169 a.dunfey 1.1
170 [Description (
171 "Minimum block size, in bytes, for media accessed by this "
172 "Device."),
173 Units ( "Bytes" )]
174 uint64 MinBlockSize;
175
176 [Description (
177 "Boolean indicating that the MediaAccessDevice needs "
178 "cleaning. Whether manual or automatic cleaning is possible "
179 "is indicated in the Capabilities array property.")]
180 boolean NeedsCleaning;
181
182 [Description (
183 "True indicates that the media is locked in the Device and "
184 "can not be ejected. For non-removeable Devices, this value "
185 "should be true.")]
186 boolean MediaIsLocked;
187
188 [Description (
189 "An enumeration indicating the operational security defined "
190 a.dunfey 1.1 "for the MediaAccessDevice. For example, information that "
191 "the Device is \"Read Only\" (value=4) or \"Boot Bypass\" "
192 "(value=6) can be described using this property."),
193 ValueMap { "1", "2", "3", "4", "5", "6", "7" },
194 Values { "Other", "Unknown", "None", "Read Only", "Locked Out",
195 "Boot Bypass", "Boot Bypass and Read Only" },
196 MappingStrings { "MIF.DMTF|Disks|003.22" }]
197 uint16 Security;
198
199 [Description (
200 "The date and time on which the Device was last cleaned.")]
201 datetime LastCleaned;
202
203 [Description (
204 "Time in milliseconds to move from the first location on the "
205 "Media to the location that is furthest with respect to "
206 "time. For a DiskDrive, this represents full seek + full "
207 "rotational delay. For TapeDrives, this represents a search "
208 "from the beginning of the tape to the most physically "
209 "distant point. (The end of a tape may be at its most "
210 "physically distant point, but this is not necessarily "
211 a.dunfey 1.1 "true.)"),
212 Units ( "MilliSeconds" )]
213 uint64 MaxAccessTime;
214
215 [Description (
216 "The sustained data transfer rate in KB/sec that the Device "
217 "can read from and write to a Media. This is a sustained, "
218 "raw data rate. Maximum rates or rates assuming compression "
219 "should not be reported in this property."),
220 Units ( "KiloBytes per Second" )]
221 uint32 UncompressedDataRate;
222
223 [Description (
224 "Time in milliseconds from 'load' to being able to read or "
225 "write a Media. For example, for DiskDrives, this is the "
226 "interval between a disk not spinning to the disk reporting "
227 "that it is ready for read/write (ie, the disk spinning at "
228 "nominal speeds). For TapeDrives, this is the time from a "
229 "Media being injected to reporting that it is ready for an "
230 "application. This is usually at the tape's BOT area."),
231 Units ( "MilliSeconds" )]
232 a.dunfey 1.1 uint64 LoadTime;
233
234 [Description (
235 "Time in milliseconds from being able to read or write a "
236 "Media to its 'unload'. For example, for DiskDrives, this is "
237 "the interval between a disk spinning at nominal speeds and "
238 "a disk not spinning. For TapeDrives, this is the time for a "
239 "Media to go from its BOT to being fully ejected and "
240 "accessible to a PickerElement or human operator."),
241 Units ( "MilliSeconds" )]
242 uint64 UnloadTime;
243
244 [Description (
245 "For a MediaAccessDevice that supports removable Media, the "
246 "number of times that Media have been mounted for data "
247 "transfer or to clean the Device. For Devices accessing "
248 "nonremovable Media, such as hard disks, this property is "
249 "not applicable and should be set to 0."),
250 Counter]
251 uint64 MountCount;
252
253 a.dunfey 1.1 [Description (
254 "For a MediaAccessDevice that supports removable Media, the "
255 "most recent date and time that Media was mounted on the "
256 "Device. For Devices accessing nonremovable Media, such as "
257 "hard disks, this property has no meaning and is not "
258 "applicable.")]
259 datetime TimeOfLastMount;
260
261 [Description (
262 "For a MediaAccessDevice that supports removable Media, the "
263 "total time (in seconds) that Media have been mounted for "
264 "data transfer or to clean the Device. For Devices accessing "
265 "nonremovable Media, such as hard disks, this property is "
266 "not applicable and should be set to 0.")]
267 uint64 TotalMountTime;
268
269 [Description (
270 "Defines 'Units' relative to its use in the property, "
271 "MaxUnitsBeforeCleaning. This describes the criteria used to "
272 "determine when the MediaAccessDevice should be cleaned."),
273 ModelCorrespondence {
274 a.dunfey 1.1 "CIM_MediaAccessDevice.MaxUnitsBeforeCleaning",
275 "CIM_MediaAccessDevice.UnitsUsed" }]
276 string UnitsDescription;
277
278 [Description (
279 "An unsigned integer indicating the maximum 'units' that can "
280 "be used, with respect to the AccessDevice, before the "
281 "Device should be cleaned. The property, UnitsDescription, "
282 "defines how 'units' should be interpreted."),
283 ModelCorrespondence { "CIM_MediaAccessDevice.UnitsDescription" }]
284 uint64 MaxUnitsBeforeCleaning;
285
286 [Description (
287 "An unsigned integer indicating the currently used 'units' "
288 "of the AccessDevice, helpful to describe when the Device "
289 "may require cleaning. The property, UnitsDescription, "
290 "defines how 'units' should be interpreted."),
291 Gauge,
292 ModelCorrespondence { "CIM_MediaAccessDevice.UnitsDescription",
293 "CIM_MediaAccessDevice.MaxUnitsBeforeCleaning" }]
294 uint64 UnitsUsed;
295 a.dunfey 1.1
296 [Description (
297 "Method to lock and unlock the media in a removeable Access "
298 "Device. The method takes one parameter as input - a boolean "
299 "indicating whether to lock or unlock. TRUE indicates that "
300 "the media should be locked in the Device, FALSE indicates "
301 "that the media should be unlocked. The method returns 0 if "
302 "successful, 1 if not supported, and any other value if an "
303 "error occurred. The set of possible return codes should be "
304 "specified in a ValueMap qualifier on the method. The "
305 "strings to which the ValueMap contents are 'translated' "
306 "should be specified as a Values array qualifier on the "
307 "method.")]
308 uint32 LockMedia (
309 [IN, Description (
310 "If TRUE, lock the media. If FALSE release the media.")]
311 boolean Lock);
312 };
313
314
315 // ===================================================================
316 a.dunfey 1.1 // DiskDrive
317 // ===================================================================
318 [Version ( "2.6.0" ), Description (
319 "Capabilities and managment of a DiskDrive, a subtype of "
320 "MediaAccessDevice.")]
321 class CIM_DiskDrive : CIM_MediaAccessDevice {
322 };
323
324
325 // ===================================================================
326 // DisketteDrive
327 // ===================================================================
328 [Version ( "2.6.0" ), Description (
329 "Capabilities and managment of a DisketteDrive, a subtype of "
330 "MediaAccessDevice.")]
331 class CIM_DisketteDrive : CIM_MediaAccessDevice {
332 };
333
334
335 // ===================================================================
336 // CDROMDrive
337 a.dunfey 1.1 // ===================================================================
338 [Version ( "2.6.0" ), Description (
339 "Capabilities and managment of a CDROMDrive, a subtype of "
340 "MediaAccessDevice.")]
341 class CIM_CDROMDrive : CIM_MediaAccessDevice {
342 };
343
344
345 // ===================================================================
346 // DVDDrive
347 // ===================================================================
348 [Version ( "2.6.0" ), Description (
349 "Capabilities and management of a DVDDrive, a subtype of "
350 "MediaAccessDevice.")]
351 class CIM_DVDDrive : CIM_MediaAccessDevice {
352
353 [Description (
354 "The CD and DVD formats that are supported by this Device. "
355 "For example, the Drive may support \"CD-ROM\" and "
356 "\"DVD-RAM\". In this case, the values 16 and 24 would be "
357 "written to the array. This property's values align with "
358 a.dunfey 1.1 "those defined in PhysicalMedia.MediaType."),
359 ValueMap { "0", "1", "16", "17", "18", "19", "22", "23", "24",
360 "25", "26", "27", "33", "34", "35", "36", "37", "38", "39",
361 "40", "41", "42" },
362 Values { "Unknown", "Other", "CD-ROM", "CD-ROM/XA", "CD-I",
363 "CD Recordable", "DVD", "DVD-RW+", "DVD-RAM", "DVD-ROM",
364 "DVD-Video", "Divx", "CD-RW", "CD-DA", "CD+",
365 "DVD Recordable", "DVD-RW", "DVD-Audio", "DVD-5", "DVD-9",
366 "DVD-10", "DVD-18" },
367 ModelCorrespondence { "CIM_PhysicalMedia.MediaType" }]
368 uint16 FormatsSupported[];
369 };
370
371
372 // ===================================================================
373 // WORMDrive
374 // ===================================================================
375 [Version ( "2.6.0" ), Description (
376 "Capabilities and managment of a WORMDrive, a subtype of "
377 "MediaAccessDevice.")]
378 class CIM_WORMDrive : CIM_MediaAccessDevice {
379 a.dunfey 1.1 };
380
381
382 // ===================================================================
383 // MagnetoOpticalDrive
384 // ===================================================================
385 [Version ( "2.6.0" ), Description (
386 "Capabilities and managment of a MagnetoOpticalDrive, a subtype "
387 "of MediaAccessDevice.")]
388 class CIM_MagnetoOpticalDrive : CIM_MediaAccessDevice {
389 };
390
391
392 // ===================================================================
393 // TapeDrive
394 // ===================================================================
395 [Version ( "2.6.0" ), Description (
396 "Capabilities and managment of a TapeDrive, a subtype of "
397 "MediaAccessDevice.")]
398 class CIM_TapeDrive : CIM_MediaAccessDevice {
399
400 a.dunfey 1.1 [Description (
401 "EOTWarningZoneSize indicates the size, in bytes, of the "
402 "area designated as 'end of tape'. Access in this area "
403 "generates an 'end of tape' warning."),
404 Units ( "Bytes" )]
405 uint32 EOTWarningZoneSize;
406
407 [Description (
408 "Maximum partition count for the TapeDrive.")]
409 uint32 MaxPartitionCount;
410
411 [Description (
412 "Padding indicates the number of bytes inserted between "
413 "blocks on a tape Media."),
414 Units ( "Bytes" )]
415 uint32 Padding;
416
417 [Description (
418 "Time in milliseconds to move from the most physically "
419 "distant point on the tape to the beginning."),
420 Units ( "MilliSeconds" )]
421 a.dunfey 1.1 uint64 MaxRewindTime;
422 };
423
424
425 // ===================================================================
426 // MediaAccessStatInfo
427 // ===================================================================
428 [Version ( "2.6.0" ), Description (
429 "Statistics related to reading and writing at a specific "
430 "MediaAccessDevice, or for a specific StorageExtent. Although "
431 "the same class is used to represent this data, at the instance "
432 "level the object holds information for the MediaAccessDevice "
433 "(independent of the StorageExtent), OR for the Extent "
434 "(independent of its AccessDevice). Note that this class models "
435 "the same properties as MediaAccessStatData. The latter, "
436 "however, uses the simplified key mechanisms of the "
437 "StatisticalData class.")]
438 class CIM_MediaAccessStatInfo : CIM_DeviceStatisticalInformation {
439
440 [Description (
441 "The number of attempted read operations."),
442 a.dunfey 1.1 Counter]
443 uint64 ReadOperations;
444
445 [Description (
446 "The number of unrecoverable read operations."),
447 Counter]
448 uint64 UnrecoverableReadOperations;
449
450 [Description (
451 "The number of attempted write operations."),
452 Counter]
453 uint64 WriteOperations;
454
455 [Description (
456 "The number of unrecoverable write operations."),
457 Counter]
458 uint64 UnrecoverableWriteOperations;
459
460 [Description (
461 "The number of recovered read operations."),
462 Counter]
463 a.dunfey 1.1 uint64 RecoveredReadOperations;
464
465 [Description (
466 "The number of recovered write operations."),
467 Counter]
468 uint64 RecoveredWriteOperations;
469
470 [Description (
471 "The number of recovered seek operations."),
472 Counter]
473 uint64 RecoveredSeekOperations;
474
475 [Description (
476 "The number of unrecoverable seek operations."),
477 Counter]
478 uint64 UnrecoverableSeekOperations;
479
480 [Description (
481 "Method to reset the statistical counters. The method takes "
482 "one parameter as input - an integer indicating which "
483 "counter to reset. For this input parameter, 0 indicates "
484 a.dunfey 1.1 "all, 1-2 and 5 reset the 'read operation'-related counters, "
485 "3-4 and 6 reset the 'write operation'-related counters, and "
486 "7-8 reset the seek-related counters. The method returns 0 "
487 "if successful, 1 if not supported, and any other value if "
488 "an error occurred. A method is specified so that the "
489 "Device's instrumentation can also reset its internal "
490 "processing and counters. \n"
491 "In a subclass, the set of possible return codes should be "
492 "specified in a ValueMap qualifier on the method. The "
493 "strings to which the ValueMap contents are 'translated' can "
494 "be specified as a Values array qualifier.")]
495 uint32 ResetCounter (
496 [IN, Description (
497 "The counter to reset."),
498 ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8" },
499 Values { "All", "Read Operations",
500 "Unrecoverable Read Operations", "Write Operations",
501 "Unrecoverable Write Operations",
502 "Recovered Read Operations", "Recovered Write Operations",
503 "Recovered Seeks", "Unrecoverable Seeks" }]
504 uint16 SelectedCounter);
505 a.dunfey 1.1 };
506
507
508 // ===================================================================
509 // MediaAccessStatData
510 // ===================================================================
511 [Version ( "2.7.0" ), Description (
512 "Statistics related to reading and writing at a specific "
513 "MediaAccessDevice, or for a specific StorageExtent. The same "
514 "class is used to represent this data - whether for the "
515 "MediaAccessDevice (independent of the StorageExtent), OR for "
516 "the Extent (independent of its AccessDevice). The element "
517 "whose statistics are described is associated using the "
518 "relationship, ElementStatisticalData. Note that this class "
519 "models the same properties as MediaAccessStatInfo. This class, "
520 "however, uses the simplified key mechanisms of its superclass, "
521 "StatisticalData.")]
522 class CIM_MediaAccessStatData : CIM_StatisticalData {
523
524 [Description (
525 "The number of attempted read operations."),
526 a.dunfey 1.1 Counter]
527 uint64 ReadOperations;
528
529 [Description (
530 "The number of unrecoverable read operations."),
531 Counter]
532 uint64 UnrecoverableReadOperations;
533
534 [Description (
535 "The number of attempted write operations."),
536 Counter]
537 uint64 WriteOperations;
538
539 [Description (
540 "The number of unrecoverable write operations."),
541 Counter]
542 uint64 UnrecoverableWriteOperations;
543
544 [Description (
545 "The number of recovered read operations."),
546 Counter]
547 a.dunfey 1.1 uint64 RecoveredReadOperations;
548
549 [Description (
550 "The number of recovered write operations."),
551 Counter]
552 uint64 RecoveredWriteOperations;
553
554 [Description (
555 "The number of recovered seek operations."),
556 Counter]
557 uint64 RecoveredSeekOperations;
558
559 [Description (
560 "The number of unrecoverable seek operations."),
561 Counter]
562 uint64 UnrecoverableSeekOperations;
563 };
564
565 // ===================================================================
566 // SCSITargetPortGroup
567 // ===================================================================
568 a.dunfey 1.1 [Experimental, Version ( "2.8.1000" ), Description (
569 "A class derived from SystemSpecificCollection that models SCSI "
570 "Target Port Groups. SCSITargetPortGroup is part of the model "
571 "for devices with asymmetric access to logical units - access "
572 "is optimized for a subset of target ports. SCSITargetPortGroup "
573 "is aggregated to SCSIProtocolEndpoints that expose a common "
574 "ValueMap { 2, 3, 4, 5, 6 }, Values { Active/Optimized, "
575 "Active/Non-optimized, StandBy, Unavailable, Transitioning }, "
576 "access state for a set of associated logical Units (modeled by "
577 "various subclasses of LogicalDevice). SCSITargetPortGroups "
578 "only apply to target devices with asymmetric multipath access "
579 "and not to devices with symmetric (or single path) access.")]
580 class CIM_SCSITargetPortGroup : CIM_SystemSpecificCollection {
581
582 [Description (
583 "Access to all associated logical units through all "
584 "aggregated ports share this access state. Access to the "
585 "Logical Units through other ports is specified by the "
586 "access state of those port's target port group."),
587 ValueMap { "2", "3", "4", "5" },
588 Values { "Active/Optimized", "Active/Non-optimized", "StandBy",
589 a.dunfey 1.1 "Unavailable" },
590 MappingStrings { "SPC.INCITS-T10 |Asymmetric Access State",
591 "MP_API.SNIA|MP_ACCESS_STATE_TYPE" }]
592 uint16 AccessState;
593
594 [Description (
595 "True indicates that the underlying implementation provides "
596 "an interface allowing the administrator to reassign logical "
597 "units to target port groups."),
598 MappingStrings {
599 "MP_API.SNIA|MP_TARGET_PORT_PROPERTIES|supportsLuAssignment"
600 }]
601 boolean supportsLuAssignment;
602
603 };
604
605 // ===================================================================
606 // SCSIMultipathConfigurationCapabilities
607 // ===================================================================
608
609 [Experimental, Version ( "2.8.1000" ), Description (
610 a.dunfey 1.1 "A class derived from CIM_Capabilities that models the "
611 "capabilities of a multipath driver. Note that 'path' in this "
612 "context refers to end-to-end device paths (for example, SCSI "
613 "initiator/target) with no understanding of edge paths between "
614 "interconnect elements such as switches. Load balancing only "
615 "applies to symmetric multipath devices or to the ports in "
616 "SCSITargetPortGroups in active access state. \n"
617 "A driver may support different algorithms for load balancing. "
618 "A few common algorithms are listed. Algorithms for specific "
619 "device models and software vendor specific algorithms are also "
620 "accommodated.")]
621 class CIM_SCSIMultipathConfigurationCapabilities : CIM_Capabilities {
622
623 [Description (
624 "The load balance types supported by the driver for all "
625 "logical units on a target device. If 'Product Specified' is "
626 "included, one or more instances of CIM_Product must be "
627 "aggregated to the capabilities instance via "
628 "ConcreteComponent. Each Product instance provides the SCSI "
629 "Vendor, Product, and Revision ID of a supported product."),
630 ValueMap { "0", "1", "2", "3", "4", "5", "6", "7" },
631 a.dunfey 1.1 Values { "Unknown", "Other", "No Load Balancing", "Round Robin",
632 "Least Blocks", "Least IO", "LBA Region",
633 "Product Specific" },
634 MappingStrings { "MP_API.SNIA|MP_LOAD_BALANCE_TYPE" },
635 ArrayType ( "Indexed" ),
636 ModelCorrespondence {
637 "CIM_SCSIMultipathConfigurationCapabilities."
638 "OtherSupportedLoadBalanceAlgorithmNames",
639 "CIM_SCSIMultipathConfigurationCapabilities."
640 "OtherSupportedLoadBalanceVendorNames" }]
641 uint16 SupportedLoadBalanceTypes[];
642
643 [Description (
644 "When the corresponding array entry in "
645 "SupportedLoadBalanceTypes[] is 'Other', this entry provides "
646 "a string describing the load balancing algorithm. When the "
647 "corresponding array entry in SupportedLoadBalanceTypes[] is "
648 "'Product Specific', this entry provides a string specifying "
649 "the SCSI vendor/product/revision and must be formatted as "
650 "exactly 28 ASCII characters - 8 for vendor, 16 for product, "
651 "and 4 for revision (see SCSI SPC Inquiry response)"),
652 a.dunfey 1.1 MappingStrings { "SPC.INCITS-T10 |Standard Inquiry Response",
653 "MP_API.SNIA|MP_LOAD_BALANCE_TYPE",
654 "MP_API.SNIA|MP_DEVICE_PRODUCT_PROPERTIES" },
655 ArrayType ( "Indexed" ),
656 ModelCorrespondence {
657 "CIM_SCSIMultipathConfigurationCapabilities."
658 "SupportedLoadBalanceTypes",
659 "CIM_SCSIMultipathConfigurationCapabilities."
660 "OtherSupportedLoadBalanceVendorNames" }]
661 string OtherSupportedLoadBalanceAlgorithmNames[];
662
663 [Description (
664 "When the corresponding array entry in "
665 "SupportedLoadBalanceTypes[] is 'Other', this entry provides "
666 "a string describing the vendor associated with the load "
667 "balancing algorithm."),
668 MappingStrings { "MP_API.SNIA|MP_LOAD_BALANCE_TYPE" },
669 ArrayType ( "Indexed" ),
670 ModelCorrespondence {
671 "CIM_SCSIMultipathConfigurationCapabilities."
672 "SupportedLoadBalanceTypes",
673 a.dunfey 1.1 "CIM_SCSIMultipathConfigurationCapabilities."
674 "OtherSupportedLoadBalanceAlgorithmNames" }]
675 string OtherSupportedLoadBalanceVendorNames[];
676
677 [Description (
678 "The capability of the driver to support the SetTPGAccess "
679 "method. True if the implementation supports activating "
680 "target port groups."),
681 MappingStrings {
682 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|canSetTPGAccess" },
683 ModelCorrespondence {
684 "CIM_SCSIPathConfigurationService.SetTPGAccess" }]
685 boolean CanSetTPGAccess = false;
686
687 [Description (
688 "The capability of the driver to support the SetOverridePath "
689 "and CancelOverridePaths methods. True if the implementation "
690 "supports path overrides."),
691 MappingStrings {
692 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|canOverridePaths" },
693 ModelCorrespondence {
694 a.dunfey 1.1 "CIM_SCSIPathConfigurationService.SetOverridePath" }]
695 boolean CanOverridePaths = false;
696
697 [Description (
698 "False if the MP drivers assure only a single device file "
699 "name (e.g. /dev/dsk/...) exists for each MP device. True if "
700 "the implementation exposes (or leaves exposed) device files "
701 "for the individual paths encapsulated by the multipath "
702 "device file. This is typically true for MP drivers that sit "
703 "near the top of the driver stack and false for transport "
704 "drivers at the bottom of the stack."),
705 MappingStrings { "MP_API.SNIA|Plugin "
706 "Properties|exposesPathDeviceFiles" }]
707 boolean ExposesPathDeviceFiles;
708
709 [Description (
710 "A string representing the primary file names the driver "
711 "uses for multipath logical units, if those filenames do not "
712 "match the names in Logical Unit osDeviceName as documented "
713 "in Appendix A of the SNIA MP API specification. The name is "
714 "expressing in the following format: \n"
715 a.dunfey 1.1 "'*' represents one or more alphanumeric characters \n"
716 "'#' represents a string of consecutive digits \n"
717 "'%' represents a string of hexadecimal digits \n"
718 "backslash is an escape character for literal presentation "
719 "of *, #, or %. Any other character is interpreted "
720 "literally. For example, '/dev/vx/dmp/*'. If the multipath "
721 "driver creates multipath logical unit device file names in "
722 "the same namespace as the OS then this property should be "
723 "left null."),
724 MappingStrings {
725 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|deviceNameFilespace" }]
726 string DeviceNameFilespace;
727
728 [Description (
729 "True if the only supported device types are those described "
730 "in aggregated CIM_Product instances as described in the "
731 "description of SupportedLoadBalanceTypes."),
732 MappingStrings {
733 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|deviceNameFilespace" },
734 ModelCorrespondence {
735 "CIM_SCSIMultipathConfigurationCapabilities."
736 a.dunfey 1.1 "SupportedLoadBalanceTypes" }]
737 boolean OnlySupportsSpecifidProducts = false;
738
739 [Description (
740 "Describes the range of administer settable path weights "
741 "supported by the driver. A driver with no path preference "
742 "capabilities should set this property to zero. A driver "
743 "with the ability to enable/disable paths should set this "
744 "property to 1. Drivers with more weight settings can set "
745 "the property appropriately."),
746 MappingStrings {
747 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|maximumWeight" }]
748 uint32 MaximumWeight;
749
750 [Description (
751 "The maximum polling rate (in seconds) supported by the "
752 "driver. A value of zero indicates the driver/plugin does "
753 "not support polling. This maximum applies to both "
754 "BadPathPollingRate and InactivePathPollingRate."),
755 MappingStrings {
756 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|pollingRateMax" }]
757 a.dunfey 1.1 uint32 PollingRateMax;
758
759 [Description (
760 "The minimum polling rate (in seconds) supported by the "
761 "driver. This minimum applies to both BadPathPollingRate and "
762 "InactivePathPollingRate."),
763 MappingStrings {
764 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|pollingRateMin" }]
765 uint32 PollingRateMin;
766
767 [Description (
768 "A Boolean indicating whether the driver will automatically "
769 "revert back to preferred (i.e higher weight) paths when "
770 "they return to service."),
771 MappingStrings {
772 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|autoFailbackSupported" }]
773 boolean AutoFailbackSupported;
774
775 [Write, Description (
776 "A Boolean indicating whether auto failback is currently "
777 "enabled. Only valid when autoFailbackSupported is true."),
778 a.dunfey 1.1 MappingStrings {
779 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|autoFailbackEnabled" }]
780 boolean AutoFailbackEnabled;
781
782 [Write, Description (
783 "The rate in seconds between polling I/Os to paths that are "
784 "marked unavailable due to hardware errors. Only valid when "
785 "pollingRateMax is greater than 0 and canAutoFailback are "
786 "true."),
787 MappingStrings {
788 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|badPathPollingRate" }]
789 uint32 BadPathPollingRate;
790
791 [Write, Description (
792 "The rate in seconds between polling I/Os to paths that are "
793 "not is use due to administrative settings (pathWeight or "
794 "manual overrides). Only valid when pollingRateMax is "
795 "greater than zero."),
796 MappingStrings {
797 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|inactivePathPollingRate" }]
798 uint32 InactivePathPollingRate;
799 a.dunfey 1.1
800 [Write, Description (
801 "The load balance types supported by the driver if not "
802 "overridden by an administrative action."),
803 ValueMap { "0", "1", "2", "3", "4", "5", "6" },
804 Values { "Unknown", "Other", "No Load Balancing", "Round Robin",
805 "Least Blocks", "Least IO", "Product Specific" },
806 MappingStrings {
807 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|defaultLoadBalanceType" }]
808 uint16 DefaultLoadBalanceType;
809
810 };
811
812
813
814 // ===================================================================
815 // SCSIInitiatorTargetLogicalUnitPath
816 // ===================================================================
817
818 [Association, Experimental, Version ( "2.8.1000" ), Description (
819 "An association that models a host driver path to a SCSI "
820 a.dunfey 1.1 "logical unit. Each permutation of initiator and target "
821 "ProtocolEndpoints and logical units is considered a separate "
822 "path. This class describes end-to-end path behavior such as "
823 "properties and operations commonly used in multipath "
824 "management.")]
825 class CIM_SCSIInitiatorTargetLogicalUnitPath {
826
827 [Key, Description (
828 "An initiator endpoint.")]
829 CIM_SCSIProtocolEndpoint REF Initiator;
830
831 [Key, Description (
832 "A target endpoint.")]
833 CIM_SCSIProtocolEndpoint REF Target;
834
835 [Key, Description (
836 "A subclass of LogicalDevice representing a SCSI Logical "
837 "Unit (such as StorageVolume or TapeDrive).")]
838 CIM_LogicalDevice REF LogicalUnit;
839
840 [Description (
841 a.dunfey 1.1 "The OS Device Name for this path. Only applicable if the "
842 "ExposedPathDeviceFiles property is true in the instance of "
843 "SCSIMultipathConfigurationCapabilities associated with the "
844 "LogicalDevice/RedundancySet this instance is a member of."),
845 MappingStrings {
846 "MP_API.SNIA|MP_PATH_LOGICAL_UNIT_PROPERTIES|deviceFileName"
847 }]
848 string OSDeviceName;
849
850 [Write, Description (
851 "A value assigned by an administrator specifying a "
852 "preference to assign to a path. The drivers will actively "
853 "use all available paths with the highest weight. This "
854 "allows an administrator to assign a subset of available "
855 "paths for load balanced access and reserve the others as "
856 "backup paths. For symmetric access devices, all paths are "
857 "considered 'available'. For asymmetric access devices, all "
858 "paths in active target port groups are considered "
859 "available."),
860 MappingStrings {
861 "MP_API.SNIA|MP_PATH_LOGICAL_UNIT_PROPERTIES|weight" }]
862 a.dunfey 1.1 uint32 AdministrativeWeight;
863
864 [Write, Description (
865 "The state of this path. Values are defined as follows: \n"
866 "Unknown - the path is unavailable,but the cause is not "
867 "known. \n"
868 "Active - The path is okay and active. \n"
869 "Passive - The path is okay, but is associated with a target "
870 "port of target port group in standby access state. Only "
871 "applies to devices with asymmetric access. \n"
872 "Disabled - The path is disabled by administrative request "
873 "(DisablePathLU). \n"
874 "Path Error - The path is unusable due to an error on this "
875 "path and no SCSI status was received. \n"
876 "Logical Unit Error - A SCSI status was received for an I/O "
877 "through this path indicating a logical unit error. \n"
878 "Reserved - The path is unavailable due to a SCSI "
879 "reservation. \n"
880 "Removed - The path is unavailable because the OS or drivers "
881 "marked the pathunusable. \n"
882 "Transitioning - the path is transitioning between two valid "
883 a.dunfey 1.1 "states. \n"
884 "The only valid values a client can specify are Disabled and "
885 "Active. All other states are determined by the underlying "
886 "implementation; attempts to set them should be given an "
887 "error response."),
888 ValueMap { "0", "2", "3", "4", "5", "6", "7", "8", "9" },
889 Values { "Unknown", "Active", "Passive", "Disabled",
890 "Path Error", "Logical Unit Error", "Reserved", "Removed",
891 "Transitioning" },
892 MappingStrings {
893 "MP_API.SNIA|MP_PATH_LOGICAL_UNIT_PROPERTIES|pathState" }]
894 uint32 State;
895
896 [Description (
897 "AdministrativeOverride allows an administrator to select a "
898 "single path, force all I/O to this path, and disables load "
899 "balancing. The steady-state value is 'No override in "
900 "effect'. When an administrator sets an override for a "
901 "particular path, that path's AdministrativeOverride is set "
902 "to 'Overridding' and all other paths to same logical unit "
903 "are assigned a value of 'Overridden'. This property is "
904 a.dunfey 1.1 "changed using the OverridePath method in "
905 "SCSIPathConfigurationService."),
906 ValueMap { "2", "3", "4" },
907 Values { "Overriding", "Overridden", "No override in effect" },
908 MappingStrings {
909 "MP_API.SNIA|MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES|overridePath"
910 },
911 ModelCorrespondence {
912 "CIM_SCSIPathConfigurationService.SetOverridePath" }]
913 uint16 AdministrativeOverride;
914 };
915
916 // ===================================================================
917 // SCSIPathConfigurationService
918 // ===================================================================
919
920 [Experimental, Version ( "2.8.1000" ), Description (
921 "A class derived from CIM_Service providing methods related to "
922 "management of multiple paths to SCSI devices.")]
923 class CIM_SCSIPathConfigurationService : CIM_Service {
924
925 a.dunfey 1.1 [Description (
926 "This method requests that the target change the access "
927 "states of the requested SCSITargetPortGroups. This will "
928 "have the effect of doing a failover or failback operation."),
929 ValueMap { "0", "1", "2", "3", "4", "5", "..", "4096", "4097",
930 "4098", "4099", "..", "32768..65535" },
931 Values { "Success", "Not Supported", "Unknown", "Timeout",
932 "Failed", "Invalid Parameter", "DMTF Reserved",
933 "Unsupported AccessState", "Invalid SCSITargetPortGroup",
934 "Unsupported AccessState combination",
935 "Unsupported SCSITargetPortGroup combination",
936 "Method Reserved", "Vendor Specific" }]
937 uint32 SetTPGAccess (
938 [IN, Description (
939 "A reference to an instances of a subclass of "
940 "CIM_LogicalDevice representing the SCSI logical unit "
941 "where the command will be sent.")]
942 CIM_LogicalDevice REF LogicalUnit,
943 [IN, Description (
944 "Array of references to instances of SCSITargetPortGroup. "
945 "All the referenced TargetPortGroup instances must be "
946 a.dunfey 1.1 "part of the same target device."),
947 ArrayType ( "Indexed" ),
948 ModelCorrespondence { "CIM_SCSITargetPortGroup" }]
949 CIM_SCSITargetPortGroup REF TargetPortGroups[],
950 [IN, Description (
951 "An array of desired access states. Each access state in "
952 "this array is the desired access state for the "
953 "SCSITargetPortGroup in the corresponding entry in the "
954 "TargetPortGroups parameter. \n"
955 "\n"
956 "The Active value is not part of the SCSI Specification; "
957 "it is a convenience for clients that are not sure "
958 "whether to specify Active/Optimized of "
959 "Active/Non-optimized. The instrumentation selects a "
960 "value based on historic information, knowledge of the "
961 "target configuration, or trial and error. \n"
962 "\n"
963 "Note that SCSITargetPortGroup.AccessState includes the "
964 "value 'Transitioning' that is excluded here - a caller "
965 "cannot request transitioning, though it can be reported "
966 "by a target device."),
967 a.dunfey 1.1 ValueMap { "2", "3", "4", "5", "6" },
968 Values { "Active/Optimized", "Active/Non-optimized",
969 "StandBy", "Unavailable", "Active" },
970 ArrayType ( "Indexed" ),
971 ModelCorrespondence { "CIM_SCSITargetPortGroup.AccessState" }]
972 uint16 AccessStates[] );
973
974 [Description (
975 "This method requests that the target change the load "
976 "balance algorithm for the referenced LogicalDevice "
977 "instance."),
978 ValueMap { "0", "1", "2", "3", "4", "5", "..", "4096", "4097",
979 "..", "32768..65535" },
980 Values { "Success", "Not Supported", "Unknown", "Timeout",
981 "Failed", "Invalid Parameter", "DMTF Reserved",
982 "Unsupported LogicalDevice", "Invalid LoadBalanceType",
983 "Method Reserved", "Vendor Specific" }]
984 uint32 SetLoadBalanceAlgorithm (
985 [IN, Description (
986 "A reference to the LogicalDevice subclass instance with "
987 "an LogicalIdentity to the load balance RedundancySet. If "
988 a.dunfey 1.1 "SCSIMultipathConfigurationCapabilities. "
989 "CanLoadBalanceLUsIndependently is true, just the "
990 "referenced logical unit is modified. Otherwise, all "
991 "logical units sharing the target are modified.")]
992 CIM_LogicalDevice REF LogicalDevice,
993
994 [IN, Description (
995 "The desired load balance algorithm."),
996 ValueMap { "0", "1", "2", "3", "4", "5", "6" },
997 Values { "Unknown", "Other", "No Load Balancing",
998 "Round Robin", "Least Blocks", "Least IO",
999 "Product Specific" }]
1000 uint16 LoadBalanceAlgorithm,
1001
1002 [IN, Description (
1003 "When LoadBalanceAlgorithm is 'Other', this parameter "
1004 "specifies a description of the load balancing algorithm. "
1005 "When LoadBalanceAlgorithm is 'Product Specific', this "
1006 "property provides a string specifying the "
1007 "vendor/product/version of the ManagedElement.")]
1008 string OtherLoadBalanceAlgorithmDescription );
1009 a.dunfey 1.1
1010
1011 [Description (
1012 "This method allows an administrator to assign a logical "
1013 "unit to a target port group. At any time, each LU will "
1014 "typically be associated with two target port groups, one in "
1015 "active state and one in standby state. The result of this "
1016 "method will be that the LU associations change to a pair of "
1017 "target port groups. Only valid if the target device "
1018 "supports asymmetric access state and "
1019 "SCSIMultipathConfigurationCapabilities SupportsLuAssignment "
1020 "is set."),
1021 ValueMap { "0", "1", "2", "3", "4", "5", "..", "32768..65535" },
1022 Values { "Success", "Not Supported", "Unknown", "Timeout",
1023 "Failed", "Invalid Parameter", "DMTF Reserved",
1024 "Vendor Specific" }]
1025 uint32 AssignLogicalUnitToPortGroup (
1026 [IN, Description (
1027 "A reference to a target port group. The Target Port "
1028 "Group should be in an active state.")]
1029 CIM_SCSITargetPortGroup REF TargetPortGroup );
1030 a.dunfey 1.1
1031 [Description (
1032 "This method allows an administrator to temporarily disable "
1033 "load balancing for a specific logical unit. The path "
1034 "specified as a parameter will have its "
1035 "AdministrativeOverride property set to 'Overriding' and all "
1036 "I/O to the logical unit will be directed to this path. All "
1037 "other paths to this logical unit will have "
1038 "AdministrativeOverride set to 'Overridden'."),
1039 ValueMap { "0", "1", "2", "3", "4", "5", "..", "32768..65535" },
1040 Values { "Success", "Not Supported", "Unknown", "Timeout",
1041 "Failed", "Invalid Parameter", "DMTF Reserved",
1042 "Vendor Specific" }]
1043 uint32 SetOverridePath (
1044 [IN, Description (
1045 "A reference to a SCSIInitiatorTargetLogicalUnitPath.")]
1046 CIM_SCSIInitiatorTargetLogicalUnitPath REF Path );
1047
1048 [Description (
1049 "This method clears an override path as set in "
1050 "SetOverridePath and load balancing is enabled. All paths to "
1051 a.dunfey 1.1 "the logical unit specified as a parameter will have "
1052 "AdministrativeOverride property set to 'No override in "
1053 "effect'."),
1054 ValueMap { "0", "1", "2", "3", "4", "5", "..", "32768..65535" },
1055 Values { "Success", "Not Supported", "Unknown", "Timeout",
1056 "Failed", "Invalid Parameter", "DMTF Reserved",
1057 "Vendor Specific" }]
1058 uint32 CancelOverridePath (
1059 [IN, Description (
1060 "A reference to a SCSIInitiatorTargetLogicalUnitPath.")]
1061 CIM_LogicalDevice REF LogicalUnit );
1062
1063 };
1064
1065
1066 // ===================================================================
1067 // end of file
1068 // ===================================================================
|