1. I suggest that code download (or upload) be treating as
Create-Resource (with code by reference for resource data)
and Get-Resource (for metadata) and Get-Resource-Data
(for code upload) for the Resource type 'Code' (either
binary executable or a script in some interpreter).
2. An extensibility mechanism - new types of Resources,
with some metadata and (usually) some content data and
standard Resource operations.
Note: ISO DPA sys admin defined the generic 'Control'
operation - my experience with DPA Control has not
been very encouraging (it's sort of roll-your-own RPC
and just as fragile as you would expect).
- Ira McDonald
High North Inc
From: Harry Lewis [mailto:harryl at us.ibm.com]
Sent: Wednesday, July 30, 2003 6:41 PM
To: McDonald, Ira
Cc: 'wbmm at pwg.org'
Subject: Re: WBMM> More about WBMM operations
Our early proposed WSDL had an "Execute" operation and I know this was
rejected as too generic. I'm pleased where the set of operations has
evolved to and fully support the alignment with IPP Admin. Great idea!
However, we still feel we need
1. A code download mechanism
2. An extensibility mechanism
Right now, we feel "Execute" would be a good choice to satisfy both. Open
Chairman - IEEE-ISTO Printer Working Group
IBM Printing Systems
"McDonald, Ira" <imcdonald at sharplabs.com>
Sent by: owner-wbmm at pwg.org
07/30/2003 12:02 PM To"'wbmm at pwg.org'" <wbmm at pwg.org>
SubjectWBMM> More about WBMM operations
Hi Bill, Wednesday (30 July 2003)
Comments on operations set in the minutes from last week's WBMM meeting.
- Ira McDonald
High North Inc
7. Other simplifications were apparent so that the current operations
Disable - Prevents the addressed entity to from accepting jobs from any
job submission protocol.
Enable - Allows the addressed entity to accept jobs from any job
Pause - Causes the entity to stop processing its primary product (e.g.,
a printing device from marking media, a scanning device from scanning
input copy). There may be a need for an argument to address the "now",
"after current copy" and "after current job" variations.
Resume - undoes the last Pause.
Deactivate - entity accepts no more incoming jobs (the original
definition deactivate is unclear - further the distinction between
Disable and Deactivate is vague.)
Deactivate is a compound operation to avoid a tricky race condition. It
combines Disable and Pause in one atomic operation. It's defined in IPP
Admin (draft-ietf-ipp-ops-set2-03.txt, July 2001) as follows:
3.4.1 Deactivate-Printer operation
This OPTIONAL operation allows a client to stop the Printer object
from starting to send IPP jobs to any of its Output Devices or
Subordinate Printers (Pause-Printer-After-Current-Job) and stop the
Printer object from accepting any, but query requests. The Printer
performs a Disable-Printer and a Pause-Printer-After-Current-Job
operation immediately, including use of all of the "printer-state-
reasons" if these two operations cannot be completed immediately. In
addition, the Printer MUST immediately reject all requests, except
Activate-Printer, queries (Get-Printer-Attributes, Get-Job-
Attributes, Get-Jobs, etc.), Send-Document, and Send-URI (so that
partial job submission can be completed - see section 3.1.1) and
return the 'server-error-service-unavailable' status code.
Activate - undoes the last Deactivate
Purge - Removes all traces of jobs in the entity
Reset - Sets the state of the entity to the normalized condition
characterizing the state when the entity first comes up.
IPP Admin defines the Restart and Startup operations:
3.5.1 Restart-Printer operation
This OPTIONAL operation allows a client to restart a Printer object
whose operation is in need of initialization because of incorrect or
erratic behavior, i.e., perform the effect of a software re-boot.
The implementation MUST attempt to save any information about Jobs
and the Printer object before re-initializing. However, this
operation MAY have drastic consequences on the running system, so the
client SHOULD first try the Deactivate-Printer operation to minimize
the effect on the current state of the system. The effects of
previous Disable-Printer, Pause Printer, and Deactivate-Printer
operations are lost.
3.5.3 Startup-Printer operation
This OPTIONAL operation allows a client to startup an instance of a
Printer object, provided that there isn't one already instantiated.
The purpose of Startup-Printer is to allow a hosted implementation of
the IPP Printer object (i.e., a Server that implements an IPP Printer
on behalf of a networked or local Output Device) to be started after
the host is available (by means outside this document). See Restart-
Printer (section 3.5.1) for the way to initialize the software or
reset the Output Device(s) when the IPP Printer object has already
The host MUST accept this operation only when the Printer object has
not been instantiated. If the Printer object already exists, the
host must return the 'client-error-not-possible' status code.
The result of this operation MUST be with the Printer object's
"printer-state" set to 'idle', the state reasons removed from its
"printer-state-reasons" attribute, and its "printer-is-accepting-
jobs" attribute set to 'false'. Then the operator can reconfigure
the Printer before performing an Enable-Printer operation. However,
when a Printer is first powered up, it is RECOMMENDED that its
"printer-is-accepting-jobs" attribute be set to 'true' in order to
achieve easy "out of the box" operation.
PowerOff - Causes entity to go into a power off or (or reduced power,
IPP Admin and DPA (ISO 10175) define the Shutdown operation.
3.5.2 Shutdown-Printer Operation
This OPTIONAL operation allows a client to shutdown a Printer, i.e.,
stop processing jobs without losing any jobs and make the Printer
object no longer available for any operations using the IPP protocol.
There is no way to bring the instance of the Printer object back to
being used, except for the Startup-Printer (see section 3.5.3) which
starts up a new instance of the Printer object for hosted
implementations. The purpose of Shutdown-Printer is to shutdown the
Printer for an extended period, not to reset the device(s) or modify
a Printer attribute. See Restart-Printer (section 3.5.1) and
Startup-Printer (section 3.5.3) for the way to initialize the
software. See the Disable-Printer operation (section 3.1) for a way
for the client to stop the Printer from accepting Job Creation
requests without stopping processing or shutting down.
GetAttributes - Solicits the values of the identified elements and all
included sub elements
SetAttributes - Sets the values of the identified elements and all
included sub elements
GetResource - Solicits the values of the identified structures or files.
(e.g., representing fonts, forms, executable code, schedules(?). May be
indirect in that structure is delivered to defined address.
SetResource - Causes identified structures or files (e.g., representing
fonts, forms, executable code, schedules(?) to be loaded into entity.
May be indirect in that structure is obtained from defined address.
The IPP Resource Object proposal (draft-ietf-ipp-get-resource-01.txt,
September 2000) defines the following REQUIRED operations:
* Get-Resource-Data (corresponds to your current Get-Resource, I think)
* Get-Resources (get a list of Resource objects of a specified type)
The IPP Resource Object proposal also defines the following OPTIONAL
* Create-Resource (sets both attributes and data)
* Refresh-Resource (refreshes local cache of referenced data)
* Renew-Resource (renews finite lease of Resource object)
By design, we did NOT define a Set-Resource-Attributes operation (much
harder to verify, due to attribute value constraints, than the simple
Register - Set up for notification
Unregister- Discard setup for notification.