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