Job-Monitoring-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, experimental, Integer32 FROM SNMPv2-SMI TEXTUAL-CONVENTION, DateAndTime FROM SNMPv2-TC MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; -- Use the experimental (54) OID assigned to the Printer MIB before it -- was published as RFC 1759. -- Upon publication of the Job Monitoring MIB as an RFC, delete this -- comment and the line following this comment and change the -- reference of { temp 104 } (below) to { mib-2 X }. -- This will result in changing: -- 1 3 6 1 3 54 jobmonmib(105) to: -- 1 3 6 1 2 1 jobmonmib(X) -- This will make it easier to translate prototypes to -- the standard namespace because the lengths of the OIDs won't -- change. temp OBJECT IDENTIFIER ::= { experimental 54 } jobmonmib MODULE-IDENTITY LAST-UPDATED "9703260000Z" ORGANIZATION "IETF Printer MIB Working Group" CONTACT-INFO "Tom Hastings Postal: Xerox Corp. Mail stop ESAE-231 701 S. Aviation Blvd. El Segundo, CA 90245 Tel: (301)333-6413 Fax: (301)333-5514 E-mail: hastings@cp10.es.xerox.com" DESCRIPTION "The MIB module for monitoring job in servers, printers, and other devices. File: jmp-mib.doc, .pdf, .txt, .mib Version: 0.71" ::= { temp 105 } -- Textual conventions for this MIB module -- textual-convention 1: JmJobServiceTypesTC JmJobServiceTypesTC ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Specifies the type(s) of service to which the job has been submitted (print, fax, scan, etc.). The service type is represented as an enum that is bit encoded with each job service type so that more general and arbitrary services can be created, such as services with more than one destination type, or ones with only a source or only a destination. For example, a job service might scan, faxOut, and print a single job. In this case, three bits would be set in the jmJobServiceTypes object, corresponding to the values: 8+32+4=44, respectively. Whether this object is set from a job attribute supplied by the job submission client or is set by the recipient job submission server or device depends on the job submission protocol. With either implementation, the agent shall return a non-zero value for this object indicating the type of the job. One of the purposes of this object is to permit a requester to filter out jobs that are not of interest. For example, a printer operator may only be interested in jobs that include printing. That is why the object is in the job identification category. The following service component types are defined and are assigned a separate bit value in the enum for use with the jmJobServiceTypes object:" -- This is a type 2 enumeration. See Section 7.1 on page 32. SYNTAX INTEGER { other(1), -- The job contains some document -- production instructions that are not -- one of the identified types. unknown(2), -- The job contains some document -- production instructions whose type is -- unknown to the agent. print(4), -- The job contains some document -- production instructions that specify -- printing scan(8), -- The job contains some document -- production instructions that specify -- scanning faxIn(16), -- The job contains some document -- production instructions that specify -- receive fax faxOut(32), -- The job contains some document -- production instructions that specify -- sending fax getFile(64), -- The job contains some document -- production instructions that specify -- accessing files or documents putFile(128), -- The job contains some document -- production instructions that specify -- storing files or documents mailList(256) -- The job contains some document -- production instructions that specify -- distribution of documents using an -- electronic mail system. } -- textual-convention 2: JmJobStateTC JmJobStateTC ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The current state of the job (pending, processing, held, etc.) Management applications shall be prepared to receive all the standard job states. Servers and devices are not required to generate all job states, only those which are appropriate for the particular implementation. A companion textual convention (JmJobStateReasonsTC) and corresponding object (jmJobStateReasons) provide additional information about job states. While the job states cannot be added to without impacting deployed clients, it is the intent that additional JmJobStateReasonsTC enums can be defined without impacting deployed clients. In other words, the JmJobStateReasonsTC is intended to be extensible. See page 47. The following job state standard values are defined by adding (+2) to the last arc of the ISO DPA OBJECT IDENTIFIER value of the job-current-state job attribute:" -- This is a type 2 enumeration. See Section 7.1 on page 32. SYNTAX INTEGER { other(1), -- The job state is not one of the defined -- states. unknown(2), -- The job state is not known, or is -- indeterminate. preProcessing(3), -- The job has been created on the server -- or device but the submitting client is -- in the process of adding additional job -- components and no documents have -- started processing. The job maybe in -- the process of being checked by the -- server/device for attributes, defaults -- being applied, a device being selected, -- etc. held(12), -- The job is not yet a candidate for -- processing for any number of reasons. -- The reasons are represented as bits in -- the jmJobStateReasons object. Some -- reasons are used in other states to -- give added information about the job -- state. See the JmJobStateReasonsTC -- textual convention for the -- specification of each reason and in -- which states the reasons may be used. pending(6), -- The job is a candidate for processing, -- but is not yet processing. processing(7), -- The job is using one or more document -- transforms which include purely -- software processes, such as -- interpreting a PDL, and hardware -- devices. needsAttention(9), -- The job is using one or more devices, -- but has encountered a problem with at -- least one device that requires human -- intervention before the job can -- continue using that device. Examples -- include running out of paper or a paper -- jam. -- -- Usually devices indicate their -- condition in human readable form -- locally at the device. The management -- application can obtain more complete -- device status remotely by querying the -- appropriate device MIB using the job's -- jmDeviceIndex object in the Job -- Monitoring MIB. -- -- NOTE - Instead of the needsAttention -- job state, ISO DPA uses the multi- -- valued printer-state-of-printers- -- assigned job attribute, so that the -- state of each device that a job is -- using can be accurately represented. -- However, for the Job Monitoring MIB, -- the simpler approach is used of adding -- a single needsAttention job state if -- any device that the job is using needs -- attention and relying on the device MIB -- for more information. paused(13), -- The job has been indefinitely suspended -- by a client issuing an operation to -- suspend the job so that other jobs may -- proceed using the same devices. The -- client may issue an operation to resume -- the paused job at any time, in which -- case the server or printer places the -- job in the held or pending states and -- the job is eventually resumed at the -- point where the job was paused. interrupted(8), -- The job has been interrupted while -- processing by a client issuing an -- operation that specifies another job to -- be run instead of the current job. The -- server or printer will automatically -- resume the interrupted job when the -- interrupting job completes. terminating(14), -- The job is in the process of being -- terminated by the server or printer, -- either because the client canceled the -- job or because a serious problem was -- encountered by a document transform -- while processing the job. The job's -- jmJobStateReasons object shall contain -- the reasons that the job was -- terminated. retained(11), -- The job is being retained by the server -- or printer after processing and all of -- the media have been successfully -- stacked in the output bin(s). -- -- The job (1) has completed successfully -- or with warnings or errors, (2) has -- been aborted while printing by the -- server/device, or (3) has been -- cancelled by the submitting user or -- operator before or during processing. -- The job's jmJobStateReasons object -- shall contain the reasons that the job -- has entered the retained state. -- -- While in the retained state, all of the -- job's document data (and submitted -- resources, such as fonts, logos, and -- forms, if any) are retained by the -- server or device; thus a client could -- issue an operation to resubmit the job -- (or a copy of the job) while the job is -- in the retained state. -- -- The retained state is conditionally -- mandatory. Implementations that do not -- retain jobs after they are finished -- processing such that the client could -- request that the job be repeated (or -- resubmitted), need not implement the -- retained state. completed(17) -- The job has (1) completed after -- processing and all of the media have -- been successfully stacked in the output -- bin(s) and (2) the server/device is -- keeping the job in summary form for a -- site-settable period for purposes of -- aiding operators and users to determine -- the disposition of users' jobs. -- -- The job (1) has completed successfully -- or with warnings or errors, (2) has -- been aborted while printing by the -- server/device, or (3) has been -- cancelled by the submitting user or -- operator before or during processing. -- The job's jmJobStateReasons object -- shall contain the reasons that the job -- has entered the completed state. -- -- While in the completed state, a job's -- document data (and submitted resources, -- such as fonts, logos, and forms, if -- any) need not be retained by the -- server; thus a job in the completed -- state could not be reprinted. The -- length of time that a job may be in -- this state, before transitioning to -- unknown, is implementation-dependent. -- However, servers that implement the -- completed job-state shall retain all of -- the job's Job Monitoring MIB objects, -- except the jmQueueGroup objects, so -- that a management application -- accounting program can copy them to an -- accounting log. } -- textual-convention 3: JmJobStateReasonsTC JmJobStateReasonsTC ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This textual-convention is used in the jmJobStateReasons object to provides additional information regarding the jmJobCurrentState object. The jmJobStateReasons object identifies the reason or reasons that the job is in the preProcessing, held, pending, processing, needsAttention, paused, interrupted, terminating, retained, or completed state. The server shall indicate the particular reason(s) by setting the value of the jmJobStateReasons object. While the job states cannot be added to without impacting deployed clients, it is the intent that additional JmJobStateReasonsTC enums can be defined without impacting deployed clients. In other words, the JmJobStateReasonsTC is intended to be extensible. When the job does not have any reasons for being in its current state, the server shall set the value of the jmJobStateReasons object to a bit string containing all zeros. Bits in the bit string are assigned starting with the most significant bit in the most significant octet which is called bit 1. Bit 2 is the next most significant bit in the most significant octet, etc. Bit 9 is the most significant bit in the second most significant octet, etc., up to the maximum bit: 504 (= 8 x 63). An agent need only return the most significant octet up to the least significant octet that contains a non-zero bit. If all bits are zero, the agent may return an OCTET STRING of zero length. Alternatively, an agent may always return a fixed number of octets starting with the most significant octet and running through the least significant octet that could ever have a one bit in it for that implementation. This object is a type 2 bit string. See Section 7 entitled 'IANA Considerations' on page 32 and Section 12 entitled 'Datatypes used in the Job Monitoring MIB' on page 37. The following standard values are defined as bit numbers, not enums (the bit number equals the last arc of DPA id-val-reasons- xxx OID for the reasons that are in ISO DPA):" -- This is a type 2 bit string. See section 7.2 on page 33. SYNTAX INTEGER { -- really OCTET STRING(SIZE(0..63)) documentsNeeded(1), -- The job is in the held state because -- the server or printer is waiting for -- the job's files to start and/or finish -- being transferred before the job can be -- scheduled to be printed. jobHoldSet(2), -- The job is in the held state because -- the client specified that the job is to -- be held. jobProcessAfterSpecified(3), -- The job is in the held state because -- the client specified a time -- specification reflected in the value of -- the job's jmJobProcessAfterDateAndTime -- object that has not yet occurred. requiredResourcesNotReady(4), -- The job is in the held state because at -- least one of the resources needed by -- the job, such as media, fonts, resource -- objects, etc., is not ready on any of -- the physical devices for which the job -- is a candidate. successfulCompletion(5), -- The job is in the retained or completed -- state having completed successfully. -- completedWithWarnings(6), -- The job is in the terminating, -- retained, or completed states having -- completed with warnings. completedWithErrors(7), -- The job is in the terminating, -- retained, or completed states having -- completed with errors (and possibly -- warnings too). cancelledByUser(8), -- The job is in the terminating, -- retained, or completed states having -- been cancelled by the user. cancelledByOperator(9), -- The job is in the terminating, -- retained, or completed states having -- been cancelled by the operator using -- the CancelJob request. abortedBySystem(10), -- The job is in the terminating, -- retained, or completed states having -- been aborted by the system. logfilePending(11), -- The job's logfile is pending file -- transfer. logfileTransferring(12), -- The job is in the terminating, -- retained, or completed states and the -- job's logfile is being transferred. cascaded(13), -- After the outbound gateway retrieves -- all job and document attributes and -- data, it stores the information into a -- spool directory. Once it has done -- this, it sends the supervisor a job- -- processing event with this job-state- -- reason which tells the supervisor to -- transition to a new job state. deletedByAdministrator(14), -- The administrator has issued a Delete -- operation on the job or a Clean -- operation on the server or queue -- containing the job; therefore the job -- may have been cancelled before or -- during processing, and will have no -- retention-period or completion-period. discardTimeArrived(15), -- The job has been deleted (cancelled -- with the job-retention-period set to 0) -- due to the fact that the time specified -- by the job's job-discard-time has -- arrived [if the job had already -- completed, the only action that would -- have occurred is that the job- -- retention-period would be set to 0 and -- the job is deleted]. postProcessingFailed(16), -- The post-processing agent failed while -- trying to log accounting attributes for -- the job; therefore the job has been -- placed into retained state for a -- system-defined period of time, so the -- administrator can examine it, resubmit -- it, etc. The post-processing agent is -- a plug-and-play mechanism which the -- system and the customer uses to add -- functionality that is executed after a -- job has finished processing. submissionInterrupted(17), -- Indicates that the job was not -- completely submitted for the following -- reasons: (1) the server has crashed -- before the job was closed by the -- client. The server shall put the job -- into the completed state (and shall not -- print the job). (2) the server or the -- document transfer method has crashed in -- some non-recoverable way before the -- document data was entirely transferred -- to the server. The server shall put -- the job into the completed state (and -- shall not print the job). (3) the -- client crashed or failed to close the -- job before the time-out period. The -- server shall close the job and put the -- job into the held state with job-state- -- reasons of submission-interrupted and -- job-hold-set and with the job's job- -- hold attribute set to TRUE. The user -- may release the job for scheduling by -- issuing a job submission or management -- protocol operation. maxJobFaultCountExceeded(18), -- The job has been faulted and returned -- by the server several times and that -- the job-fault-count exceeded the -- device's (or server's, if not defined -- for the device) cfg-max-job-fault- -- count. The job is automatically put -- into the held state regardless of the -- hold-jobs-interrupted-by-device-failure -- attribute. This job-state-reasons value -- is used in conjunction with the job- -- interrupted-by-device-failure value. devicesNeedAttentionTimeOut(19), -- One or more document transforms that -- the job is using needs human -- intervention in order for the job to -- make progress, but the human -- intervention did not occur within the -- site-settable time-out value and the -- server/device has transitioned the job -- to the held state. needsKeyOperatorTimeOut(20), -- One or more devices or document -- transforms that the job is using need a -- specially trained operator (who may -- need a key to unlock the device and -- gain access) in order for the job to -- make progress, but the key operator -- intervention did not occur within the -- site-settable time-out value and the -- server/device has transitioned the job -- to the held state. jobStartWaitTimeOut(21), -- The server/device has stopped the job -- at the beginning of processing to await -- human action, such as installing a -- special cartridge or special non- -- standard media, but the job was not -- resumed within the site-settable time- -- out value and the server/device has -- transitioned the job to the held state. -- Normally, the job is resumed by means -- outside the job submission protocol, -- such as some local function on the -- device. jobEndWaitTimeOut(22), -- The server/device has stopped the job -- at the end of processing to await human -- action, such as removing a special -- cartridge or restoring standard media, -- but the job was not resumed within the -- site-settable time-out value and the -- server/device has transitioned the job -- to the retained state. Normally, the -- job is resumed by means outside the job -- submission protocol, such as some local -- function on the device, whereupon the -- job shall transition immediately to the -- terminating state. jobPasswordWaitTimeOut(23), -- The server/device has stopped the job -- at the beginning of processing to await -- input of the job's password, but the -- human intervention did not occur within -- the site-settable time-out value and -- the server/device has transitioned the -- job to the held state. Normally, the -- password is input and the job is -- resumed by means outside the job -- submission protocol, such as some local -- function on the device. deviceTimedOut(24), -- A device that the job was using has not -- responded in a period specified by the -- device's site-settable attribute. connectingToDeviceTimeOut(25), -- The server is attempting to connect to -- one or more devices which may be dial- -- up, polled, or queued, and so may be -- busy with traffic from other systems, -- but server was unable to connect to the -- device within the site-settable time- -- out value and the server has -- transitioned the job to the held state. transferring(26), -- The job is being transferred to a down -- stream server or device. queuedInDevice(27), -- The job has been queued in a down -- stream server or device. jobCleanup(28), -- The server/device is performing cleanup -- activity as part of ending normal -- processing. processingToStopPoint(29), -- The requester has issued an operation -- to interrupt the job and the -- server/device is processing up until -- the specified stop point occurs. jobPasswordWait(30), -- The server/device has selected the job -- to be next to process, but instead of -- assigning resources and started the job -- processing, the server/device has -- transitioned the job to the held state -- to await entry of a password (and -- dispatched another job, if there is -- one). The user resumes the job either -- locally or by issuing a remote -- operation and supplying a job- -- password=secret-code input parameter -- that must match the job's job-password -- attribute. validating(31), -- The server/device is validating the job -- after a CreateJob operation. The job -- state may be creating, held, pending, -- or processing. queueHeld(32), -- The operator has held the entire queue -- by means outside the scope of the Job -- model. jobProofWait(33), -- The job has produced a single proof -- copy and is in the held state waiting -- for the requester to issue an operation -- to release the job to print normally, -- obeying the job-copies and copy-count -- job and document attributes that were -- originally submitted. heldForDiagnostics(34), -- The system is running intrusive -- diagnostics, so the all jobs are being -- held. serviceOffLine(35), -- The service/document transform is off- -- line and accepting no jobs. All -- pending jobs are put into the held -- state. This could be true if its input -- is impaired or broken. noSpaceOnServer(36), -- The job is held because there is no -- room on the server to store all of the -- job. For example, there is no room for -- the document data or a scan-to-file -- job. pinRequired(37), -- The System Administrator settable -- device policy is (1) to require PINs, -- and (2) to hold jobs that do not have a -- pin supplied as an input parameter when -- the job was created. The requester -- shall either (1) enter a pin locally at -- the device or issue a remote operation -- supplying the PIN in order for the job -- to be able to proceed. exceededAccountLimit(38), -- The account for which this job is drawn -- has exceeded its limit. This condition -- should be detected before the job is -- scheduled so that the user does not -- wait until his/her job is scheduled -- only to find that the account is -- overdrawn. This condition may also -- occur while the job is processing -- either as processing begins or part way -- through processing. -- -- An overdraft mechanism should be -- included to be user-friendly, so as to -- minimize the chances that the job -- cannot finish or that media is wasted. -- For example, the server/device should -- finish the current copy for a job with -- collated document copies, rather than -- stopping in the middle of the current -- document copy. heldForRetry(39), -- The job encountered some errors that -- the server/device could not recover -- from with its normal retry procedures, -- but the error is worth trying the job -- later, such as phone number busy or -- remote file system in-accessible. For -- such a situation, the server/device -- shall add the held-for-retry value to -- the job's jmJobStateReasons object and -- transition the job from the processing -- to the held, rather than to the -- retained state. cancelledByShutdown(40), -- The job was cancelled because the -- server or device was shutdown before -- completing the job. The job shall be -- placed in the pending state [if the job -- was not started, else the job shall be -- placed in the terminating state]. deviceUnavailable(41), -- This job was aborted by the system -- because the device is currently unable -- to accept jobs. This reason [shall be] -- used in conjunction with the reason -- aborted-by-system. The job shall be -- placed in the pending state. wrongDevice(42), -- This job was aborted by the system -- because the device is unable to handle -- this particular job; the spooler should -- try another device. This reason [shall -- be] used in conjunction with the reason -- aborted-by- system. The job shall be -- pending if the queue contains other -- physical devices that the job could -- print on, and the spooler is capable of -- not sending the job back to a physical -- device that has rejected the job for -- this job-state-reasons value. -- Otherwise, [the job] shall be retained. badJob(43), -- This job was aborted by the system -- because this job has a major problem, -- such as an ill-formed PDL; the spooler -- should not even try another device. -- This reason shall be used in -- conjunction with the reason aborted-by- -- system. The job shall be placed in the -- terminating state. jobInterruptedByDeviceFailure(44), -- A device or the print system software -- that the job was using has failed while -- the job was processing. The device is -- keeping the job in the held state until -- an operator can determine what to do -- with the job. jobPrinting(45) -- The job is putting marks on a medium. -- This optional job state reason is -- provided for systems where there is a -- significant difference in the time -- period while a job is in the processing -- state between putting marks on a medium -- and other activities, such as -- interpreting the document data. For -- systems that interpret and mark at the -- same time for a job need not implement -- this job state reason. -- } -- The following table shows the JmJobStateReasonsTC values and the -- job states for which they are applicable. The ISO DPA job state -- reasons are shown along with additional job-state-reasons that give -- users additional feedback on the progress of their job:-- -- Job States -- held pend proc paus inter term reta compl -- ing ess sed rupt inat ined eted -- ing ed ing -- 3 4 5 7 8 9 10 11 -- Descriptive Name -- ISO DPA values: -- documents-needed(1) x -- job-hold-set(2) x -- job-process-after- x -- specified(3) -- required-resources- x -- not-ready(4) -- successful- x x -- completion(5) -- completed-with- x x -- warnings(6) -- completed-with- x x -- errors(7) -- cancelled-by-user(8) x x x -- cancelled-by- x x x -- operator(9) -- aborted-by-system(10) x x x -- logfile-pending(11) x x -- logfile- x x -- transferring(12) -- Additional reasons: -- Descriptive Name -- Job States -- held pend proc paus inter term reta compl -- ing ess sed rupt inat ined eted -- ing ed ing -- 3 4 5 7 8 9 10 11 -- cascaded(13) x x x -- deleted-by- x x x -- administrator(14) -- discard-time- x x x -- arrived(15) -- postprint-failed(16) x x x -- submission- x x x -- interrupted(17) -- max-job-fault-count- x x x -- exceeded(18) -- devices-need- x x x x -- attention-time- -- out(19) -- needs-key-operator- x x x x -- time-out(20) -- job-start-wait-time- x x x x -- out(21) -- job-end-wait-time- x x x -- out(22) -- job-password-wait- x x -- time-out(23) -- device-timed-out(24) x x x x -- Job States -- held pend proc paus inter term reta compl -- ing ess sed rupt inat ined eted -- ing ed ing -- 3 4 5 7 8 9 10 11 -- Descriptive Name -- connecting-to-device- x x x x -- time-out(25) -- transferring(26) x -- queued-in-device(27) x -- job-cleanup(28) x -- processing-to-stop- x -- point(29) -- job-password-wait(30) x x -- validating(31) x x x -- queue-held(32) x -- job-proof-wait(33) x -- held-for- x -- diagnostics(34) -- service-off-line(35) x -- no-space-on- x -- server(36) -- pin-required(37) x x x x -- exceeded-account- x x x x -- limit(38) -- held-for-retry(39) x -- job-printing(45) x -- X/Open PSIS job-state-reasons extension -- values -- Job States -- held pend proc paus inter term reta compl -- ing ess sed rupt inat ined eted -- ing ed ing -- 3 4 5 7 8 9 10 11 -- Descriptive Name -- cancelled-by- x x x -- shutdown(40) -- device- x -- unavailable(41) -- wrong-device(42) x x x -- bad-job(43) x x x -- job-interrupted-by- x -- device-failure(44) -- textual-convention 4: JmAttributeTypeTC JmAttributeTypeTC ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The type of the attribute. Attributes may represent information about a job, such as a file-name, or a document-name, or submission-time or completion time. Attributes may also represent resources required, e.g., a medium or a colorant , etc. to process the job before the job start processing OR to indicate the amount of the resource that is being consumed while the job is processing, e.g., pages completed or impressions completed. If both a required and a consumed value of a resource is needed, two separate attribute enums are assigned in the textual convention. In the following definitions of the enums, each description indicates whether the value of the attribute shall be represented using the jmAttributeValueAsInteger or the jmAttributeValueAsOctets objects by the initial tag: 'Integer:' or 'Octets:', respectively. A very few attributes use both objects at the same time to represent a pair of values (mediumConsumed)and so have both tags. If the jmAttributeValueAsInteger object is not used (no 'Integer:' tag), the agent shall return the value (-1) indicating other. If the jmAttributeValueAsOctets object is not used (no 'Octets:' tag), the agent shall return a zero-length octet string. The standard attribute types defined so far are:" -- This is a type 2 enumeration. See Section 7.1 on page 32. SYNTAX INTEGER { -- jmAttributeTypeIndex Description - including Octets: or -- Integer: to specify whether the value -- is represented in the -- jmAttributeValueAsOctets or the -- jmAttributeValueAsInteger object, -- respectively. other(1), -- An attribute that is not in the list -- and/or that has not been registered -- with IANA. fileName(3), -- Octets: The coded character set file -- name of the document. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job. documentName(4), -- Octets: The coded character set name -- of the document. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job. jobAccountName(5), -- Octets: Arbitrary binary information -- which may be coded character set data -- or encrypted data supplied by the -- submitting user for use by accounting -- services to allocate or categorize -- charges for services provided, such as -- a customer account name. -- -- NOTE: This attribute need not be -- printable characters. jobComment(6), -- Octets: An arbitrary human-readable -- coded character text string supplied by -- the submitting user or the job -- submitting application program for any -- purpose. For example, a user might -- indicate what he/she is going to do -- with the printed output or the job -- submitting application program might -- indicate how the document was produced. -- -- The jobComment attribute is not -- intended to be a name; see the -- jmJobName object. processingMessage(7), -- Octets: A coded character set message -- that is generated during the processing -- of the job as a simple form of -- processing log to show progress and any -- problems. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job. jobSourceChannelIndex(8), -- Integer: The index of the row in the -- associated Printer MIB of the channel -- which is the source of the print job. -- See RFC 1759. -- -- Must be 1 or greater. -- -- NOTE - the Job Monitoring MIB points to -- the Channel row in the Printer MIB, so -- there is no need for a port object in -- the Job Monitoring MIB, since the PWG -- is adding a prtChannelInformation -- object to the Channel table of the -- draft Printer MIB. outputBinIndex(9), -- Integer: The output subunit index in -- the Printer MIB of the output bin to -- which all or part of the job is placed -- in. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job, but the -- jmAttributeValueAsInteger shall be -- different for each such row. outputBinName(10), -- Octets: The name of the output bin to -- which all or part of the job is placed -- in. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job, but the -- jmAttributeValueAsOctets shall be -- different for each such row. sides(11), -- Integer: The number of sides that any -- document in this job will require or -- did use. documentFormatIndex(12), -- Integer: The interpreter language -- family index in the Printer MIB of the -- prtInterpreterLangFamily object, that -- this job requires and uses. A document -- or a job may use more than one PDL. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job, but the -- jmAttributeValueAsInteger shall be -- different for each such row. As with -- all intensive attribute items where -- multiple rows are allowed, there shall -- be only one distinct row for each -- distinct PDL; there shall be no -- duplicates. -- -- NOTE - This attribute type is intended -- to be used with an agent that -- implements the Printer MIB and shall -- not be used if the agent does not -- implement the Printer MIB. Such as -- agent shall use the documentFormatEnum -- attribute instead. documentFormatEnum(13), -- Integer: The interpreter language -- family corresponding to the Printer MIB -- prtInterpreterLangFamily object, that -- this job requires and uses. A document -- or a job may use more than one PDL. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job, but the -- jmAttributeValueAsInteger shall be -- different for each such row. As with -- all intensive attribute items where -- multiple rows are allowed, there shall -- be only one distinct row for each -- distinct PDL; there shall be no -- duplicates. -- -- This enum is a type 2 enum. -- -- NOTE: This textual convention is -- imported from the draft Printer MIB, -- but is not in RFC 1759. physicalDeviceIndex(14), -- Integer: The index of the physical -- device MIB instance requested/used, -- such as the Printer MIB. This value is -- an hrDeviceIndex value. See the Host -- Resource MIB. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job that is -- using more than one physical device, -- but the jmAttributeValueAsInteger shall -- be different for each such row. -- -- If there is no physical device MIB -- instance for this job, this row shall -- not be present in the jmAttributeTable. physicalDeviceName(15), -- Octets: The name of the physical -- device to which the job is assigned. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job that is -- using more than one physical device, -- but the jmAttributeValueAsOctets shall -- be different for each such row. -- ******************************************************************** -- Resources requested and consumed attributes -- Pairs of these attributes can be used by monitoring -- applications to show users thermometers of usage. -- ******************************************************************** jobCopiesRequested(16), -- Integer: The number of copies of the -- entire job that are to be produce -- -- A value of -2 means unknown. jobCopiesCompleted(17), -- Integer: The number of copies of the -- entire job that the entire job has -- completed so far. -- -- A value of (-2) means unknown. documentCopiesRequested(18), -- Integer: The total count of the number -- of document copies requested. If there -- are documents A, B, and C, and document -- B is specified to produce 4 copies, the -- number of document copies requested is -- 6 for the job. documentCopiesCompleted(19), -- Integer: The total count of the number -- of document copies completed so far for -- the job as a whole. If there are -- documents A, B, and C, and document B -- is specified to produce 4 copies, the -- number of document copies starts a 0 -- and runs up to 6 for the job as the job -- processes. jobKOctetsTotal(20), -- Integer: The total number of K (1024) -- octets to be processed in the job, -- including document and job copies. The -- agent shall round the actual number of -- octets up to the next highest K. Thus -- 0 octets shall be represented as 0, 1- -- 1024 octets shall be represented as 1, -- 1025-2048 shall be represented as 2, -- etc. -- -- The server/device may update the value -- of this attribute after each document -- has been transferred to the -- server/device or the server/device may -- provide this value after all documents -- have been transferred to the -- server/device, depending on -- implementation. In other words, while -- the job is in the preProcessing state -- and when the job is in the held state -- with the jmJobStateReasons object -- containing a documentsNeeded value, the -- value of the jobKOctetsTotal attribute -- depends on implementation and may not -- correctly reflect the size of the job. -- -- In computing this value, the -- server/device shall include the -- multiplicative factors contributed by -- (1) the number of document copies, and -- (2) the number of job copies, -- independent of whether the device can -- process multiple copies of the job or -- document without making multiple passes -- over the job or document data and -- independent of whether the output is -- collated or not. Thus the -- server/device computation is -- independent of the implementation and -- shall be: -- -- (1) Document contribution: -- Multiply the size of each document -- in octets by the number of document -- copies of that document. -- -- (2) Add each document contribution -- together. -- -- (3) Job copy contribution: -- Multiply the job size by the number -- of job copies. -- -- (4) Round up the result to the next -- higher K (1024 multiple). -- -- The total K octets to be processed can -- be used in the denominator with the -- jmJobKOctetsCompleted attribute in the -- numerator in order to produce a -- 'thermometer' that indicates the -- progress of the job. -- -- The value (-2) means unknown. jobKOctetsCompleted(21), -- Integer: The number of K (1024) octets -- currently processed by the device, -- including document and job copies. For -- printing, the completed count includes -- processing (interpreting) and marking. -- For scanning, the completed count -- include scanning. -- -- The agent shall round the actual number -- of octets completed up to the next -- higher K. Thus 0 octets is represented -- as 0, 1-1023, is represented as 1, -- 1024-2047 is 2, etc. When the job -- completes, the values of the -- jobKOctetsTotal and the -- jmJobKOctetsCompleted attributes shall -- be equal. -- -- For multiple copies generated from a -- single data stream, the value shall be -- incremented as if each copy was printed -- from a new data stream without -- resetting the count between copies. -- See the pagesCompletedCurrentCopy -- attribute that is reset on each -- document copy. -- -- The total K octets completed can be -- used in the numerator with the -- jobKOctetsTotal attribute in the -- denominator in order to produce a -- "thermometer" that indicates the -- progress of the job. -- -- The value of this attribute shall be 0 -- if processing has not started for this -- job. -- ******************************************************************** -- Impression attributes: For a print job, an impression is the -- marking of the entire side of a sheet. Two-sided processing -- involves two impressions per sheet. Two-up is the placement of two -- logical pages on one side of a sheet and so is still a single -- impression. -- ******************************************************************** impressionsSpooled(22), -- Integer: The number of impressions -- spooled to the server or device for the -- job. impressionsSentToDevice(23), -- Integer: The number of impressions -- sent to the device for the job. impressionsInterpreted(24), -- Integer: The number of impressions -- interpreted for the job. impressionsRequested(25), -- Integer: The number of impressions -- requested by this job to produce. impressionsCompleted(26), -- Integer: The total number of -- impressions completed by this job so -- far. -- -- The value of this attribute shall be 0 -- if processing has not started for this -- job. impressionsCompletedCurrentCopy(27), -- Integer: The number of impressions -- completed for the current copy of the -- current document. -- -- The value of this attribute shall be 0 -- if processing has not started for this -- job. -- ******************************************************************** -- Page attributes: A page is a logical page. Number up can impose -- more than one page on a single side of a sheet. Two-up is the -- placement of two logical pages on one side of a sheet so that each -- side counts as two pages. -- ******************************************************************** pagesRequested(28), -- Integer: The number of logical pages -- requested by the job to be processed. pagesCompleted(29), -- Integer: The total number of logical -- pages completed for this job. pagesCompletedCurrentCopy(30), -- Integer: The number of logical pages -- completed for the current copy of the -- document. This value is reset to 0 for -- each document and for each document -- copy. -- ******************************************************************** -- Sheet attributes: The sheet is a single piece of a medium, whether -- printing on one or both sides. -- ******************************************************************** sheetsRequested(31), -- Integer: The total number of medium -- sheets requested to be processed for -- this job. sheetsCompleted(32), -- Integer: The total number of medium -- sheets that have been completed for the -- entire job whether those sheets have -- been processed on one side or on both. -- The value of this attribute shall be 0 -- if processing has not started for this -- job. -- sheetsCompletedCurrentCopy(33), -- Integer: The number of medium sheets -- that have been completed for the -- current copy of a document in the job -- whether those sheets have been -- processed on one side or on both. -- The value of this attribute shall be 0 -- if processing has not started for this -- job. mediumRequested(34), -- Octets: The name of the medium that is -- required by the job. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job, but the -- jmAttributeValueAsOctets shall be -- different for each such row. mediumConsumed(35), -- Octets: The name of the medium AND -- -- Integer: the number of sheets that -- have been consumed whether those sheets -- have been processed on one side or on -- both. This attribute shall have both -- values. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job, but the -- jmAttributeValueAsOctets shall contain -- a different name for each such row. -- -- The value of this attribute shall be 0 -- if processing has not started for this -- job. colorantRequestedIndex(36), -- Integer: The index -- (prtMarkerColorantIndex) in the Printer -- MIB of the colorant requested. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job, but the -- jmAttributeValueAsOctets shall be -- different for each such row. colorantRequestedName(37), -- Octets: The name of the colorant -- requested. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job, but the -- jmAttributeValueAsOctets shall be -- different for each such row. colorantConsumedIndex(38), -- Integer: The index -- (prtMarkerColorantIndex) in the Printer -- MIB of the colorant consumed. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job, but the -- jmAttributeValueAsOctets shall be -- different for each such row. colorantConsumedName(39), -- Octets: The name of the colorant -- consumed. -- -- A row with this attribute item may -- appear more than once in the -- jmAttributeTable for a job, but the -- jmAttributeValueAsOctets shall be -- different for each such row. -- ******************************************************************** -- Time attributes: two forms of time are provided: DateAndTime and -- TimeStamp from SNMPv2TC (RFC 1903). DateAndTime is an 8- or -- 11-octet binary encoded year, month, day, hour, minute, second, -- deci-second with optional offset from UTC. TimeStamp is the -- integer value of sysUpTime (in hundredths of a second). See page 37. -- ******************************************************************** jobSubmissionDateAndTime(40), -- Octets: The date and time that the job -- was submitted. The value shall be -- specified using the DateAndTime textual -- convention from SMIv2-TC (see page 37). -- -- NOTE: DateAndTime is not printable -- characters. jobSubmissionTimeStamp(41), -- Integer: The time that the job was -- submitted. The value shall be -- specified using the TimeStamp textual -- convention from SMIv2-TC (see page 37). jobStartedProcessingDateAndTime(42), -- Octets: The date and time that the job -- started processing. The value shall be -- specified using the DateAndTime textual -- convention from SMIv2-TC (see page 37). jobStartedProcessingTimeStamp(43), -- Integer: The time that the job started -- processing. The value shall be -- specified using the TimeStamp textual -- convention from SMIv2-TC (see page 37). jobCompletedDateAndTime(44), -- Octets: The date and time that the job -- completed processing and the medium is -- completely stacked in the output bin. -- The value shall be specified using the -- DateAndTime textual convention from -- SMIv2-TC (see page 37). jobCompletedTimeStamp(45), -- Integer: The time that the job -- completed processing and the medium is -- completely stacked in the output bin. -- The value shall be specified using the -- TimeStamp textual convention from -- SMIv2-TC (see page 37). processingCPUTime(46) -- Integer: The amount of CPU time that -- the job has been processing in seconds. -- If the job needs attention, that -- elapsed time shall not be included. In -- other words, the processingCPUTime -- should be relatively repeatable. -- -- The value of this attribute shall be 0 -- if processing has not started for this -- job. } -- The General Group (Mandatory) -- -- The jmGeneralGroup consists of information of a general -- nature that are per-job-set, but are not per-job. The -- jmGeneralGroup consists entirely of the jmGeneralEntry which -- is indexed by: -- -- 1. jmJobSetIndex - a running index of Job Set instances -- supported by this device or server. A job set is used in -- the MIB to represent the separation of jobs into disjoint -- sets for scheduling purposes in a server, typically into -- separate job queues. See Terminology and Job Model on -- page 10 for the definition of a job set. -- Implementation of every object in this group is mandatory. -- See Section 4 entitled 'Conformance Considerations' on page 29 jmGeneral OBJECT IDENTIFIER ::= { jobmonmib 5 } jmGeneralTable OBJECT-TYPE SYNTAX SEQUENCE OF JmGeneralEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of general information per-job-set ( queue), but not per-job. See Terminology and Job Model on page 10 for the definition of a job set." ::= { jmGeneral 1 } jmGeneralEntry OBJECT-TYPE SYNTAX JmGeneralEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information about a job set (queue). See Terminology and Job Model on page 10 for the definition of a job set. An entry shall exist in this table for each job set." INDEX { jmJobSetIndex } ::= { jmGeneralTable 1 } JmGeneralEntry ::= SEQUENCE { jmJobSetIndex Integer32(1..32767), jmGeneralJobSetName OCTET STRING(SIZE(0..63)), jmGeneralJobCompletedPolicy Integer32(0..2147483647), jmGeneralMaxNumberOfJobs Integer32(0..2147483647), jmGeneralNumberOfJobsToComplete Integer32(0..2147483647), jmGeneralNumberOfJobsCompleted Integer32(0..2147483647) } jmJobSetIndex OBJECT-TYPE SYNTAX Integer32(1..32767) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The 16-bit index of a Job Set instance used to represent the separation of jobs into disjoint sets for scheduling purposes in a server, typically into separate job queues. See Terminology and Job Model on page 10 for the definition of a job set. Agents implementing a single Job Set instance shall use an index value of 1 for this object." ::= { jmGeneralEntry 1 } jmGeneralJobSetName OBJECT-TYPE SYNTAX OCTET STRING(SIZE(0..63)) MAX-ACCESS read-only STATUS current DESCRIPTION "The human readable administratively assigned name of this job set. Typically, this name will be the name of the job queue. If a server or printer has only a single job set, this object can be the administratively assigned name of the server or printer itself. This name does not need to be unique, though each job set in a single Job Monitoring MIB should have distinct names. The purpose of this object is to help the user of the job monitoring application distinguish between several job sets in implementations that support more than one job set." ::= { jmGeneralEntry 2 } jmGeneralJobCompletedPolicy OBJECT-TYPE SYNTAX Integer32(0..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The time in seconds that the device or server keeps jobs in the jmJobTable and jmJobCompletedTable after processing as specified by the system administrator for this instance of the Job Set." ::= { jmGeneralEntry 3 } jmGeneralMaxNumberOfJobs OBJECT-TYPE SYNTAX Integer32(0..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum number of queued and completed jobs that this server or print can support at the same time. The value (-1) indicating other shall indicate that there is no fixed limit." ::= { jmGeneralEntry 4 } jmGeneralNumberOfJobsToComplete OBJECT-TYPE SYNTAX Integer32(0..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of jobs currently in the jmJobTable that are to be completed, i.e., the total number of jobs that are in the following states: pre-processing, held, pending, processing, needs-attention, paused, interrupted, or terminating, but not retained or completed. See JmJobStateTC on page 43 for the exact specification of the semantics of the job states." ::= { jmGeneralEntry 5 } jmGeneralNumberOfJobsCompleted OBJECT-TYPE SYNTAX Integer32(0..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of jobs currently in the jmJobTable that are completed, i.e., the total number of jobs that are in the following states: retained or completed, but not pre-processing, held, pending, processing, needs-attention, paused, interrupted, or terminating. See JmJobStateTC on page 43 for the exact specification of the semantics of retained, completed and the other states. The value of the jmGeneralNumberOfJobsCompleted shall equal the number of jobs in the jmCompletedTable. The sum of jmGeneralNumberOfJobsToComplete and jmGeneralNumberOfJobsCompleted shall be equal to the number of jobs in the jmJobTable." ::= { jmGeneralEntry 6 } -- The Queue Group (Conditionally Mandatory) -- -- The jmQueueGroup consists of job objects that are needed by a -- server or device that queues jobs, but are not needed after the -- job has completed processing, i.e., are not needed by accounting -- applications. -- -- The jmQueueGroup is conditionally mandatory meaning that the -- jmQueueGroup shall be implemented by a Job Monitoring MIB agent -- that is instrumenting a server or printer that performs queuing -- (or spooling). -- -- The jmQueueGroup is made up entirely of the jmQueueTable which is -- an ordered list of jobs in a job set that have not completed -- processing. The jmQueueTable is indexed by: -- -- 1. jmJobSetIndex - a running index of Job Set instances -- supported by this device or server. A job set is used in the -- MIB to represent the separation of jobs into disjoint sets -- for scheduling purposes in a server, typically into separate -- job queues. See 'Terminology and Job Model' on page 10 for the -- definition of a job set. -- -- 2. jmQueueIndex - a running index of the jobs that have not -- finished processing and shall indicate the order that the -- jobs are currently scheduled to be processed. -- -- -- Implementation of this group is conditionally mandatory, i.e., -- mandatory if the server or printer that the agent is -- instrumenting queues jobs (rather than just passing the jobs -- through). See Section 4 entitled 'Conformance Considerations' on -- page 29. jmQueue OBJECT IDENTIFIER ::= { jobmonmib 6 } jmQueueTable OBJECT-TYPE SYNTAX SEQUENCE OF JmQueueEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of per-job information needed by a server or device that performs queuing." ::= { jmQueue 1 } jmQueueEntry OBJECT-TYPE SYNTAX JmQueueEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information about a job in a server or printer that performs queuing. An entry shall exist in this table for each job in a job set that is queued, i.e., for each job that has not completed processing." INDEX { jmJobSetIndex, jmQueueIndex } ::= { jmQueueTable 1 } JmQueueEntry ::= SEQUENCE { jmQueueIndex Integer32(1..2147483647), jmQueueJobIndex Integer32(1..2147483647), jmQueueNumberOfInterveningJobs Integer32(0..2147483647), jmJobPriority Integer32(0..100), jmJobProcessAfterDateAndTime DateAndTime } jmQueueIndex OBJECT-TYPE SYNTAX Integer32(1..2147483647) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The 32-bit index of the jobs that have not finished processing. The index values shall be assigned monatonically increasing as the server or printer determines the order of processing. The agent shall change the value of this object dynamically as the priority ordering of jobs changes. Thus the jmQueueTable orders the jobs into their current priority order which can change as new jobs are submitted and/or the configuration of the Printer is changed." ::= { jmQueueEntry 1 } jmQueueJobIndex OBJECT-TYPE SYNTAX Integer32(1..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The job's identifier generated by the server or device when that server or device accepted the job. This value permits the management application to access the other tables to obtain the job-specific objects. This value shall be the same for a job in the jmQueueTable as the corresponding jmJobIndex value in the jmJobTable for this job. The value 0 shall not be generated. Agents instrumenting systems that contain jobs with a job identifier of 0 shall map the value 0 to a value that is one higher than the highest job identifier value that any job can have on that system." ::= { jmQueueEntry 2 } jmQueueNumberOfInterveningJobs OBJECT-TYPE SYNTAX Integer32(0..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The number of jobs that are expected to be processed before this job is processed according to the implementation's queuing algorithm if no other jobs were to be submitted. The agent shall return a value of 0 for this object when the job starts processing." ::= { jmQueueEntry 3 } jmJobPriority OBJECT-TYPE SYNTAX Integer32(0..100) MAX-ACCESS read-only STATUS current DESCRIPTION "This attribute specifies a priority for scheduling the job. It is used by servers and devices that employ a priority-based scheduling algorithm. A higher value specifies a higher priority. The value 1 is defined to indicate the lowest possible priority (a job which a priority-based scheduling algorithm shall pass over in favor of higher priority jobs). The value 100 is defined to indicate the highest possible priority. Priority is expected to be evenly or 'normally' distributed across this range. The mapping of vendor- defined priority over this range is implementation-specific. A value of 0 shall be returned by implementations that do not have a priority-based queuing algorithm." ::= { jmQueueEntry 4 } jmJobProcessAfterDateAndTime OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "This object specifies the calendar date and time of day after which the job shall become a candidate to be scheduled for processing. If the value of this attribute is in the future, the server shall set the value of the job's jmJobCurrentState to held and add the jobProcessAfterSpecified bit value to the job's jmJobStateReasons object and shall not schedule the job for processing until the specified date and time has passed. When the specified date and time arrives, the server shall remove the jobProcessAfterSpecified bit value from the job's jmJobStateReasons object and, if no other reasons remain, shall change the job's jmJobCurrentState to pending so that the job becomes a candidate for being scheduled on devices(s). The server shall assign an empty value to the jmJobProcessAfterDateAndTime object when no process after time has been specified, so that the job shall be a candidate for processing immediately." ::= { jmQueueEntry 5 } -- The Completed Group (Mandatory) -- -- The jmCompletedGroup consists entirely of the jmCompletedTable -- which is an ordered list of the jobs in the job set that have -- completed processing, i.e., jobs that are in the terminating, -- retained or completed state. The jmCompletedTable is indexed by: -- -- -- 1. - jmJobSetIndex - a running index of Job Set instances -- supported by this device or server. A job set is used in the -- MIB to represent the separation of jobs into disjoint sets -- for scheduling purposes in a server, typically into separate -- job queues. See Terminology and Job Model on page 10 for the -- definition of a job set. -- -- -- 2. jmCompletedIndex - a running index of the jobs that have -- finished processing. -- -- -- Implementation of every object in this group is mandatory. See -- Section 4 entitled 'Conformance Considerations' on page 29. jmCompleted OBJECT IDENTIFIER ::= { jobmonmib 7 } jmCompletedTable OBJECT-TYPE SYNTAX SEQUENCE OF JmCompletedEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of pointers to jobs that have finished processing, have been cancelled by a user or operator, or the system has aborted." ::= { jmCompleted 1 } jmCompletedEntry OBJECT-TYPE SYNTAX JmCompletedEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A pointer to a job that has finished processing. An entry shall exist in this table for each job that has finished processing, due to normal completion, cancellation by a user, or termination by the system." INDEX { jmJobSetIndex, jmCompletedIndex } ::= { jmCompletedTable 1 } JmCompletedEntry ::= SEQUENCE { jmCompletedIndex Integer32(1..2147483647), jmCompletedJobIndex Integer32(1..2147483647) } jmCompletedIndex OBJECT-TYPE SYNTAX Integer32(1..2147483647) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The 32-bit index of the jobs that are in the retained or completed states. The agent shall add jobs to the end of the jmCompletedTable, so that monitor programs can quickly determine what jobs have completed since the last time that the monitoring programs accessed the jmCompletedTable. The index values shall be monatonically increasing. Therefore, the order of the jobs specified by the value of this index shall be the order in which the jobs finished processing. Since the jmCompletedIndex shall roll over when the jmCompletedIndex would have reached 2^31 (but no lower), monitoring programs shall handle such roll over." ::= { jmCompletedEntry 1 } jmCompletedJobIndex OBJECT-TYPE SYNTAX Integer32(1..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The job's identifier generated by the server or device when that server or device accepted the job. This value permits the management application to access the other tables to obtain the job-specific objects. This value shall be the same for a job in the jmQueueTable as the corresponding jmJobIndex value in the jmJobTable for this job. The value 0 shall not be generated. Agents instrumenting systems that contain jobs with a job identifier of 0 shall map the value 0 to a value that is one higher than the highest job identifier value that any job can have on that system." ::= { jmCompletedEntry 2 } -- The Job Group (Mandatory) -- -- The jmJobGroup consists of basic job identification and status -- information for each job in a job set that (1) monitoring -- applications need to be able to access in a single SNMP Get -- operation, (2) that have a single value per job, and (3) that -- shall always be implemented. -- -- The jmJobGroup consists entirely of the jmJobTable which is -- indexed by: -- -- -- 1. jmJobSetIndex - a running index of Job Set instances -- supported by this device or server. A job set is used in the -- MIB to represent the separation of jobs into disjoint sets -- for scheduling purposes in a server, typically into separate -- job queues. See Terminology and Job Model on page 10 for the -- definition of a job set. -- -- -- 2. jmJobIndex - the job identifier that was generated by the -- server or device that accepted the job. -- -- Implementation of every object in this group is mandatory. See -- Section 4 entitled 'Conformance Considerations' on page 29. jmJob OBJECT IDENTIFIER ::= { jobmonmib 8 } jmJobTable OBJECT-TYPE SYNTAX SEQUENCE OF JmJobEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of basic job identification and status information for each job in a job set." ::= { jmJob 1 } jmJobEntry OBJECT-TYPE SYNTAX JmJobEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Basic per-job identification and status information. An entry shall exist in this table for each job, no matter what the state of the job is. Each job shall appear in one and only one job set." INDEX { jmJobSetIndex, jmJobIndex } ::= { jmJobTable 1 } JmJobEntry ::= SEQUENCE { -- Job Identification (I) objects: jmJobIndex Integer32(1..2147483647), jmJobName OCTET STRING(SIZE(0..63)), jmJobIdName OCTET STRING(SIZE(0..63)), jmJobIdNumber Integer32(0..2147483647), jmJobServiceTypes Integer32(1..2147483647), -- JmJobServiceTypesTC jmJobOwner OCTET STRING(SIZE(0..63)), jmJobDeviceNameOrQueueRequested OCTET STRING(SIZE(0..63)), -- Job Status (S) objects: jmJobCurrentState JmJobStateTC, jmJobStateReasons OCTET STRING(SIZE(0..63)) -- encoded as a bit string } -- Job Identification (I) objects -- The following jmJobGroup objects identify the job to the user of -- the management application which may be acting in the role of an -- end-user or a system operator: jmJobIndex OBJECT-TYPE SYNTAX Integer32(1..2147483647) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The identifier of the job on the device or server. The job's identifier is generated by the server or device when that server or device accepted the job. However, if the device does not generate a job identifier for each job, then the Job Monitoring MIB agent shall generate the job identifier for the job. The value 0 shall not be generated. Agents instrumenting systems that contain jobs with a job identifier of 0 shall map the value 0 to a value that is one higher than the highest job identifier value that any job can have on that system." ::= { jmJobEntry 1 } jmJobName OBJECT-TYPE SYNTAX OCTET STRING(SIZE(0..63)) MAX-ACCESS read-only STATUS current DESCRIPTION "This object is the human readable string name of the job as assigned by the submitting user to help the user distinguish between his/her various jobs. This name does not need to be unique. This attribute is intended for enabling a user or the user's application to convey a job name that may be printed on a start sheet, returned in a query result, or used in notification or logging messages. If this attribute is not specified when the job is submitted, no job name is assumed, but implementation specific defaults are allowed, such as the value of the documentName(4) resource item of the first document in the job or the fileName(3) resource item of the first document in the job. The jmJobName is distinguished from the jobComment attribute, in that the jmJobName is intended to permit the submitting user to distinguish between different jobs that he/she has submitted. The jobComment attribute is intended to be free form additional information that a user might wish to use to communicate with himself/herself, such as a reminder of what to do with the results or to indicate a different set of input parameters were tried in several different job submissions." ::= { jmJobEntry 2 } jmJobIdName OBJECT-TYPE SYNTAX OCTET STRING(SIZE(0..63)) MAX-ACCESS read-only STATUS current DESCRIPTION "Identifies the job on the 'client-side' of the printing process as coded character set data in combination with the jmJobIdNumber object. The jmJobIdName and the jmJobIdNumber objects are referred to as the 'client-side' identifiers because they allow the user, operator, or the system administrator to uniquely identify the print jobs of interest from all the jobs currently 'known' by the server or device. The client-side identifiers can be assigned by either the job submission client's local system or a downstream server, depending on implementation and the job submission protocol. The format of the coded character set data and point of assignment of the client-side identifiers depend upon the job submission protocol in use. See Appendix A on page 97 for the mapping from selected job submission protocols to these client- side job identifiers. Unlike jmJobName, which is assigned by the submitting user, the jmJobIdName and jmJobIdNumber client-side identifiers provide for unique identification of jobs. The jmJobIdName object may be used alone or in conjunction with the jmJobIdNumber object, depending upon the format of the job submission protocol client side identifier. For example, the LPD job identifier normally contains three alpha characters followed by a three digit number. The agent may represent the alpha portion by jmJobIdName and the numeric portion by jmJobIdNumber. Alternatively, the agent may represent the LPD client-side id entirely in the jmJobIdName object." ::= { jmJobEntry 3 } jmJobIdNumber OBJECT-TYPE SYNTAX Integer32(0..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "Identifies the job on the 'client-side' of the printing process in combination with the jmJobIdName object. This object may be used alone or in conjunction with the jmJobIdName object, depending upon the format of the job submission protocol client- side identifier. Refer to the jmJobIdName object specification. If the value of this object is unknown, the agent shall return the value (-2)." ::= { jmJobEntry 4 } jmJobServiceTypes OBJECT-TYPE SYNTAX Integer32(1..2147483647) -- See JmJobServiceTypesTC -- on page 41 MAX-ACCESS read-only STATUS current DESCRIPTION "Specifies the type(s) of service to which the job has been submitted (print, fax, scan, etc.). The service type is represented as an enum that is bit encoded with each job service type so that more general and arbitrary services can be created, such as services with more than one destination type, or ones with only a source or only a destination. For example, a job service might scan, fax, and print a single job. In this case, three bits would be set in the jmJobServiceTypes object, corresponding to the values: 8+32+4=44, respectively. Whether this object is set from a job attribute supplied by the job submission client or is set by the recipient job submission server or device depends on the job submission protocol. With either implementation, the agent shall return a non-zero value for this object indicating the type of the job. One of the purposes of this object is to permit a requester to filter out jobs that are not of interest. For example, a printer operator may only be interested in jobs that include printing. That is why the object is in the job identification category. This object is a type 2 enum. The JmJobServiceTypesTC textual convention defines component types as separate bit value in the enum. See page 41." ::= { jmJobEntry 5 } jmJobOwner OBJECT-TYPE SYNTAX OCTET STRING(SIZE(0..63)) MAX-ACCESS read-only STATUS current DESCRIPTION "The coded character set name of the user that submitted the job. The method of assigning this user name will be system and/or site specific but the method must insure that the name is unique to the network that is visible to the client and target device. This value should be the authenticated name of the user submitting the job." ::= { jmJobEntry 6 } jmJobDeviceNameOrQueueRequested OBJECT-TYPE SYNTAX OCTET STRING(SIZE(0..63)) MAX-ACCESS read-only STATUS current DESCRIPTION "The administratively defined coded character set name of the target device or queue. Its value corresponds to the Printer MIB: prtGeneralAdminName object (added to the draft Printer MIB) for printers. For servers, this object is the name that users supply to indicate whether they want the job to be processed, typically, but not limited to, a job queue name or logical printer name." ::= { jmJobEntry 7 } jmJobCurrentState OBJECT-TYPE SYNTAX JmJobStateTC -- See page 43 MAX-ACCESS read-only STATUS current DESCRIPTION "The current state of the job (pending, processing, held, etc.) Management applications shall be prepared to receive all the standard job states. Servers and devices are not required to generate all job states, only those which are appropriate for the particular implementation. A companion textual convention (JmJobStateReasonsTC) and corresponding object (jmJobStateReasons) provide additional information about job states. While the job states cannot be added to without impacting deployed clients, it is the intent that additional JmJobStateReasonsTC enums can be defined without impacting deployed clients. In other words, the JmJobStateReasonsTC is intended to be extensible. See page 47. This object is a type 2 enum." ::= { jmJobEntry 8 } jmJobStateReasons OBJECT-TYPE SYNTAX OCTET STRING(SIZE(0..63)) -- encoded as a bit string -- See JmJobStateReasonsTC -- on page 47 MAX-ACCESS read-only STATUS current DESCRIPTION "This object provides additional information regarding the jmJobCurrentState object. This object identifies the reason or reasons that the job is in the preProcessing, held, pending, processing, needsAttention, paused, interrupted, terminating, retained, or completed state. The server shall indicate the particular reason(s) by setting the value of the jmJobStateReasons object. While the job states cannot be added to without impacting deployed clients, it is the intent that additional JmJobStateReasonsTC enums can be defined without impacting deployed clients. In other words, the JmJobStateReasonsTC is intended to be extensible. See page 47. When the job does not have any reasons for being in its current state, the server shall set the value of the jmJobStateReasons object to a bit string containing all zeros. Bits in the bit string are assigned starting with the most significant bit in the most significant octet which is called bit 1. Bit 2 is the next most significant bit in the most significant octet, etc. Bit 9 is the most significant bit in the second most significant octet, etc., up to the maximum bit: 504 (= 8 x 63). See JmJobStateReasonsTC on page 47 An agent only need return the most significant octet up to the least significant octet that contains a non-zero bit. If all bits are zero, the agent may return an OCTET STRING of zero length. Alternatively, an agent may always return a fixed number of octets starting with the most significant octet and running through the least significant octet that could ever have a one bit in it for that implementation. This object is a type 2 bit string. See Section 7 entitled 'IANA Considerations' on page 32 and Section 12 entitled 'Datatypes used in the Job Monitoring MIB' on page 37." ::= { jmJobEntry 9 } -- The Attribute Group (Mandatory) -- -- The jmAttributeGroup consists attributes of the job and -- document(s). Attribute may represent information about the job -- and document(s), such as file-names, document-names, submission- -- time, completion-time, size. Attributes may also represent -- requested and/or consumed resources for each job. Instead of -- allocating distinct objects for each attribute, each attribute -- item is represented as a separate row in the jmAttributeTable. -- Each column in the row describes the attribute, such as its type -- represented as an enum, and the value represented as (1) an -- integer or (2) an octet string (character coded text and binary -- octet strings, such as DateAndTime) or (3) both. -- -- Most attribute items shall have only one row per job. However, a -- few attribute items can have multiple values per job or even per -- document, where each value is a separate row in the -- jmAttributeTable. Unless indicated otherwise, an agent shall -- ensure that each attribute item occurs only once in the -- jmAttributeTable. Attribute items that may appear multiple times -- in the jmAttributeTable are indicated in their specification in -- the JmAttributeTypeTC (see page 60). However, such attribute -- items shall not contain duplicates for "intensive" (as opposed to -- "extensive") attributes. For example, each documentFormat(11) -- shall appear in the jmAttributeTable only once for a job since -- the interpreter language is an intensive attribute item, even -- though the job has a number of documents that all use the same -- PDL. As another example of an intensive attribute that can have -- multiple entries, if a document or job uses multiple types of -- media, there shall be only one row in the jmAttributeTable for -- each media type, not one row for each document that uses that -- medium type. On the other hand, if a job contains two documents -- of the same name, there can be separate rows for the -- documentName(4) attribute item with the same name, since a -- document name is an extensive attribute item. -- -- The jmAttributeGroup consists entirely of the jmAttributeTable -- which is indexed by (from most significant to least significant): -- -- 1. jmJobSetIndex - a running index of Job Set instances -- supported by this device or server. A job set is used in the -- MIB to represent the separation of jobs into disjoint sets -- for scheduling purposes in a server, typically into separate -- job queues. See Terminology and Job Model on page 10 for the -- definition of a job set. -- -- 2. jmJobIndex - the job identifier that was generated by the -- -- server or device that accepted the job. -- -- -- 3. jmAttributeTypeIndex - the enum that indicates the type of -- attribute. See JmAttributeTypeTC on page 60. -- -- 4. jmAttributeInstanceIndex - a running index of attributes of -- the same type for each job. For those attributes with only a -- single instance per job, this index value shall be 1. For -- those attributes that are a single value per document, the -- index value shall be the document number, starting with 1 for -- the first document in the job. Jobs with only a single -- document shall use the index value of 1. For those -- attributes that can have multiple values per job and per -- document, such as documentFormatIndex or documentFormatEnum, -- the index shall be a running index for the job as a whole, -- starting at 1. -- -- The jmAttributeTable is a per job table with an extra index for -- each type of attribute (jmAttributeTypeIndex) that a job can have -- and an additional index (jmAttributeInstanceIndex)for those -- attributes that can have multiple instances per job. The -- jmAttributeTypeIndex object shall contain an enum type that -- indicates the type of attribute. Some attribute types are used -- to represent a resources that is both requested and consumed as a -- single value, depending on the point in time, while other -- attributes have distinct types for requested versus consumed -- values. The agent is able to discover the attributes either from -- the job submission protocol itself or from the document PDL. As -- the documents are interpreted, the interpreter may discover -- additional attributes and so adds additional rows to this table. -- As the resources are actually consumed, the usage counter -- contained in the jmAttributeValueAsInteger object is incremented -- according to the units indicated in the description of the enum. -- See JmAttributeTypeTC on page 60. -- Some attributes are mandatory for conformance, and the rest are -- are conditionally mandatory, i.e., an agent shall implement an -- attribute if the device or server being instrumented has the -- feature with the semantics associated with the attribute. The -- mandatory attributes are: -- -- sheetsCompleted(32) -- -- However, a monitoring application shall accept all of the -- attributes from an agent and either display them to its user or -- ignore them. -- Implementation of every object in this group is mandatory. See -- Section 4 entitled 'Conformance Considerations' on page 29. jmAttribute OBJECT IDENTIFIER ::= { jobmonmib 9 } jmAttributeTable OBJECT-TYPE SYNTAX SEQUENCE OF JmAttributeEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of attributes for each job in a job set. Attributes may represent information about the job and document(s) or resources required and/or consumed." ::= { jmAttribute 1 } jmAttributeEntry OBJECT-TYPE SYNTAX JmAttributeEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Attributes representing information about the job and document(s) or resources required and/or consumed. Zero or more entries shall exist in this table for each job in a job set. Each job shall appear in one and only one job set." INDEX { jmJobSetIndex, jmJobIndex, jmAttributeTypeIndex, jmAttributeInstanceIndex } ::= { jmAttributeTable 1 } JmAttributeEntry ::= SEQUENCE { jmAttributeTypeIndex JmAttributeTypeTC, -- See page 60 jmAttributeInstanceIndex Integer32(1..32767), jmAttributeValueAsInteger Integer32(0..2147483647), jmAttributeValueAsOctets OCTET STRING(SIZE(0..63)) } jmAttributeTypeIndex OBJECT-TYPE SYNTAX JmAttributeTypeTC -- See page 60 MAX-ACCESS not-accessible STATUS current DESCRIPTION "The type of attribute. The type may identify information about the job or document(s) or may identify a resource required to process the job before the job start processing and/or consumed by the job as the job is processed. Examples of job and document information include: jobCopiesRequested, documentCopiesRequested, jobCopiesCompleted, documentCopiesCompleted, fileName, and documentName. Examples of resources required and consumed include: jobKOctetsTotal, jobKOctetsCompleted, pagesRequested, pagesCompleted, mediumRequested, and mediumConsumed. See the JmAttributeTypeTC textual convention on page 60. In the definitions of the enums in the JmAttributeTypeTC textual convention, each description indicates whether the value of the attribute shall be represented using the jmAttributeValueAsInteger or the jmAttributeValueAsOctets objects by the initial tag: 'Integer:' or 'Octets:', respectively. A very few attributes use both objects (mediumConsumed)and so have both tags. If the jmAttributeValueAsInteger object is not used (no 'Integer:' tag), the agent shall return the value (-1) indicating other. If the jmAttributeValueAsOctets object is not used (no 'Octets:' tag), the agent shall return a zero-length octet string. This value is a type 2 enum." ::= { jmAttributeEntry 1 } jmAttributeInstanceIndex OBJECT-TYPE SYNTAX Integer32(1..32767) MAX-ACCESS not-accessible STATUS current DESCRIPTION "A running 16-bit index of the attributes of the same type for each job. For those attributes with only a single instance per job, this index value shall be 1. For those attributes that are a single value per document, the index value shall be the document number, starting with 1 for the first document in the job. Jobs with only a single document shall use the index value of 1. For those attributes that can have multiple values per job and per document, such as documentFormatIndex or documentFormatEnum, the index shall be a running index for the job as a whole, starting at 1. Each job shall be identified by jmJobIndex value and each job shall be in one job set identified by jmJobSetIndex." ::= { jmAttributeEntry 2 } jmAttributeValueAsInteger OBJECT-TYPE SYNTAX Integer32(0..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The integer value of the attribute. The value of the attribute shall be represented as an integer if the enum description JmAttributeTypeTC definition (see JmAttributeTypeTC on page 60) has the tag: 'Integer:'. Depending on the enum definition, this object value may be an integer, a counter, an index, or an enum, depending on the jmAttributeTypeIndex value. The units of this value are specified in the enum description. For those attributes that are accumulating job consumption as the job is processed as specified in the JmAttributeTypeTC, shall contain the final value after the job completes processing, i.e., this value shall indicate the total usage of this resource made by the job. A monitoring application is able to copy this value to a suitable longer term storage for later processing as part of an accounting system. Since the agent may add attributes representing resources to this table while the job is waiting to be processed or being processed, which can be a long time before any of the resources are actually used, the agent shall set the value of the jmAttributeValueAsInteger object to 0 for resources that the job has not yet consumed. Attributes for which the concept of an integer value is meaningless, such as fileName, interpreter, and physicalDevice, do not have the 'Integer:' tag in the JmAttributeTypeTC definition and so shall return a value of (-1) to indicate other for jmAttributeValueAsInteger." ::= { jmAttributeEntry 3 } jmAttributeValueAsOctets OBJECT-TYPE SYNTAX OCTET STRING(SIZE(0..63)) MAX-ACCESS read-only STATUS current DESCRIPTION "The octet string value of the attribute. The value of the attribute shall be represented as an OCTET STRING if the enum description JmAttributeTypeTC definition (see JmAttributeTypeTC on page 60) has the tag: 'Octets:'. Depending on the enum definition, this object value may be a coded character set string (text) or a binary octet string, such as DateAndTime. Attributes for which the concept of an octet string value is meaningless, such as pagesCompleted, do not have the tag 'Octets:' in the JmAttributeTypeTC definition and so shall return a value of a zero length string for jmAttributeValueAsOctets." ::= { jmAttributeEntry 4 } -- Conformance Information jmMIBConformance OBJECT IDENTIFIER ::= { jobmonmib 2 } -- compliance statements jmMIBCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for agents that implement the job monitoring MIB." MODULE -- this module MANDATORY-GROUPS { jmGeneralGroup, jmCompletedGroup, jmJobGroup, jmAttributeGroup } OBJECT jmJobCurrentState SYNTAX INTEGER { processing(7), needsAttention(9), completed(17) } DESCRIPTION "It is conformant for an agent to implement just these three job states in this object, and the rest are are conditionally mandatory, i.e., an agent shall implement a job state if the device or server being instrumented has the job state with the semantics associated with the state. However, a monitoring application shall accept all of the job states from an agent." OBJECT jmAttributeTypeIndex SYNTAX INTEGER { sheetsCompleted(32) } DESCRIPTION "It is conformant for an agent to implement just the sheetsCompleted(32) attribute. All other attributes are conditionally mandatory, i.e., an agent shall implement an attribute if the device or server being instrumented has the feature with the semantics associated with the attribute. However, a monitoring application shall accept all of the attributes from an agent and either display them to its user or ignore them." -- the jmQueueGroup is conditionally mandatory. An agent shall -- implement the jmQueueGroup if the server or device that the agent -- instruments performs queuing. ::= { jmMIBConformance 1 } jmMIBGroups OBJECT IDENTIFIER ::= { jmMIBConformance 2 } jmGeneralGroup OBJECT-GROUP OBJECTS { jmGeneralJobSetName, jmGeneralJobCompletedPolicy, jmGeneralMaxNumberOfJobs, jmGeneralNumberOfJobsToComplete, jmGeneralNumberOfJobsCompleted } STATUS current DESCRIPTION "The general group." ::= { jmMIBGroups 1 } jmQueueGroup OBJECT-GROUP OBJECTS { jmQueueJobIndex, jmQueueNumberOfInterveningJobs, jmJobPriority, jmJobProcessAfterDateAndTime } STATUS current DESCRIPTION "The queue group - conditionally mandatory." ::= { jmMIBGroups 2 } jmCompletedGroup OBJECT-GROUP OBJECTS { jmCompletedJobIndex } STATUS current DESCRIPTION "The completed group." ::= { jmMIBGroups 3 } jmJobGroup OBJECT-GROUP OBJECTS { jmJobName, jmJobIdName, jmJobIdNumber, jmJobServiceTypes, jmJobOwner, jmJobDeviceNameOrQueueRequested, jmJobCurrentState, jmJobStateReasons } STATUS current DESCRIPTION "The job group." ::= { jmMIBGroups 4 } jmAttributeGroup OBJECT-GROUP OBJECTS { jmAttributeValueAsInteger, jmAttributeValueAsOctets } STATUS current DESCRIPTION "The attribute group." ::= { jmMIBGroups 5 } END