All changes to be submitted by the Working Group Chair (or designee) after approval by the working group.
The Change Request sample
(http://www.dmtf.org/members/zdata/CRTemplateSample.html) contains more
detailed
information on how to complete the template.
DMTF Change Request Number [sysdevCR006655] |
CIMCoreCR00901 |
CR Owner Name, Email [My Name, my.name@company.com] |
Richard Landau, Richard_Landau@dell.com |
|
Printer Working Group, pwg.org |
|
|
|
n/a |
Errata [Yes/No] |
No |
Short Description |
Add new class CIM_PrintOutputTray to enhanced printer device model. |
Spec, Document or Model(s) Being Changed [Device Model] |
[Core Model] |
Spec, Document or Model Version Incorporating the Change [V2.9 Final] |
V2.15 Experimental |
Filename(s) Incorporating the Change [Device_USB.mof] |
CIM_PrintOutputTray.mof |
Date Originated [mm/dd/yyyy] |
02/07/2007 |
Date of Last Revision of the Change Request [mm/dd/yyyy] |
02/27/2007 |
Dependencies [smwgCR00567,sysdevCR00555] |
n/a |
Terminology
The terminology used in this CR should conform to the "Rules for the structure and drafting of International Standards", 5th Edition, 2005 available at:
Particular attention shall be paid to Annex H which lays out guidelines for the expression of provisions.
Background/Rationale (Explanation of the background and reason(s) for the requested change, and supporting documentation):
As part of the PWG/DMTF Work Register dated 2005/05/12, the Printer Working Group (PWG, see http://www.pwg.org/) is updating the printing-related classes in the CIM data model. PWG is submitting a series of Change Requests to update the CIM model to align with the current model developed in the PWG.
The PWG models for printing related devices and services include many properties that need to be managed but are not currently represented in CIM at all. If these properties are to be visible to CIM-based management applications, then they must appear in the CIM model.
The current PWG printer device model, as embodied in the SNMP Printer MIB v2, RFC3805, contains many properties Some examples:
• Printer console displays and lights, and cover and other interlocks
• Printer input and output trays containing media
• Printer media paths that control the layout of page images on physical sheets
• Printer toners, colorants, and other supplies
• Printer communication channels and language interpreters
• Printer counters for pages and sheets printed in various operational modes
The CIM model will be extended to include these important management objects. This will require extensions to the CIM_Printer class and the addition of other CIM classes to represent the capabilities, settings, and counters required.
The current new class, CIM_PrintOutputTray, is the first of several classes to be added.
(insert text here)
Requested Change (Change information such as details before/after the change, readable/indented MOF, and/or references to "Uploaded" MOF and other documents if the changes are too lengthy to include inline):
//add the new class CIM_PrintOutputTray as CIM_PrintOutputTray.mof
// Copyright (c) 2007 DMTF. All rights reserved.
//
==================================================================
// CIM_PrintOutputTray
//
==================================================================
// Copyright (c) 2007 DMTF. All rights reserved.
//
==================================================================
// CIM_PrintOutputTray
//
==================================================================
[Experimental, Version ( "2.16.0" ), Description (
"Subunit: Output tray on a printer (print device). Properties "
"of a device capable of receiving media delivered from the
"
"printing process.") ,
UMLPackagePath
( "CIM::Device::Printing"
)]
class CIM_PrintOutputTray : CIM_ManagedElement {
[Key,
Description (
"Within the scope of the instantiating Namespace, InstanceID
"
"opaquely and uniquely identifies an
instance of this class. "
"To ensure uniqueness within the NameSpace,
the value of "
"InstanceID should be constructed using
the following "
"\"preferred\" algorithm: \n"
"<OrgID>:<LocalID> \n"
"Where <OrgID> and <LocalID> are separated by a colon (:), "
"and where <OrgID>
must include a copyrighted, trademarked, "
"or otherwise unique name that is owned by
the business "
"entity that is creating or defining the InstanceID or that "
"is a registered ID assigned to the
business entity by a "
"recognized global authority. (This
requirement is similar "
"to the <Schema Name>_<Class
Name> structure of Schema class "
"names.) In addition, to ensure
uniqueness, <OrgID> must not
"
"contain a colon (:). When using this
algorithm, the first "
"colon to appear in InstanceID
must appear between <OrgID> "
"and <LocalID>.
\n"
"<LocalID> is chosen by the
business entity and should not "
"be reused to identify different underlying (real-world)
"
"elements. If the above
\"preferred\" algorithm is not used, "
"the defining entity must assure that the
resulting "
"InstanceID is not reused across any InstanceIDs produced by "
"this or other providers for the NameSpace of this instance. "
"\nFor DMTF-defined instances, the
\"preferred\" algorithm "
"entity that is creating or defining the InstanceID or that "
"is a registered ID assigned to the
business entity by a "
"recognized global authority. (This
requirement is similar "
"to the <Schema Name>_<Class
Name> structure of Schema class "
"names.) In addition, to ensure
uniqueness, <OrgID> must not
"
"contain a colon (:). When using this
algorithm, the first "
"colon to appear in InstanceID
must appear between <OrgID> "
"and <LocalID>.
\n"
"<LocalID> is chosen by the
business entity and should not "
"be reused to identify different
underlying (real-world) "
"elements. If the above
\"preferred\" algorithm is not used, "
"the defining entity must assure that the
resulting "
"InstanceID is not reused across any InstanceIDs produced by "
"this or other providers for the NameSpace of this instance. "
"\nFor DMTF-defined instances, the
\"preferred\" algorithm "
"must be used with the <OrgID> set to CIM.")]
string InstanceID;
[Required,
Override ( "ElementName"
), Write, Description (
"The user-friendly name for this instance of
output tray. In "
"addition, the user-friendly name can be
used as an index "
"property for a search or query. (Note:
The name does not "
"have to be unique within a namespace.
This name shall be "
"generated as a factory default by the
manufacturer and may "
"be changed to a site-specific name by the
system "
"administrator."),
MappingStrings { "MIB.IETF|Printer-MIB.prtOutputName" }]
string ElementName;
[Description (
"A unique value used by this printer to identify this output "
"tray subunit. Although these values may
change due to a "
"major reconfiguration of the subunit
(e.g., the addition of "
"new output trays to the printer), values should remain
"
"stable across successive printer power
cycles."),
MinValue ( 1 ), MaxValue ( 65535 ),
MappingStrings { "MIB.IETF|Printer-MIB.prtOutputIndex" }]
uint32
Id;
[Description (
"The type of technology supported by this output tray
"
"subunit."),
ValueMap { "1", "2", "3",
"4", "5", "6", "7" },
Values { "Other", "Unknown", "RemovableBin", "UnRemovableBin",
"ContinuousRollDevice", "MailBox", "ContinuousFanFold" },
MappingStrings { "MIB.IETF|Printer-MIB.prtOutputType",
"MIB.IETF|IANA-PRINTER-MIB.PrtOutputTypeTC" }]
uint32
Type;
[Description (
"A free-form string that describes the type of technology
"
"when the value of the Type property is equal to 1 (Other)."),
MinLen ( 0 ), MaxLen
( 255 )]
string OtherType;
[Description (
"The unit of measurement for use in calculating and relaying "
"capacity values for this output tray
subunit."),
ValueMap { "1", "2", "3",
"4", "8", "16", "17", "18",
"19" },
Values { "Other", "Unknown", "TenThousandthsOfInches",
"Micrometers", "Sheets", "Feet",
"Meters", "Items",
"Percent" },
MappingStrings { "MIB.IETF|Printer-MIB.prtOutputCapacityUnit",
"MIB.IETF|Printer-MIB.PrtCapacityUnitTC" }]
uint32 CapacityUnit;
[Description (
"A free-form string that describes the capacity unit when "
"the value of the CapacityUnit
property is equal to 1 "
"(Other)."),
MinLen ( 0 ), MaxLen
( 255 )]
string OtherCapacityUnit;
[Write,
Description (
"The maximum capacity of this output tray subunit. There is "
"no convention associated with the media
itself so this "
"value essentially reflects claimed
capacity. If this output "
"tray subunit can reliably sense this
value, the value is "
"sensed by the printer and shall not be
changed by "
"management requests; otherwise, the value
may be written "
"(by a Remote Control Panel or a
Management Application). "
"The value (-1) means other and specifically indicates that "
"the subunit places no restrictions on
this parameter. The "
"value (-2) means unknown."),
MinValue ( -2 ), MaxValue ( 2147483647 ),
MappingStrings { "MIB.IETF|Printer-MIB.prtOutputMaxCapacity",
"MIB.IETF|Printer-MIB.prtOutputCapacityUnit",
"MIB.IETF|Printer-MIB.PrtCapacityUnitTC" }]
sint32 MaxCapacity;
[Write, Description (
"The remaining capacity of this output tray subunit. If this "
"output tray subunit can reliably sense
this value, the "
"value is sensed by the printer and shall
not be modified by "
"management requests; otherwise, the value
may be written "
"(by a Remote Control Panel or a
Management Application). "
"The value (-1) means other and specifically indicates that "
"the subunit places no restrictions on
this parameter. The "
"value (-2) means unknown. The value (-3)
means that the "
"printer knows that there remains capacity
for at least one "
"unit."),
MinValue ( -3 ), MaxValue ( 2147483647 ),
MappingStrings {
"MIB.IETF|Printer-MIB.prtOutputRemainingCapacity",
"MIB.IETF|Printer-MIB.prtOutputCapacityUnit",
"MIB.IETF|Printer-MIB.PrtCapacityUnitTC" }]
sint32 RemainingCapacity;
[Description (
"Status: Assessment of the availability of this printer
"
"subunit."),
ValueMap { "1", "2", "3",
"4", "5", "6", "7" },
Values { "Unknown", "AvailableIdle",
"AvailableStandby",
"AvailableActive", "AvailableBusy", "UnavailableOnRequest",
"UnavailableBroken"
},
MappingStrings { "MIB.IETF|Printer-MIB.PrtSubUnitStatusTC" }]
uint32 StatusAvailability;
[Description (
"Status: If true, there are currently non-critical alerts on "
"this printer subunit."),
MappingStrings { "MIB.IETF|Printer-MIB.PrtSubUnitStatusTC" }]
boolean StatusNonCriticalAlerts;
[Description (
"Status: If true, there are currently critical alerts on "
"this printer subunit."),
MappingStrings { "MIB.IETF|Printer-MIB.PrtSubUnitStatusTC" }]
boolean StatusCriticalAlerts;
[Description (
"Status: If true, the current state is offline on this "
"printer subunit."),
MappingStrings { "MIB.IETF|Printer-MIB.PrtSubUnitStatusTC" }]
boolean StatusOffline;
[Description (
"Status: If true, the current state is transitioning from "
"one value to another on this printer
subunit."),
MappingStrings { "MIB.IETF|Printer-MIB.PrtSubUnitStatusTC" }]
boolean StatusTransitioning;
[Description (
"A free-form text description of this output tray subunit in "
"the localization specified by "
"CIM_Printer.CurrentNaturalLanguage."),
MinLen ( 0 ), MaxLen
( 255 ),
MappingStrings { "MIB.IETF|Printer-MIB.prtOutputDescription",
"MIB.IETF|Printer-MIB.PrtLocalizedDescriptionStringTC" }]
string LocalizedDescription;
[Write,
Description (
"The current state of the stacking order for the associated
"
"output tray subunit. 'FirstToLast'
means that as pages are "
"output the front of the next page is
placed against the "
"back of the previous page. 'LasttoFirst' means that as "
"pages are output the back of the next
page is placed "
"against the front of the previous
page."),
ValueMap { "2",
"3", "4" },
Values { "Unknown", "FirstToLast",
"LastToFirst" },
MappingStrings { "MIB.IETF|Printer-MIB.prtOutputStackingOrder",
"MIB.IETF|Printer-MIB.PrtOutputStackingOrderTC" }]
uint32 StackingOrder;
[Write,
Description (
"The reading surface that will be 'up' when pages are "
"delivered to the associated output tray
subunit. Values are "
"faceUp and faceDown. (Note: interpretation of these values
"
"is in general context-dependent based on
locale; "
"presentation of these values to an
end-user should be "
"normalized to the expectations of the
user)."),
ValueMap { "3",
"4" },
Values { "FaceUp", "FaceDown" },
MappingStrings {
"MIB.IETF|Printer-MIB.prtOutputPageDeliveryOrientation",
"MIB.IETF|Printer-MIB.PrtOutputPageDeliveryOrientationTC" }]
uint32 PageDeliveryOrientation;
[Write,
Description (
"This property indicates that the output tray supports
"
"offset stacking,and
if so, whether the feature is enabled. "
"See RFC 3805 Appendix A, Glossary Of Terms, for how Offset "
"Stacking is defined by this document."),
ValueMap { "3",
"4", "5" },
Values { "On", "Off", "NotPresent"
},
MappingStrings { "MIB.IETF|Printer-MIB.prtOutputOffsetStacking",
"MIB.IETF|Printer-MIB.PresentOnOff" }]
uint32 OffsetStacking;
[Experimental,
Description (
"PrimaryStatus provides a high level
status value, intended "
"to align with Red-Yellow-Green type representation
of "
"status. It should be used in conjunction with "
"DetailedStatus to provide high level and
detailed health "
"status of the ManagedElement
and its subcomponents. \n"
"PrimaryStatus consists of one of the
following values: "
"Unknown, OK, Degraded or Error.
\"Unknown\" indicates the "
"implementation is in general capable of
returning this "
"property, but is unable to do so at this
time. \n"
"\"OK\" indicates the ManagedElement
is functioning "
"normally. \n"
"\"Degraded\" indicates the ManagedElement
is functioning "
"below normal. \n"
"\"Error\" indicates the ManagedElement
is in an Error "
"condition."),
ValueMap { "0", "1", "2",
"3", "..", "0x8000.." },
Values { "Unknown", "OK", "Degraded",
"Error", "DMTF Reserved",
"Vendor Reserved" },
ModelCorrespondence { "CIM_ManagedSystemElement.DetailedStatus",
"CIM_ManagedSystemElement.HealthState" }]
uint16 PrimaryStatus;
[Experimental,
Description (
"DetailedStatus compliments PrimaryStatus with additional "
"status detail. It consists of one of the
following values: "
"NoneNot Available, No Additional
Information, Stressed, "
"Predictive Failure, Error, Non-Recoverable Failure, Error, "
"Non-Recoverable Error, SupportingEntityInError.
Detailed "
"status is used to expand Detailed status
is used to expand "
"upon the PrimaryStatus
of the element. \n"
"A Null return indicates the implementation (provider) does "
"not implement this property. \n"
"\"Not Available\" indicates that the implementation
"
"(provider) is capable of returning a
value for this "
"property, but not ever for this
particular piece of "
"hardware/software or the property is
intentionally not used "
"because it adds no meaningful information
(as in the case "
"of a property that is intended to add
additional info to "
"another property). \n"
"\"No Additional Information\" indicates that the element
is "
"functioning normally as indicated by PrimaryStatus = "
"\"OK\". \n"
"\"Stressed\" indicates that the element is functioning, but "
"needs attention. Examples of
\"Stressed\" states are "
"overload, overheated, and so on. \n"
"\"Predictive Failure\" indicates that an element is "
"functioning normally but a failure is
predicted in the near "
"future. \n"
"\"Non-Recoverable Error \" indicates that this element is "
"in an error condition that requires human
intervention. \n"
"\"Supporting Entity in Error\" indicates that this element "
"might be \"OK\" but that
another element, on which it is "
"dependent, is in error. An example is a
network service or "
"endpoint that cannot function due to
lower-layer networking "
"problems."),
ValueMap { "0", "1", "2",
"3", "4", "5", "6", "7",
"..",
"0x8000.." },
Values { "Not Available", "No Additional
Information",
"Stressed", "Predictive Failure",
"Non-Recoverable Error",
"Predictive Failure", "Non-Recoverable Error",
"Supporting Entity in Error", "DMTF Reserved",
"Vendor Reserved" },
ModelCorrespondence { "CIM_EnabledLogicalElement.PrimaryStatus",
"CIM_ManagedSystemElement.HealthState" }]
uint16 DetailedStatus;
[Experimental,
Description (
"OperatingStatus provides a current
status value for the "
"operational condition of the element and
can be used for "
"providing more detail with respect to the
value of "
"EnabledState.
It can also provide the transitional states "
"when an element is transitioning from one
state to another, "
"such as when an element is transitioning
between "
"EnabledState and RequestedState,
as well as other "
"transitional conditions. \n"
"OperatingStatus consists of one of the
following values: "
"Unknown, Not Available, In Service, Starting, Stopping, "
"Stopped, Aborted, Dormant, Completed, Migrating,
"
"Emmigrating,
Immigrating, Snapshotting. Shutting Down, In "
"Test \n"
"A Null return indicates the implementation (provider) does "
"not implement this property. \n"
"\"Unknown\" indicates the implementation is in general "
"capable of returning this property, but
is unable to do so "
"at this time. \n"
"\"None\"
indicates that the implementation (provider) is "
"capable of returning a value for this
property, but not "
"ever for this particular piece of
hardware/software or the "
"property is intentionally not used because
it adds no "
"meaningful information (as in the case of
a property that "
"is intended to add additional info to
another property). \n"
"\"In Service\" describes an element being configured, "
"maintained, cleaned, or otherwise
administered. \n"
"\"Starting\" describes an element being initialized.
\n"
"\"Stopping\" describes an element being brought to an "
"orderly stop. \n"
"\"Stopped\" and \"Aborted\" are similar,
although the "
"former implies a clean and orderly stop,
while the latter "
"implies an abrupt stop where the state
and configuration of "
"the element might need to be updated.
\n"
"\"Dormant\" indicates that the element is inactive or "
"quiesced.
\n"
"\"Completed\" indicates that the element has completed
its "
"operation. This value should be combined
with either OK, "
"Error, or Degraded in the PrimaryStatus
so that a client "
"can tell if the complete operation
Completed with OK "
"(passed), Completed with Error (failed),
or Completed with "
"Degraded (the operation finished, but it did not complete "
"OK or did not report an error). \n"
"\"Migrating\" element is being moved between host
elements. "
"\n\"Immigrating\" element is being moved to new host "
"element. \n"
"\"Emigrating\" element is being moved away from host "
"element. \n"
"\"Shutting
Down\" describes an element being brought to an "
"abrupt stop. \n"
"\"In Test\" element is performing test
functions."),
ValueMap { "0", "1", "2",
"3", "4", "5", "6", "7",
"8", "9",
"10", "11", "12", "13",
"14", "..", "0x8000.." },
Values { "Unknown", "Not Available", "In
Service", "Starting",
"Stopping", "Stopped", "Aborted",
"Dormant", "Completed",
"Migrating", "Emigrating", "Immigrating",
"Snapshotting",
"Shutting Down", "In Test", "DMTF
Reserved",
"Vendor Reserved" },
ModelCorrespondence { "CIM_EnabledLogicalElement.EnabledState" }]
uint16 OperatingStatus;
[Experimental,
Description (
"CommunicationStatus indicates the ability
of the "
"instrumentation to communicate with the
underlying "
"ManagedElement.
CommunicationStatus consists of one of the "
"following values: Unknown, None,
Communication OK, Lost "
"Communication, or No Contact. \n"
"A Null return indicates the implementation (provider) does "
"not implement this property. \n"
"\"Unknown\" indicates the implementation is in general "
"capable of returning this property, but
is unable to do so "
"at this time. \n"
"\"Not Available\" indicates that the implementation
"
"(provider) is capable of returning a
value for this "
"property, but not ever for this
particular piece of "
"hardware/software or the property is
intentionally not used "
"because it adds no meaningful information
(as in the case "
"of a property that is intended to add
additional info to "
"another property). \n"
"\"Communication OK \" indicates communication is "
"established with the element, but does
not convey any "
"quality of service. \n"
"\"No Contact\" indicates that the monitoring system has "
"knowledge of this element, but has never
been able to "
"establish communications with it.
\n"
"\"Lost Communication\" indicates that the Managed Element "
"is known to exist and has been contacted
successfully in "
"the past, but is currently unreachable."),
ValueMap { "0", "1", "2",
"3", "4", "..", "0x8000.." },
Values { "Unknown", "Not Available",
"Communication OK",
"Lost Communication", "No Contact", "DMTF
Reserved",
"Vendor Reserved" }]
uint16 CommunicationStatus;
};
// end of class
Discussion Points (Summary of decisions and discussions of the WG in creating this CR) :
Additional general information:
The goal of the alignment project is to represent the current printer device model faithfully in the CIM schema, to the extent possible. Where the accepted model includes writable properties, specific semantics for status, or numeric enumerated values, we have tried to preserve these semantics. In cases where the CIM schema has an existing property or a clear convention that would be useful for such a property, we will adapt to that property or convention.
Early implementations of providers using the extended model will be proxy agents that mediate between CIM applications and SNMP-capable printer devices. To permit plausible implementations, the extensions to the CIM model should employ any information that is likely to be available, and not require too much invention beyond the capabilities of existing devices. Further extensions can be made in the future as CIM-capable agents migrate into such devices.
The machine translation that is
used to convert most of the model into MOF format includes post-processing with
mofpretty, and there is some unfortunate interaction
between their formatting rules. For example, mofpretty
deletes the final comments in Values and ValueMap
lists, making some of the lists appear to be corrupt. We will try to
ameliorate some of these problems in the future. Correction by
hand-editing of all such formatting glitches is impractical for the expected
fifteen CRs containing 120 new properties.
[IBM]I'm not the one that has to make your MOFs match DMTF conventions so I don't have a strong opinion on this. However, most CRs are built by hand and precisely this sort of painful tinkering is done. Its up to the CIM Core Chair to decide how much he wants you to do and how much he's willing to do.
[RBL responses in green, as this is.]Right. Message received loud and clear. I understand that we need to burden the editors as little as possible. They hardly need any more problems to deal with. We did fix the Values formatting problem, and we have resolved to work around any other mofpretty or similar problems we run across.
IBM |
value/valuemap properties should not include "Other" unless you have an OtherXXX property that accompanies it.
|
Will add OtherXxx to OutputType and CapacityUnit. This was a direct translation from existing printer model.
In the case of OffsetStacking, there is no additional information to populate an OtherXxx property, we will eliminate the enum value. |
IBM |
the value/valuemap do not need to be listed one per line
|
Caused by a bug in mofpretty formatting that interacts with the output of our machine translation from the existing model. (mofpretty deletes trailing comments in such lists.) We will remove comments to avoid the bug. |
IBM |
have you looked at specializing from EnabledLogicalElement instead of ManagedElement and reusing the status properties that are currently there (or the ones proposed by CIMCoreCR00874?)
|
The subunit cannot be enabled or disabled. Most of the properties of EnabledLogicalElement (and similar classes) do not apply.
The status properties included in the class are directly derived from the existing model, which contains these five classes of status.
The status values being proposed in CR874 are more appropriate to a system than to this simple subunit. E.g., there is no "communications status" between the subunit and its host device. [Aaron]Fair enough, but this
communications status is actually b/w the instrumentation and the managed
element to indicate whether you're providing good information. [Rick]Hmmm. I was thinking that the instrumentation would be largely within the device, but you're right if the CIM instrumentation is a proxy provider to a host system's CIM Server, which early implementations will certainly be. 1. Is it reasonable, though, for us to have a dozen "enabled logical elements" in a printer device, none of which can be enabled/disabled separately? Seems misleading. 2. Would it be unreasonable to adopt the four new status properties without inheriting from the EnabledLogicalElement class? 3. Most of the combined properties of EnabledLogicalElement and ManagedSystemElement woule be either irrelevant (those dealing with state changes) or redundant or about-to-be-deprecated. Would it be anti-social to respond with NULL for some or most of these properties? 4. We still need to represent the five status variables that come from the existing printer status objects. 5. EnabledLogicalElement derives from ManagedSystemElement. But the printer device is not a system, is not derived from ComputerSystem, and it seemed rather misleading to us to include that implication in the inheritance. |
IBM |
There is already a Description property on ManagedElement. The Name property seems redundant with ElementName on ManagedElement.
|
Accidental collision of Description property name, derived from existing model; will fix. Change property name to LocalizedDescription with the same semantics. Caption, unfortunately, is too short (63 vs 255). [Aaron]Did you mean to say that the existing Description property is too short? [Rick]Sorry, that was confusing. The semantics of ManagedElement.Description do not seem appropriate to this use. The typical semantics for ManagedElement.Caption are much closer to what is done with printers, so we could have changed to Caption, but that property is too short for the existing model. (And neither of them is required to be localized.)
Will change Name to AdminName. The CIM_ManagedElement.ElementName property will be used to specify subunit identity. The AdminName property is a user-assigned (writable) string. [Aaron]Pls add an override of ElementName and modify the description qualifier to indicate its intended usage such that within the MOF file its clear why two properties are used. [Rick]Got it, thanks. I need to talk to you about goes in there, though. Is this even close? "Instances of this class require an administratively assigned name property that is writable by the user. Neither ManagedElement.ElementName nor ManagedSystemElement.Name is suitable for this use; the AdminName property is used for this purpose." |
IBM |
Also need at least one Key property.
|
Fixed.
The properties used relate to the printer device instance as the scoping element, since CIM_Printer is not derived from CIM_ComputerSystem. [Aaron]Why not use InstanceId instead of propagated properties? There has been a general shift towards using a single property instead of multiple. [Rick]Good question. My thought originally was that the properties of the subsidiary object ought to tell one which parent it belongs to; but the associations do that. (I have to keep remembering to think CODASYL instead of relational db.) Will change. |
IBM |
The commented value in the values qualifier do not match the actual value in the valuemap qualifier.
|
Which property, please? There is a bug in mofpretty that removes the comment after the last item of a Values or ValueMap list. This bug makes it appear that the lists don't match, but the values usually are parallel. [Aaron]The problem went away when you cleaned up the qualifiers [Rick]Right. As mentioned above, we will fix or work around such formatting bugs. |
IBM |
Is there a reason that the valuemap integers are not sequential?
|
The values are preserved, wherever possible, from the existing model. Changing the enum values would add dissonance to the model and reduce traceability.
Many of the value lists in this and other classes are textual conventions controlled by IANA registry and therefore cannot be changed. |
IBM |
A property like MaxCapacity is generally implemented in an associated sub-class of Capabilities.
|
MaxCapacity is writable in cases where the value is not reliably sensed by the device; not suitable as a capability. [Aaron]We still split this data into something like: CIM_PrintOutputTrayCapabilities.MaxCapacity and CIM_PrintOutputTray.CurrentMaxCapacity. how does mgmt client A know whether the value was provided by
the device or written by mgmt client B?. By splitting into two values
you can say that if Capabilities.MaxCapacity =
unknown, and OutputTray.CurrentMaxCapacity has a
value, someone must have written it. [Rick]Hmmm. Seems like additional complexity -- another class and an association instance -- for very little benefit. Proxy instrumentation will never have information to make this distinction. And these two additional instances would probably be repeated for several more of the new classes. Can we use the simpler model at least until we gain some user experience with it? [Aaron]Further, the text in the Description qualifier uses "may not" where I think you want to say "shall not" [Rick]Good catch, thank you. The wording was taken directly from the MIB. We will have to be careful about places where the older, looser wording clashes with modern normative use. BTW, question about the latest thinking on normative wording. I believe that MOFs now use SHALL instead of MUST, but is it SHALL or shall? |
IBM |
Its unclear whether RemainingCapacity would be used to advertise the capacity is known, and then have a different value later to reflect the actual capacity.
|
Derived from existing model. The property may be employed in various ways by users, depending on local policy.
Also, again, this property is writable in cases where the value cannot be sensed reliably by the device. [Aaron]same basic comment as above. You're not providing a mechanism to allow a client to know what is provided by the instrumentation and what has been written by a different client. |
IBM |
CapacityUnits should have the ProgrammaticUnits qualifier and adhere to the rules agreed to by architecture for DSP0004 (arch 72 and 89)
|
Is it possible to add Units qualifier when the exhaustive list of units in DSP0004 does not include equivalents for several of the required values? (Sheets, TenThousandthsOfInches, Micrometers, Items)
We were not aware of the proposed PUNIT qualifier. After looking at CR72, we feel that we should not obscure the vendor's declaration of the unit to be used for capacity measurement. Different vendors must be free to choose units of measurement, which was the purpose of the CapacityUnits property in the original model.
PUNIT would apply directly if we were to impose a fixed unit on MaxCapacity or RemainingCapacity, but that is not possible across the spectrum of devices.
Also, it would be possible to change the representation of CapacityUnits to a string with the ISPUNIT qualifier. We don't see an advantage of changing the representation to this experimental form. [Aaron]I don't understand. It sounds like you're saying that you think it is more interoperable to allow vendors to dump whatever value they want into this property and force clients to treat it as an opaque string. Using IsPUnit would force a format while allowing implementations to use different base units. Further, this is the agreed upon direction for DMTF for expressing units. [Rick]CapacityUnit is an enum, not an opaque string. Vendors don't get to use whatever they want; they choose from an existing enumerated list of legal values, the same ones in the Values list above. If we use ISPUNIT on this (or analogous) property, and the (for the time being) proxy providers translate from the existing vendor-supplied enum to the corresponding PUNIT string, does that improve interoperability? If that is the direction of the future, it can certainly be done.
Using the new units proposed in Appendix C.1, for instance, Micrometers = "meter * 10^-6" TenThousandthsOfInches = "inch * 10^-5" Sheets = (no equivalent base-unit) Items = (no equivalent base-unit) Need to add these two values to base-unit table in appendix. [Aaron]No problem, the list has already been expanded in subsequent CRs to fill gaps. [Rick]The Arch CRs that I have seen do not include either "sheets" or "items" in their lists. Are there newer lists? How should one go about adding these two values to the normative lists? Is it cricket to CR a CR?
BTW, in Arch CR 72, in proposed Appendix C.1, the conversion of "one kilometer per hour" to "3.6 meters per second" is incorrect. It's "0.28 meters per second." [Rick]You're welcome. |
|
|
|
Change History (Mandatory after submission to the TC, May be used by the WGs):
Version |
Date |
Short description of changes |
0.2 |
2007/02/08 |
Original version |
0.3 |
2007/02/08 |
Fixed datatypes of Id and similar fields to uint. |
0.4 |
2007/02/14 |
Added Key properties, accidentally omitted. |
0.5 |
2007/02/27 |
Responded to IBM comments, including a number of changes detailed in the response. |
0.7 |
2007/03/02 |
Fixed formatting of table of comments. |
0.8 |
2007/03/08 |
Made most changes requested: InstanceId as Key, etc. |
|
|
|
Note that this document
is labeled as "DMTF Confidential". It is intended only for DMTF
member companies and alliance partners.
This Change Request may be withdrawn or modified by subsequent Change Requests.
All submissions MUST comply with the DMTF Patent and Technology policy (http://www.dmtf.org/about/policies/patent-10-18-01.pdf)
Template Sample Version 2.0.0.d