Hi Carl and Carl-Uno,
This discussion is off base. By mutual agreement on this
list, we PURPOSELY restricted the particular operation
Redirect-Job to same server (that is, the same top level
scheduler for IPP and other print jobs on the same hardware).
A separate REAL Move-Job operation (as powerful as the ISO DPA
operation, which has zero known implementations in shipping
DPA-based products) is a fine thing to describe. But making
one operation fit all sizes is bad design in the practical
world of policy-based system admin - more specific operations
is always more desirable, because authorization doesn't have
to go inside the IPP 'application/ipp' package for the operation
attributes, just checks whether 'this' user may perform 'that'
- Ira McDonald
PS - Michael Sweet specifically wants this limited 'Redirect-Job'
operation for the CUPS system to load balance and otherwise
recover within a single server (with perhaps multiple subordinate
actual IPP Printers in network connected devices). And he also
wants the present ambiguity, where the 'job-id' of the resulting
'redirected job' may or may not be different from the 'job-id'
when it was first instantiated on a different IPP Printer object.
That kind of behavior would NOT be acceptable in true 'Move-Job'
(all accounting systems would break).
From: kugler at us.ibm.com [mailto:kugler at us.ibm.com]
Sent: Monday, July 10, 2000 4:21 PM
To: Manros, Carl-Uno B
Cc: ipp at pwg.org
Subject: RE: IPP> OPS - Redirect-Job (a ka Move-Job) included in Job and
Printer A dmin (Set2) spec
>>Your first solution now requires a whole IPP client implementation in your
>printer, a considerable extra burden, and what do you do if the job is
>accepted by the New Printer, but with some unsupported attributes? How
>do you report back to the original client?
>I claim that if you have an IPP server implementation, you've got most of
what you need to make an IPP client. Accepting IPP requests and generating
IPP responses really isn't much different from generating IPP requests and
accepting IPP responses. The only difference between a request and a
response is the interpretation of the op-code/status field. In general,
the client can be much simpler than the Printer (no REQUIRED operations or
attributes to support, just a few attributes that MUST be supplied).
If the job is accepted by the New Printer, but with some unsupported
attributes, the New Printer's Print-Job response to the Old Printer will
have a status-code of 0x0001 and a list of unsupported attributes. This
reponse gets forwarded to the client as the response to the Move-Job
>The second suggested solution seems to require that you return all your
>print data to the client, not such a good idea if you have several
True, this solution would have problems with multi-document Jobs. Maybe we
need a Get-Document op, too, and some way to indicate to the client that
the requested Job is a multi-doc Job.
>or is doing print-by-reference (and the data has already been fetched by
>I would think that if the data has already been fetched, then the request
could be converted from Print-URI to Print-Job.
>Hence, both of your suggested solutions have issues (or limitations if you
>The multi-document problem seems to be the most troublesome. I think
solution 1) could handle it with a multi-part response to the Move-Job
operation, containing the Create-Job and Send-Document responses.
>Not sure I have any better solution to offer though...:-(
>From: kugler at us.ibm.com [mailto:kugler at us.ibm.com]
>Sent: Monday, July 10, 2000 2:14 PM
>To: ipp at pwg.org>Subject: Re: IPP> OPS - Redirect-Job (a ka Move-Job) included in Job and
>Printer A dmin (Set2) spec
>>>>>"Hastings, Tom N" <hastings at c...> wrote:
>> I added Move-Job (renamed to Redirect-Job since no job movement is
>> to the Job and Printer Administrative Operations spec that I just
>> This operation is limited to redirecting a job to another Printer on the
>> same server.
>>This limitation seems a bit restrictive, particularly since the IPP Model
>doesn't even define a server object.
>>I thought of a couple of ways to do a more general, true Move-Job
>(maybe these have already been discussed and I've missed it). Given a
>Client, an Old Printer, and a New Printer, the object is to get the job
>from the Old Printer to the New Printer.
>>1) A Move-Job request sent from the Client to the Old Printer causes the
>Old Printer to become an IPP client to the New Printer. The Old Printer
>sends a Print-Job request to the New Printer. When the Old Printer
>receives the Print-Job response from the New Printer, it returns this to
>the Client as the Move-Job response. (If the job was accepted, this
>response includes the new job-printer-uri, job-id, and job-uri, so the
>Client can now track the job on the New Printer.)
>>2) Instead of a new Move-Job operation, define two new operations: one
>which "inhales" the Job from the Old Printer into the Client, and another
>which "exhales" it from the Client to the New Printer. What should these
>new operations be called? Hmm, ..., ... ! IPPness indeed! On second
>thought, maybe the exhale operation is redundant: the client could just do
>a Print-Job. So, all we need is a new Get-Job operation that allows the
>Client to pull the complete Job back from the Old Printer so that it can
>sent to the new Printer with a Print-Job request.
>>Okay, what are the fatal holes in these proposals?