blob: 72d8f6b90bb5df5267f1f838c4a0266de7d64de4 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!-- ******************************************************************************* -->
<!-- * Copyright (c) 2011 University of Illinois. All rights reserved. -->
<!-- * This program and the accompanying materials are made available under the -->
<!-- * terms of the Eclipse Public License v1.0 which accompanies this distribution, -->
<!-- * and is available at http://www.eclipse.org/legal/epl-v10.html -->
<!-- * -->
<!-- * Contributors: -->
<!-- * Al Rossi - Design and implementation -->
<!-- * Galen Arnold - Adapted to mvapich2 -->
<!-- * Jeff Overbey - Adapted to Grid Engine -->
<!-- ******************************************************************************* -->
<resource-manager-builder
xmlns="http://eclipse.org/ptp/rm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://eclipse.org/ptp/rm http://eclipse.org/ptp/schemas/v1.1/rm.xsd"
name="edu.utexas.tacc.ranger.sge.batch.xml">
<control-data>
<!-- (Required) This attribute is required by LML. Link it to the batch-specific variable name. -->
<attribute name="control.queue.name" visible="false">
<link-value-to>destination</link-value-to>
</attribute>
<!-- (Required) Used by RM internals for fetch. Name is fixed by convention -->
<attribute name="stdout_remote_path" visible="false">
<default>${ptp_rm:directory#value}/${ptp_rm:Job_Name#value}.o${ptp_rm:@jobId#default}</default>
<link-value-to>Output_Path</link-value-to>
</attribute>
<!-- (Required) Useded by RM internals for fetch. Name is fixed by convention -->
<attribute name="stderr_remote_path" visible="false">
<default>${ptp_rm:directory#value}/${ptp_rm:Job_Name#value}.e${ptp_rm:@jobId#default}</default>
<link-value-to>Error_Path</link-value-to>
</attribute>
<!-- This is prepended to qconf, qsub, qdel, and showq below.
Set the default value of this attribute if Grid Engine is not in the user's PATH. -->
<attribute name="bindir" visible="false"/>
<!-- List of queues. Set by <start-up-command> below. Invisible since the values are not modifiable. -->
<attribute name="queues" visible="false"/>
<attribute name="Output_Path" type="string"><!-- Linked to stdout_remote_path attribute above --><!-- Not in UI -->
<description>The final path name for the file containing the job's standard output stream.</description>
<tooltip><![CDATA[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>
</attribute>
<attribute name="Error_Path" type="string"><!-- Linked to stderr_remote_path attribute above --><!-- Not in UI -->
<description>The final path name for the file containing the job's standard error stream.</description>
<tooltip><![CDATA[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>
</attribute>
<attribute name="destination" type="string"><!-- Linked to control.queue.name attribute above -->
<description>Designation of the queue to which to submit the job.</description>
<tooltip>Format: queue[@server].</tooltip>
<default>normal</default>
<validator>
<regex expression="[\S]+"/>
<error-message>cannot be empty</error-message>
</validator>
</attribute>
<attribute name="mpiCommand" type="choice">
<description>Command used to run MPI jobs.</description>
<choice>,ibrun,ibrun tacc_affinity</choice>
<default>ibrun</default>
</attribute>
<attribute name="Account_Name" type="string">
<description>Account to which to charge this job.</description>
<tooltip>Format: string</tooltip>
<validator>
<regex expression="[\S]*"/>
<error-message>must not contain spaces</error-message>
</validator>
</attribute>
<attribute name="export_all" type="boolean" translateBooleanAs="-V, ">
<description><![CDATA[All variables in the qsub command's environment are to be exported to the batch job.]]></description>
<default>-V</default>
</attribute>
<attribute name="Job_Name" type="string">
<description>The name assigned to the job by the qsub or qalter command.</description>
<tooltip><![CDATA[Format: string up to 15 characters,
first character must be alphabetic; default value:
the base name of the job script or STDIN.]]></tooltip>
<default>ptp_job</default>
<validator>
<regex expression="[a-zA-Z_][0-9a-zA-Z_]*"/>
<error-message>must be at least one alphanumeric character</error-message>
</validator>
</attribute>
<attribute name="Join_Path" type="boolean" translateBooleanAs="yes,no">
<description>Merge stdout and stderr into stdout.</description>
<default>no</default>
</attribute>
<attribute 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>
<validator>
<!-- Empty or user [@host] [,user [@host] ] ...-->
<regex expression="|[^\s@,]+(@[^\s@,]+)?(,[^\s@,]+(@[^\s@,]+)?)*"/>
<error-message>must be a comma-separated list of user[@host]</error-message>
</validator>
</attribute>
<attribute name="Resource_List.mem" type="string">
<description>Maximum amount of memory used by all concurrent processes in the job.</description>
<tooltip><![CDATA[Format: Integer number of bytes,
with an optional suffix: K (kilo), M (mega), or G (giga).
Examples: 1048576 or 1024k or 1m]]></tooltip>
<validator>
<!-- Memory format documented in man page for sge_types(1) -->
<regex expression="|[\d]+[kKmMgG]?"/>
<error-message>must be an integer with an optional K, M, or G suffix</error-message>
</validator>
</attribute>
<attribute name="Resource_List.pe" type="string">
<description>Parallel environment to instantiate. Ranger has 16 cores per node.
"16way 32" gives 16 MPI tasks per node and 32 total cores (2 nodes).
16way environments are recommended for MPI jobs. Use "1way 16" for serial jobs.</description>
<tooltip><![CDATA[The range (i.e., the second number) must
be a positive multiple of 16.)]]></tooltip>
<choice>1way 16,2way 16,4way 16,8way 16,16way 16,16way 32,16way 48,16way 64,16way 96,16way 128,16way 256,16way 512,16way 1024,16way 2048,16way 4096,16way 8192,16way 16384</choice>
<default>16way 16</default>
<validator>
<regex expression="[\d]+way[\s]+[\d]+"/>
<error-message>must be &quot;Nway M&quot;, where N is the number of tasks per node and M is the total number of cores (i.e., number of nodes times 16)</error-message>
</validator>
</attribute>
<attribute name="Resource_List.walltime" type="string">
<description>Maximum amount of real time during which the job can be in the running state.</description>
<tooltip>Format: [[hours:]minutes:]seconds[.milliseconds].</tooltip>
<default>00:30:00</default>
<validator>
<regex expression="\d?\d:\d?\d:\d?\d"/>
<error-message>format must be hh:mm:ss</error-message>
</validator>
</attribute>
<!-- ========== -->
<!-- JOB SCRIPT -->
<!-- ========== -->
<script insertEnvironmentAfter="35">
<file-staging-location>${ptp_rm:directory#value}</file-staging-location>
<line>
<arg>#!/bin/bash</arg>
</line>
<line>
<arg isUndefinedIfMatches="#\$ -N">#$ -N ${ptp_rm:Job_Name#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#\$ -A">#$ -A ${ptp_rm:Account_Name#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#\$ -q">#$ -q ${ptp_rm:destination#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#\$ -pe ">#$ -pe ${ptp_rm:Resource_List.pe#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#\$ -l h_data=">#$ -l h_data=${ptp_rm:Resource_List.mem#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#\$ -l h_rt=">#$ -l h_rt=${ptp_rm:Resource_List.walltime#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#\$ -M">#$ -M ${ptp_rm:Mail_Users#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#\$ -j">#$ -j ${ptp_rm:Join_Path#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#\$ -o">#$ -o ${ptp_rm:Output_Path#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#\$ -e">#$ -e ${ptp_rm:Error_Path#value}</arg>
</line>
<line>
<arg isUndefinedIfMatches="#\$">#$ ${ptp_rm:export_all#value}</arg>
</line>
<line><arg resolve="false">cd $SCRATCH</arg></line>
<line><arg>cp ${ptp_rm:executablePath#value} .</arg></line>
<line><arg>MYSCREXE=`basename ${ptp_rm:executablePath#value}`</arg></line>
<line>
<arg>COMMAND=${ptp_rm:mpiCommand#value}</arg>
</line>
<line>
<arg resolve="false">if [ -n "${COMMAND}" ] ; then</arg>
</line>
<line>
<arg resolve="false"> COMMAND="${COMMAND}</arg>
<arg resolve="false"> ${MYSCREXE} </arg>
<arg>${ptp_rm:progArgs#value}"</arg>
</line>
<line>
<arg resolve="false">else</arg>
</line>
<line>
<arg resolve="false"> COMMAND="${MYSCREXE}</arg>
<arg>${ptp_rm:progArgs#value}"</arg>
</line>
<line>
<arg resolve="false">fi</arg>
</line>
<line>
<arg resolve="false">${COMMAND}</arg>
</line>
</script>
<!-- ================= -->
<!-- START-UP COMMANDS -->
<!-- ================= -->
<start-up-command name="get-queues">
<arg>${ptp_rm:bindir#value}qconf</arg>
<arg>-sql</arg>
<stdout-parser delim="\n">
<target ref="queues">
<match>
<expression>([a-zA-Z0-9-_]+)</expression>
<add field="value">
<entry valueGroup="1"/>
</add>
</match>
</target>
</stdout-parser>
</start-up-command>
<!-- ============== -->
<!-- JOB SUBMISSION -->
<!-- ============== -->
<submit-batch name="submit-batch" directory="${ptp_rm:directory#value}" waitForId="true">
<arg>${ptp_rm:bindir#value}qsub</arg>
<arg>${ptp_rm:managed_file_for_script#value}</arg>
<stdout-parser delim="\n" all="true" save="1">
<target ref="@jobId">
<match>
<expression>Your job ([\d]+) .*has been submitted</expression>
<set field="name">
<entry valueGroup="1"/>
</set>
<set field="default">
<entry valueGroup="1"/>
</set>
<set field="value">
<entry value="SUBMITTED"/>
</set>
</match>
</target>
<target ref="@jobId">
<match>
<expression flags="DOTALL|UNIX_LINES">.*ERROR!.*</expression>
<set field="value">
<entry value="FAILED"/>
</set>
</match>
<match>
<expression flags="DOTALL|UNIX_LINES">qsub: Unknown option</expression>
<set field="value">
<entry value="FAILED"/>
</set>
</match>
<match>
<expression flags="DOTALL|UNIX_LINES">.*&gt; Rejecting job &lt;.*</expression>
<set field="value">
<entry value="FAILED"/>
</set>
</match>
<match>
<expression flags="DOTALL|UNIX_LINES">Unable to run job: .*</expression>
<set field="value">
<entry value="FAILED"/>
</set>
</match>
</target>
</stdout-parser>
<stderr-parser delim="\n">
<target ref="@jobId">
<match>
<expression>.*ERROR!.*</expression>
<throw message="Job Submit Failed"/>
</match>
<match>
<expression>qsub: Unknown option</expression>
<throw message="Job Submit Failed"/>
</match>
<match>
<expression>.*&gt; Rejecting job &lt;.*</expression>
<throw message="Job Submit Failed"/>
</match>
<match>
<expression>Unable to run job: .*</expression>
<throw message="Job Submit Failed"/>
</match>
</target>
</stderr-parser>
</submit-batch>
<!-- ========== -->
<!-- JOB STATUS -->
<!-- ========== -->
<get-job-status name="get-job-status" ignoreExitStatus="true">
<arg>${ptp_rm:bindir#value}showq</arg>
<arg>-u</arg>
<stdout-parser delim="\n">
<target ref="@jobId">
<match>
<!-- Example:
JOBID JOBNAME USERNAME STATE CORE WCLIMIT QUEUETIME
================================================================================
346890 myMPI joverbey Waiting 12 00:01:00 Tue Nov 22 10:42:19
WAITING JOBS WITH JOB DEPENDENCIES
JOBID JOBNAME USERNAME STATE CORE WCLIMIT QUEUETIME
================================================================================
UNSCHEDULED JOBS
JOBID JOBNAME USERNAME STATE CORE WCLIMIT QUEUETIME
================================================================================
346887 myMPI joverbey Unsched 12 00:01:00 Tue Nov 22 10:40:26
-->
<!-- JOBID JOBNAME USERNAME STATE ... -->
<expression>${ptp_rm:@jobId#name}[\s]+[\S]+[\s]+[\S]+[\s]+([A-Za-z]+)[\s]+.+</expression>
<set field="value">
<entry valueGroup="1"/>
</set>
</match>
<test op="EQ">
<value>#value</value>
<value>Waiting</value>
<set field="value">
<entry value="QUEUED_ACTIVE"/>
</set>
</test>
<test op="EQ">
<value>#value</value>
<value>DepWait</value>
<set field="value">
<entry value="QUEUED_ACTIVE"/>
</set>
</test>
<test op="EQ">
<value>#value</value>
<value>Idle</value>
<set field="value">
<entry value="QUEUED_ACTIVE"/>
</set>
</test>
<test op="EQ">
<value>#value</value>
<value>Starting</value>
<set field="value">
<entry value="QUEUED_ACTIVE"/>
</set>
</test>
<test op="EQ">
<value>#value</value>
<value>Hold</value>
<set field="value">
<entry value="SYSTEM_ON_HOLD"/>
</set>
</test>
<test op="EQ">
<value>#value</value>
<value>Running</value>
<set field="value">
<entry value="RUNNING"/>
</set>
</test>
<test op="EQ">
<value>#value</value>
<value>Suspended</value>
<set field="value">
<entry value="SUSPENDED"/>
</set>
</test>
<test op="EQ">
<value>#value</value>
<value>Unsched</value>
<set field="value">
<entry value="COMPLETED"/>
</set>
</test>
</target>
</stdout-parser>
<stderr-parser delim="\n">
<target ref="@jobId">
<match>
<expression>.+</expression>
<set field="value">
<entry value="COMPLETED"/>
</set>
</match>
</target>
</stderr-parser>
</get-job-status>
<!-- =============== -->
<!-- JOB TERMINATION -->
<!-- =============== -->
<terminate-job name="cancel" ignoreExitStatus="true">
<arg>${ptp_rm:bindir#value}qdel</arg>
<arg>${ptp_rm:@jobId#name}</arg>
</terminate-job>
<!-- ========================= -->
<!-- USER INTERFACE/LAUNCH TAB -->
<!-- ========================= -->
<launch-tab>
<dynamic>
<title>Grid Engine Settings</title>
<layout>
<grid-layout/>
</layout>
<!-- ATTRIBUTES group -->
<composite group="true">
<layout>
<grid-layout numColumns="4" makeColumnsEqualWidth="false" horizontalSpacing="10" verticalSpacing="15"/>
</layout>
<!-- HEADER -->
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_RED">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Name</fixed-text>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_RED">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" horizontalSpan="2" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Value</fixed-text>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_RED">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>Description</fixed-text>
</widget>
<!-- row 1 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<tooltip>${ptp_rm:Job_Name#tooltip}</tooltip>
<fixed-text>Job Name: </fixed-text>
</widget>
<widget type="text" style="SWT.BORDER" attribute="Job_Name">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="false" widthHint="150"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:Job_Name#description}</fixed-text>
</widget>
<!-- row 2 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<tooltip>${ptp_rm:Account_Name#tooltip}</tooltip>
<fixed-text>Account: </fixed-text>
</widget>
<widget type="text" style="SWT.BORDER" attribute="Account_Name">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="false" widthHint="150"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:Account_Name#description}</fixed-text>
</widget>
<!-- row 3 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<tooltip>${ptp_rm:destination#tooltip}</tooltip>
<fixed-text>Queue: </fixed-text>
</widget>
<widget type="combo" style="SWT.BORDER" readOnly="true" attribute="destination">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="false"/>
</layout-data>
<items-from>queues</items-from>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:destination#description}</fixed-text>
</widget>
<!-- row 4 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<tooltip>${ptp_rm:Resource_List.pe#tooltip}</tooltip>
<fixed-text>Parallel environment: </fixed-text>
</widget>
<widget type="combo" style="SWT.BORDER" readOnly="false" attribute="Resource_List.pe">
<layout-data>
<grid-data widthHint="150" horizontalAlign="SWT.FILL" horizontalSpan="2"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:Resource_List.pe#description}</fixed-text>
</widget>
<!-- row 5 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<tooltip>${ptp_rm:Resource_List.mem#tooltip}</tooltip>
<fixed-text>Total Memory Needed: </fixed-text>
</widget>
<widget type="text" style="SWT.BORDER" attribute="Resource_List.mem">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="false" widthHint="150"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:Resource_List.mem#description}</fixed-text>
</widget>
<!-- row 6 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<tooltip>${ptp_rm:Resource_List.walltime#tooltip}</tooltip>
<fixed-text>Wallclock Time: </fixed-text>
</widget>
<widget type="text" style="SWT.BORDER" attribute="Resource_List.walltime">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="false" widthHint="150"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:Resource_List.walltime#description}</fixed-text>
</widget>
<!-- row 7 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>MPI Launch Command: </fixed-text>
</widget>
<widget type="combo" style="SWT.BORDER" readOnly="false" attribute="mpiCommand">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="false"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:mpiCommand#description}</fixed-text>
</widget>
<!-- row 8 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<tooltip>${ptp_rm:Mail_Users#tooltip}</tooltip>
<fixed-text>Send E-mail To: </fixed-text>
</widget>
<widget type="text" style="SWT.BORDER" attribute="Mail_Users">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="true" widthHint="150"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:Mail_Users#description}</fixed-text>
</widget>
<!-- row 9 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<tooltip>${ptp_rm:Join_Path#tooltip}</tooltip>
<fixed-text>Combine stdout and stderr: </fixed-text>
</widget>
<widget type="checkbox" style="SWT.BORDER" attribute="Join_Path">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="false"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:Join_Path#description}</fixed-text>
</widget>
<!-- row 10 -->
<widget type="label" style="SWT.LEFT">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<tooltip>${ptp_rm:export_all#tooltip}</tooltip>
<fixed-text>Export Environment: </fixed-text>
</widget>
<widget type="checkbox" style="SWT.BORDER" attribute="export_all">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" horizontalSpan="2" grabExcessHorizontal="false"/>
</layout-data>
</widget>
<widget type="label" style="SWT.LEFT" foreground="SWT.COLOR_DARK_BLUE">
<layout-data>
<grid-data horizontalAlign="SWT.BEGINNING" grabExcessHorizontal="false"/>
</layout-data>
<fixed-text>${ptp_rm:export_all#description}</fixed-text>
</widget>
</composite>
</dynamic>
<import title="Import Grid Engine Script">
<export-for-override name="exportedEnv" style="SWT.BORDER | SWT.MULTI | SWT.V_SCROLL" sort="true" type="table"
initialAllChecked="true" tooltipEnabled="true">
<layout-data>
<grid-data horizontalAlign="SWT.FILL" verticalAlign="SWT.CENTER" grabExcessHorizontal="true" heightHint="80"/>
</layout-data>
<column-data name="Name" width="175" resizable="true">
<tooltip>Multi-select and click checkbox to apply change to all rows.</tooltip>
</column-data>
<column-data name="Value" width="200" resizable="true">
<tooltip>Click to activate value widget.</tooltip>
</column-data>
<items>
<include>destination</include>
<include>Job_Name</include>
<include>Output_Path</include>
<include>Error_Path</include>
</items>
</export-for-override>
</import>
</launch-tab>
</control-data>
<monitor-data schedulerType="GridEngine" />
</resource-manager-builder>