This document describes the specification for the XML based job description language (JDL) that Auger uses.
The JDL is XML based. The top level tag will be a request tag. The submission will consist of a description of one or more jobs that are to be run on the farm. The valid subtags and tag attributes will be described below. The script can be augmented with the use of variables. Comments can be specified by using the XML comments by starting the comments with Tags.
There are two tags that are special for describing a job. These are <Request>, and <Job>. The Request tag is the top level tag and is required. Each Job tag corresponds to an individual Farm job. There must be at least one Job inside the Request element. The remainder of the tags specifies properties about the jobs. Note all tags are case sensitive.
Every submission script must consist of exactly one <Request> tag which is the top level tag. The Request tag must not contain any attributes. All of the properties that describe a submission are specified in subtags. Note that many properties can be specified at either the Request level or the Job level. Properties that are set at the Request level apply to every Job. This allows you to set global properties for each job, rather than having to re-specify them for each individual job.
Valid Tags
<Request>
<Command> ...... </Command>
<DiskSpacespace="xxx" unit="MB/GB" />
<Memoryspace="xxx" unit="MB/GB" />
<CPU core="4" />
<OSname="xxx" />
<NodeTag name="xxx" />email="xxx@jlab.org" request="false/true" job="true/false" />
<Inputsrc="xxx" dest="xxx" />
<Outputsrc="xxx" dest="xxx" />
<Job> ....... </Job>
<ForEachlist="xxx"> ...... </ForEach>
<Listname="xxx"> ......</List>
<Namename="xxx" />
<Projectname="xxx" />
<Trackname="xxx" />
<Stderrdest="xxx" />
;
<Stdoutdest="xxx" />
<TimeLimittime="xxx" unit="minutes/hours" />
<Variablename="xxx" value="xxx" />
Examples
<Request>
<!-- Job descriptions go here -->
</Request>Check Description of XML Tags page for more information on the tags.
Check Auger Examples page for detailed examples.
A job tag corresponds to an individual job for the Farm. This tag takes no attributes, but rather gets all of its values from properties specified with in tags at the Request level, or tag inside this Job tag. There may be any number of these within a request, each one will result in a job on the farm.
Valid Tags
<Command>
<DiskSpace>
<Input>
<Name>
<Output>
<Track>
<Stderr>
<Stdout>
<TimeLimit>
<Variable>Examples
<Request>
<!-- Properties Specified Here -->
<Job>
<!-- Properties overridden here -->
</Job>
</Request>
The <ForEach> tag is used to create multiple jobs. It acts as a looping mechanism. It has one required attribute, list. The value of this attribute must be the name of a list that was defined using a <List> tag. The ForEach tag is equivalent to having the body of the ForEach repeated once for every element that is in the list, and the element of the list will be stored in a variable with the name of the list.
There must be a <Job> tag inside of the ForEach tag (otherwise the ForEach doesnt do anything). ForEach tags can be nested, if desired. In this case, you only have to have a <Job> tag inside the innermost ForEach tag.
<Command>
<DiskSpace>
<ForEach>
<Input><Job>
<Name>
<Output>
<Stderr>
<Stdout>
<TimeLimit>
<Variable>Examples
<Request>
<!-- Properties Specified Here -->
<List name="words">hello world abc 123 more words</List>
<ForEach list="words">
<Job>
<!-- Properties overridden here -->
<Command>echo ${words}</Command>
</Job>
</ForEach>
</Request>
There are certain properties that must be set for a job to be valid. These properties can either be set at the Job level, or at the Request level.
<Command>
<Name>
<Project>
<Track>