Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "PTP/designs/resource manager xsd"

< PTP‎ | designs
Line 12: Line 12:
  
 
'''''Revised version 4 (24/01/2011):'''''  Numerous tweaks. I have added a few specialized widgets and groups involving job attributes whose construction is standardized; this is for economy of expression more than anything else.  -alr
 
'''''Revised version 4 (24/01/2011):'''''  Numerous tweaks. I have added a few specialized widgets and groups involving job attributes whose construction is standardized; this is for economy of expression more than anything else.  -alr
 +
 +
'''''Revised version 5 (25/01/2011):'''''  Changed how to specify the management of files as per discussion.  -alr
  
 
<source lang="xml">
 
<source lang="xml">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
elementFormDefault="qualified">
+
 
<xs:element name="resource-manager">
 
<xs:element name="resource-manager">
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
It is assumed that the xml instance of the schema
+
It is assumed that the xml instance of the schema will bear a name which sufficiently distinguishes it from others
will bear a name which sufficiently distinguishes it from others of
+
of a similar type; e.g., pbs-torque-v_2.3.7_abe is specific to an installation on the host abe, ll-v_4.0 suits all installations of
a similar type; e.g., pbs-torque-v_2.3.7_abe is specific to an
+
installation on the host abe, ll-v_4.0 suits all installations of
+
 
LoadLeveler version 4, etc.
 
LoadLeveler version 4, etc.
 
</xs:documentation>
 
</xs:documentation>
Line 29: Line 28:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element ref="control" />
+
<xs:element ref="control"/>
<xs:element ref="monitor" />
+
<xs:element ref="monitor"/>
 
</xs:sequence>
 
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
+
<xs:attribute name="name" type="xs:string"/>
 
</xs:complexType>
 
</xs:complexType>
 
</xs:element>
 
</xs:element>
Line 38: Line 37:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
The implementation will construct a map serving as
+
The implementation will construct a map serving as the resource manager "environment"; these are dereferenced in
the resource manager "environment"; these are dereferenced in the
+
the configuration file via ${name} or ${name[part]}; in addition to the properties specified at the top level of the control tree,
configuration file via ${name} or ${name[part]}; in addition to the
+
all attributes and parsers will be mapped for reference. A number of runtime variables such as remote host name, user name, etc.,
properties specified at the top level of the control tree, all
+
will also be included. The top level of the tree represents the available commands/methods on all resource managers, places for
attributes and parsers will be mapped for reference. A number of
+
defining stdout or stderr parsers, for defining the structure of a batch script to be used, for defining (job) attributes, and
runtime variables such as remote host name, user name, etc., will
+
finally for describing how to construct the UI (Launch Configuration Tab).
also be included. The top level of the tree represents the available
+
commands/methods on all resource managers, places for defining
+
stdout
+
or stderr parsers, for defining the structure of a batch
+
script to be
+
used, for defining (job) attributes, and finally for
+
describing how
+
to construct the UI (Launch Configuration Tab).
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="property" />
+
<xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
<xs:element minOccurs="0" ref="on-start-up" />
+
<xs:element minOccurs="0" ref="managed-files"/>
<xs:element minOccurs="0" ref="discover-attributes" />
+
<xs:element minOccurs="0" ref="on-start-up"/>
 +
<xs:element minOccurs="0" ref="discover-attributes"/>
 
<xs:element name="run-commands">
 
<xs:element name="run-commands">
 
<xs:complexType>
 
<xs:complexType>
 
<xs:choice minOccurs="1" maxOccurs="3">
 
<xs:choice minOccurs="1" maxOccurs="3">
<xs:element ref="run-interactive" />
+
<xs:element ref="run-interactive"/>
<xs:element ref="run-batch" />
+
<xs:element ref="run-batch"/>
<xs:element ref="run-debug" />
+
<xs:element ref="run-debug"/>
 
</xs:choice>
 
</xs:choice>
 
</xs:complexType>
 
</xs:complexType>
 
</xs:element>
 
</xs:element>
<xs:element ref="cancel-job" />
+
<xs:element ref="cancel-job"/>
<xs:element minOccurs="0" ref="suspend-job" />
+
<xs:element minOccurs="0" ref="suspend-job"/>
<xs:element minOccurs="0" ref="resume-job" />
+
<xs:element minOccurs="0" ref="resume-job"/>
<xs:element minOccurs="0" ref="on-shut-down" />
+
<xs:element minOccurs="0" ref="on-shut-down"/>
<xs:element minOccurs="0" ref="commands" />
+
<xs:element minOccurs="0" ref="commands"/>
<xs:element minOccurs="0" ref="parsers" />
+
<xs:element minOccurs="0" ref="parsers"/>
<xs:element minOccurs="0" ref="script" />
+
<xs:element minOccurs="0" ref="script"/>
<xs:element ref="attribute-definitions" />
+
<xs:element ref="attribute-definitions"/>
<xs:element ref="launch-tab" />
+
<xs:element ref="launch-tab"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 83: Line 75:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
The value is any object type; these are set at
+
The value is any object type; these are set at runtime.
runtime.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
 
<xs:complexType>
 
<xs:complexType>
<xs:attribute name="name" type="xs:string" />
+
<xs:attribute name="name" type="xs:string"/>
 +
</xs:complexType>
 +
</xs:element>
 +
<xs:element name="managed-files">
 +
<xs:annotation>
 +
<xs:documentation>
 +
List of files to be staged.
 +
</xs:documentation>
 +
</xs:annotation>
 +
<xs:complexType>
 +
<xs:sequence>
 +
  <xs:element name="file-source-location" minOccurs="0" type="xs:string"/>
 +
<xs:element name="file-staging-location" minOccurs="0" type="xs:string"/>
 +
<xs:element maxOccurs="unbounded" ref="managed-file"/>
 +
</xs:sequence>
 +
</xs:complexType>
 +
</xs:element>
 +
<xs:element name="managed-file">
 +
<xs:annotation>
 +
<xs:documentation>
 +
If 'contents' is present, the file is written.
 +
</xs:documentation>
 +
</xs:annotation>
 +
<xs:complexType>
 +
<xs:sequence>
 +
<xs:element name="contents" minOccurs="0" type="xs:string"/>
 +
</xs:sequence>
 +
<xs:attribute name="name" type="xs:string"/>
 +
<xs:attribute name="uniqueIdSuffix" type="xs:boolean"/>
 +
<xs:attribute name="deleteAfterUse" type="xs:boolean"/>
 
</xs:complexType>
 
</xs:complexType>
 
</xs:element>
 
</xs:element>
Line 99: Line 119:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref" />
+
<xs:element maxOccurs="unbounded" ref="command-ref"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 106: Line 126:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
A command for retrieving (if possible) attributes
+
A command for retrieving (if possible) attributes defined by the service dynamically.
defined by the service dynamically.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref" />
+
<xs:element maxOccurs="unbounded" ref="command-ref"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 124: Line 143:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref" />
+
<xs:element maxOccurs="unbounded" ref="command-ref"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 131: Line 150:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
The command(s) for running jobs through the
+
The command(s) for running jobs through the scheduler.
scheduler.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref" />
+
<xs:element maxOccurs="unbounded" ref="command-ref"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 149: Line 167:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref" />
+
<xs:element maxOccurs="unbounded" ref="command-ref"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 161: Line 179:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref" />
+
<xs:element maxOccurs="unbounded" ref="command-ref"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 173: Line 191:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref" />
+
<xs:element maxOccurs="unbounded" ref="command-ref"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 185: Line 203:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref" />
+
<xs:element maxOccurs="unbounded" ref="command-ref"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 197: Line 215:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command-ref" />
+
<xs:element maxOccurs="unbounded" ref="command-ref"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 204: Line 222:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="command" />
+
<xs:element maxOccurs="unbounded" ref="command"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 211: Line 229:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="stream-parser" />
+
<xs:element maxOccurs="unbounded" ref="stream-parser"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 218: Line 236:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element minOccurs="0" ref="directive-definitions" />
+
<xs:element minOccurs="0" ref="directive-definitions"/>
<xs:element minOccurs="0" ref="environment-definitions" />
+
<xs:element minOccurs="0" ref="environment-definitions"/>
<xs:element minOccurs="0" ref="pre-execute-commands" />
+
<xs:element minOccurs="0" ref="pre-execute-commands"/>
<xs:element ref="execute-command" />
+
<xs:element ref="execute-command"/>
<xs:element minOccurs="0" ref="post-execute-commands" />
+
<xs:element minOccurs="0" ref="post-execute-commands"/>
 
</xs:sequence>
 
</xs:sequence>
<xs:attribute name="prefix" use="required" />
+
<xs:attribute name="shell" use="required"/>
<xs:attribute name="shell" use="required" />
+
 
</xs:complexType>
 
</xs:complexType>
 
</xs:element>
 
</xs:element>
Line 231: Line 248:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="directive-definition" />
+
<xs:element maxOccurs="unbounded" ref="directive-definition"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 238: Line 255:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
'ValueFrom' refers to properties in the resource
+
'ValueFrom' refers to properties in the resource manager environment.
manager environment.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
 
<xs:complexType mixed="true">
 
<xs:complexType mixed="true">
<xs:attribute name="valueFrom" />
+
<xs:attribute name="valueFrom"/>
 
</xs:complexType>
 
</xs:complexType>
 
</xs:element>
 
</xs:element>
Line 249: Line 265:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="environment-definition" />
+
<xs:element maxOccurs="unbounded" ref="environment-definition"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 256: Line 272:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
'ValueFrom' refers to properties in the resource
+
'ValueFrom' refers to properties in the resource manager environment.
manager environment.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
 
<xs:complexType mixed="true">
 
<xs:complexType mixed="true">
<xs:attribute name="valueFrom" />
+
<xs:attribute name="valueFrom"/>
 
</xs:complexType>
 
</xs:complexType>
 
</xs:element>
 
</xs:element>
Line 267: Line 282:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element name="command" maxOccurs="unbounded" type="xs:string" />
+
<xs:element name="command" maxOccurs="unbounded" type="xs:string"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 274: Line 289:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element ref="command" />
+
<xs:element ref="command"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 281: Line 296:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element name="command" type="xs:string" />
+
<xs:element name="command" type="xs:string"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 288: Line 303:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element name="command" maxOccurs="unbounded" type="xs:string" />
+
<xs:element name="command" maxOccurs="unbounded" type="xs:string"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 295: Line 310:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element name="description" type="xs:string" />
+
<xs:element name="description" type="xs:string"/>
<xs:element name="tooltip" minOccurs="0" type="xs:string" />
+
<xs:element name="tooltip" minOccurs="0" type="xs:string"/>
 
<xs:element name="choice" minOccurs="0" type="xs:string">
 
<xs:element name="choice" minOccurs="0" type="xs:string">
 
<xs:annotation>
 
<xs:annotation>
Line 304: Line 319:
 
</xs:annotation>
 
</xs:annotation>
 
</xs:element>
 
</xs:element>
<xs:element name="default" minOccurs="0" type="xs:string" />
+
<xs:element name="default" minOccurs="0" type="xs:string"/>
<xs:element minOccurs="0" ref="validator" />
+
<xs:element minOccurs="0" ref="validator"/>
 
</xs:sequence>
 
</xs:sequence>
<xs:attribute name="id" use="required" type="xs:string" />
+
<xs:attribute name="id" use="required" type="xs:string"/>
<xs:attribute name="name" use="required" type="xs:string" />
+
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="type" use="required" type="xs:string" />
+
<xs:attribute name="type" use="required" type="xs:string"/>
 
<xs:attribute name="basic" type="xs:boolean">
 
<xs:attribute name="basic" type="xs:boolean">
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
Indicates if this attribute is part of a basic
+
Indicates if this attribute is part of a basic (required) set, or if it is an (advanced) option.
(required) set, or if it is an (advanced) option.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
 
</xs:attribute>
 
</xs:attribute>
<xs:attribute name="min" type="xs:int" />
+
<xs:attribute name="min" type="xs:int"/>
<xs:attribute name="max" type="xs:int" />
+
<xs:attribute name="max" type="xs:int"/>
 
</xs:complexType>
 
</xs:complexType>
 
</xs:element>
 
</xs:element>
<xs:element name="command-ref" type="xs:string" />
+
<xs:element name="command-ref" type="xs:string"/>
<xs:element name="parser-ref" type="xs:string" />
+
<xs:element name="parser-ref" type="xs:string"/>
 
<xs:element name="command">
 
<xs:element name="command">
 
<xs:complexType mixed="true">
 
<xs:complexType mixed="true">
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="arglist" />
+
<xs:element maxOccurs="unbounded" ref="arglist"/>
<xs:element minOccurs="0" maxOccurs="2" ref="parser-ref" />
+
<xs:element minOccurs="0" maxOccurs="2" ref="parser-ref"/>
 
</xs:sequence>
 
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
+
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="displayStdout" type="xs:boolean" />
+
<xs:attribute name="displayStdout" type="xs:boolean"/>
<xs:attribute name="displayStderr" type="xs:boolean" />
+
<xs:attribute name="displayStderr" type="xs:boolean"/>
 
</xs:complexType>
 
</xs:complexType>
 
</xs:element>
 
</xs:element>
Line 338: Line 352:
 
<xs:complexType mixed="true">
 
<xs:complexType mixed="true">
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="arg" />
+
<xs:element maxOccurs="unbounded" ref="arg"/>
 
</xs:sequence>
 
</xs:sequence>
 
<xs:attribute name="dynamicAppend" type="xs:boolean">
 
<xs:attribute name="dynamicAppend" type="xs:boolean">
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
Iterate over all dynamic attributes, appending
+
Iterate over all dynamic attributes, appending the sequence of args for each attribute.
the sequence of args for
+
each attribute.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
Line 354: Line 366:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
The text of the argument will be parsed for
+
The text of the argument will be parsed for references to the resource manager environment; e.g., ${a}, v=${v},
references to the resource manager environment; e.g., ${a}, v=${v},
+
etc. By convention, ${@name} and ${@value} will refer to a given dynamic attribute name and value (of undefined position i in the
etc. By convention, ${@name} and ${@value} will refer to a given
+
dynamic attribute name and value (of undefined position i in the
+
 
list).
 
list).
 
</xs:documentation>
 
</xs:documentation>
Line 365: Line 375:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
These are attached to the stdout or stderr streams
+
These are attached to the stdout or stderr streams in order to capture the output of the command and add values
in order to capture the output of the command and add values into
+
into the resource manager environment. It is understood that a parser tokenization is a list of matching tokens.
the resource manager environment. It is understood that a parser
+
tokenization is a list of matching tokens.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
Line 376: Line 384:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
Which lines of output should be examined.
+
Which lines of output should be examined. Indicated by single numerical value, comma-delimited list, or
Indicated by single numerical value, comma-delimited list, or
+
colon-delimited range; by convention, N = total number of lines returned. The parser will detach itself from the stream once the
colon-delimited range; by convention, N = total number of lines
+
returned. The parser will detach itself from the stream once the
+
 
last line indicated here is seen.
 
last line indicated here is seen.
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
 
</xs:element>
 
</xs:element>
<xs:element maxOccurs="unbounded" ref="token" />
+
<xs:element maxOccurs="unbounded" ref="token"/>
<xs:element maxOccurs="unbounded" ref="put" />
+
<xs:element maxOccurs="unbounded" ref="put"/>
 
</xs:sequence>
 
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string" />
+
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="stderr" type="xs:boolean" />
+
<xs:attribute name="stderr" type="xs:boolean"/>
 
</xs:complexType>
 
</xs:complexType>
 
</xs:element>
 
</xs:element>
Line 394: Line 400:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
Value assigned to the name is the token with the
+
Value assigned to the name is the token with the given index in the returned list; a put without index assigns the
given index in the returned list; a put without index assigns the
+
 
entire list to the name.
 
entire list to the name.
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
 
<xs:complexType>
 
<xs:complexType>
<xs:attribute name="name" use="required" type="xs:string" />
+
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="index" type="xs:integer" />
+
<xs:attribute name="index" type="xs:integer"/>
 
</xs:complexType>
 
</xs:complexType>
 
</xs:element>
 
</xs:element>
Line 407: Line 412:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element minOccurs="0" ref="token" />
+
<xs:element minOccurs="0" ref="token"/>
 
</xs:sequence>
 
</xs:sequence>
<xs:attribute name="delim" use="required" />
+
<xs:attribute name="delim" use="required"/>
 
<xs:attribute name="return" use="required" type="xs:string">
 
<xs:attribute name="return" use="required" type="xs:string">
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
Indicates which segments generated by the
+
Indicates which segments generated by the tokenization should be returned; can be a single numerical value,
tokenization should be returned; can be a single numerical value,
+
comma-delimited list, or colon-delimited range; by convention, N = total number of segments created.
comma-delimited list, or colon-delimited range; by convention, N =
+
total number of segments created.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
Line 425: Line 428:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
A regular expression or an acl used to validate an
+
A regular expression or an acl used to validate an attribute value.
attribute value.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
Line 432: Line 434:
 
<xs:sequence>
 
<xs:sequence>
 
<xs:choice>
 
<xs:choice>
<xs:element name="regex" type="xs:string" />
+
<xs:element name="regex" type="xs:string"/>
<xs:element name="acl" type="xs:string" />
+
<xs:element name="acl" type="xs:string"/>
 
</xs:choice>
 
</xs:choice>
<xs:element name="error-message" minOccurs="0" type="xs:string" />
+
<xs:element name="error-message" minOccurs="0" type="xs:string"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 442: Line 444:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
This is a recursive description of the main UI
+
This is a recursive description of the main UI element associated with the control part, the Launch Tab. NOTE: I
element associated with the control part, the Launch Tab. NOTE: I do
+
do not as yet know how many of the underlying widget options need to be exposed here for effective building in the createControl
not as yet know how many of the underlying widget options need to be
+
method. What follows is minimal.
exposed here for effective building in the createControl method.
+
What follows is minimal.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="tab-controller" />
+
<xs:element maxOccurs="unbounded" ref="tab-controller"/>
 
</xs:sequence>
 
</xs:sequence>
 
<xs:attribute name="advancedModeEnabled" type="xs:boolean">
 
<xs:attribute name="advancedModeEnabled" type="xs:boolean">
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
If this is set to true, a tab-controller which
+
If this is set to true, a tab-controller which allows the user to browse the local file system and/or workspace
allows the user to browse the local file system and/or workspace
+
to open and edit a custom batch script will be created; this will include copy and renaming buttons.
to open and edit a custom batch script will be created; this will
+
include copy and renaming buttons.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
Line 468: Line 466:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
as in:
+
as in: org.eclipse.ptp.rm.ui.launch.ExtendableRMLaunchConfigurationDynamicTab; a top-level "switch" between views.
org.eclipse.ptp.rm.ui.launch.ExtendableRMLaunchConfigurationDynamicTab;
+
a top-level "switch" between views.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element name="title" type="xs:string" />
+
<xs:element name="title" type="xs:string"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="group" />
+
<xs:element minOccurs="0" maxOccurs="unbounded" ref="group"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="tab-folder" />
+
<xs:element minOccurs="0" maxOccurs="unbounded" ref="tab-folder"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 484: Line 480:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element name="title" type="xs:string" />
+
<xs:element name="title" type="xs:string"/>
<xs:element maxOccurs="unbounded" ref="tab-item" />
+
<xs:element maxOccurs="unbounded" ref="tab-item"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 492: Line 488:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element name="title" type="xs:string" />
+
<xs:element name="title" type="xs:string"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="group" />
+
<xs:element minOccurs="0" maxOccurs="unbounded" ref="group"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="tab-folder" />
+
<xs:element minOccurs="0" maxOccurs="unbounded" ref="tab-folder"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 501: Line 497:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
We may want a few tweaks here, such as borders,
+
We may want a few tweaks here, such as borders, etc. Dynamic attribute means this group gets rebuilt if there is a
etc. Dynamic attribute means this group gets rebuilt if there is a
+
 
button allowing the user to select displayed attributes.
 
button allowing the user to select displayed attributes.
 
</xs:documentation>
 
</xs:documentation>
Line 508: Line 503:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element name="title" type="xs:string" />
+
<xs:element name="title" type="xs:string"/>
 
<xs:choice>
 
<xs:choice>
 
<xs:choice maxOccurs="unbounded">
 
<xs:choice maxOccurs="unbounded">
<xs:element ref="group" />
+
<xs:element ref="group"/>
<xs:element ref="tab-folder" />
+
<xs:element ref="tab-folder"/>
<xs:element ref="widget" />
+
<xs:element ref="widget"/>
 
</xs:choice>
 
</xs:choice>
<xs:element ref="discovered-attributes" />
+
<xs:element ref="discovered-attributes"/>
<xs:element ref="all-attributes" />
+
<xs:element ref="all-attributes"/>
 
</xs:choice>
 
</xs:choice>
 
</xs:sequence>
 
</xs:sequence>
<xs:attribute name="border" type="xs:string" />
+
<xs:attribute name="border" type="xs:string"/>
<xs:attribute name="columns" type="xs:integer" />
+
<xs:attribute name="columns" type="xs:integer"/>
<xs:attribute name="dynamic" type="xs:boolean" />
+
<xs:attribute name="dynamic" type="xs:boolean"/>
<xs:attribute name="scrollable" type="xs:boolean" />
+
<xs:attribute name="scrollable" type="xs:boolean"/>
 
</xs:complexType>
 
</xs:complexType>
 
</xs:element>
 
</xs:element>
 
<xs:element name="all-attributes">
 
<xs:element name="all-attributes">
      <xs:annotation>
+
<xs:annotation>
        <xs:documentation>
+
<xs:documentation>
            Indicates that all the attributes defined at initialization and
+
Indicates that all the attributes defined at initialization and runtime be placed in this group.
            runtime be placed in this group.
+
</xs:documentation>
        </xs:documentation>
+
</xs:annotation>
      </xs:annotation>
+
<xs:complexType>
      <xs:complexType>
+
<xs:sequence>
        <xs:sequence>
+
<xs:element name="single-table" minOccurs="0">
            <xs:element name="single-table" minOccurs="0">
+
<xs:annotation>
              <xs:annotation>
+
<xs:documentation>
                  <xs:documentation>
+
The presence of this element indicates all attributes should be placed in a single table; otherwise, attributes
                    The presence of this element indicates all
+
are mapped serially to widgets by type.
                    attributes should be placed in a single table; otherwise,
+
</xs:documentation>
                    attributes are mapped serially to widgets by type.
+
</xs:annotation>
                  </xs:documentation>
+
<xs:complexType>
              </xs:annotation>
+
<xs:attribute name="checkbox" type="xs:boolean"/>
              <xs:complexType>
+
<xs:attribute name="editable" type="xs:boolean"/>
                  <xs:attribute name="checkbox" type="xs:boolean" />
+
</xs:complexType>
                  <xs:attribute name="editable" type="xs:boolean" />
+
</xs:element>
              </xs:complexType>
+
<xs:element name="include">
            </xs:element>
+
<xs:complexType>
            <xs:element name="include">
+
<xs:attribute name="headers" type="xs:boolean"/>
                <xs:complexType>
+
<xs:attribute name="sort" type="xs:boolean"/>
                  <xs:attribute name="headers" type="xs:boolean" />
+
<xs:attribute name="name" type="xs:boolean"/>
                  <xs:attribute name="sort" type="xs:boolean" />
+
<xs:attribute name="tooltip" type="xs:boolean"/>
                  <xs:attribute name="name" type="xs:boolean" />
+
<xs:attribute name="description" type="xs:boolean"/>
                  <xs:attribute name="tooltip" type="xs:boolean" />
+
</xs:complexType>
                  <xs:attribute name="description" type="xs:boolean" />
+
</xs:element>
                </xs:complexType>
+
</xs:sequence>
            </xs:element>
+
</xs:complexType>
        </xs:sequence>
+
</xs:element>
      </xs:complexType>
+
  </xs:element>
+
 
<xs:element name="discovered-attributes">
 
<xs:element name="discovered-attributes">
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
Indicates that all the attributes defined at
+
Indicates that all the attributes defined at runtime be placed in this group.
runtime be placed in this group.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
Line 571: Line 563:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
The presence of this element indicates all
+
The presence of this element indicates all attributes should be placed in a single table; otherwise, attributes
attributes should be placed in a single table; otherwise,
+
are mapped serially to widgets by type.
attributes are mapped serially to widgets by type.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
 
<xs:complexType>
 
<xs:complexType>
<xs:attribute name="checkbox" type="xs:boolean" />
+
<xs:attribute name="checkbox" type="xs:boolean"/>
<xs:attribute name="editable" type="xs:boolean" />
+
<xs:attribute name="editable" type="xs:boolean"/>
 
</xs:complexType>
 
</xs:complexType>
 
</xs:element>
 
</xs:element>
 
<xs:element name="include">
 
<xs:element name="include">
                <xs:complexType>
+
<xs:complexType>
                  <xs:attribute name="headers" type="xs:boolean" />
+
<xs:attribute name="headers" type="xs:boolean"/>
                  <xs:attribute name="sort" type="xs:boolean" />
+
<xs:attribute name="sort" type="xs:boolean"/>
                  <xs:attribute name="name" type="xs:boolean" />
+
<xs:attribute name="name" type="xs:boolean"/>
                  <xs:attribute name="tooltip" type="xs:boolean" />
+
<xs:attribute name="tooltip" type="xs:boolean"/>
                  <xs:attribute name="description" type="xs:boolean" />
+
<xs:attribute name="description" type="xs:boolean"/>
                </xs:complexType>
+
</xs:complexType>
            </xs:element>
+
</xs:element>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 596: Line 587:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element name="label" minOccurs="0" type="xs:string" />
+
<xs:element name="label" minOccurs="0" type="xs:string"/>
 
<xs:element name="tooltip" minOccurs="0" type="xs:string"/>
 
<xs:element name="tooltip" minOccurs="0" type="xs:string"/>
 
<xs:element name="content">
 
<xs:element name="content">
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
The text of this element will be parsed for
+
The text of this element will be parsed for references to the resource manager environment; e.g., ${a},
references to the resource manager environment; e.g., ${a},
+
 
version-${b}, etc.
 
version-${b}, etc.
 
</xs:documentation>
 
</xs:documentation>
Line 608: Line 598:
 
<xs:complexType>
 
<xs:complexType>
 
<xs:sequence>
 
<xs:sequence>
<xs:element ref="arglist" />
+
<xs:element ref="arglist"/>
 
</xs:sequence>
 
</xs:sequence>
 
</xs:complexType>
 
</xs:complexType>
Line 615: Line 605:
 
<xs:annotation>
 
<xs:annotation>
 
<xs:documentation>
 
<xs:documentation>
The text of this element will be the name of a
+
The text of this element will be the name of a property
property
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
Line 625: Line 614:
 
<xs:documentation>
 
<xs:documentation>
 
Custom, fixed widgets:
 
Custom, fixed widgets:
1. select-attributes: push button which brings up wizard
+
1. select-attributes: push button which brings up wizard exposing attribute names with
exposing attribute names with checkboxes, allowing
+
checkboxes, allowing dynamic groups to be rebuilt.
dynamic groups to be rebuilt.
+
2. show-script: push button which displays the batch script as it would
2. show-script: push button which displays the batch
+
currently be submitted.
script as it would currently be submitted.
+
 
</xs:documentation>
 
</xs:documentation>
 
</xs:annotation>
 
</xs:annotation>
 
<xs:simpleType>
 
<xs:simpleType>
 
<xs:restriction base="xs:string">
 
<xs:restriction base="xs:string">
  <xs:enumeration value="label" /> <!-- automatically read-only -->
+
<xs:enumeration value="label"/> <!-- automatically read-only -->
<xs:enumeration value="text" />
+
<xs:enumeration value="text"/>
<xs:enumeration value="pushButton" /> <!-- automatically read-only -->
+
<xs:enumeration value="pushButton"/> <!-- automatically read-only -->
<xs:enumeration value="radioButton" /> <!-- automatically read-only -->
+
<xs:enumeration value="radioButton"/> <!-- automatically read-only -->
<xs:enumeration value="spinner" />
+
<xs:enumeration value="spinner"/>
<xs:enumeration value="checkbox" /> <!-- automatically read-only -->
+
<xs:enumeration value="checkbox"/> <!-- automatically read-only -->
<xs:enumeration value="combo" />
+
<xs:enumeration value="combo"/>
<xs:enumeration value="browseButton" />
+
<xs:enumeration value="browseButton"/>
<xs:enumeration value="table" />
+
<xs:enumeration value="table"/>
<xs:enumeration value="selectAttributes" /> <!-- automatically read-only -->
+
<xs:enumeration value="selectAttributes"/> <!-- automatically read-only -->
<xs:enumeration value="showScript" /> <!-- automatically read-only -->
+
<xs:enumeration value="showScript"/> <!-- automatically read-only -->
 
</xs:restriction>
 
</xs:restriction>
 
</xs:simpleType>
 
</xs:simpleType>
 
</xs:attribute>
 
</xs:attribute>
<xs:attribute name="readOnly" type="xs:boolean" />
+
<xs:attribute name="readOnly" type="xs:boolean"/>
 
</xs:complexType>
 
</xs:complexType>
 
</xs:element>
 
</xs:element>
Line 668: Line 656:
 
== PBS RM XML ==   
 
== PBS RM XML ==   
 
'''This is a working document in progress, just as the XSD above'''
 
'''This is a working document in progress, just as the XSD above'''
 +
'''Revision 1 25/01/2011'''
  
 
<source lang="xml">
 
<source lang="xml">
Line 686: Line 675:
 
<property name="progArgs"/>
 
<property name="progArgs"/>
 
<property name="directory"/>
 
<property name="directory"/>
<!-- generated from prefix + random number -->
+
<!-- no generalized way describe how to set this -->
<property name="scriptName"/>
+
<property name="mpiCores"/>
<!-- computed from the nodes:ppn attribute -->
+
<managed-files>
<property name="totalCores"/>
+
<file-staging-location>${remote.home}/.eclipse</file-staging-location>
 +
        <managed-file name="pbs_script" uniqueIdSuffix="true" deleteAfterUse="true">
 +
            <content>${script}</content>
 +
        </managed-file>
 +
</managed-files>
 
<run-commands>
 
<run-commands>
 
<run-batch>
 
<run-batch>
<command-ref>stage_script</command-ref>
 
 
<command-ref>submit_script</command-ref>
 
<command-ref>submit_script</command-ref>
<command-ref>remove_script</command-ref>
 
 
</run-batch>
 
</run-batch>
 
</run-commands>
 
</run-commands>
Line 700: Line 691:
 
<command-ref>cancel_job</command-ref>
 
<command-ref>cancel_job</command-ref>
 
</cancel-job>
 
</cancel-job>
 +
<commands>
 +
<command name="submit_script">
 +
<arglist>
 +
<arg>qsub</arg>
 +
<arg>${remote.home}/.eclipse/${scriptName}</arg>
 +
</arglist>
 +
<parser-ref>jobIdParser</parser-ref>
 +
</command>
 +
<command name="cancel_job">
 +
<arglist>
 +
<arg>qdel</arg>
 +
<arg>${jobId}</arg>
 +
</arglist>
 +
</command>
 +
</commands>
 +
<parsers>
 +
<stream-parser name="jobIdParser" stderr="false">
 +
<parse-lines>n-1</parse-lines>
 +
<token delim="[.]" return="0"/>
 +
<put name="jobId" index="0"/>
 +
</stream-parser>
 +
</parsers>
 +
<script shell="#!/bin/bash">
 +
<directive-definitions>
 +
<directive-definition valueFrom="PBSJOB_Account_Name"># @ PBS -A </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Checkpoint"># @ PBS -c </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_depend"># @ PBS -W depend=</directive-definition>
 +
<directive-definition valueFrom="PBSJOB_destination"># @ PBS -q </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_directive"># @ PBS -C </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Error_Path"># @ PBS -e </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_export_all"># @ PBS -V </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_group_list"># @ PBS -W group_list=</directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Hold_Types"># @ PBS -h </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Job_Name"># @ PBS -N </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Join_Path"># @ PBS -j </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Keep_Files"># @ PBS -k </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Mail_Points"># @ PBS -m </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Mail_Users"># @ PBS -M </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Output_Path"># @ PBS -o </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Priority"># @ PBS -p </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Rerunnable"># @ PBS -r </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Resource_List.arch"># @ PBS -l arch= </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Resource_List.cput"># @ PBS -l cput= </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Resource_List.file"># @ PBS -l file= </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Resource_List.host"># @ PBS -l host= </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Resource_List.mem"># @ PBS -l mem= </directive-definition>
 +
<directive-definition valueFrom="Resource_List.nice"># @ PBS -l nice= </directive-definition>
 +
<directive-definition valueFrom="Resource_List.nodes"># @ PBS -l nodes= </directive-definition>
 +
<directive-definition valueFrom="Resource_List.ompthreads"># @ PBS -l ompthreads= </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Resource_List.pcput"># @ PBS -l pcput= </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Resource_List.pmem"># @ PBS -l pmem= </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Resource_List.pvmem"># @ PBS -l pvmem= </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Resource_List.vmem"># @ PBS -l vmem= </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Resource_List.walltime"># @ PBS -l walltime= </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Shell_Path_List"># @ PBS -S </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_stagein"># @ PBS -W stagein= </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_stageout"># @ PBS -W stageout= </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_User_List"># @ PBS -u </directive-definition>
 +
<directive-definition valueFrom="PBSJOB_Variable_List"># @ PBS -v </directive-definition>
 +
</directive-definitions>
 +
<pre-execute-commands>
 +
<command>cd ${directory}</command>
 +
</pre-execute-commands>
 +
<execute-command>${mpiCommand} ${mpiArgs} ${executablePath} ${progArgs}</execute-command>
 +
<pre-execute-commands>
 +
<command>touch DONE</command>
 +
</pre-execute-commands>
 +
</script>
 +
<attribute-defintions>
 +
<job-attribute id="mpiCommand" name="mpiCommand" basic="true" type="choice">
 +
<description>Which mpi command to use.</description>
 +
<choice>,mpiexec,mpirun</choice>
 +
</job-attribute>
 +
<job-attribute id="mpiCores" name="mpiCores" basic="true" type="integer">
 +
<description>the '-np' value</description>
 +
</job-attribute>
 +
<job-attribute id="mpiArgs" name="mpiArgs" basic="true" type="string">
 +
<description>Which mpi options to use.</description>
 +
<default>-machinefile $PBS_NODEFILE -np ${mpiCores}</default>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Account_Name" name="Account_Name" basic="true" type="string">
 +
<description>Account to which to charge this job.</description>
 +
<tooltip>Format: string</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Checkpoint" name="Checkpoint" type="choice">
 +
<description>Determines when checkpointing (if supported) will be performed by PBS on behalf of the job.</description>
 +
<default>u</default>
 +
<choice>,u,n,s,c,c=????</choice>
 +
<tooltip>Format: the strings "n" (no checkpointing), "s" (to be performed only when the server executing the job is shutdown), "c"s
 +
(to be performed at the default minimum time for thes servers executing the job), "c=mmmm" (to be performed at an intervals ofs
 +
minutess whichs is the integer number of minutes of CPUs time used bys the job; values must be greater than zero); defaults value:
 +
"u", whichs iss unspecified.
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_depend" name="depend" type="string">
 +
<description>The type of inter-job dependencies specified by the job owner.</description>
 +
<tooltip>Format: "type:jobid[,jobid...]"; default value: no dependencies.</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_destination" name="destination" type="string" basic="true">
 +
<description>Designation of the queue to which to submit the job.</description>
 +
<tooltip>Format: queue[@server].</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_directive" name="directive" type="string">
 +
<description>Defines the prefix that declares a directive to the qsub command within the script file.</description>
 +
<tooltip>See the paragraph on script directives in the Extended Description section. If the option is presented with a
 +
directive_prefix argument that is the null string, qsub will not scan the script file for directives.
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Error_Path" name="Error_Path" type="string">
 +
<description>The final path name for the file containing the job's standard error stream.</description>
 +
<tooltip>Format: "[hostname:]pathname". If the option is not specified, the default file name for the standard error stream will be
 +
used. The default name has the following form: job_name.eSeq_num where job_name is the name of the job, see -N option, and Seq_num
 +
is the job number assigned when the job is submitted; default value: (job_name).e(job_number).
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_export_all" name="export_all" basic="true" type="boolean">
 +
<description>Declares that all environment variables in the qsub command's environment are to be exported to the batch job.
 +
</description>
 +
<default>true</default>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_group_list" name="group_list" type="string">
 +
<description>A list of group_names@hosts which determines the group under which the job is run on a given host.</description>
 +
<tooltip>Format: group_name[@host][,group_name[@host]...]. When a job is to be placed into execution, the server will select a
 +
group
 +
name according to the following ordered set of rules: 1) Select the group name from the list for which the associated host
 +
name
 +
matches the name of the execution host; 2) Select the group name which has no associated host name, the wildcard name; 3) Use
 +
the
 +
login group for the username under which the job will be run.
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Hold_Types" name="Hold_Types" type="choice">
 +
<description>The set of holds currently applied to the job.</description>
 +
<choice>,u,s,o</choice>
 +
<tooltip>If the set is not null, the job will not be scheduled for execution and is said to be in the hold state. Note, the hold
 +
state takes precedence over the wait state. Format: string made up of the letters 'u', 's', 'o'; default value: no hold.
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Job_Name" name="Job_Name" type="string" basic="true">
 +
<description>The name assigned to the job by the qsub or qalter command.</description>
 +
<tooltip>Format: string up to 15 characters, first character must be alphabetic; default value: the base name of the job script or
 +
STDIN.
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Join_Path" name="Join_Path" type="boolean">
 +
<description>Merge stdout and stderr into stdout.</description>
 +
<default>false</default>
 +
<tooltip>Format: boolean, values accepted are "True", "TRUE", "true", "Y", "y", "1", "False", "FALSE", "false", "N", "n", "0";
 +
default value: false.
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Keep_Files" name="Keep_Files" type="choice">
 +
<description>Retain these streams on the execution host upon job termination.</description>
 +
<choice>,o,e,oe,eo</choice>
 +
<tooltip>Format: "o", "e", "oe" or "eo"; default value: no keep, return files to submission host.</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Mail_Points" name="Mail_Points" type="choice">
 +
<description>Identifies at which state changes the server will send mail about the job.</description>
 +
<default>a</default>
 +
<choice>,a,b</choice>
 +
<tooltip>Format: string made up of the letters 'a' for abort, 'b' for beginning, and default value: 'a', send on job abort.
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Mail_Users" name="Mail_Users" type="string">
 +
<description>The set of users to whom mail may be sent when the job makes certain state changes.</description>
 +
<tooltip>Format: "user@host[,user@host]"; default value: job owner only.</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Output_Path" name="Output_Path" type="string">
 +
<description>The final path name for the file containing the job's standard output stream.</description>
 +
<tooltip>Format: "[hostname:]pathname". If the option is not specified, the default file name for the standard error stream will be
 +
used. The default name has the following form: job_name.oSeq_num where job_name is the name of the job, see -N option, and Seq_num
 +
is the job number assigned when the job is submitted; default value: (job_name).o(job_number).
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Priority" name="Priority" type="string">
 +
<description>The job scheduling priority assigned by the user.</description>
 +
<tooltip>Format: "[+|-]nnnnn"; default value: undefined.</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Rerunnable" name="Rerunnable" type="choice">
 +
<description>The rerunnable flag assigned by the user.</description>
 +
<default>y</default>
 +
<choice>,n,y</choice>
 +
<tooltip>Format: "y" or "n", see Join_Path; default value: y, job is rerunable.</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Resource_List.arch" name="Resource_List.arch" type="string">
 +
<description>Specifies the administrator defined system architecture requried.</description>
 +
<tooltip>This defaults to whatever the PBS_MACH string is set to in "local.mk". Units: string.</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Resource_List.cput" name="Resource_List.cput" type="string">
 +
<description>Maximum amount of CPU time used by all processes in the job.</description>
 +
<tooltip>Format: [[hours:]minutes:]seconds[.milliseconds].</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Resource_List.file" name="Resource_List.file" type="string">
 +
<description>The largest size of any single file that may be created by the job.</description>
 +
<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
 +
(kilo), mb/mw (mega), gb/bw (giga).
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Resource_List.host" name="Resource_List.host" type="string">
 +
<description>Name of host on which job should be run.</description>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Resource_List.mem" name="Resource_List.mem" type="string">
 +
<description>Maximum amount of memory used by all concurrent processes in the job.</description>
 +
<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
 +
(kilo), mb/mw (mega), gb/bw (giga).
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Resource_List.nice" name="Resource_List.nice" type="integer">
 +
<description>The nice value under which the job is to be run.</description>
 +
<default>0</default>
 +
<min>0</min>
 +
<max>10</max>
 +
<tooltip>0 to 10.</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Resource_List.nodes" name="Resource_List.nodes" basic="true" type="string">
 +
<description>Number and/or type of nodes to be reserved for exclusive use by the job.</description>
 +
<default>1</default>
 +
<tooltip>The value is one or more node_specs joined with the '+' character, "node_spec[+node_spec...]. Each node_spec is a number
 +
of
 +
nodes required of the type declared in the node_spec and a name or one or more properity or properities desired for the nodes.
 +
The
 +
number, the name, and each properity in the node_spec are separated by a colon ':'. If no number is specified, one (1) is
 +
assumed.
 +
Units: string. The name of a node is its hostname. The properties of nodes are: ppn=# requested; defaults to 1; or an
 +
arbitrary
 +
string defined by system administrator. Example: To ask for 2 processors on each of two blue nodes and three processors
 +
on one red
 +
node: -l nodes=2:blue:ppn=2+red:ppn=3.
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Resource_List.ompthreads" name="Resource_List.ompthreads" type="integer">
 +
<description>Number of threads per processor for Open MP jobs.</description>
 +
<default>1</default>
 +
<min>1</min>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Resource_List.pcput" name="Resource_List.pcput" type="string">
 +
<description>Maximum amount of CPU time used by any single process in the job.</description>
 +
<tooltip>Format: [[hours:]minutes:]seconds[.milliseconds].</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Resource_List.pmem" name="Resource_List.pmem" type="string">
 +
<description>Maximum amount of physical memory (workingset) used by any single process of the job.</description>
 +
<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
 +
(kilo), mb/mw (mega), gb/bw (giga).
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Resource_List.pvmem" name="Resource_List.pvmem" type="string">
 +
<description>Maximum amount of virtual memory used by any single process in the job.</description>
 +
<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
 +
(kilo), mb/mw (mega), gb/bw (giga).
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Resource_List.vmem" name="Resource_List.vmem" type="string">
 +
<description>Maximum amount of virtual memory used by all concurrent processes in the job.</description>
 +
<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
 +
(kilo), mb/mw (mega), gb/bw (giga).
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Resource_List.walltime" name="Resource_List.walltime" basic="true" type="string">
 +
<description>Maximum amount of real time during which the job can be in the running state.</description>
 +
<default>00:30:00</default>
 +
<tooltip>Format: [[hours:]minutes:]seconds[.milliseconds].</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Shell_Path_List" name="Shell_Path_List" type="string">
 +
<description>A set of absolute paths of the program to process the job's script file.</description>
 +
<tooltip>Format: path[@host][,path[@host]...]. If this is null, then the user's login shell on the host of execution will be used.
 +
Default value: null, login shell.
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_stagein" name="stagein" type="string">
 +
<description>The list of files to be staged in prior to job execution.</description>
 +
<tooltip>Format: local_path@remote_host:remote_path.</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_stageout" name="stageout" type="string">
 +
<description>The list of files to be staged out after job execution.</description>
 +
<tooltip>Format: local_path@remote_host:remote_path.</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_User_List" name="User_List" type="string">
 +
<description>The list of user@hosts which determines the user name under which the job is run on a given host.</description>
 +
<tooltip>When a job is to be placed into execution, the server will select a user name from the list according to the following
 +
ordered set of rules: 1) Select the user name from the list for which the associated host name matches the name of the execution
 +
host; 2) Select the user name which has no associated host name, the wild card name; 3) Use the Job_Owner as the user name.
 +
Default
 +
value: job owner name.
 +
</tooltip>
 +
</job-attribute>
 +
<job-attribute id="PBSJOB_Variable_List" name="Variable_List" type="string">
 +
<description>This is the list of environment variables passed with the Queue Job batch request.</description>
 +
</job-attribute>
 +
</attribute-defintions>
 +
<launch-tab advancedModeEnabled="true">
 +
<tab-controller>
 +
<title>Standard</title>
 +
<group columns="2">
 +
<title>Script Configuration</title>
 +
<widget type="selectAttributes">
 +
<tooltip>Choose the attributes to display in the Detailed Tab.</tooltip>
 +
</widget>
 +
<widget type="showScript" readOnly="true">
 +
<tooltip>Show the batch script as it would currently be submitted.</tooltip>
 +
</widget>
 +
</group>
 +
<tab-folder>
 +
<title>Job Settings</title>
 +
<tab-item>
 +
<title>Basic</title>
 +
<group columns="3">
 +
<!-- row 1 -->
 +
<widget type="text">
 +
<label>Job Name: </label>
 +
<tooltip>${PBSJOB_Job_Name[tooltip]}</tooltip>
 +
<content>
 +
<arglist>
 +
<arg>${PBSJOB_Job_Name[value]}</arg>
 +
</arglist>
 +
</content>
 +
<saveValueTo>PBSJOB_Job_Name</saveValueTo>
 +
</widget>
 +
<widget type="label">
 +
<content>
 +
<arglist>
 +
<arg>${PBSJOB_Job_Name[description]}</arg>
 +
</arglist>
 +
</content>
 +
</widget>
 +
<!-- row 2 -->
 +
<widget type="combo" readOnly="true">
 +
<label>Queue: </label>
 +
<tooltip>${PBSJOB_destination[tooltip]}</tooltip>
 +
<content>
 +
<arglist>
 +
<arg>${available_queues}</arg>
 +
</arglist>
 +
</content>
 +
<saveValueTo>PBSJOB_destination</saveValueTo>
 +
</widget>
 +
<widget type="label">
 +
<content>
 +
<arglist>
 +
<arg>${PBSJOB_destination[description]}</arg>
 +
</arglist>
 +
</content>
 +
</widget>
 +
<!-- row 3 -->
 +
<widget type="text">
 +
<label>Nodes: </label>
 +
<tooltip>${Resource_List.nodes[tooltip]}</tooltip>
 +
<content>
 +
<arglist>
 +
<arg>${Resource_List.nodes[value]}</arg>
 +
</arglist>
 +
</content>
 +
<saveValueTo>Resource_List.nodes</saveValueTo>
 +
</widget>
 +
<widget type="label">
 +
<content>
 +
<arglist>
 +
<arg>${Resource_List.nodes[description]}</arg>
 +
</arglist>
 +
</content>
 +
</widget>
 +
<!-- row 4 -->
 +
<widget type="text">
 +
<label>Wallclock Time</label>
 +
<tooltip>${PBSJOB_Resource_List.walltime[tooltip]}</tooltip>
 +
<content>
 +
<arglist>
 +
<arg>${PBSJOB_Resource_List.walltime[value]}</arg>
 +
</arglist>
 +
</content>
 +
<saveValueTo>PBSJOB_Resource_List.walltime</saveValueTo>
 +
</widget>
 +
<widget type="label">
 +
<content>
 +
<arglist>
 +
<arg>${PBSJOB_Resource_List.walltime[description]}</arg>
 +
</arglist>
 +
</content>
 +
</widget>
 +
<!-- row 5 -->
 +
<widget type="combo" readOnly="true">
 +
<label>MPI Command: </label>
 +
<content>
 +
<arglist>
 +
<arg>mpiCommand</arg>
 +
</arglist>
 +
</content>
 +
</widget>
 +
<widget type="label">
 +
<content>
 +
<arglist>
 +
<arg>MPI executable to use</arg>
 +
</arglist>
 +
</content>
 +
</widget>
 +
</group>
 +
</tab-item>
 +
<tab-item>
 +
<title>Detailed</title>
 +
<group dynamic="true" scrollable="true" columns="3">
 +
<!-- iterates through all registered attributes, one to a row -->
 +
<all-attributes>
 +
<include sort="true" headers="true" name="true" tooltip="true" description="true"/>
 +
</all-attributes>
 +
</group>
 +
</tab-item>
 +
</tab-folder>
 +
</tab-controller>
 +
</launch-tab>
 
</control>
 
</control>
<commands>
 
<command name="stage_script">
 
<arglist>
 
<arg>scp</arg>
 
<arg>${workspace_loc}/.metadata/${scriptName}</arg>
 
<arg>${remote.host}:${remote.home}/.eclipse</arg>
 
</arglist>
 
</command>
 
<command name="submit_script">
 
<arglist>
 
<arg>ssh</arg>
 
<arg>${remote.host}</arg>
 
<arg>qsub</arg>
 
<arg>${remote.home}/.eclipse/${scriptName}</arg>
 
</arglist>
 
<parser-ref>jobIdParser</parser-ref>
 
</command>
 
<command name="remove_script">
 
<arglist>
 
<arg>ssh</arg>
 
<arg>${remote.host}</arg>
 
<arg>rm -f</arg>
 
<arg>${remote.home}/.eclipse/${scriptName}</arg>
 
</arglist>
 
</command>
 
<command name="cancel_job">
 
<arglist>
 
<arg>ssh</arg>
 
<arg>${remote.host}</arg>
 
<arg>qdel</arg>
 
<arg>${jobId}</arg>
 
</arglist>
 
</command>
 
</commands>
 
<parsers>
 
<stream-parser name="jobIdParser" stderr="false">
 
<parse-lines>n-1</parse-lines>
 
<token delim="[.]" return="0"/>
 
<put name="jobId" index="0"/>
 
</stream-parser>
 
</parsers>
 
<script prefix="pbs_torque" shell="#!/bin/bash">
 
<directive-definitions>
 
<directive-definition valueFrom="PBSJOB_Account_Name">-A </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Checkpoint">-c </directive-definition>
 
<directive-definition valueFrom="PBSJOB_depend">-W depend=</directive-definition>
 
<directive-definition valueFrom="PBSJOB_destination">-q </directive-definition>
 
<directive-definition valueFrom="PBSJOB_directive">-C </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Error_Path">-e </directive-definition>
 
<directive-definition valueFrom="PBSJOB_export_all">-V </directive-definition>
 
<directive-definition valueFrom="PBSJOB_group_list">-W group_list=</directive-definition>
 
<directive-definition valueFrom="PBSJOB_Hold_Types">-h </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Job_Name">-N </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Join_Path">-j </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Keep_Files">-k </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Mail_Points">-m </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Mail_Users">-M </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Output_Path">-o </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Priority">-p </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Rerunnable">-r </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Resource_List.arch">-l arch= </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Resource_List.cput">-l cput= </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Resource_List.file">-l file= </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Resource_List.host">-l host= </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Resource_List.mem">-l mem= </directive-definition>
 
<directive-definition valueFrom="Resource_List.nice">-l nice= </directive-definition>
 
<directive-definition valueFrom="Resource_List.nodes">-l nodes= </directive-definition>
 
<directive-definition valueFrom="Resource_List.ompthreads">-l ompthreads= </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Resource_List.pcput">-l pcput= </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Resource_List.pmem">-l pmem= </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Resource_List.pvmem">-l pvmem= </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Resource_List.vmem">-l vmem= </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Resource_List.walltime">-l walltime= </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Shell_Path_List">-S </directive-definition>
 
<directive-definition valueFrom="PBSJOB_stagein">-W stagein= </directive-definition>
 
<directive-definition valueFrom="PBSJOB_stageout">-W stageout= </directive-definition>
 
<directive-definition valueFrom="PBSJOB_User_List">-u </directive-definition>
 
<directive-definition valueFrom="PBSJOB_Variable_List">-v </directive-definition>
 
</directive-definitions>
 
<pre-execute-commands>
 
<command>cd ${directory}</command>
 
</pre-execute-commands>
 
<execute-command>${mpiCommand} ${mpiArgs} ${executablePath} ${progArgs} </execute-command>
 
<pre-execute-commands>
 
<command>touch DONE</command>
 
</pre-execute-commands>
 
</script>
 
<attribute-defintions>
 
<job-attribute id="mpiCommand" name="mpiCommand" basic="true" type="choice">
 
<description>Which mpi command to use.</description>
 
<choice>,mpiexec,mpirun</choice>
 
</job-attribute>
 
<job-attribute id="mpiArgs" name="mpiArgs" basic="true" type="string">
 
<description>Which mpi options to use.</description>
 
<default>-machinefile $PBS_NODEFILE -np ${totalCores}</default>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Account_Name" name="Account_Name" basic="true" type="string">
 
<description>Account to which to charge this job.</description>
 
<tooltip>Format: string</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Checkpoint" name="Checkpoint" type="choice">
 
<description>Determines when checkpointing (if supported) will be performed by PBS on behalf of the job.</description>
 
<default>u</default>
 
<choice>,u,n,s,c,c=????</choice>
 
<tooltip>Format: the strings "n" (no checkpointing), "s" (to be performed only when the server executing the job is shutdown), "c"s
 
(to be performed at the default minimum time for thes servers executing the job), "c=mmmm" (to be performed at an intervals ofs
 
minutess whichs is the integer number of minutes of CPUs time used bys the job; values must be greater than zero); defaults value:
 
"u", whichs iss unspecified.
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_depend" name="depend" type="string">
 
<description>The type of inter-job dependencies specified by the job owner.</description>
 
<tooltip>Format: "type:jobid[,jobid...]"; default value: no dependencies.</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_destination" name="destination" type="string" basic="true">
 
<description>Designation of the queue to which to submit the job.</description>
 
<tooltip>Format: queue[@server].</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_directive" name="directive" type="string">
 
<description>Defines the prefix that declares a directive to the qsub command within the script file.</description>
 
<tooltip>See the paragraph on script directives in the Extended Description section. If the option is presented with a
 
directive_prefix argument that is the null string, qsub will not scan the script file for directives.
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Error_Path" name="Error_Path" type="string">
 
<description>The final path name for the file containing the job's standard error stream.</description>
 
<tooltip>Format: "[hostname:]pathname". If the option is not specified, the default file name for the standard error stream will be
 
used. The default name has the following form: job_name.eSeq_num where job_name is the name of the job, see -N option, and Seq_num
 
is the job number assigned when the job is submitted; default value: (job_name).e(job_number).
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_export_all" name="export_all" basic="true" type="boolean">
 
<description>Declares that all environment variables in the qsub command's environment are to be exported to the batch job.
 
</description>
 
<default>true</default>
 
</job-attribute>
 
<job-attribute id="PBSJOB_group_list" name="group_list" type="string">
 
<description>A list of group_names@hosts which determines the group under which the job is run on a given host.</description>
 
<tooltip>Format: group_name[@host][,group_name[@host]...]. When a job is to be placed into execution, the server will select a group
 
name according to the following ordered set of rules: 1) Select the group name from the list for which the associated host name
 
matches the name of the execution host; 2) Select the group name which has no associated host name, the wildcard name; 3) Use the
 
login group for the username under which the job will be run.
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Hold_Types" name="Hold_Types" type="choice">
 
<description>The set of holds currently applied to the job.</description>
 
<choice>,u,s,o</choice>
 
<tooltip>If the set is not null, the job will not be scheduled for execution and is said to be in the hold state. Note, the hold
 
state takes precedence over the wait state. Format: string made up of the letters 'u', 's', 'o'; default value: no hold.
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Job_Name" name="Job_Name" type="string" basic="true">
 
<description>The name assigned to the job by the qsub or qalter command.</description>
 
<tooltip>Format: string up to 15 characters, first character must be alphabetic; default value: the base name of the job script or
 
STDIN.
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Join_Path" name="Join_Path" type="boolean">
 
<description>Merge stdout and stderr into stdout.</description>
 
<default>false</default>
 
<tooltip>Format: boolean, values accepted are "True", "TRUE", "true", "Y", "y", "1", "False", "FALSE", "false", "N", "n", "0";
 
default value: false.
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Keep_Files" name="Keep_Files" type="choice">
 
<description>Retain these streams on the execution host upon job termination.</description>
 
<choice>,o,e,oe,eo</choice>
 
<tooltip>Format: "o", "e", "oe" or "eo"; default value: no keep, return files to submission host.</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Mail_Points" name="Mail_Points" type="choice">
 
<description>Identifies at which state changes the server will send mail about the job.</description>
 
<default>a</default>
 
<choice>,a,b</choice>
 
<tooltip>Format: string made up of the letters 'a' for abort, 'b' for beginning, and default value: 'a', send on job abort.
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Mail_Users" name="Mail_Users" type="string">
 
<description>The set of users to whom mail may be sent when the job makes certain state changes.</description>
 
<tooltip>Format: "user@host[,user@host]"; default value: job owner only.</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Output_Path" name="Output_Path" type="string">
 
<description>The final path name for the file containing the job's standard output stream.</description>
 
<tooltip>Format: "[hostname:]pathname". If the option is not specified, the default file name for the standard error stream will be
 
used. The default name has the following form: job_name.oSeq_num where job_name is the name of the job, see -N option, and Seq_num
 
is the job number assigned when the job is submitted; default value: (job_name).o(job_number).
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Priority" name="Priority" type="string">
 
<description>The job scheduling priority assigned by the user.</description>
 
<tooltip>Format: "[+|-]nnnnn"; default value: undefined.</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Rerunnable" name="Rerunnable" type="choice">
 
<description>The rerunnable flag assigned by the user.</description>
 
<default>y</default>
 
<choice>,n,y</choice>
 
<tooltip>Format: "y" or "n", see Join_Path; default value: y, job is rerunable.</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Resource_List.arch" name="Resource_List.arch" type="string">
 
<description>Specifies the administrator defined system architecture requried.</description>
 
<tooltip>This defaults to whatever the PBS_MACH string is set to in "local.mk". Units: string.</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Resource_List.cput" name="Resource_List.cput" type="string">
 
<description>Maximum amount of CPU time used by all processes in the job.</description>
 
<tooltip>Format: [[hours:]minutes:]seconds[.milliseconds].</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Resource_List.file" name="Resource_List.file" type="string">
 
<description>The largest size of any single file that may be created by the job.</description>
 
<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
 
(kilo), mb/mw (mega), gb/bw (giga).
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Resource_List.host" name="Resource_List.host" type="string">
 
<description>Name of host on which job should be run.</description>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Resource_List.mem" name="Resource_List.mem" type="string">
 
<description>Maximum amount of memory used by all concurrent processes in the job.</description>
 
<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
 
(kilo), mb/mw (mega), gb/bw (giga).
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Resource_List.nice" name="Resource_List.nice" type="integer">
 
<description>The nice value under which the job is to be run.</description>
 
<default>0</default>
 
<min>0</min>
 
<max>10</max>
 
<tooltip>0 to 10.</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Resource_List.nodes" name="Resource_List.nodes" basic="true" type="string">
 
<description>Number and/or type of nodes to be reserved for exclusive use by the job.</description>
 
<default>1</default>
 
<tooltip>The value is one or more node_specs joined with the '+' character, "node_spec[+node_spec...]. Each node_spec is a number of
 
nodes required of the type declared in the node_spec and a name or one or more properity or properities desired for the nodes. The
 
number, the name, and each properity in the node_spec are separated by a colon ':'. If no number is specified, one (1) is assumed.
 
Units: string. The name of a node is its hostname. The properties of nodes are: ppn=# requested; defaults to 1; or an arbitrary
 
string defined by system administrator. Example: To ask for 2 processors on each of two blue nodes and three processors on one red
 
node: -l nodes=2:blue:ppn=2+red:ppn=3.
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Resource_List.ompthreads" name="Resource_List.ompthreads" type="integer">
 
<description>Number of threads per processor for Open MP jobs.</description>
 
<default>1</default>
 
<min>1</min>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Resource_List.pcput" name="Resource_List.pcput" type="string">
 
<description>Maximum amount of CPU time used by any single process in the job.</description>
 
<tooltip>Format: [[hours:]minutes:]seconds[.milliseconds].</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Resource_List.pmem" name="Resource_List.pmem" type="string">
 
<description>Maximum amount of physical memory (workingset) used by any single process of the job.</description>
 
<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
 
(kilo), mb/mw (mega), gb/bw (giga).
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Resource_List.pvmem" name="Resource_List.pvmem" type="string">
 
<description>Maximum amount of virtual memory used by any single process in the job.</description>
 
<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
 
(kilo), mb/mw (mega), gb/bw (giga).
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Resource_List.vmem" name="Resource_List.vmem" type="string">
 
<description>Maximum amount of virtual memory used by all concurrent processes in the job.</description>
 
<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
 
(kilo), mb/mw (mega), gb/bw (giga).
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Resource_List.walltime" name="Resource_List.walltime" basic="true" type="string">
 
<description>Maximum amount of real time during which the job can be in the running state.</description>
 
<default>00:30:00</default>
 
<tooltip>Format: [[hours:]minutes:]seconds[.milliseconds].</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Shell_Path_List" name="Shell_Path_List" type="string">
 
<description>A set of absolute paths of the program to process the job's script file.</description>
 
<tooltip>Format: path[@host][,path[@host]...]. If this is null, then the user's login shell on the host of execution will be used.
 
Default value: null, login shell.
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_stagein" name="stagein" type="string">
 
<description>The list of files to be staged in prior to job execution.</description>
 
<tooltip>Format: local_path@remote_host:remote_path.</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_stageout" name="stageout" type="string">
 
<description>The list of files to be staged out after job execution.</description>
 
<tooltip>Format: local_path@remote_host:remote_path.</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_User_List" name="User_List" type="string">
 
<description>The list of user@hosts which determines the user name under which the job is run on a given host.</description>
 
<tooltip>When a job is to be placed into execution, the server will select a user name from the list according to the following
 
ordered set of rules: 1) Select the user name from the list for which the associated host name matches the name of the execution
 
host; 2) Select the user name which has no associated host name, the wild card name; 3) Use the Job_Owner as the user name. Default
 
value: job owner name.
 
</tooltip>
 
</job-attribute>
 
<job-attribute id="PBSJOB_Variable_List" name="Variable_List" type="string">
 
<description>This is the list of environment variables passed with the Queue Job batch request.</description>
 
</job-attribute>
 
</attribute-defintions>
 
<launch-tab advancedModeEnabled="true">
 
<tab-controller>
 
<title>Standard</title>
 
<group columns="2">
 
<title>Script Configuration</title>
 
<widget type="selectAttributes">
 
<tooltip>Choose the attributes to display in the Detailed Tab.</tooltip>
 
</widget>
 
<widget type="showScript" readOnly="true">
 
<tooltip>Show the batch script as it would currently be submitted.</tooltip>
 
</widget>
 
</group>
 
<tab-folder>
 
<title>Job Settings</title>
 
<tab-item>
 
<title>Basic</title>
 
<group columns="3">
 
<!-- row 1 -->
 
<widget type="text">
 
<label>Job Name: </label>
 
<tooltip>${PBSJOB_Job_Name[tooltip]}</tooltip>
 
<content>
 
<arglist>
 
<arg>${PBSJOB_Job_Name[value]}</arg>
 
</arglist>
 
</content>
 
<saveValueTo>PBSJOB_Job_Name</saveValueTo>
 
</widget>
 
<widget type="label">
 
<content>
 
<arglist>
 
<arg>${PBSJOB_Job_Name[description]}</arg>
 
</arglist>
 
</content>
 
</widget>
 
<!-- row 2 -->
 
<widget type="combo" readOnly="true">
 
<label>Queue: </label>
 
<tooltip>${PBSJOB_destination[tooltip]}</tooltip>
 
<content>
 
<arglist>
 
<arg>${available_queues}</arg>
 
</arglist>
 
</content>
 
<saveValueTo>PBSJOB_destination</saveValueTo>
 
</widget>
 
<widget type="label">
 
<content>
 
<arglist>
 
<arg>${PBSJOB_destination[description]}</arg>
 
</arglist>
 
</content>
 
</widget>
 
<!-- row 3 -->
 
<widget type="text">
 
<label>Nodes: </label>
 
<tooltip>${Resource_List.nodes[tooltip]}</tooltip>
 
<content>
 
<arglist>
 
<arg>${Resource_List.nodes[value]}</arg>
 
</arglist>
 
</content>
 
<saveValueTo>Resource_List.nodes</saveValueTo>
 
</widget>
 
<widget type="label">
 
<content>
 
<arglist>
 
<arg>${Resource_List.nodes[description]}</arg>
 
</arglist>
 
</content>
 
</widget>
 
<!-- row 4 -->
 
<widget type="text">
 
<label>Wallclock Time</label>
 
<tooltip>${PBSJOB_Resource_List.walltime[tooltip]}</tooltip>
 
<content>
 
<arglist>
 
<arg>${PBSJOB_Resource_List.walltime[value]}</arg>
 
</arglist>
 
</content>
 
<saveValueTo>PBSJOB_Resource_List.walltime</saveValueTo>
 
</widget>
 
<widget type="label">
 
<content>
 
<arglist>
 
<arg>${PBSJOB_Resource_List.walltime[description]}</arg>
 
</arglist>
 
</content>
 
</widget>
 
<!-- row 5 -->
 
<widget type="combo" readOnly="true">
 
<label>MPI Command: </label>
 
<content>
 
<arglist>
 
<arg>mpiCommand</arg>
 
</arglist>
 
</content>
 
</widget>
 
<widget type="label">
 
<content>
 
<arglist>
 
<arg>MPI executable to use</arg>
 
</arglist>
 
</content>
 
</widget>
 
</group>
 
</tab-item>
 
<tab-item>
 
<title>Detailed</title>
 
<group dynamic="true" scrollable="true" columns="3">
 
<!-- iterates through all registered attributes, one to a row -->
 
<all-attributes>
 
<include sort="true" headers="true" name="true" tooltip="true" description="true"/>
 
</all-attributes>
 
</group>
 
</tab-item>
 
</tab-folder>
 
</tab-controller>
 
</launch-tab>
 
 
<monitor>
 
<monitor>
 
</monitor>
 
</monitor>
 
</resource-manager>
 
</resource-manager>
 
</source>
 
</source>

Revision as of 16:19, 25 January 2011

Resource Manager XSD

The following is a draft of the proposed Resource Manager XML Schema (XSD). It has been annotated internally where I felt some explanation necessary.

Note that I have not attempted to figure out yet what the monitoring part will look like or what the control and monitoring sections may need to interact; it may also be the case that some things inside the control node should come up a level.

Revised version 1 (17/01/2011):

Revised version 2 (19/01/2011): I have adjusted the schema to accommodate the points raised by our discussions on ptp-dev. More tomorrow, I'm sure. -alr

Revised version 3 (23/01/2011): A few more changes I discovered needed to be made as I work through the XML instance for PBS. -alr

Revised version 4 (24/01/2011): Numerous tweaks. I have added a few specialized widgets and groups involving job attributes whose construction is standardized; this is for economy of expression more than anything else. -alr

Revised version 5 (25/01/2011): Changed how to specify the management of files as per discussion. -alr

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xs:element name="resource-manager">
		<xs:annotation>
			<xs:documentation>
				It is assumed that the xml instance of the schema will bear a name which sufficiently distinguishes it from others
				of a similar type; e.g., pbs-torque-v_2.3.7_abe is specific to an installation on the host abe, ll-v_4.0 suits all installations of
				LoadLeveler version 4, etc.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="control"/>
				<xs:element ref="monitor"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="control">
		<xs:annotation>
			<xs:documentation>
				The implementation will construct a map serving as the resource manager "environment"; these are dereferenced in
				the configuration file via ${name} or ${name[part]}; in addition to the properties specified at the top level of the control tree,
				all attributes and parsers will be mapped for reference. A number of runtime variables such as remote host name, user name, etc.,
				will also be included. The top level of the tree represents the available commands/methods on all resource managers, places for
				defining stdout or stderr parsers, for defining the structure of a batch script to be used, for defining (job) attributes, and
				finally for describing how to construct the UI (Launch Configuration Tab).
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
				<xs:element minOccurs="0" ref="managed-files"/>
				<xs:element minOccurs="0" ref="on-start-up"/>
				<xs:element minOccurs="0" ref="discover-attributes"/>
				<xs:element name="run-commands">
					<xs:complexType>
						<xs:choice minOccurs="1" maxOccurs="3">
							<xs:element ref="run-interactive"/>
							<xs:element ref="run-batch"/>
							<xs:element ref="run-debug"/>
						</xs:choice>
					</xs:complexType>
				</xs:element>
				<xs:element ref="cancel-job"/>
				<xs:element minOccurs="0" ref="suspend-job"/>
				<xs:element minOccurs="0" ref="resume-job"/>
				<xs:element minOccurs="0" ref="on-shut-down"/>
				<xs:element minOccurs="0" ref="commands"/>
				<xs:element minOccurs="0" ref="parsers"/>
				<xs:element minOccurs="0" ref="script"/>
				<xs:element ref="attribute-definitions"/>
				<xs:element ref="launch-tab"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="property">
		<xs:annotation>
			<xs:documentation>
				The value is any object type; these are set at runtime.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="name" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="managed-files">
		<xs:annotation>
			<xs:documentation>
				List of files to be staged.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
			   <xs:element name="file-source-location" minOccurs="0" type="xs:string"/>
				<xs:element name="file-staging-location" minOccurs="0" type="xs:string"/>
				<xs:element maxOccurs="unbounded" ref="managed-file"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="managed-file">
		<xs:annotation>
			<xs:documentation>
				If 'contents' is present, the file is written.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="contents" minOccurs="0" type="xs:string"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string"/>
			<xs:attribute name="uniqueIdSuffix" type="xs:boolean"/>
			<xs:attribute name="deleteAfterUse" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="on-start-up">
		<xs:annotation>
			<xs:documentation>
				Arbitrary commands which need to be run on startup.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="command-ref"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="discover-attributes">
		<xs:annotation>
			<xs:documentation>
				A command for retrieving (if possible) attributes defined by the service dynamically.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="command-ref"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="run-interactive">
		<xs:annotation>
			<xs:documentation>
				The command(s) for running interactive jobs.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="command-ref"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="run-batch">
		<xs:annotation>
			<xs:documentation>
				The command(s) for running jobs through the scheduler.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="command-ref"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="run-debug">
		<xs:annotation>
			<xs:documentation>
				The command(s) for running debug jobs.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="command-ref"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="cancel-job">
		<xs:annotation>
			<xs:documentation>
				The command(s) for cancelling or killing jobs.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="command-ref"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="suspend-job">
		<xs:annotation>
			<xs:documentation>
				The command(s) for suspending jobs.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="command-ref"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="resume-job">
		<xs:annotation>
			<xs:documentation>
				The command(s) for restarting suspended jobs.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="command-ref"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="on-shut-down">
		<xs:annotation>
			<xs:documentation>
				Arbitrary commands which need to be run on startup.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="command-ref"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="commands">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="command"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="parsers">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="stream-parser"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="script">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" ref="directive-definitions"/>
				<xs:element minOccurs="0" ref="environment-definitions"/>
				<xs:element minOccurs="0" ref="pre-execute-commands"/>
				<xs:element ref="execute-command"/>
				<xs:element minOccurs="0" ref="post-execute-commands"/>
			</xs:sequence>
			<xs:attribute name="shell" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="directive-definitions">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="directive-definition"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="directive-definition">
		<xs:annotation>
			<xs:documentation>
				'ValueFrom' refers to properties in the resource manager environment.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:attribute name="valueFrom"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="environment-definitions">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="environment-definition"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="environment-definition">
		<xs:annotation>
			<xs:documentation>
				'ValueFrom' refers to properties in the resource manager environment.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:attribute name="valueFrom"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="pre-execute-commands">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="command" maxOccurs="unbounded" type="xs:string"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="execute-command">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="command"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="post-execute-commands">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="command" type="xs:string"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="attribute-definitions">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="command" maxOccurs="unbounded" type="xs:string"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="job-attribute">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="description" type="xs:string"/>
				<xs:element name="tooltip" minOccurs="0" type="xs:string"/>
				<xs:element name="choice" minOccurs="0" type="xs:string">
					<xs:annotation>
						<xs:documentation>
							A a comma-delimited set of values.
						</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="default" minOccurs="0" type="xs:string"/>
				<xs:element minOccurs="0" ref="validator"/>
			</xs:sequence>
			<xs:attribute name="id" use="required" type="xs:string"/>
			<xs:attribute name="name" use="required" type="xs:string"/>
			<xs:attribute name="type" use="required" type="xs:string"/>
			<xs:attribute name="basic" type="xs:boolean">
				<xs:annotation>
					<xs:documentation>
						Indicates if this attribute is part of a basic (required) set, or if it is an (advanced) option.
					</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="min" type="xs:int"/>
			<xs:attribute name="max" type="xs:int"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="command-ref" type="xs:string"/>
	<xs:element name="parser-ref" type="xs:string"/>
	<xs:element name="command">
		<xs:complexType mixed="true">
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="arglist"/>
				<xs:element minOccurs="0" maxOccurs="2" ref="parser-ref"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string"/>
			<xs:attribute name="displayStdout" type="xs:boolean"/>
			<xs:attribute name="displayStderr" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="arglist">
		<xs:complexType mixed="true">
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="arg"/>
			</xs:sequence>
			<xs:attribute name="dynamicAppend" type="xs:boolean">
				<xs:annotation>
					<xs:documentation>
						Iterate over all dynamic attributes, appending the sequence of args for each attribute.
					</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="arg" type="xs:string">
		<xs:annotation>
			<xs:documentation>
				The text of the argument will be parsed for references to the resource manager environment; e.g., ${a}, v=${v},
				etc. By convention, ${@name} and ${@value} will refer to a given dynamic attribute name and value (of undefined position i in the
				list).
			</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="stream-parser">
		<xs:annotation>
			<xs:documentation>
				These are attached to the stdout or stderr streams in order to capture the output of the command and add values
				into the resource manager environment. It is understood that a parser tokenization is a list of matching tokens.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="parse-lines" type="xs:string">
					<xs:annotation>
						<xs:documentation>
							Which lines of output should be examined. Indicated by single numerical value, comma-delimited list, or
							colon-delimited range; by convention, N = total number of lines returned. The parser will detach itself from the stream once the
							last line indicated here is seen.
						</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element maxOccurs="unbounded" ref="token"/>
				<xs:element maxOccurs="unbounded" ref="put"/>
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string"/>
			<xs:attribute name="stderr" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="put">
		<xs:annotation>
			<xs:documentation>
				Value assigned to the name is the token with the given index in the returned list; a put without index assigns the
				entire list to the name.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="name" use="required" type="xs:string"/>
			<xs:attribute name="index" type="xs:integer"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="token">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" ref="token"/>
			</xs:sequence>
			<xs:attribute name="delim" use="required"/>
			<xs:attribute name="return" use="required" type="xs:string">
				<xs:annotation>
					<xs:documentation>
						Indicates which segments generated by the tokenization should be returned; can be a single numerical value,
						comma-delimited list, or colon-delimited range; by convention, N = total number of segments created.
					</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="validator">
		<xs:annotation>
			<xs:documentation>
				A regular expression or an acl used to validate an attribute value.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:choice>
					<xs:element name="regex" type="xs:string"/>
					<xs:element name="acl" type="xs:string"/>
				</xs:choice>
				<xs:element name="error-message" minOccurs="0" type="xs:string"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="launch-tab">
		<xs:annotation>
			<xs:documentation>
				This is a recursive description of the main UI element associated with the control part, the Launch Tab. NOTE: I
				do not as yet know how many of the underlying widget options need to be exposed here for effective building in the createControl
				method. What follows is minimal.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="tab-controller"/>
			</xs:sequence>
			<xs:attribute name="advancedModeEnabled" type="xs:boolean">
				<xs:annotation>
					<xs:documentation>
						If this is set to true, a tab-controller which allows the user to browse the local file system and/or workspace
						to open and edit a custom batch script will be created; this will include copy and renaming buttons.
					</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="tab-controller">
		<xs:annotation>
			<xs:documentation>
				as in: org.eclipse.ptp.rm.ui.launch.ExtendableRMLaunchConfigurationDynamicTab; a top-level "switch" between views.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="title" type="xs:string"/>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="group"/>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="tab-folder"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="tab-folder">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="title" type="xs:string"/>
				<xs:element maxOccurs="unbounded" ref="tab-item"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="tab-item">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="title" type="xs:string"/>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="group"/>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="tab-folder"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="group">
		<xs:annotation>
			<xs:documentation>
				We may want a few tweaks here, such as borders, etc. Dynamic attribute means this group gets rebuilt if there is a
				button allowing the user to select displayed attributes.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="title" type="xs:string"/>
				<xs:choice>
					<xs:choice maxOccurs="unbounded">
						<xs:element ref="group"/>
						<xs:element ref="tab-folder"/>
						<xs:element ref="widget"/>
					</xs:choice>
					<xs:element ref="discovered-attributes"/>
					<xs:element ref="all-attributes"/>
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="border" type="xs:string"/>
			<xs:attribute name="columns" type="xs:integer"/>
			<xs:attribute name="dynamic" type="xs:boolean"/>
			<xs:attribute name="scrollable" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="all-attributes">
		<xs:annotation>
			<xs:documentation>
				Indicates that all the attributes defined at initialization and runtime be placed in this group.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="single-table" minOccurs="0">
					<xs:annotation>
						<xs:documentation>
							The presence of this element indicates all attributes should be placed in a single table; otherwise, attributes
							are mapped serially to widgets by type.
						</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:attribute name="checkbox" type="xs:boolean"/>
						<xs:attribute name="editable" type="xs:boolean"/>
					</xs:complexType>
				</xs:element>
				<xs:element name="include">
					<xs:complexType>
						<xs:attribute name="headers" type="xs:boolean"/>
						<xs:attribute name="sort" type="xs:boolean"/>
						<xs:attribute name="name" type="xs:boolean"/>
						<xs:attribute name="tooltip" type="xs:boolean"/>
						<xs:attribute name="description" type="xs:boolean"/>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="discovered-attributes">
		<xs:annotation>
			<xs:documentation>
				Indicates that all the attributes defined at runtime be placed in this group.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="single-table" minOccurs="0">
					<xs:annotation>
						<xs:documentation>
							The presence of this element indicates all attributes should be placed in a single table; otherwise, attributes
							are mapped serially to widgets by type.
						</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:attribute name="checkbox" type="xs:boolean"/>
						<xs:attribute name="editable" type="xs:boolean"/>
					</xs:complexType>
				</xs:element>
				<xs:element name="include">
					<xs:complexType>
						<xs:attribute name="headers" type="xs:boolean"/>
						<xs:attribute name="sort" type="xs:boolean"/>
						<xs:attribute name="name" type="xs:boolean"/>
						<xs:attribute name="tooltip" type="xs:boolean"/>
						<xs:attribute name="description" type="xs:boolean"/>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="widget">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="label" minOccurs="0" type="xs:string"/>
				<xs:element name="tooltip" minOccurs="0" type="xs:string"/>
				<xs:element name="content">
					<xs:annotation>
						<xs:documentation>
							The text of this element will be parsed for references to the resource manager environment; e.g., ${a},
							version-${b}, etc.
						</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element ref="arglist"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="saveValueTo" type="xs:string">
					<xs:annotation>
						<xs:documentation>
							The text of this element will be the name of a property
						</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="type" default="text">
				<xs:annotation>
					<xs:documentation>
						Custom, fixed widgets:
						1. select-attributes: push button which brings up wizard exposing attribute names with
						checkboxes, allowing dynamic groups to be rebuilt.
						2. show-script: push button which displays the batch script as it would
						currently be submitted.
					</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="label"/> <!-- automatically read-only -->
						<xs:enumeration value="text"/>
						<xs:enumeration value="pushButton"/> <!-- automatically read-only -->
						<xs:enumeration value="radioButton"/> <!-- automatically read-only -->
						<xs:enumeration value="spinner"/>
						<xs:enumeration value="checkbox"/> <!-- automatically read-only -->
						<xs:enumeration value="combo"/>
						<xs:enumeration value="browseButton"/>
						<xs:enumeration value="table"/>
						<xs:enumeration value="selectAttributes"/> <!-- automatically read-only -->
						<xs:enumeration value="showScript"/> <!-- automatically read-only -->
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="readOnly" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="monitor">
		<xs:annotation>
			<xs:documentation>
				I have for the moment left this undefined.
			</xs:documentation>
		</xs:annotation>
	</xs:element>
</xs:schema>


I have not yet decided whether it will be simpler (or more efficient) to use JAXB runtime to build the actual instance objects from valid instances of the XML, or whether we just might want to parse it in using a DOM parser and then pull from it as necessary.


PBS RM XML

This is a working document in progress, just as the XSD above Revision 1 25/01/2011

<?xml version="1.0" encoding="UTF-8"?>
<resource-manager name="rm-pbs-torque_2.3.7">
	<control>
		<!-- all attribute names and parser ids are added at initialization -->
		<!-- included from runtime configuration information -->
		<property name="remote.host"/>
		<property name="user.name"/>
		<property name="remote.home"/>
		<!-- from the monitoring part -->
		<property name="available_queues"/>
		<!-- from the launch command stdout parser -->
		<property name="jobId"/>
		<!-- from the other Run Configuration tabs -->
		<property name="executablePath"/>
		<property name="progArgs"/>
		<property name="directory"/>
		<!-- no generalized way describe how to set this -->
		<property name="mpiCores"/>
		<managed-files>
			<file-staging-location>${remote.home}/.eclipse</file-staging-location>
         <managed-file name="pbs_script" uniqueIdSuffix="true" deleteAfterUse="true">
            <content>${script}</content>
         </managed-file>
		</managed-files>
		<run-commands>
			<run-batch>
				<command-ref>submit_script</command-ref>
			</run-batch>
		</run-commands>
		<cancel-job>
			<command-ref>cancel_job</command-ref>
		</cancel-job>
		<commands>
			<command name="submit_script">
				<arglist>
					<arg>qsub</arg>
					<arg>${remote.home}/.eclipse/${scriptName}</arg>
				</arglist>
				<parser-ref>jobIdParser</parser-ref>
			</command>
			<command name="cancel_job">
				<arglist>
					<arg>qdel</arg>
					<arg>${jobId}</arg>
				</arglist>
			</command>
		</commands>
		<parsers>
			<stream-parser name="jobIdParser" stderr="false">
				<parse-lines>n-1</parse-lines>
				<token delim="[.]" return="0"/>
				<put name="jobId" index="0"/>
			</stream-parser>
		</parsers>
		<script shell="#!/bin/bash">
			<directive-definitions>
				<directive-definition valueFrom="PBSJOB_Account_Name"># @ PBS -A </directive-definition>
				<directive-definition valueFrom="PBSJOB_Checkpoint"># @ PBS -c </directive-definition>
				<directive-definition valueFrom="PBSJOB_depend"># @ PBS -W depend=</directive-definition>
				<directive-definition valueFrom="PBSJOB_destination"># @ PBS -q </directive-definition>
				<directive-definition valueFrom="PBSJOB_directive"># @ PBS -C </directive-definition>
				<directive-definition valueFrom="PBSJOB_Error_Path"># @ PBS -e </directive-definition>
				<directive-definition valueFrom="PBSJOB_export_all"># @ PBS -V </directive-definition>
				<directive-definition valueFrom="PBSJOB_group_list"># @ PBS -W group_list=</directive-definition>
				<directive-definition valueFrom="PBSJOB_Hold_Types"># @ PBS -h </directive-definition>
				<directive-definition valueFrom="PBSJOB_Job_Name"># @ PBS -N </directive-definition>
				<directive-definition valueFrom="PBSJOB_Join_Path"># @ PBS -j </directive-definition>
				<directive-definition valueFrom="PBSJOB_Keep_Files"># @ PBS -k </directive-definition>
				<directive-definition valueFrom="PBSJOB_Mail_Points"># @ PBS -m </directive-definition>
				<directive-definition valueFrom="PBSJOB_Mail_Users"># @ PBS -M </directive-definition>
				<directive-definition valueFrom="PBSJOB_Output_Path"># @ PBS -o </directive-definition>
				<directive-definition valueFrom="PBSJOB_Priority"># @ PBS -p </directive-definition>
				<directive-definition valueFrom="PBSJOB_Rerunnable"># @ PBS -r </directive-definition>
				<directive-definition valueFrom="PBSJOB_Resource_List.arch"># @ PBS -l arch= </directive-definition>
				<directive-definition valueFrom="PBSJOB_Resource_List.cput"># @ PBS -l cput= </directive-definition>
				<directive-definition valueFrom="PBSJOB_Resource_List.file"># @ PBS -l file= </directive-definition>
				<directive-definition valueFrom="PBSJOB_Resource_List.host"># @ PBS -l host= </directive-definition>
				<directive-definition valueFrom="PBSJOB_Resource_List.mem"># @ PBS -l mem= </directive-definition>
				<directive-definition valueFrom="Resource_List.nice"># @ PBS -l nice= </directive-definition>
				<directive-definition valueFrom="Resource_List.nodes"># @ PBS -l nodes= </directive-definition>
				<directive-definition valueFrom="Resource_List.ompthreads"># @ PBS -l ompthreads= </directive-definition>
				<directive-definition valueFrom="PBSJOB_Resource_List.pcput"># @ PBS -l pcput= </directive-definition>
				<directive-definition valueFrom="PBSJOB_Resource_List.pmem"># @ PBS -l pmem= </directive-definition>
				<directive-definition valueFrom="PBSJOB_Resource_List.pvmem"># @ PBS -l pvmem= </directive-definition>
				<directive-definition valueFrom="PBSJOB_Resource_List.vmem"># @ PBS -l vmem= </directive-definition>
				<directive-definition valueFrom="PBSJOB_Resource_List.walltime"># @ PBS -l walltime= </directive-definition>
				<directive-definition valueFrom="PBSJOB_Shell_Path_List"># @ PBS -S </directive-definition>
				<directive-definition valueFrom="PBSJOB_stagein"># @ PBS -W stagein= </directive-definition>
				<directive-definition valueFrom="PBSJOB_stageout"># @ PBS -W stageout= </directive-definition>
				<directive-definition valueFrom="PBSJOB_User_List"># @ PBS -u </directive-definition>
				<directive-definition valueFrom="PBSJOB_Variable_List"># @ PBS -v </directive-definition>
			</directive-definitions>
			<pre-execute-commands>
				<command>cd ${directory}</command>
			</pre-execute-commands>
			<execute-command>${mpiCommand} ${mpiArgs} ${executablePath} ${progArgs}</execute-command>
			<pre-execute-commands>
				<command>touch DONE</command>
			</pre-execute-commands>
		</script>
		<attribute-defintions>
			<job-attribute id="mpiCommand" name="mpiCommand" basic="true" type="choice">
				<description>Which mpi command to use.</description>
				<choice>,mpiexec,mpirun</choice>
			</job-attribute>
			<job-attribute id="mpiCores" name="mpiCores" basic="true" type="integer">
				<description>the '-np' value</description>
			</job-attribute>
			<job-attribute id="mpiArgs" name="mpiArgs" basic="true" type="string">
				<description>Which mpi options to use.</description>
				<default>-machinefile $PBS_NODEFILE -np ${mpiCores}</default>
			</job-attribute>
			<job-attribute id="PBSJOB_Account_Name" name="Account_Name" basic="true" type="string">
				<description>Account to which to charge this job.</description>
				<tooltip>Format: string</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Checkpoint" name="Checkpoint" type="choice">
				<description>Determines when checkpointing (if supported) will be performed by PBS on behalf of the job.</description>
				<default>u</default>
				<choice>,u,n,s,c,c=????</choice>
				<tooltip>Format: the strings "n" (no checkpointing), "s" (to be performed only when the server executing the job is shutdown), "c"s
					(to be performed at the default minimum time for thes servers executing the job), "c=mmmm" (to be performed at an intervals ofs
					minutess whichs is the integer number of minutes of CPUs time used bys the job; values must be greater than zero); defaults value:
					"u", whichs iss unspecified.
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_depend" name="depend" type="string">
				<description>The type of inter-job dependencies specified by the job owner.</description>
				<tooltip>Format: "type:jobid[,jobid...]"; default value: no dependencies.</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_destination" name="destination" type="string" basic="true">
				<description>Designation of the queue to which to submit the job.</description>
				<tooltip>Format: queue[@server].</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_directive" name="directive" type="string">
				<description>Defines the prefix that declares a directive to the qsub command within the script file.</description>
				<tooltip>See the paragraph on script directives in the Extended Description section. If the option is presented with a
					directive_prefix argument that is the null string, qsub will not scan the script file for directives.
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Error_Path" name="Error_Path" type="string">
				<description>The final path name for the file containing the job's standard error stream.</description>
				<tooltip>Format: "[hostname:]pathname". If the option is not specified, the default file name for the standard error stream will be
					used. The default name has the following form: job_name.eSeq_num where job_name is the name of the job, see -N option, and Seq_num
					is the job number assigned when the job is submitted; default value: (job_name).e(job_number).
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_export_all" name="export_all" basic="true" type="boolean">
				<description>Declares that all environment variables in the qsub command's environment are to be exported to the batch job.
				</description>
				<default>true</default>
			</job-attribute>
			<job-attribute id="PBSJOB_group_list" name="group_list" type="string">
				<description>A list of group_names@hosts which determines the group under which the job is run on a given host.</description>
				<tooltip>Format: group_name[@host][,group_name[@host]...]. When a job is to be placed into execution, the server will select a
					group
					name according to the following ordered set of rules: 1) Select the group name from the list for which the associated host
					name
					matches the name of the execution host; 2) Select the group name which has no associated host name, the wildcard name; 3) Use
					the
					login group for the username under which the job will be run.
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Hold_Types" name="Hold_Types" type="choice">
				<description>The set of holds currently applied to the job.</description>
				<choice>,u,s,o</choice>
				<tooltip>If the set is not null, the job will not be scheduled for execution and is said to be in the hold state. Note, the hold
					state takes precedence over the wait state. Format: string made up of the letters 'u', 's', 'o'; default value: no hold.
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Job_Name" name="Job_Name" type="string" basic="true">
				<description>The name assigned to the job by the qsub or qalter command.</description>
				<tooltip>Format: string up to 15 characters, first character must be alphabetic; default value: the base name of the job script or
					STDIN.
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Join_Path" name="Join_Path" type="boolean">
				<description>Merge stdout and stderr into stdout.</description>
				<default>false</default>
				<tooltip>Format: boolean, values accepted are "True", "TRUE", "true", "Y", "y", "1", "False", "FALSE", "false", "N", "n", "0";
					default value: false.
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Keep_Files" name="Keep_Files" type="choice">
				<description>Retain these streams on the execution host upon job termination.</description>
				<choice>,o,e,oe,eo</choice>
				<tooltip>Format: "o", "e", "oe" or "eo"; default value: no keep, return files to submission host.</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Mail_Points" name="Mail_Points" type="choice">
				<description>Identifies at which state changes the server will send mail about the job.</description>
				<default>a</default>
				<choice>,a,b</choice>
				<tooltip>Format: string made up of the letters 'a' for abort, 'b' for beginning, and default value: 'a', send on job abort.
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Mail_Users" name="Mail_Users" type="string">
				<description>The set of users to whom mail may be sent when the job makes certain state changes.</description>
				<tooltip>Format: "user@host[,user@host]"; default value: job owner only.</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Output_Path" name="Output_Path" type="string">
				<description>The final path name for the file containing the job's standard output stream.</description>
				<tooltip>Format: "[hostname:]pathname". If the option is not specified, the default file name for the standard error stream will be
					used. The default name has the following form: job_name.oSeq_num where job_name is the name of the job, see -N option, and Seq_num
					is the job number assigned when the job is submitted; default value: (job_name).o(job_number).
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Priority" name="Priority" type="string">
				<description>The job scheduling priority assigned by the user.</description>
				<tooltip>Format: "[+|-]nnnnn"; default value: undefined.</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Rerunnable" name="Rerunnable" type="choice">
				<description>The rerunnable flag assigned by the user.</description>
				<default>y</default>
				<choice>,n,y</choice>
				<tooltip>Format: "y" or "n", see Join_Path; default value: y, job is rerunable.</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Resource_List.arch" name="Resource_List.arch" type="string">
				<description>Specifies the administrator defined system architecture requried.</description>
				<tooltip>This defaults to whatever the PBS_MACH string is set to in "local.mk". Units: string.</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Resource_List.cput" name="Resource_List.cput" type="string">
				<description>Maximum amount of CPU time used by all processes in the job.</description>
				<tooltip>Format: [[hours:]minutes:]seconds[.milliseconds].</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Resource_List.file" name="Resource_List.file" type="string">
				<description>The largest size of any single file that may be created by the job.</description>
				<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
					(kilo), mb/mw (mega), gb/bw (giga).
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Resource_List.host" name="Resource_List.host" type="string">
				<description>Name of host on which job should be run.</description>
			</job-attribute>
			<job-attribute id="PBSJOB_Resource_List.mem" name="Resource_List.mem" type="string">
				<description>Maximum amount of memory used by all concurrent processes in the job.</description>
				<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
					(kilo), mb/mw (mega), gb/bw (giga).
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Resource_List.nice" name="Resource_List.nice" type="integer">
				<description>The nice value under which the job is to be run.</description>
				<default>0</default>
				<min>0</min>
				<max>10</max>
				<tooltip>0 to 10.</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Resource_List.nodes" name="Resource_List.nodes" basic="true" type="string">
				<description>Number and/or type of nodes to be reserved for exclusive use by the job.</description>
				<default>1</default>
				<tooltip>The value is one or more node_specs joined with the '+' character, "node_spec[+node_spec...]. Each node_spec is a number
					of
					nodes required of the type declared in the node_spec and a name or one or more properity or properities desired for the nodes.
					The
					number, the name, and each properity in the node_spec are separated by a colon ':'. If no number is specified, one (1) is
					assumed.
					Units: string. The name of a node is its hostname. The properties of nodes are: ppn=# requested; defaults to 1; or an
					arbitrary
					string defined by system administrator. Example: To ask for 2 processors on each of two blue nodes and three processors
					on one red
					node: -l nodes=2:blue:ppn=2+red:ppn=3.
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Resource_List.ompthreads" name="Resource_List.ompthreads" type="integer">
				<description>Number of threads per processor for Open MP jobs.</description>
				<default>1</default>
				<min>1</min>
			</job-attribute>
			<job-attribute id="PBSJOB_Resource_List.pcput" name="Resource_List.pcput" type="string">
				<description>Maximum amount of CPU time used by any single process in the job.</description>
				<tooltip>Format: [[hours:]minutes:]seconds[.milliseconds].</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Resource_List.pmem" name="Resource_List.pmem" type="string">
				<description>Maximum amount of physical memory (workingset) used by any single process of the job.</description>
				<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
					(kilo), mb/mw (mega), gb/bw (giga).
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Resource_List.pvmem" name="Resource_List.pvmem" type="string">
				<description>Maximum amount of virtual memory used by any single process in the job.</description>
				<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
					(kilo), mb/mw (mega), gb/bw (giga).
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Resource_List.vmem" name="Resource_List.vmem" type="string">
				<description>Maximum amount of virtual memory used by all concurrent processes in the job.</description>
				<tooltip>Format: integer[suffix]; the suffix is a multiplier in bytes or words (word size of the host): b (bytes), w (words), kb/kw
					(kilo), mb/mw (mega), gb/bw (giga).
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Resource_List.walltime" name="Resource_List.walltime" basic="true" type="string">
				<description>Maximum amount of real time during which the job can be in the running state.</description>
				<default>00:30:00</default>
				<tooltip>Format: [[hours:]minutes:]seconds[.milliseconds].</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Shell_Path_List" name="Shell_Path_List" type="string">
				<description>A set of absolute paths of the program to process the job's script file.</description>
				<tooltip>Format: path[@host][,path[@host]...]. If this is null, then the user's login shell on the host of execution will be used.
					Default value: null, login shell.
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_stagein" name="stagein" type="string">
				<description>The list of files to be staged in prior to job execution.</description>
				<tooltip>Format: local_path@remote_host:remote_path.</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_stageout" name="stageout" type="string">
				<description>The list of files to be staged out after job execution.</description>
				<tooltip>Format: local_path@remote_host:remote_path.</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_User_List" name="User_List" type="string">
				<description>The list of user@hosts which determines the user name under which the job is run on a given host.</description>
				<tooltip>When a job is to be placed into execution, the server will select a user name from the list according to the following
					ordered set of rules: 1) Select the user name from the list for which the associated host name matches the name of the execution
					host; 2) Select the user name which has no associated host name, the wild card name; 3) Use the Job_Owner as the user name.
					Default
					value: job owner name.
				</tooltip>
			</job-attribute>
			<job-attribute id="PBSJOB_Variable_List" name="Variable_List" type="string">
				<description>This is the list of environment variables passed with the Queue Job batch request.</description>
			</job-attribute>
		</attribute-defintions>
		<launch-tab advancedModeEnabled="true">
			<tab-controller>
				<title>Standard</title>
				<group columns="2">
					<title>Script Configuration</title>
					<widget type="selectAttributes">
						<tooltip>Choose the attributes to display in the Detailed Tab.</tooltip>
					</widget>
					<widget type="showScript" readOnly="true">
						<tooltip>Show the batch script as it would currently be submitted.</tooltip>
					</widget>
				</group>
				<tab-folder>
					<title>Job Settings</title>
					<tab-item>
						<title>Basic</title>
						<group columns="3">
							<!-- row 1 -->
							<widget type="text">
								<label>Job Name: </label>
								<tooltip>${PBSJOB_Job_Name[tooltip]}</tooltip>
								<content>
									<arglist>
										<arg>${PBSJOB_Job_Name[value]}</arg>
									</arglist>
								</content>
								<saveValueTo>PBSJOB_Job_Name</saveValueTo>
							</widget>
							<widget type="label">
								<content>
									<arglist>
										<arg>${PBSJOB_Job_Name[description]}</arg>
									</arglist>
								</content>
							</widget>
							<!-- row 2 -->
							<widget type="combo" readOnly="true">
								<label>Queue: </label>
								<tooltip>${PBSJOB_destination[tooltip]}</tooltip>
								<content>
									<arglist>
										<arg>${available_queues}</arg>
									</arglist>
								</content>
								<saveValueTo>PBSJOB_destination</saveValueTo>
							</widget>
							<widget type="label">
								<content>
									<arglist>
										<arg>${PBSJOB_destination[description]}</arg>
									</arglist>
								</content>
							</widget>
							<!-- row 3 -->
							<widget type="text">
								<label>Nodes: </label>
								<tooltip>${Resource_List.nodes[tooltip]}</tooltip>
								<content>
									<arglist>
										<arg>${Resource_List.nodes[value]}</arg>
									</arglist>
								</content>
								<saveValueTo>Resource_List.nodes</saveValueTo>
							</widget>
							<widget type="label">
								<content>
									<arglist>
										<arg>${Resource_List.nodes[description]}</arg>
									</arglist>
								</content>
							</widget>
							<!-- row 4 -->
							<widget type="text">
								<label>Wallclock Time</label>
								<tooltip>${PBSJOB_Resource_List.walltime[tooltip]}</tooltip>
								<content>
									<arglist>
										<arg>${PBSJOB_Resource_List.walltime[value]}</arg>
									</arglist>
								</content>
								<saveValueTo>PBSJOB_Resource_List.walltime</saveValueTo>
							</widget>
							<widget type="label">
								<content>
									<arglist>
										<arg>${PBSJOB_Resource_List.walltime[description]}</arg>
									</arglist>
								</content>
							</widget>
							<!-- row 5 -->
							<widget type="combo" readOnly="true">
								<label>MPI Command: </label>
								<content>
									<arglist>
										<arg>mpiCommand</arg>
									</arglist>
								</content>
							</widget>
							<widget type="label">
								<content>
									<arglist>
										<arg>MPI executable to use</arg>
									</arglist>
								</content>
							</widget>
						</group>
					</tab-item>
					<tab-item>
						<title>Detailed</title>
						<group dynamic="true" scrollable="true" columns="3">
							<!-- iterates through all registered attributes, one to a row -->
							<all-attributes>
								<include sort="true" headers="true" name="true" tooltip="true" description="true"/>
							</all-attributes>
						</group>
					</tab-item>
				</tab-folder>
			</tab-controller>
		</launch-tab>
	</control>
	<monitor>
	</monitor>
</resource-manager>

Back to the top