Integrated Tinker Monte and gaussian applications with airavata

Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/04054a7b
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/04054a7b
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/04054a7b

Branch: refs/heads/master
Commit: 04054a7b80855a2ff42309614f0832548b5ed206
Parents: 4269997
Author: shamrath <[email protected]>
Authored: Tue Dec 23 14:19:25 2014 -0500
Committer: shamrath <[email protected]>
Committed: Tue Dec 23 14:19:25 2014 -0500

----------------------------------------------------------------------
 .../client/samples/CreateLaunchExperiment.java  |   4 +-
 .../client/samples/RegisterSampleData.java      | 104 +++++++++++++++++++
 .../tools/RegisterSampleApplications.java       |  28 ++---
 .../server/src/main/resources/PBSTemplate.xslt  |   8 +-
 .../src/main/resources/SLURMTemplate.xslt       |   4 +
 .../gfac/gsissh/util/GFACGSISSHUtils.java       |  14 ++-
 .../src/test/resources/PBSTemplate.xslt         |   5 +
 .../src/test/resources/SLURMTemplate.xslt       |   3 +
 .../src/main/resources/SLURMTemplate.xslt       |   4 +
 9 files changed, 158 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/04054a7b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
index b2c5469..69e7b3c 100644
--- 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
+++ 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
@@ -82,8 +82,8 @@ public class CreateLaunchExperiment {
     public static void main(String[] args) throws Exception {
                 airavataClient = 
AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, 
THRIFT_SERVER_PORT);
                 System.out.println("API version is " + 
airavataClient.getAPIVersion());
-//                registerApplications(); // run this only the first time
-                createAndLaunchExp();
+                registerApplications(); // run this only the first time
+//                createAndLaunchExp();
     }
     
     private static String fsdResourceId;

http://git-wip-us.apache.org/repos/asf/airavata/blob/04054a7b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/RegisterSampleData.java
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/RegisterSampleData.java
 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/RegisterSampleData.java
index b00797c..df64095 100644
--- 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/RegisterSampleData.java
+++ 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/RegisterSampleData.java
@@ -25,9 +25,11 @@ import org.apache.airavata.api.Airavata;
 import org.apache.airavata.api.client.AiravataClientFactory;
 import org.apache.airavata.client.tools.RegisterSampleApplicationsUtils;
 import 
org.apache.airavata.model.appcatalog.appdeployment.ApplicationParallelismType;
+import org.apache.airavata.model.appcatalog.appinterface.CommandLineType;
 import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
 import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
+import org.apache.airavata.model.appcatalog.appinterface.ValidityType;
 import 
org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
 import org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission;
 import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager;
@@ -55,6 +57,8 @@ public class RegisterSampleData {
     private String multiplyModuleId;
     private String subtractModuleId;
     private String sampleScriptDir;
+    private String monteXModuleId;
+    private String gaussianModuleId;
 
     public static void main(String[] args) throws 
AiravataClientConnectException, TException {
         RegisterSampleData registerSampleData = new RegisterSampleData();
@@ -118,6 +122,85 @@ public class RegisterSampleData {
         registerSubtractApplicationInterface();
         registerMultiplyApplicationInterface();
         registerEchoInterface();
+        registerTinkerMonteInterface();
+        registerGaussianInterface();
+    }
+
+    private void registerGaussianInterface() {
+        try {
+            System.out.println("#### Registering Gaussian Application 
Interface ####");
+
+            List<String> appModules = new ArrayList<String>();
+            appModules.add(gaussianModuleId);
+
+            InputDataObjectType input1 = 
RegisterSampleApplicationsUtils.createAppInput("MainInputFile", null,
+                    DataType.URI, null, 1,null, null, false, "Gaussian main 
input file", null);
+
+            List<InputDataObjectType> applicationInputs = new 
ArrayList<InputDataObjectType>();
+            applicationInputs.add(input1);
+
+            OutputDataObjectType output1 = 
RegisterSampleApplicationsUtils.createAppOutput("gaussian.out",
+                    "", DataType.URI, null, null);
+
+            List<OutputDataObjectType> applicationOutputs = new 
ArrayList<OutputDataObjectType>();
+            applicationOutputs.add(output1);
+
+            String addApplicationInterfaceId = 
airavataClient.registerApplicationInterface(
+                    
RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Gaussian",
 "Gaussian application",
+                            appModules, applicationInputs, 
applicationOutputs));
+            System.out.println("Gaussian Application Interface Id " + 
addApplicationInterfaceId);
+
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private void registerTinkerMonteInterface() {
+        try {
+            System.out.println("#### Registering Tinker Monte Application 
Interface ####");
+
+            List<String> appModules = new ArrayList<String>();
+            appModules.add(monteXModuleId);
+
+            InputDataObjectType input1 = 
RegisterSampleApplicationsUtils.createAppInput("xyzf", "O16.xyz",
+                    DataType.STRING, null, 1, null, null, false, "Tinker monte 
input_1", null);
+            InputDataObjectType input2 = 
RegisterSampleApplicationsUtils.createAppInput("keyf", "O16.key",
+                    DataType.STRING, "-k", 2, null, null, false, "Tinker monte 
input_2", null);
+            InputDataObjectType input3 = 
RegisterSampleApplicationsUtils.createAppInput("stps", "20000",
+                    DataType.STRING, null, 3, null, null, false, "Tinker monte 
input_3", null);
+            InputDataObjectType input4 = 
RegisterSampleApplicationsUtils.createAppInput("Ctc", "C",
+                    DataType.STRING, null, 4, null, null, false, "Tinker monte 
input_4", null);
+            InputDataObjectType input5 = 
RegisterSampleApplicationsUtils.createAppInput("stpsZ", "3.0",
+                    DataType.STRING, null, 5, null, null, false, "Tinker monte 
input_5", null);
+            InputDataObjectType input6 = 
RegisterSampleApplicationsUtils.createAppInput("temp", "298",
+                    DataType.STRING, null, 6, null, null, false, "Tinker monte 
input_6", null);
+            InputDataObjectType input7 = 
RegisterSampleApplicationsUtils.createAppInput("Rconv", "0.01",
+                    DataType.STRING, null, 7, null, null, false, "Tinker monte 
input_7", null);
+
+
+            List<InputDataObjectType> applicationInputs = new 
ArrayList<InputDataObjectType>();
+            applicationInputs.add(input1);
+            applicationInputs.add(input2);
+            applicationInputs.add(input3);
+            applicationInputs.add(input4);
+            applicationInputs.add(input5);
+            applicationInputs.add(input6);
+            applicationInputs.add(input7);
+
+            OutputDataObjectType output1 = 
RegisterSampleApplicationsUtils.createAppOutput("Diskoutputfile_with_dir",
+                    "", DataType.URI, null, null);
+
+            List<OutputDataObjectType> applicationOutputs = new 
ArrayList<OutputDataObjectType>();
+            applicationOutputs.add(output1);
+
+            String addApplicationInterfaceId = 
airavataClient.registerApplicationInterface(
+                    
RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Tinker_Monte",
 "Monte application",
+                            appModules, applicationInputs, 
applicationOutputs));
+            System.out.println("Monte Application Interface Id " + 
addApplicationInterfaceId);
+
+        } catch (TException e) {
+            e.printStackTrace();
+        }
     }
 
     private void registerApplicationDeployments() throws TException {
@@ -145,6 +228,18 @@ public class RegisterSampleData {
                 
RegisterSampleApplicationsUtils.createApplicationDeployment(subtractModuleId, 
localhostId,
                         sampleScriptDir + "/subtract.sh", 
ApplicationParallelismType.SERIAL, "Subtract application description ", null));
         System.out.println("Successfully registered Subtract application on 
localhost, application Id = " + subtractAppDeployId);
+
+        //Register Tinker monte application
+        String tinkerMonteAppDeployId = 
airavataClient.registerApplicationDeployment(
+                
RegisterSampleApplicationsUtils.createApplicationDeployment(monteXModuleId, 
localhostId,
+                        sampleScriptDir + "/monte.x", 
ApplicationParallelismType.SERIAL, "Grid chem tinker monte application 
description ", null));
+        System.out.println("Successfully registered tinker monte application 
on localhost, application Id = " + tinkerMonteAppDeployId);
+
+        //Register Tinker monte application
+        String gaussianAppDeployId = 
airavataClient.registerApplicationDeployment(
+                
RegisterSampleApplicationsUtils.createApplicationDeployment(gaussianModuleId, 
localhostId,
+                        sampleScriptDir + "/gaussian.sh", 
ApplicationParallelismType.SERIAL, "Grid chem Gaussian application description 
", null));
+        System.out.println("Successfully registered Gaussian application on 
localhost, application Id = " + gaussianAppDeployId);
     }
 
     private void registerApplicationModules() throws TException {
@@ -164,6 +259,15 @@ public class RegisterSampleData {
         subtractModuleId = airavataClient.registerApplicationModule(
                 RegisterSampleApplicationsUtils.createApplicationModule(
                         "Subtract", "1.0", "Subtract application 
description"));
+        //Register Monte
+        monteXModuleId = airavataClient.registerApplicationModule(
+                RegisterSampleApplicationsUtils.createApplicationModule(
+                        "Tinker Monte", "1.0", "Grid chem tinker monte 
application description"));
+
+        // Register gaussian application
+        gaussianModuleId = airavataClient.registerApplicationModule(
+                RegisterSampleApplicationsUtils.createApplicationModule(
+                        "Gaussian", "1.0", "Grid Chem Gaussian application 
description"));
 
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/04054a7b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
index 3bd9f29..19d0bfe 100644
--- 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
+++ 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
@@ -371,7 +371,7 @@ public class RegisterSampleApplications {
         //Registering Lammps
         registerLammpsInterface();
         //Registrting Gamess
-        registerGamessInterface();
+//        registerGamessInterface();
 
         //Registering NWChem
         registerNWChemInterface();
@@ -868,7 +868,7 @@ public class RegisterSampleApplications {
             appModules.add(gaussianModuleId);
 
             InputDataObjectType input1 = 
RegisterSampleApplicationsUtils.createAppInput("MainInputFile", null,
-                    DataType.URI, null, 1,null, null, false, "Gaussian main 
input file", null);
+                    DataType.URI, null, 1, ValidityType.REQUIRED, 
CommandLineType.INCLUSIVE,  false, "Gaussian main input file", null);
 
             List<InputDataObjectType> applicationInputs = new 
ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -897,20 +897,19 @@ public class RegisterSampleApplications {
             appModules.add(monteXModuleId);
 
             InputDataObjectType input1 = 
RegisterSampleApplicationsUtils.createAppInput("xyzf", "O16.xyz",
-                    DataType.STRING, null, 1, null, null, false, "Tinker monte 
input_1", null);
+                    DataType.URI, null, 1, ValidityType.REQUIRED, 
CommandLineType.INCLUSIVE, false, "Tinker monte input_1", null);
             InputDataObjectType input2 = 
RegisterSampleApplicationsUtils.createAppInput("keyf", "O16.key",
-                    DataType.STRING, "-k", 2, null, null, false, "Tinker monte 
input_2", null);
+                    DataType.URI, "-k", 2, ValidityType.REQUIRED, 
CommandLineType.INCLUSIVE, false, "Tinker monte input_2", null);
             InputDataObjectType input3 = 
RegisterSampleApplicationsUtils.createAppInput("stps", "20000",
-                    DataType.STRING, null, 3, null, null,false, "Tinker monte 
input_3", null);
+                    DataType.STRING, null, 3, ValidityType.REQUIRED, 
CommandLineType.INCLUSIVE, false, "Tinker monte input_3", null);
             InputDataObjectType input4 = 
RegisterSampleApplicationsUtils.createAppInput("Ctc", "C",
-                    DataType.STRING, null, 4,null, null, false, "Tinker monte 
input_4", null);
+                    DataType.STRING, null, 4, ValidityType.REQUIRED, 
CommandLineType.INCLUSIVE, false, "Tinker monte input_4", null);
             InputDataObjectType input5 = 
RegisterSampleApplicationsUtils.createAppInput("stpsZ", "3.0",
-                    DataType.STRING, null, 5,null, null, false, "Tinker monte 
input_5", null);
+                    DataType.STRING, null, 5, ValidityType.REQUIRED, 
CommandLineType.INCLUSIVE, false, "Tinker monte input_5", null);
             InputDataObjectType input6 = 
RegisterSampleApplicationsUtils.createAppInput("temp", "298",
-                    DataType.STRING, null, 6,null, null, false, "Tinker monte 
input_6", null);
+                    DataType.STRING, null, 6, ValidityType.REQUIRED, 
CommandLineType.INCLUSIVE, false, "Tinker monte input_6", null);
             InputDataObjectType input7 = 
RegisterSampleApplicationsUtils.createAppInput("Rconv", "0.01",
-                    DataType.STRING, null, 7,null, null, false, "Tinker monte 
input_7", null);
-
+                    DataType.STRING, null, 7, ValidityType.REQUIRED, 
CommandLineType.INCLUSIVE,  false, "Tinker monte input_7", null);
 
             List<InputDataObjectType> applicationInputs = new 
ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -998,9 +997,14 @@ public class RegisterSampleApplications {
             System.out.println("WRF on stampede deployment Id " + 
wrfAppDeployId);
 
 
+            List<String> monteXModuleCmds = new ArrayList<String>();
+//            monteXModuleCmds.add("module load globus");
+//            monteXModuleCmds.add("module load uberftp");
+            monteXModuleCmds.add("module load fftw3");
+
             String monteXAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(monteXModuleId, 
stampedeResourceId,
-                            
"/home1/00421/ccguser/apps/tinker/tinker/bin/monte.x", 
ApplicationParallelismType.OPENMP, monteXDescription, null));
+                            
"/home1/00421/ccguser/apps/tinker/tinker/bin/monte.x", 
ApplicationParallelismType.OPENMP, monteXDescription, monteXModuleCmds));
             System.out.println("Tinker Monte on trestles deployment Id " + 
monteXAppDeployId);
         } catch (TException e) {
             e.printStackTrace();
@@ -1052,7 +1056,7 @@ public class RegisterSampleApplications {
             gaussianMouldes.add("module load gaussian");
             String gaussianAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(gaussianModuleId, 
trestlesResourceId,
-                            "g09", ApplicationParallelismType.OPENMP, 
gaussianDescription, null));
+                            "g09", ApplicationParallelismType.OPENMP, 
gaussianDescription, gaussianMouldes));
             System.out.println("Gaussian on trestles deployment Id " + 
gaussianAppDeployId);
 
         } catch (TException e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/04054a7b/modules/configuration/server/src/main/resources/PBSTemplate.xslt
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/PBSTemplate.xslt 
b/modules/configuration/server/src/main/resources/PBSTemplate.xslt
index ca02d79..2ed5d20 100644
--- a/modules/configuration/server/src/main/resources/PBSTemplate.xslt
+++ b/modules/configuration/server/src/main/resources/PBSTemplate.xslt
@@ -51,6 +51,11 @@
     </xsl:when>
     </xsl:choose>
     <xsl:choose>
+        <xsl:when test="ns:usedMem">
+            #PBS -l mem=<xsl:value-of select="ns:usedMem"/>
+        </xsl:when>
+    </xsl:choose>
+    <xsl:choose>
     <xsl:when test="(ns:nodes) and (ns:processesPerNode)">
 #PBS -l nodes=<xsl:value-of select="ns:nodes"/>:ppn=<xsl:value-of 
select="ns:processesPerNode"/>
 <xsl:text>&#xa;</xsl:text>
@@ -62,7 +67,8 @@ export<xsl:text>   </xsl:text><xsl:value-of select="."/>
 <xsl:text>&#xa;</xsl:text>
 </xsl:for-each>
 <xsl:for-each select="ns:preJobCommands/ns:command">
-      <xsl:value-of select="."/><xsl:text>   </xsl:text>
+    <xsl:text>&#xa;</xsl:text>
+    <xsl:value-of select="."/><xsl:text>   </xsl:text>
     </xsl:for-each>
 cd <xsl:text>   </xsl:text><xsl:value-of 
select="ns:workingDirectory"/><xsl:text>&#xa;</xsl:text>
     <xsl:choose><xsl:when test="ns:jobSubmitterCommand != ''">

http://git-wip-us.apache.org/repos/asf/airavata/blob/04054a7b/modules/configuration/server/src/main/resources/SLURMTemplate.xslt
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/SLURMTemplate.xslt 
b/modules/configuration/server/src/main/resources/SLURMTemplate.xslt
index b494cc0..9acdfd6 100644
--- a/modules/configuration/server/src/main/resources/SLURMTemplate.xslt
+++ b/modules/configuration/server/src/main/resources/SLURMTemplate.xslt
@@ -64,6 +64,10 @@
 #SBATCH -e <xsl:value-of select="ns:standardErrorFile"/>
     </xsl:when>
     </xsl:choose>
+    <xsl:for-each select="ns:preJobCommands/ns:command">
+        <xsl:text>&#xa;</xsl:text>
+        <xsl:value-of select="."/><xsl:text>   </xsl:text>
+    </xsl:for-each>
 cd <xsl:text>   </xsl:text><xsl:value-of 
select="ns:workingDirectory"/><xsl:text>&#xa;</xsl:text>
     <xsl:choose><xsl:when test="ns:jobSubmitterCommand">
 <xsl:value-of select="ns:jobSubmitterCommand"/><xsl:text>   
</xsl:text></xsl:when></xsl:choose><xsl:value-of 
select="ns:executablePath"/><xsl:text>   </xsl:text>

http://git-wip-us.apache.org/repos/asf/airavata/blob/04054a7b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/util/GFACGSISSHUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/util/GFACGSISSHUtils.java
 
b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/util/GFACGSISSHUtils.java
index e471c77..68e0072 100644
--- 
a/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/util/GFACGSISSHUtils.java
+++ 
b/modules/gfac/gfac-gsissh/src/main/java/org/apache/airavata/gfac/gsissh/util/GFACGSISSHUtils.java
@@ -41,6 +41,7 @@ import org.apache.airavata.gsi.ssh.impl.GSISSHAbstractCluster;
 import org.apache.airavata.gsi.ssh.impl.PBSCluster;
 import org.apache.airavata.gsi.ssh.util.CommonUtils;
 import 
org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
+import org.apache.airavata.model.appcatalog.appinterface.CommandLineType;
 import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
 import org.apache.airavata.model.appcatalog.computeresource.*;
 import 
org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
@@ -213,9 +214,13 @@ public class GFACGSISSHUtils {
             }
         }
         for (InputDataObjectType inputDataObjectType : sortedInputSet) {
+            if (inputDataObjectType.getAddedToCommandLine() != null
+                    && inputDataObjectType.getAddedToCommandLine() == 
CommandLineType.EXCLUSIVE) {
+                continue;
+            }
             if (inputDataObjectType.getApplicationArgument() != null
                     && 
!inputDataObjectType.getApplicationArgument().equals("")) {
-               inputValues.add(inputDataObjectType.getApplicationArgument());
+                inputValues.add(inputDataObjectType.getApplicationArgument());
             }
 
             if (inputDataObjectType.getValue() != null
@@ -269,7 +274,14 @@ public class GFACGSISSHUtils {
             logger.error("Task scheduling cannot be null at this point..");
         }
 
+        ApplicationDeploymentDescription appDepDescription = 
jobExecutionContext.getApplicationContext().getApplicationDeploymentDescription();
+        List<String> moduleCmds = appDepDescription.getModuleLoadCmds();
+        if (moduleCmds != null) {
+            for (String moduleCmd : moduleCmds) {
+                jobDescriptor.addPreJobCommand(moduleCmd);
+            }
 
+        }
         return jobDescriptor;
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/04054a7b/modules/gfac/gfac-gsissh/src/test/resources/PBSTemplate.xslt
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-gsissh/src/test/resources/PBSTemplate.xslt 
b/modules/gfac/gfac-gsissh/src/test/resources/PBSTemplate.xslt
index e749e9c..4c49bd8 100644
--- a/modules/gfac/gfac-gsissh/src/test/resources/PBSTemplate.xslt
+++ b/modules/gfac/gfac-gsissh/src/test/resources/PBSTemplate.xslt
@@ -45,6 +45,11 @@
     </xsl:when>
     </xsl:choose>
     <xsl:choose>
+    <xsl:when test="ns:usedMem">
+#PBS -l mem=<xsl:value-of select="ns:usedMem"/>
+    </xsl:when>
+    </xsl:choose>
+    <xsl:choose>
     <xsl:when test="(ns:nodes) and (ns:processesPerNode)">
 #PBS -l nodes=<xsl:value-of select="ns:nodes"/>:ppn=<xsl:value-of 
select="ns:processesPerNode"/>
 <xsl:text>&#xa;</xsl:text>

http://git-wip-us.apache.org/repos/asf/airavata/blob/04054a7b/modules/integration-tests/src/test/resources/SLURMTemplate.xslt
----------------------------------------------------------------------
diff --git a/modules/integration-tests/src/test/resources/SLURMTemplate.xslt 
b/modules/integration-tests/src/test/resources/SLURMTemplate.xslt
index 169dbbf..31d34de 100644
--- a/modules/integration-tests/src/test/resources/SLURMTemplate.xslt
+++ b/modules/integration-tests/src/test/resources/SLURMTemplate.xslt
@@ -58,6 +58,9 @@
 #SBATCH -e <xsl:value-of select="ns:standardErrorFile"/>
     </xsl:when>
     </xsl:choose>
+    <xsl:for-each select="ns:preJobCommands/ns:command">
+        <xsl:value-of select="."/><xsl:text>   </xsl:text>
+    </xsl:for-each>
 cd <xsl:text>   </xsl:text><xsl:value-of 
select="ns:workingDirectory"/><xsl:text>&#xa;</xsl:text>
     <xsl:choose><xsl:when test="ns:jobSubmitterCommand">
 <xsl:value-of select="ns:jobSubmitterCommand"/><xsl:text>   
</xsl:text></xsl:when></xsl:choose><xsl:value-of 
select="ns:executablePath"/><xsl:text>   </xsl:text>

http://git-wip-us.apache.org/repos/asf/airavata/blob/04054a7b/tools/gsissh/src/main/resources/SLURMTemplate.xslt
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/resources/SLURMTemplate.xslt 
b/tools/gsissh/src/main/resources/SLURMTemplate.xslt
index a752608..4a62722 100644
--- a/tools/gsissh/src/main/resources/SLURMTemplate.xslt
+++ b/tools/gsissh/src/main/resources/SLURMTemplate.xslt
@@ -63,6 +63,10 @@
 #SBATCH -e <xsl:value-of select="ns:standardErrorFile"/>
     </xsl:when>
     </xsl:choose>
+    <xsl:for-each select="ns:preJobCommands/ns:command">
+        <xsl:text>&#xa;</xsl:text>
+        <xsl:value-of select="."/><xsl:text>   </xsl:text>
+    </xsl:for-each>
 cd <xsl:text>   </xsl:text><xsl:value-of 
select="ns:workingDirectory"/><xsl:text>&#xa;</xsl:text>
     <xsl:choose><xsl:when test="ns:jobSubmitterCommand">
 <xsl:value-of select="ns:jobSubmitterCommand"/><xsl:text>   
</xsl:text></xsl:when></xsl:choose><xsl:value-of 
select="ns:executablePath"/><xsl:text>   </xsl:text>

Reply via email to