1 kumpf 1.1 // ===================================================================
2 // Title: Core Device 2.7
3 // Filename: Core27_Device.mof
4 // Version: 2.7.0
5 // Release: Final
6 // Date: 03/31/03
7 // ===================================================================
8 // Copyright 1998-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 kumpf 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 kumpf 1.1 // ===================================================================
44 // Description: The Core Model defines basic management concepts.
45 // This file defines the concepts for LogicalDevices (the
46 // logical abstractions and management of installed
47 // hardware).
48 //
49 // The object classes below are listed in an order that
50 // avoids forward references. Required objects, defined
51 // by other working groups, are omitted.
52 // ==================================================================
53 // Change Log for v2.7 Final
54 // CR961 - Change references to EnabledStatus and RequestedStatus to
55 // EnabledState and RequestedState in the LogicalDevice.
56 // StatusInfo,
57 // EnableDevice(),
58 // OnlineDevice(),
59 // QuiesceDevice()
60 //
61 // Change Log for v2.7
62 // CR624 - Fixed several of the DMI mapping strings that were missing
63 // the attribute number in LogicalDevice
64 kumpf 1.1 // CR720 - Deprecate the use of LogicalDevice.PowerManagementSupported,
65 // LogicalDevice.PowerManagementCapabilities, & LogicalDevice.
66 // SetPowerState()
67 // CR761 - Add the Composition Qualifer to SystemDevice
68 // CR763 - Change subclassing of LogicalDevice from LogicalElement to
69 // EnabledLogicalElement
70 // - Deprecate LogicalDevice.StatusInfo
71 // - Update description of LogicalDevice.EnableDevice() to
72 // explain position relative to LogicalDevice.RequestedStatus
73 // - Update description of LogicalDevice.OnlineDevice() and
74 // QuiesceDevice to make reference to EnabledStatus
75 // ==================================================================
76
77 #pragma locale ("en_US")
78
79
80 // ===================================================================
81 // LogicalDevice
82 // ===================================================================
83 [Abstract, Version ("2.7.0"), Description (
84 "An abstraction or emulation of a hardware entity, that may "
85 kumpf 1.1 "or may not be Realized in physical hardware. Any "
86 "characteristics of a LogicalDevice that are used to manage "
87 "its operation or configuration are contained in, or "
88 "associated with, the LogicalDevice object. Examples of the "
89 "operational properties of a Printer would be paper sizes "
90 "supported, or detected errors. Examples of the configuration "
91 "properties of a Sensor Device would be threshold settings. "
92 "Various configurations could exist for a LogicalDevice. "
93 "These configurations could be contained in Setting objects "
94 "and associated with the LogicalDevice.") ]
95 class CIM_LogicalDevice : CIM_EnabledLogicalElement {
96
97 [Propagated("CIM_System.CreationClassName"),
98 Key, MaxLen (256), Description (
99 "The scoping System's CreationClassName.") ]
100 string SystemCreationClassName;
101
102 [Propagated("CIM_System.Name"),
103 Key, MaxLen (256), Description (
104 "The scoping System's Name.") ]
105 string SystemName;
106 kumpf 1.1
107 [Key, MaxLen (256), Description (
108 "CreationClassName indicates the name of the class or "
109 "the subclass used in the creation of an instance. When "
110 "used with the other key properties of this class, this "
111 "property allows all instances of this class and its "
112 "subclasses to be uniquely identified.") ]
113 string CreationClassName;
114
115 [Key, MaxLen (64), Description (
116 "An address or other identifying information to uniquely "
117 "name the LogicalDevice.") ]
118 string DeviceID;
119
120 [Deprecated {"CIM_PowerManagementCapabilities"}, Description (
121 "Boolean indicating that the Device can be power managed. "
122 "The use of this property has been deprecated. Instead, "
123 "the existence of an associated PowerManagementCapabilities "
124 "class (associated using the ElementCapabilities relationhip) "
125 "indicates that power management is supported.") ]
126 boolean PowerManagementSupported;
127 kumpf 1.1
128 [Deprecated {"CIM_PowerManagementCapabilities.PowerCapabilities"},
129 Description(
130 "An enumerated array describing the power management "
131 "capabilities of the Device. The use of this property "
132 "has been deprecated. Instead, the PowerCapabilites "
133 "property in an associated PowerManagementCapabilities "
134 "class should be used." ),
135 ValueMap {"0", "1", "2", "3", "4", "5", "6", "7"},
136 Values {"Unknown", "Not Supported", "Disabled",
137 "Enabled", "Power Saving Modes Entered Automatically",
138 "Power State Settable", "Power Cycling Supported",
139 "Timed Power On Supported"} ]
140 uint16 PowerManagementCapabilities[];
141
142 [Description (
143 "The primary availability and status of the Device. (Additional "
144 "status information can be specified using the Additional"
145 "Availability array property.) For example, the Availability "
146 "property indicates that the Device is running and has full "
147 "power (value=3), or is in a warning (4), test (5), degraded "
148 kumpf 1.1 "(10) or power save state (values 13-15 and 17). Regarding the "
149 "Power Save states, these are defined as follows: "
150 "Value 13 (\"Power Save - Unknown\") indicates "
151 "that the Device is known to be in a power save mode, but its "
152 "exact status in this mode is unknown; 14 (\"Power Save - Low "
153 "Power Mode\") indicates that the Device is in a power save "
154 "state but still functioning, and may exhibit degraded "
155 "performance; 15 (\"Power Save - Standby\") describes that "
156 "the Device is not functioning but could be brought to full "
157 "power 'quickly'; and value 17 (\"Power Save - Warning\") "
158 "indicates that the Device is in a warning state, though also "
159 "in a power save mode."),
160 ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9",
161 "10", "11", "12", "13", "14", "15", "16", "17", "18",
162 "19", "20", "21"},
163 Values {"Other", "Unknown", "Running/Full Power", "Warning",
164 "In Test", "Not Applicable", "Power Off", "Off Line",
165 "Off Duty", "Degraded", "Not Installed", "Install Error",
166 "Power Save - Unknown", "Power Save - Low Power Mode",
167 "Power Save - Standby", "Power Cycle","Power Save - Warning",
168 "Paused", "Not Ready", "Not Configured", "Quiesced"},
169 kumpf 1.1 MappingStrings {"MIF.DMTF|Operational State|006.5",
170 "MIB.IETF|HOST-RESOURCES-MIB.hrDeviceStatus",
171 "MIF.DMTF|Host Device|001.5"},
172 ModelCorrespondence {
173 "CIM_LogicalDevice.AdditionalAvailability"} ]
174 uint16 Availability;
175
176 [Deprecated {"CIM_EnabledLogicalElement.EnabledStatus"},
177 Description (
178 " The StatusInfo property indicates whether the Logical"
179 "Device is in an enabled (value = 3), disabled (value = "
180 "4) or some other (1) or unknown (2) state. If this "
181 "property does not apply to the LogicalDevice, the value, "
182 "5 (\"Not Applicable\"), should be used. StatusInfo has "
183 "been deprecated in lieu of a more clearly named property "
184 "with additional enumerated values (EnabledState), "
185 "that is inherited from ManagedSystemElement. \n"
186 " If a Device is (\"Enabled\")(value=3), it has been "
187 "powered up, and is configured and operational. The Device "
188 "may or may not be functionally active, depending on whether "
189 "its Availability (or AdditionalAvailability) indicate that "
190 kumpf 1.1 "it is (\"Running/Full Power\")(value=3) or (\"Off line\")"
191 "(value=8). In an enabled but offline mode, a Device may be "
192 "performing out-of-band requests, such as running Diagnostics. "
193 "If (\"Disabled\") StatusInfo value=4), a Device can only be "
194 "\"enabled\" or powered off. In a personal computer "
195 "environment, (\"Disabled\") means that the Device's driver "
196 "is not available in the stack. In other environments, a "
197 "Device can be disabled by removing its configuration file. A "
198 "disabled device is physically present in a System and "
199 "consuming resources, but can not be communicated with until "
200 "a load of a driver, a load of a configuration file or some "
201 "other \"enabling\" activity has occurred."),
202 ValueMap {"1", "2", "3", "4", "5"},
203 Values {"Other", "Unknown", "Enabled",
204 "Disabled", "Not Applicable"},
205 MappingStrings {"MIF.DMTF|Operational State|006.4"} ]
206 uint16 StatusInfo;
207
208 [Description (
209 "LastErrorCode captures the last error code reported by "
210 "the LogicalDevice.") ]
211 kumpf 1.1 uint32 LastErrorCode;
212
213 [Description (
214 "ErrorDescription is a free-form string supplying more "
215 "information about the error recorded in LastErrorCode, and "
216 "information on any corrective actions that may be taken.") ]
217 string ErrorDescription;
218
219 [Description (
220 "ErrorCleared is a boolean property indicating that the "
221 "error reported in LastErrorCode is now cleared.") ]
222 boolean ErrorCleared;
223
224 [MaxLen (256), ArrayType ("Indexed"), Description (
225 "OtherIdentifyingInfo captures additional data, beyond "
226 "DeviceID information, that could be used to identify a "
227 "LogicalDevice. One example would be to hold the Operating"
228 "System's user friendly name for the Device in this "
229 "property."),
230 ModelCorrespondence {
231 "CIM_LogicalDevice.IdentifyingDescriptions"} ]
232 kumpf 1.1 string OtherIdentifyingInfo[];
233
234 [Description (
235 "The number of consecutive hours that this Device has been "
236 "powered, since its last power cycle."),
237 Units ("Hours"), Counter ]
238 uint64 PowerOnHours;
239
240 [Description (
241 "The total number of hours that this Device has been "
242 "powered."),
243 Units ("Hours"), Counter ]
244 uint64 TotalPowerOnHours;
245
246 [ArrayType ("Indexed"), Description (
247 "An array of free-form strings providing explanations "
248 "and details behind the entries in the OtherIdentifyingInfo "
249 "array. Note, each entry of this array is related to the "
250 "entry in OtherIdentifyingInfo that is located at the same "
251 "index."),
252 ModelCorrespondence {"CIM_LogicalDevice.OtherIdentifyingInfo"} ]
253 kumpf 1.1 string IdentifyingDescriptions[];
254
255 [Description (
256 "Additional availability and status of the Device, beyond that "
257 "specified in the Availability property. The Availability "
258 "property denotes the primary status and availability of the "
259 "Device. In some cases, this will not be sufficient to denote "
260 "the complete status of the Device. In those cases, the "
261 "AdditionalAvailability property can be used to provide further "
262 "information. For example, a Device's primary Availability may "
263 "be \"Off line\" (value=8), but it may also be in a low power "
264 "state (AdditonalAvailability value=14), or the Device could be "
265 "running Diagnostics (AdditionalAvailability value=5, \"In "
266 "Test\")."),
267 ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9",
268 "10", "11", "12", "13", "14", "15", "16", "17", "18",
269 "19", "20", "21"},
270 Values {"Other", "Unknown", "Running/Full Power", "Warning",
271 "In Test", "Not Applicable", "Power Off", "Off Line",
272 "Off Duty", "Degraded", "Not Installed", "Install Error",
273 "Power Save - Unknown", "Power Save - Low Power Mode",
274 kumpf 1.1 "Power Save - Standby", "Power Cycle",
275 "Power Save - Warning", "Paused", "Not Ready",
276 "Not Configured", "Quiesced"},
277 ModelCorrespondence {"CIM_LogicalDevice.Availability"} ]
278 uint16 AdditionalAvailability[];
279
280 [Description (
281 "Maximum time in milliseconds, that a Device can run in "
282 "a \"Quiesced\" state. A Device's state is defined in its "
283 "Availability and AdditionalAvailability properties, where "
284 "\"Quiesced\" is conveyed by the value 21. What occurs at "
285 "the end of the time limit is device-specific. The Device "
286 "may unquiesce, may offline or take other action. A value of "
287 "0 indicates that a Device can remain quiesced indefinitely."),
288 Units ("MilliSeconds") ]
289 uint64 MaxQuiesceTime;
290
291 [Deprecated {"CIM_PowerManagementService.SetPowerState"},
292 Description(
293 "Sets the power state of the Device. "
294 "The use of this method has been deprecated. Instead, "
295 kumpf 1.1 "use the SetPowerState method in the associated "
296 "PowerManagementService class." ) ]
297 uint32 SetPowerState(
298 [IN, ValueMap {"1", "2", "3", "4", "5", "6"},
299 Values {"Full Power", "Power Save - Low Power Mode",
300 "Power Save - Standby", "Power Save - Other",
301 "Power Cycle", "Power Off"} ]
302 uint16 PowerState,
303 [IN] datetime Time);
304
305 [Description (
306 "Requests a reset of the LogicalDevice. The return value "
307 "should be 0 if the request was successfully executed, "
308 "1 if the request is not supported and some other value "
309 "if an error occurred. In a subclass, the set of possible "
310 "return codes could be specified, using a ValueMap qualifier "
311 "on the method. The strings to which the ValueMap contents "
312 "are 'translated' may also be specified in the subclass as a "
313 "Values array qualifier.") ]
314 uint32 Reset();
315
316 kumpf 1.1 [Description (
317 " Requests that the LogicalDevice be enabled (\"Enabled\" "
318 "input parameter = TRUE) or disabled (= FALSE). If "
319 "successful, the Device's StatusInfo/EnabledState properties "
320 "should reflect the desired state (enabled/disabled). "
321 "Note that this method's function overlaps with the "
322 "RequestedState property. RequestedState was added to "
323 "the model to maintain a record (i.e., a persisted value) "
324 "of the last state request. Invoking the EnableDevice "
325 "method should set the RequestedState property "
326 "appropriately. \n"
327 " The return code should be 0 if the request was "
328 "successfully executed, 1 if the request is not supported "
329 "and some other value if an error occurred. In a subclass, "
330 "the set of possible return codes could be specified, "
331 "using a ValueMap qualifier on the method. The strings to "
332 "which the ValueMap contents are 'translated' may also be "
333 "specified in the subclass as a Values array qualifier.") ]
334 uint32 EnableDevice(
335 [IN] boolean Enabled);
336
337 kumpf 1.1 [Description (
338 "Requests that the LogicalDevice be brought online (\"Online\""
339 " input parameter = TRUE) or taken offline (= FALSE). "
340 "\"Online\" indicates that the Device is ready to accept "
341 "requests, and is operational and fully functioning. In this "
342 "case, the Device's Availability property would be set to "
343 "a value of 3 (\"Running/Full Power\"). \"Offline\" indicates "
344 "that a Device is powered up and operational, but not "
345 "processing functional requests. In an offline state, a Device"
346 " may be capable of running diagnostics or generating "
347 "operational alerts. For example, when the \"Offline\" button "
348 "is pushed on a Printer, the Device is no longer available to "
349 "process print jobs, but could be available for diagnostics "
350 "or maintenance. \n"
351 "If this method is successful, the Device's Availability and "
352 "AdditionalAvailability properties should reflect the updated "
353 "status. If a failure occurs trying to bring the Device online "
354 "or offline, it should remain in its current state. IE, the "
355 "request, if unsuccessful, should not leave the Device in an "
356 "indeterminate state. When bringing a Device back \"Online\", "
357 "from an \"Offline\" mode, the Device should be restored to "
358 kumpf 1.1 "its last \"Online\" state, if at all possible. Only a Device "
359 "that has an EnabledState/StatusInfo of \"Enabled\" and has "
360 "been configured can be brought online or taken offline. \n"
361 "OnlineDevice should return 0 if successful, 1 if the request "
362 "is not supported at all, 2 if the request is not supported "
363 "due to the current state of the Device, and some other value "
364 "if any other error occurred. In a subclass, the set of "
365 "possible return codes could be specified, using a ValueMap "
366 "qualifier on the method. The strings to which the ValueMap "
367 "contents are 'translated' may also be specified in the "
368 "subclass as a Values array qualifier. \n"
369 "Note that this method's function overlaps with the "
370 "RequestedState property. RequestedState was added to "
371 "the model to maintain a record (i.e., a persisted value) "
372 "of the last state request. Invoking the OnlineDevice "
373 "method should set the RequestedState property "
374 "appropriately.") ]
375 uint32 OnlineDevice(
376 [IN] boolean Online);
377
378 [Description (
379 kumpf 1.1 "Requests that the LogicalDevice cleanly cease all current "
380 "activity (\"Quiesce\" input parameter = TRUE) or resume "
381 "activity (= FALSE). For this method to quiesce a Device, "
382 "that Device should have an Availability (or Additional"
383 "Availability) of \"Running/Full Power\" (value=3) and an "
384 "EnabledState/StatusInfo of \"Enabled\". For example, if "
385 "quiesced, a Device may then be offlined for diagnostics, "
386 "or disabled for power off and hot swap. For the method to "
387 "\"unquiesce\" a Device, that Device should have an "
388 "Availability (or AdditionalAvailability) of \"Quiesced\" "
389 "(value=21) and an EnabledState/StatusInfo of \"Enabled\". "
390 "In this case, the Device would be returned to an \"Enabled\" "
391 "and \"Running/Full Power\" status. \n"
392 "The method's return code should indicate the success or "
393 "failure of the quiesce. It should return 0 if successful, "
394 "1 if the request is not supported at all, 2 if the request "
395 "is not supported due to the current state of the Device, "
396 "and some other value if any other error occurred. In a "
397 "subclass, the set of possible return codes could be "
398 "specified, using a ValueMap qualifier on the method. The "
399 "strings to which the ValueMap contents are 'translated' may "
400 kumpf 1.1 "also be specified in the subclass as a Values array "
401 "qualifier. \n"
402 "Note that this method's function overlaps with the "
403 "RequestedState property. RequestedState was added to "
404 "the model to maintain a record (i.e., a persisted value) "
405 "of the last state request. Invoking the QuiesceDevice "
406 "method should set the RequestedState property "
407 "appropriately.") ]
408 uint32 QuiesceDevice(
409 [IN] boolean Quiesce);
410
411 [Description (
412 "Requests that the Device capture its current configuration, "
413 "setup and/or state information in a backing store. The goal "
414 "would be to use this information at a later time (via the "
415 "RestoreProperties method), to return a Device to its present "
416 "\"condition\". This method may not be supported by all Devices. "
417 "The method should return 0 if successful, 1 if the request is "
418 "not supported, and some other value if any other error occurred. "
419 "In a subclass, the set of possible return codes could be "
420 "specified, using a ValueMap qualifier on the method. The strings "
421 kumpf 1.1 "to which the ValueMap contents are 'translated' may also be "
422 "specified in the subclass as a Values array qualifier.") ]
423 uint32 SaveProperties();
424
425 [Description (
426 "Requests that the Device re-establish its configuration, "
427 "setup and/or state information from a backing store. The "
428 "intent is to capture this information at an earlier time "
429 "(via the SaveProperties method), and use it to return a "
430 "Device to this earlier \"condition\". This method may not "
431 "be supported by all Devices. The method should return 0 if "
432 "successful, 1 if the request is not supported, and some "
433 "other value if any other error occurred. In a subclass, "
434 "the set of possible return codes could be specified, using "
435 "a ValueMap qualifier on the method. The strings to which "
436 "the ValueMap contents are 'translated' may also be specified "
437 "in the subclass as a Values array qualifier.") ]
438 uint32 RestoreProperties();
439 };
440
441
442 kumpf 1.1 // ==================================================================
443 // Realizes
444 // ==================================================================
445 [Association, Version ("2.6.0"), Description (
446 "CIM_Realizes is the association that defines the mapping "
447 "between LogicalDevices and the PhysicalElements that "
448 "implement them.") ]
449 class CIM_Realizes : CIM_Dependency {
450
451 [Override ("Antecedent"), Description (
452 "The physical component that implements the Device.") ]
453 CIM_PhysicalElement REF Antecedent;
454
455 [Override ("Dependent"), Description (
456 "The LogicalDevice.") ]
457 CIM_LogicalDevice REF Dependent;
458 };
459
460
461 // ==================================================================
462 // SystemDevice
463 kumpf 1.1 // ==================================================================
464 [Association, Aggregation, Composition, Version ("2.7.0"),
465 Description (
466 "LogicalDevices may be aggregated by a System. This "
467 "relationship is made explicit by the SystemDevice "
468 "association.") ]
469 class CIM_SystemDevice:CIM_SystemComponent {
470
471 [Override ("GroupComponent"), Aggregate, Max (1), Min (1),
472 Description ("The parent system in the Association.") ]
473 CIM_System REF GroupComponent;
474
475 [Override ("PartComponent"), Weak, Description (
476 "The LogicalDevice that is a component of a System.") ]
477 CIM_LogicalDevice REF PartComponent;
478 };
479
480
481 // ===================================================================
482 // DeviceServiceImplementation
483 // ===================================================================
484 kumpf 1.1 [Association, Version ("2.6.0"), Description (
485 "An association between a Service and how it is implemented. "
486 "The cardinality of this association is many-to-many. "
487 "A Service may be provided by more than one Logical"
488 "Device, operating in conjunction. And, any Device may "
489 "provide more than one Service. When multiple Devices are "
490 "associated with a single Service, it is assumed that these "
491 "elements operate in conjunction to provide the Service. If "
492 "different implementations of a Service exist, each of these "
493 "implementations would result in individual instantiations "
494 "of the Service object. These individual instantiations "
495 "would then have associations to the unique implementations.") ]
496 class CIM_DeviceServiceImplementation : CIM_Dependency {
497
498 [Override ("Antecedent"),
499 Description ("The LogicalDevice.") ]
500 CIM_LogicalDevice REF Antecedent;
501
502 [Override ("Dependent"),
503 Description ("The Service implemented using the Logical"
504 "Device.") ]
505 kumpf 1.1 CIM_Service REF Dependent;
506 };
507
508
509 // ===================================================================
510 // DeviceSAPImplementation
511 // ===================================================================
512 [Association, Version ("2.6.0"), Description (
513 "An association between a ServiceAccessPoint and how "
514 "it is implemented. The cardinality of this association "
515 "is many-to-many. A SAP may be provided by more "
516 "than one LogicalDevice, operating in conjunction. And, any "
517 "Device may provide more than one ServiceAccessPoint. "
518 "When many LogicalDevices are associated with a single "
519 "SAP, it is assumed that these elements operate in "
520 "conjunction to provide the AccessPoint. If different "
521 "implementations of a SAP exist, each of these implementations "
522 "would result in individual instantiations of the "
523 "ServiceAccessPoint object. These individual instantiations "
524 "would then have associations to the unique implementations.") ]
525 class CIM_DeviceSAPImplementation : CIM_Dependency {
526 kumpf 1.1
527 [Override ("Antecedent"),
528 Description ("The LogicalDevice.") ]
529 CIM_LogicalDevice REF Antecedent;
530
531 [Override ("Dependent"),
532 Description (
533 "The ServiceAccessPoint implemented using the "
534 "LogicalDevice.") ]
535 CIM_ServiceAccessPoint REF Dependent;
536 };
537
538
539 // ===================================================================
540 // end of file
541 // ===================================================================
|