1 karl 1.1 // ===================================================================
2 // Title: Core Redundancy 2.7.1
3 // Filename: Core27_Redundancy.mof
4 // Version: 2.7.1
5 // Release: Preliminary
6 // Date: 10/21/02
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 Core Model defines basic management concepts.
45 // This file defines the concepts and classes to support
46 // Redundancy.
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 - Remove Aggregate qualifier from the PartComponent reference
54 // of RedundancyComponent. Also, there is a mismatch in the
55 // number of Values vs ValueMap entries in StorageRedundancySet.
56 // TypeOfAlgorithm. The value, "2", should be removed
57 // from the ValueMap.
58 //
59 // Change Log for v2.7
60 // CR722 - Update description for StorageRedundancyGroup
61 // CR752 - Add RedundancySet, SparedSet, IsSpare, StorageRedundancySet,
62 // and ExtraCapacitySet
63 // - Update the description for RedundancyGroup
64 karl 1.1 // ==================================================================
65
66 #pragma locale ("en_US")
67
68
69 // ===================================================================
70 // RedundancySet
71 // ===================================================================
72 [Experimental, Version ("2.7.0"), Description (
73 " A class derived from SystemSpecificCollection that is a special "
74 "collection of ManagedElements. This collection indicates "
75 "that the aggregated elements together provide redundancy, or "
76 "that redundancy is provided via sparing. All elements "
77 "collected in a RedundancySet should be instantiations of the "
78 "same object class. \n"
79 " Note that the CIM_RedundancySet class is very similar to "
80 "CIM_RedundancyGroup, yet both classes are present in the model. "
81 "This is because some implementations have successfully used "
82 "CIM_RedundancyGroup. However, issues have arisen that could not "
83 "be resolved without defining a new class. Therefore, until a "
84 "new major release occurs, both classes will exist in the model. "
85 karl 1.1 "Refer to the Core White Paper for additional information.") ]
86 class CIM_RedundancySet : CIM_SystemSpecificCollection {
87
88 [Override ("ElementName"), Required, Description (
89 "The user friendly name for this instance of RedundancySet. "
90 "In addition, the user friendly name can be used as a "
91 "property for a search or query. (Note: InstanceName "
92 "does not have to be unique within a namespace.)") ]
93 string ElementName;
94
95 [Description (
96 "RedundancyStatus provides information on the state of "
97 "the RedundancySet. \n"
98 " - Fully Redundant (=2) means that all of the "
99 "configured redundancy is still available. \n "
100 " - Degraded Redundancy (=3) means that some failures "
101 "have been experienced but some reduced amount of "
102 "redundancy is still available \n"
103 " - Redundancy Lost (=4) means that a sufficient number "
104 "of failures have been experienced such that no "
105 "redundancy is available and the next failure "
106 karl 1.1 "experienced will cause overall failure."),
107 ValueMap {"0", "1", "2", "3", "4"},
108 Values {"Unknown", "Other", "Fully Redundant",
109 "Degraded Redundancy", "Redundancy Lost"} ]
110 uint16 RedundancyStatus;
111 };
112
113
114 // ===================================================================
115 // SparedSet
116 // ===================================================================
117 [Experimental, Version ("2.7.0"), Description (
118 "A class derived from RedundancySet indicating that the "
119 "collected elements can be spared. (The actual spares are "
120 "defined using the IsSpare association.) An example is "
121 "the use of redundant network adapters in a ComputerSystem - "
122 "where one adapter is Primary and the other is Spare. The "
123 "'primary' adapter would be a member of the SparedSet "
124 "(associated using MemberOfCollection) and the 'other' adapter "
125 "would be associated to the SparedSet using the IsSpare "
126 "relationship.") ]
127 karl 1.1 class CIM_SparedSet : CIM_RedundancySet {
128
129 [Description (
130 "The type of failover algorithms that are supported."),
131 ValueMap {"0", "1", "2", "3"},
132 Values {"Unknown", "Other", "Automatic", "Manual"} ]
133 uint16 FailoverSupported;
134
135 [Description (
136 "This method forces a failover from one ManagedElement to "
137 "another. There are two parameters to the Failover method. \n"
138 " - FailoverFrom is a reference to an 'active' ManagedElement "
139 "that will become inactive after the method. This element "
140 "should be part of the SparedSet via a MemberOfCollection "
141 "relationship. \n"
142 " - FailoverTo is a reference to the ManagedElement that "
143 "will take over for the FailoverFrom element. This element "
144 "should be associated with the SparedSet via an IsSpare "
145 "relationship. \n"
146 "Once the failover has occurred, the MemberOfCollection and "
147 "IsSpare associations are updated to reflect the "
148 karl 1.1 "current state. For example, the MemberOfCollection "
149 "association for the FailoverFrom element is deleted. "
150 "The IsSpare association for the FailoverTo element is "
151 "replaced with MemberOfCollection. \n"
152 "The method should return 0 if successful, 1 if the "
153 "request is not supported, and some other value if any "
154 "other error occurred. In a subclass, the set of possible "
155 "return codes could be specified, using Value and ValueMap "
156 "qualifiers on the method.") ]
157 uint32 Failover(
158 [IN] CIM_ManagedElement REF FailoverFrom,
159 [IN] CIM_ManagedElement REF FailoverTo);
160 };
161
162
163 // ===================================================================
164 // IsSpare
165 // ===================================================================
166 [Association, Experimental, Version ("2.7.0"), Description (
167 "The IsSpare association indicates an element that can "
168 "spare or replace one of the elements in the referenced "
169 karl 1.1 "SparedSet. If the 'spare' is itself a Collection, this "
170 "indicates that each of the 'spare' members can replace "
171 "one of the elements in the SparedSet. The fact that a "
172 "spare can operate in 'hot standby' mode is specified on "
173 "an element by element basis - i.e., in this association.") ]
174 class CIM_IsSpare : CIM_Dependency {
175
176 [Override ("Antecedent"), Description (
177 "A ManagedElement or Collection of elements acting as a "
178 "spare.") ]
179 CIM_ManagedElement REF Antecedent;
180
181 [Override ("Dependent"), Description (
182 "The set of elements that ARE spared.") ]
183 CIM_SparedSet REF Dependent;
184
185 [Description (
186 "HotStandby is a boolean indicating that the 'spare' is "
187 "operating as a hot standby.") ]
188 boolean HotStandby;
189 };
190 karl 1.1
191
192 // ===================================================================
193 // StorageRedundancySet
194 // ===================================================================
195 [Experimental, Version ("2.7.1"), Description (
196 "A class derived from RedundancySet describing storage-related "
197 "redundancy information. StorageRedundancySets are used to "
198 "protect user data. They aggregate on one or more underlying "
199 "StorageExtents, associated via MemberOfCollection, and "
200 "produce one or more higher-level Extents. The Extents are "
201 "related to each other via a BasedOn association. And, "
202 "the higher level Extent is related to the StorageRedundancy"
203 "Set via the LogicalIdentity association. \n"
204 "Note that StorageRedundancySets may overlap in their "
205 "aggregation of members. If this occurs, the overlapping "
206 "Extents should not contain any check data.") ]
207 class CIM_StorageRedundancySet : CIM_RedundancySet {
208
209 [Description (
210 "TypeOfAlgorithm specifies the algorithm used for "
211 karl 1.1 "storage data redundancy and reconstruction. For example, "
212 "'P+Q' (=5) or 'P+S' (=7) may be specified."),
213 ValueMap {"0", "1", "3", "4", "5", "6"},
214 Values {"Unknown", "Other", "Copy", "XOR", "P+Q",
215 "S", "P+S"},
216 MappingStrings {"MIF.DMTF|Redundancy Group|001.2"},
217 ModelCorrespondence {"StorageRedundancySet.OtherAlgorithm"} ]
218 uint16 TypeOfAlgorithm;
219
220 [Description (
221 "A string describing the redundancy algorithm when the"
222 "TypeOfAlgorithm is set to 1 'Other'."),
223 ModelCorrespondence {
224 "StorageRedundancySet.TypeOfAlgorithm"} ]
225 string OtherAlgorithm;
226 };
227
228
229 // ===================================================================
230 // ExtraCapacitySet
231 // ===================================================================
232 karl 1.1 [Experimental, Version ("2.7.0"), Description (
233 "A class derived from RedundancySet to describe that the "
234 "aggregated elements have more capacity or capability than is "
235 "needed. Some examples of this type of redundancy are clusters, "
236 "or the installation of N+1 power supplies or fans in a "
237 "computer.") ]
238 class CIM_ExtraCapacitySet : CIM_RedundancySet {
239
240 [Description (
241 "MinNumberNeeded indicates the smallest number of elements "
242 "that must be operational in order to function. "
243 "For example, in an N+1 redundancy relationship, "
244 "the MinNumberNeeded property is set equal to N."),
245 MinValue (1) ]
246 uint32 MinNumberNeeded;
247
248 [Description (
249 "MaxNumberSupported indicates the largest number of "
250 "elements that can participate in the ExtraCapacitySet. "
251 "A value of 0 indicates there is no limit on the number "
252 "of elements.") ]
253 karl 1.1 uint32 MaxNumberSupported;
254
255 [Description (
256 "Boolean indicating whether load balancing is supported by "
257 "the ExtraCapacitySet.") ]
258 boolean LoadBalancedSet;
259 };
260
261
262 // ===================================================================
263 // RedundancyGroup
264 // ===================================================================
265 [Version ("2.7.0"), Description (
266 "A class derived from LogicalElement that is a special "
267 "collection of ManagedSystemElements. This collection indicates "
268 "that the aggregated components together provide redundancy. "
269 "All elements aggregated in a RedundancyGroup should be "
270 "instantiations of the same object class.\n"
271 " Note that the CIM_RedundancySet class is very similar to "
272 "CIM_RedundancyGroup, yet both classes are present in the model. "
273 "This is because some implementations have successfully used "
274 karl 1.1 "CIM_RedundancyGroup. However, issues have arisen that could not "
275 "be resolved without defining a new class. Therefore, until a "
276 "new major release occurs, both classes will exist in the model. "
277 "Refer to the Core White Paper for additional information.") ]
278 class CIM_RedundancyGroup : CIM_LogicalElement {
279
280 [Key, MaxLen (256), Description (
281 "CreationClassName indicates the name of the class or "
282 "the subclass used in the creation of an instance. When "
283 "used with the other key properties of this class, this "
284 "property allows all instances of this class and its "
285 "subclasses to be uniquely identified.") ]
286 string CreationClassName;
287
288 [Override("Name"), Key, MaxLen (256), Description (
289 "The RedundancyGroup Name serves as the key for the "
290 "Group's instance in an enterprise environment.") ]
291 string Name;
292
293 [Description (
294 "RedundancyStatus provides information on the state of the "
295 karl 1.1 "RedundancyGroup. \"Fully Redundant\" (value=2) means that "
296 "all of the configured redundancy is still available; "
297 "\"Degraded Redundancy\" (3) means that some failures have "
298 "been experienced but some reduced amount of redundancy is "
299 "still available; \"Redundancy Lost\" (4) means that a "
300 "sufficient number of failures have been experienced such "
301 "that no redundancy is available and the next failure "
302 "experienced will cause overall failure. Also, the values, "
303 "\"Other\" (1) and \"Unknown\" (0), are defined."),
304 ValueMap {"0", "1", "2", "3", "4"},
305 Values {"Unknown", "Other", "Fully Redundant",
306 "Degraded Redundancy", "Redundancy Lost"} ]
307 uint16 RedundancyStatus;
308 };
309
310
311 // ===================================================================
312 // RedundancyComponent
313 // ===================================================================
314 [Association, Aggregation, Version ("2.7.1"), Description (
315 "A RedundancyGroup aggregates Managed System Elements and "
316 karl 1.1 "indicates that these elements, taken together, provide "
317 "redundancy. All elements aggregated in a RedundancyGroup "
318 "should be instantiations of the same object class.") ]
319 class CIM_RedundancyComponent : CIM_Component {
320
321 [Override ("GroupComponent"), Aggregate, Description (
322 "The RedundancyComponent association indicates that "
323 "'this set of fans' or 'these physical extents' participate "
324 "in a single RedundancyGroup.") ]
325 CIM_RedundancyGroup REF GroupComponent;
326
327 [Override ("PartComponent"), Description (
328 "The component of the redundancy group.") ]
329 CIM_ManagedSystemElement REF PartComponent;
330 };
331
332
333 // ===================================================================
334 // SpareGroup
335 // ===================================================================
336 [Version ("2.6.0"), Description (
337 karl 1.1 "A class derived from RedundancyGroup indicating that one or "
338 "more of the aggregated elements can be spared. (The actual "
339 "Spares are defined using the ActsAsSpare association.) An "
340 "example is the use of redundant NICs in a ComputerSystem - "
341 "where one NIC is primary and the other is Spare. The 'primary' "
342 "NIC would be a member of the SpareGroup (associated using the "
343 "RedundancyComponent class) and the 'other' NIC would be "
344 "associated using the ActsAsSpare relationship.") ]
345 class CIM_SpareGroup : CIM_RedundancyGroup {
346
347 [Description (
348 "This method is forces a failover from one ManagedSystem"
349 "Element to another. There are two parameters to the Failover "
350 "method, FailoverFrom and FailoverTo. The FailoverFrom "
351 "parameter is a reference to the primary ManagedSystemElement "
352 "that will become inactive after the method. This Element "
353 "should be associated with the SpareGroup through the "
354 "RedundancyComponent relationship. The FailoverTo parameter "
355 "is a reference to the ManagedSystemElement that will take "
356 "over for the primary. This Element should be associated with "
357 "the SpareGroup through the ActsAsSpare association. Once the "
358 karl 1.1 "failover has occurred, the SpareGroup and the Redundancy"
359 "Component and ActsAsSpare associations will be updated with "
360 "current status. For example, the ActsAsSpare association "
361 "that contained the FailoverTo Element will be deleted and a "
362 "new RedundancyComponent association instantiated in its "
363 "place. The method should return 0 if successful, 1 if the "
364 "request is not supported, and some other value if any other "
365 "error occurred. In a subclass, the set of possible return "
366 "codes could be specified, using a ValueMap qualifier on the "
367 "method. The strings to which the ValueMap contents are "
368 "'translated' may also be specified in the subclass as a "
369 "Values array qualifier.") ]
370 uint32 Failover(
371 [IN] CIM_ManagedSystemElement REF FailoverFrom,
372 [IN] CIM_ManagedSystemElement REF FailoverTo);
373 };
374
375
376 // ===================================================================
377 // ActsAsSpare
378 // ===================================================================
379 karl 1.1 [Association, Version ("2.6.0"), Description (
380 "The ActsAsSpare association indicates which elements can spare "
381 "or replace the other aggregated elements. The fact that a "
382 "spare can operate in \"hot standby\" mode is specified on an "
383 "element by element basis.") ]
384 class CIM_ActsAsSpare {
385
386 [Key, Description (
387 "The SpareGroup.") ]
388 CIM_SpareGroup REF Group;
389
390 [Key, Description (
391 "A ManagedSystemElement acting as a spare and participating "
392 "in the SpareGroup.") ]
393 CIM_ManagedSystemElement REF Spare;
394
395 [Description (
396 "HotStandby is a boolean indicating that the spare is "
397 "operating as a hot standby.") ]
398 boolean HotStandby;
399 };
400 karl 1.1
401
402 // ===================================================================
403 // StorageRedundancyGroup
404 // ===================================================================
405 [Version ("2.7.0"), Description (
406 "A class derived from RedundancyGroup containing mass "
407 "storage-related redundancy information. StorageRedundancy"
408 "Groups are used to protect user data. They act on one "
409 "or more underlying StorageExtents, associated via "
410 "ExtentRedundancyComponent and produce one or more protected "
411 "StorageExtents that are associated to the underlying "
412 "StorageExtents via ProtectedExtentBasedOn or"
413 "CompositeExtentBasedOn. StorageRedundancyGroups may overlap. "
414 "However, the underlying StorageExtents within the overlap "
415 "should not contain any check data.") ]
416 class CIM_StorageRedundancyGroup : CIM_RedundancyGroup {
417
418 [Description (
419 "The TypeOfAlgorithm specifies the algorithm used for data "
420 "redundancy and reconstruction. For example, \"P+Q\" (value"
421 karl 1.1 "=5) or \"P+S\" (7) may be specified. The value of 0, is "
422 "defined as \"None\" to indicate that data redundancy is not "
423 "active. An inactive redundancy should only be instantiated "
424 "if data striping or concatenation are active. These are "
425 "indicated by the IsStriped or IsConcatentated boolean "
426 "properties of this RedundancyGroup."),
427 ValueMap {"0", "1", "2", "3", "4", "5", "6", "7"},
428 Values {"None", "Other", "Unknown", "Copy", "XOR", "P+Q",
429 "S", "P+S"},
430 MappingStrings {"MIF.DMTF|Redundancy Group|001.2"} ]
431 uint16 TypeOfAlgorithm;
432
433 [Description (
434 "StorageRedundancy provides additional information on the "
435 "state of the RedundancyGroup, beyond the RedundancyStatus "
436 "property. Information like \"Reconfig In Progress\" (value"
437 "=1) or \"Redundancy Disabled\" can be specified using "
438 "this property."),
439 ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8"},
440 Values {"No Additional Status", "Reconfig In Progress",
441 "Data Lost", "Not Currently Configured",
442 karl 1.1 "Protected Rebuild", "Redundancy Disabled",
443 "Unprotected Rebuild", "Recalculating", "Verifying"} ]
444 uint16 StorageRedundancy;
445
446 [Description (
447 "True indicates that the data is striped across the various "
448 "StorageExtents in the Group.") ]
449 boolean IsStriped;
450
451 [Description (
452 "True indicates that the data is concatenated across the "
453 "various StorageExtents in the Group.") ]
454 boolean IsConcatenated;
455 };
456
457
458 // ===================================================================
459 // ExtraCapacityGroup
460 // ===================================================================
461 [Version ("2.6.0"), Description (
462 "A class derived from RedundancyGroup indicating that the "
463 karl 1.1 "aggregated elements have more capacity or capability than is "
464 "needed. An example of this type of redundancy is the "
465 "installation of N+1 power supplies or fans in a system.") ]
466 class CIM_ExtraCapacityGroup : CIM_RedundancyGroup {
467
468 [Description (
469 "MinNumberNeeded indicates the smallest number of elements "
470 "that must be operational in order to have redundancy. "
471 "For example, in an N+1 redundancy relationship, "
472 "the MinNumberNeeded property should be set equal to N.") ]
473 uint32 MinNumberNeeded;
474
475 [Description (
476 "Boolean indicating whether load balancing is supported by "
477 "the ExtraCapacityGroup.") ]
478 boolean LoadBalancedGroup;
479 };
480
481
482 // ===================================================================
483 // ExtentRedundancyComponent
484 karl 1.1 // ===================================================================
485 [Association, Aggregation, Version ("2.6.0"), Description (
486 "Describes the StorageExtents participating in a Storage"
487 "RedundancyGroup.") ]
488 class CIM_ExtentRedundancyComponent : CIM_RedundancyComponent {
489
490 [Override ("GroupComponent"), Aggregate,
491 Description ("The StorageRedundancyGroup.") ]
492 CIM_StorageRedundancyGroup REF GroupComponent;
493
494 [Override ("PartComponent"), Description (
495 "The StorageExtent participating in the RedundancyGroup.") ]
496 CIM_StorageExtent REF PartComponent;
497 };
498
499
500 // ===================================================================
501 // end of file
502 // ===================================================================
|