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