1 marek 1.1 // Copyright (c) 2011 DMTF. All rights reserved.
2 [Version ( "2.29.0" ),
3 UMLPackagePath ( "CIM::Device::StorageDevices" ),
4 Description (
5 "A class derived from CIM_Capabilities that models the "
6 "capabilities of a multipath driver. Note that \'path\' in this "
7 "context refers to end-to-end device paths (for example, SCSI "
8 "initiator/target) with no understanding of edge paths between "
9 "interconnect elements such as switches. Load balancing only "
10 "applies to symmetric multipath devices or to the ports in "
11 "SCSITargetPortGroups in active access state. \n"
12 "A driver may support different algorithms for load balancing. "
13 "A few common algorithms are listed. Algorithms for specific "
14 "device models and software vendor specific algorithms are also "
15 "accommodated. \n"
16 "\n"
17 "An instance of this capabilities class MUST be instantiated "
18 "whenever SCSIPathConfigurationService is instantiated and they "
19 "MUST be assocaited one to one using ElementCapabilities. "
20 "Multiple instances of the service/acapabilities pair MAY exist "
21 "if multiple multipath drivers are installed. Each "
22 marek 1.1 "LogicalDevice subclass served by the underlying multipath "
23 "driver is associated to the associated Service instance via "
24 "ServiceAvailableToELement." )]
25 class CIM_SCSIMultipathConfigurationCapabilities : CIM_Capabilities {
26
27 [Description (
28 "The load balance types supported by the driver for all "
29 "logical units on a target device. If \'Product "
30 "Specified\' is included, one or more instances of "
31 "CIM_Product must be aggregated to the capabilities "
32 "instance via ConcreteComponent. Each Product instance "
33 "provides the SCSI Vendor, Product, and Revision ID of a "
34 "supported product." ),
35 ValueMap { "0", "1", "2", "3", "4", "5", "6", "7" },
36 Values { "Unknown", "Other", "No Load Balancing",
37 "Round Robin", "Least Blocks", "Least IO", "LBA Region",
38 "Product Specific" },
39 ArrayType ( "Indexed" ),
40 MappingStrings { "MP_API.SNIA|MP_LOAD_BALANCE_TYPE" },
41 ModelCorrespondence {
42 "CIM_SCSIMultipathConfigurationCapabilities.OtherSupportedLoadBalanceAlgorithmNames",
43 marek 1.1 "CIM_SCSIMultipathConfigurationCapabilities.OtherSupportedLoadBalanceVendorNames" }]
44 uint16 SupportedLoadBalanceTypes[];
45
46 [Description (
47 "When the corresponding array entry in "
48 "SupportedLoadBalanceTypes[] is \'Other\', this entry "
49 "provides a string describing the load balancing "
50 "algorithm. When the corresponding array entry in "
51 "SupportedLoadBalanceTypes[] is \'Product Specific\', "
52 "this entry provides a string specifying the SCSI "
53 "vendor/product/revision and must be formatted as exactly "
54 "28 ASCII characters - 8 for vendor, 16 for product, and "
55 "4 for revision (see SCSI SPC Inquiry response)" ),
56 ArrayType ( "Indexed" ),
57 MappingStrings { "SPC.INCITS-T10 |Standard Inquiry Response",
58 "MP_API.SNIA|MP_LOAD_BALANCE_TYPE",
59 "MP_API.SNIA|MP_DEVICE_PRODUCT_PROPERTIES" },
60 ModelCorrespondence {
61 "CIM_SCSIMultipathConfigurationCapabilities.SupportedLoadBalanceTypes",
62 "CIM_SCSIMultipathConfigurationCapabilities.OtherSupportedLoadBalanceVendorNames" }]
63 string OtherSupportedLoadBalanceAlgorithmNames[];
64 marek 1.1
65 [Description (
66 "When the corresponding array entry in "
67 "SupportedLoadBalanceTypes[] is \'Other\', this entry "
68 "provides a string describing the vendor associated with "
69 "the load balancing algorithm." ),
70 ArrayType ( "Indexed" ),
71 MappingStrings { "MP_API.SNIA|MP_LOAD_BALANCE_TYPE" },
72 ModelCorrespondence {
73 "CIM_SCSIMultipathConfigurationCapabilities.SupportedLoadBalanceTypes",
74 "CIM_SCSIMultipathConfigurationCapabilities.OtherSupportedLoadBalanceAlgorithmNames" }]
75 string OtherSupportedLoadBalanceVendorNames[];
76
77 [Description (
78 "The capability of the driver to support the SetTPGAccess "
79 "method. True if the implementation supports activating "
80 "target port groups." ),
81 MappingStrings {
82 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|canSetTPGAccess" },
83 ModelCorrespondence {
84 "CIM_SCSIPathConfigurationService.SetTPGAccess" }]
85 marek 1.1 boolean CanSetTPGAccess = false;
86
87 [Description (
88 "The capability of the driver to support the "
89 "SetOverridePath and CancelOverridePaths methods. True if "
90 "the implementation supports path overrides." ),
91 MappingStrings {
92 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|canOverridePaths" },
93 ModelCorrespondence {
94 "CIM_SCSIPathConfigurationService.SetOverridePath" }]
95 boolean CanOverridePaths = false;
96
97 [Description (
98 "False if the MP drivers assure only a single device file "
99 "name (e.g. /dev/dsk/...) exists for each MP device. True "
100 "if the implementation exposes (or leaves exposed) device "
101 "files for the individual paths encapsulated by the "
102 "multipath device file. This is typically true for MP "
103 "drivers that sit near the top of the driver stack and "
104 "false for transport drivers at the bottom of the stack." ),
105 MappingStrings {
106 marek 1.1 "MP_API.SNIA|Plugin Properties|exposesPathDeviceFiles" }]
107 boolean ExposesPathDeviceFiles;
108
109 [Description (
110 "A string representing the primary file names the driver "
111 "uses for multipath logical units, if those filenames do "
112 "not match the names in Logical Unit osDeviceName as "
113 "documented in Appendix A of the SNIA MP API "
114 "specification. The name is expressing in the following "
115 "format: \n"
116 "\'*\' represents one or more alphanumeric characters \n"
117 "\'#\' represents a string of consecutive digits \n"
118 "\'%\' represents a string of hexadecimal digits \n"
119 "backslash is an escape character for literal "
120 "presentation of *, #, or %. Any other character is "
121 "interpreted literally. For example, \'/dev/vx/dmp/*\'. "
122 "If the multipath driver creates multipath logical unit "
123 "device file names in the same namespace as the OS then "
124 "this property should be left null." ),
125 MaxLen ( 256 ),
126 MappingStrings {
127 marek 1.1 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|deviceNameFilespace" }]
128 string DeviceNameFilespace;
129
130 [Description (
131 "True if the only supported device types are those "
132 "described in aggregated CIM_Product instances as "
133 "described in the description of "
134 "SupportedLoadBalanceTypes." ),
135 MappingStrings {
136 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|deviceNameFilespace" },
137 ModelCorrespondence {
138 "CIM_SCSIMultipathConfigurationCapabilities.SupportedLoadBalanceTypes" }]
139 boolean OnlySupportsSpecifiedProducts = false;
140
141 [Description (
142 "Describes the range of administer settable path weights "
143 "supported by the driver. A driver with no path "
144 "preference capabilities should set this property to "
145 "zero. A driver with the ability to enable/disable paths "
146 "should set this property to 1. Drivers with more weight "
147 "settings can set the property appropriately." ),
148 marek 1.1 MappingStrings {
149 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|maximumWeight" }]
150 uint32 MaximumWeight;
151
152 [Description (
153 "Specifies whether the implementation supports "
154 "auto-failback (to re-enable paths that revert to a good "
155 "state) at the plugin level, the multipath logical unit "
156 "level, both levels or whether auto-failback is "
157 "unsupported." ),
158 ValueMap { "0", "2", "3", "4", "5" },
159 Values { "Unknown", "No Autofailback support",
160 "Autofailback support service-wide",
161 "Autofailback support per logical unit",
162 "Autofailback support per service or logical unit" },
163 MappingStrings {
164 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|autofailbackSupport" },
165 ModelCorrespondence {
166 "CIM_SCSIMultipathConfigurationCapabilities.AutofailbackEnabled",
167 "CIM_SCSIMultipathSettings.AutofailbackEnabled" }]
168 uint16 AutofailbackSupport;
169 marek 1.1
170 [Description (
171 "A Boolean indicating that autofailback is enabled to all "
172 "logical units associated to the "
173 "CIM_SCSIPathConfigurationService associated with this "
174 "capabilities instance (unless overridden by "
175 "CIM_SCSIMultipathSettings AutoFailbackEnabled." ),
176 MappingStrings {
177 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|autoFailbackEnabled" },
178 ModelCorrespondence {
179 "CIM_SCSIMultipathConfigurationCapabilities.AutofailbackSupport",
180 "CIM_SCSIMultipathSettings.AutofailbackEnabled" }]
181 boolean AutoFailbackEnabled;
182
183 [Description (
184 "The maximum polling rate (in seconds) supported by the "
185 "driver. A value of zero indicates the driver/plugin does "
186 "not support polling. This maximum applies to both "
187 "BadPathPollingRate and InactivePathPollingRate." ),
188 MappingStrings {
189 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|pollingRateMax" }]
190 marek 1.1 uint32 PollingRateMax;
191
192 [Write, Description (
193 "The current rate in seconds. Only valid when "
194 "pollingRateMax is greater than 0 and canAutoFailback are "
195 "true." ),
196 MappingStrings {
197 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|currentPollingRate" }]
198 uint32 CurrentPollingRate;
199
200 [Write, Description (
201 "The load balance types supported by the driver if not "
202 "overridden by an administrative action." ),
203 ValueMap { "0", "1", "2", "3", "4", "5", "6" },
204 Values { "Unknown", "Other", "No Load Balancing",
205 "Round Robin", "Least Blocks", "Least IO",
206 "Product Specific" },
207 MappingStrings {
208 "MP_API.SNIA|MP_PLUGIN_PROPERTIES|defaultLoadBalanceType" }]
209 uint16 DefaultLoadBalanceType;
210
211 marek 1.1
212 };
|