Version 3 (modified by 13 years ago) (diff) | ,
---|
Web services for remote job submission
This document describes remote interfaces for remotely submitting jobs and batches of jobs to a BOINC server. The APIs are accessed by sending a POST request, using HTTPS, to PROJECT_URL/job_control.php
The inputs and outputs of each API are XML documents. If an operation fails, the output is of the form
<error> <message>X</message> </error>
where X is an error message.
All operations include the authenticator of the user making the request. This user must be marked as a "job submitter" in the BOINC database.
Describing a batch
A single job is described by
<job> [<command_line>C</command_line>] [<input_file>URL or path</input_file>] ... other input files </job>
C and F are macro-substituted for sweep variables: see below.
Each input file is specified by either a URL accessible to the server, or by a path on the server.
A parameter sweep is described by
<sweep var=foo start=x end=y inc=z> [<job>...<job>] or [<sweep>...<sweep>] </sweep>
In the body of the sweep, the string "foo" is macro-substituted with values from x to y with increment z.
Sweeps may be nested.
A batch of jobs is described by:
<batch> <app>appname</app> [<input_template>x</input_template>] [<output_template>x</output_template>] [<job>...<job>] or [<sweep>...<sweep>] </batch>
The names of the input and output template files may be specified; otherwise the defaults appname_in and appname_out are used.
Batch runtime estimation
Estimates the completion time of a batch. Input:
<batch_estimate> <authenticator>X</authenticator> <batch> ... </batch> [<priority>N</priority>] </batch_estimate>
Priority, if specified, is relative to other batches submitted by this user.
Output:
<estimate> <seconds>X</seconds> </estimate>
Submitting a batch
Input:
<batch_submit> <authenticator>X</authenticator> <batch> ... </batch> [<priority>N</priority>] </batch_submit>
Output:
<batch_id>N</batch_id>
Querying jobs
The jobs in a batch are numbered starting from 0. The name of a job is batch_ID_N where ID is the batch ID and N is the number of the job.
Input:
<query_job> <authenticator>X</authenticator> <name>X</name> </query_job>
Output:
<job_status> <aborted/> or <instance> <unsent/> or <hostid>N</hostid> <userid>M</userid> <runtime>X</runtime> <fraction_done>X</fraction_done> </instance> ... other instances </job_status>
Querying batches
Input:
<query_batch> <authenticator>X</authenticator> <batch_id>N</batch_id> </query_batch>
Output:
<batch_status> <fraction_done>X</fraction_done> <jobs_completed>N</jobs_completed> <remaining_time>X</remaining_time> </batch_status>
Aborting jobs
Input:
<abort_batch> <authenticator>X</authenticator> <batch_id>N</batch_id> </abort_batch>
Output:
<aborted/>