Repository: airavata
Updated Branches:
  refs/heads/master 99fdd58af -> 732828710


Added prejOb commands and post job commands to the pbs and slurm scripts


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

Branch: refs/heads/master
Commit: 7328287105b5348b2268de6ddbb9f6d62949970d
Parents: 99fdd58
Author: shamrath <[email protected]>
Authored: Wed Dec 24 17:11:31 2014 -0500
Committer: shamrath <[email protected]>
Committed: Wed Dec 24 17:11:31 2014 -0500

----------------------------------------------------------------------
 .../client/samples/RegisterSampleData.java      | 18 ++++---
 .../tools/RegisterOGCEUS3Application.java       |  6 ++-
 .../tools/RegisterSampleApplications.java       | 52 +++++++++++---------
 .../tools/RegisterSampleApplicationsUtils.java  |  6 ++-
 .../client/tools/RegisterUS3Application.java    |  8 +--
 .../server/src/main/resources/PBSTemplate.xslt  | 12 ++++-
 .../src/main/resources/SLURMTemplate.xslt       | 26 ++++++++--
 .../gfac/gsissh/util/GFACGSISSHUtils.java       | 22 ++++++++-
 .../airavata/gsi/ssh/api/job/JobDescriptor.java | 21 ++++++++
 .../main/resources/schemas/PBSJobDescriptor.xsd |  6 +++
 10 files changed, 134 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/73282871/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 df64095..ac684a5 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
@@ -208,37 +208,43 @@ public class RegisterSampleData {
         //Register Echo
         String echoAppDeployId = airavataClient.registerApplicationDeployment(
                 
RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, 
localhostId,
-                        sampleScriptDir + "/echo.sh", 
ApplicationParallelismType.SERIAL, "Echo application description", null));
+                        sampleScriptDir + "/echo.sh", 
ApplicationParallelismType.SERIAL, "Echo application description",
+                        null, null, null));
         System.out.println("Successfully registered Echo application on 
localhost, application Id = " + echoAppDeployId);
 
         //Register Add application
         String addAppDeployId = airavataClient.registerApplicationDeployment(
                 
RegisterSampleApplicationsUtils.createApplicationDeployment(addModuleId, 
localhostId,
-                        sampleScriptDir + "/add.sh", 
ApplicationParallelismType.SERIAL, "Add application description", null));
+                        sampleScriptDir + "/add.sh", 
ApplicationParallelismType.SERIAL, "Add application description",
+                        null, null, null));
         System.out.println("Successfully registered Add application on 
localhost, application Id = " + addAppDeployId);
 
         //Register Multiply application
         String multiplyAppDeployId = 
airavataClient.registerApplicationDeployment(
                 
RegisterSampleApplicationsUtils.createApplicationDeployment(multiplyModuleId, 
localhostId,
-                        sampleScriptDir + "/multiply.sh", 
ApplicationParallelismType.SERIAL, "Multiply application description", null));
+                        sampleScriptDir + "/multiply.sh", 
ApplicationParallelismType.SERIAL, "Multiply application description",
+                        null, null, null));
         System.out.println("Successfully registered Multiply application on 
localhost, application Id = " + multiplyAppDeployId);
 
         //Register Subtract application
         String subtractAppDeployId = 
airavataClient.registerApplicationDeployment(
                 
RegisterSampleApplicationsUtils.createApplicationDeployment(subtractModuleId, 
localhostId,
-                        sampleScriptDir + "/subtract.sh", 
ApplicationParallelismType.SERIAL, "Subtract application description ", null));
+                        sampleScriptDir + "/subtract.sh", 
ApplicationParallelismType.SERIAL, "Subtract application description ",
+                        null, null, 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));
+                        sampleScriptDir + "/monte.x", 
ApplicationParallelismType.SERIAL, "Grid chem tinker monte application 
description ",
+                        null, null, 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));
+                        sampleScriptDir + "/gaussian.sh", 
ApplicationParallelismType.SERIAL, "Grid chem Gaussian application description 
",
+                        null, null, null));
         System.out.println("Successfully registered Gaussian application on 
localhost, application Id = " + gaussianAppDeployId);
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/73282871/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterOGCEUS3Application.java
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterOGCEUS3Application.java
 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterOGCEUS3Application.java
index 0a603d9..855fc54 100644
--- 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterOGCEUS3Application.java
+++ 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterOGCEUS3Application.java
@@ -186,11 +186,13 @@ public class RegisterOGCEUS3Application {
 
                        // Register Stampede
                        String ultascanStamplede = 
airavataClient.registerApplicationDeployment(RegisterSampleApplicationsUtils.createApplicationDeployment(ultrascanModuleId,
-                                       stampedeResourceId, 
"/home1/01437/ogce/xsede_apps/ultrascan/bin/us_mpi_analysis", 
ApplicationParallelismType.MPI, "ultrascan OGCE application", null));
+                                       stampedeResourceId, 
"/home1/01437/ogce/xsede_apps/ultrascan/bin/us_mpi_analysis",
+                    ApplicationParallelismType.MPI, "ultrascan OGCE 
application", null, null, null));
                        System.out.println("Ultrascan on stampede deployment Id 
" + ultascanStamplede);
                        
                        String ultascanTrestles = 
airavataClient.registerApplicationDeployment(RegisterSampleApplicationsUtils.createApplicationDeployment(ultrascanModuleId,
-                                       trestlesResourceId, 
"/home/ogce/xsede_app/ultrascan/bin/us_mpi_analysis", 
ApplicationParallelismType.MPI, "ultrascan OGCE application", null));
+                                       trestlesResourceId, 
"/home/ogce/xsede_app/ultrascan/bin/us_mpi_analysis",
+                    ApplicationParallelismType.MPI, "ultrascan OGCE 
application", null, null, null));
                        System.out.println("Ultrascan on trestles deployment Id 
" + ultascanTrestles);
 //                     String ultascanLonestar = 
airavataClient.registerApplicationDeployment(RegisterSampleApplicationsUtils.createApplicationDeployment(ultrascanModuleId,
 //                                     lonestarResourceId, 
"/home1/01623/us3/bin/us_mpi_analysis", ApplicationParallelismType.MPI, 
"ultrascan application"));

http://git-wip-us.apache.org/repos/asf/airavata/blob/73282871/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 9dec7d2..dd08228 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
@@ -682,7 +682,7 @@ public class RegisterSampleApplications {
             appModules.add(lammpsModuleId);
 
             InputDataObjectType input1 = 
RegisterSampleApplicationsUtils.createAppInput("Friction_Simulation_Input", 
null,
-                    DataType.URI, null, 1,null, null, false, "Friction 
Simulation Input - in.friction", null);
+                    DataType.URI, "<", 1,ValidityType.REQUIRED, 
CommandLineType.IMPLICIT, false, "Friction Simulation Input - in.friction", 
null);
 
             List<InputDataObjectType> applicationInputs = new 
ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -852,7 +852,7 @@ public class RegisterSampleApplications {
             //Register Echo
             String echoAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, 
localhostId,
-                            "/bin/echo", ApplicationParallelismType.SERIAL, 
echoDescription, null));
+                            "/bin/echo", ApplicationParallelismType.SERIAL, 
echoDescription, null, null, null));
 
 
             System.out.println("Echo on localhost Id " + echoAppDeployId);
@@ -945,35 +945,38 @@ public class RegisterSampleApplications {
             //Register Echo
             String echoAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, 
stampedeResourceId,
-                            
"/home1/01437/ogce/production/app_wrappers/echo_wrapper.sh", 
ApplicationParallelismType.SERIAL, echoDescription, null));
+                            
"/home1/01437/ogce/production/app_wrappers/echo_wrapper.sh", 
ApplicationParallelismType.SERIAL,
+                            echoDescription, null, null,null));
             System.out.println("Echo on stampede deployment Id " + 
echoAppDeployId);
 
             //Register Amber
             String amberAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(amberModuleId, 
stampedeResourceId,
                             
"/home1/01437/ogce/production/app_wrappers/amber_wrapper.sh", 
ApplicationParallelismType.MPI,
-                            amberDescription, null));
+                            amberDescription, null, null, null));
             System.out.println("Amber on stampede deployment Id " + 
amberAppDeployId);
 
             //Register ESPRESSO
             String espressoAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(espressoModuleId, 
stampedeResourceId,
                             
"/home1/01437/ogce/production/app_wrappers/espresso_wrapper.sh", 
ApplicationParallelismType.MPI,
-                            espressoDescription, null));
+                            espressoDescription, null, null, null));
             System.out.println("ESPRESSO on stampede deployment Id " + 
espressoAppDeployId);
 
             //Register GROMACS
             String gromacsAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(gromacsModuleId, 
stampedeResourceId,
                             
"/home1/01437/ogce/production/app_wrappers/gromacs_wrapper.sh", 
ApplicationParallelismType.MPI,
-                            gromacsDescription, null));
+                            gromacsDescription, null, null ,null));
             System.out.println("GROMACS on stampede deployment Id " + 
gromacsAppDeployId);
 
             //Register LAMMPS
+            List<String> preJobCommands = new ArrayList<String>();
+            preJobCommands.add("cp /home1/00421/ccguser/apps/ds_lammps/data/* 
$workingDir");
             String lammpsAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(lammpsModuleId, 
stampedeResourceId,
-                            
"/home1/01437/ogce/production/app_wrappers/lammps_wrapper.sh", 
ApplicationParallelismType.MPI,
-                            lammpsDescription, null));
+                            "~/apps/ds_lammps/bin/lmp_stampede", 
ApplicationParallelismType.MPI,
+                            lammpsDescription,null, preJobCommands, null));
             System.out.println("LAMMPS on stampede deployment Id " + 
lammpsAppDeployId);
 
             //Register NWChem
@@ -982,21 +985,21 @@ public class RegisterSampleApplications {
             String nwChemAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(nwChemModuleId, 
stampedeResourceId,
                             "nwchem", ApplicationParallelismType.MPI,
-                            nwChemDescription, nwChemModuleCmds));
+                            nwChemDescription, nwChemModuleCmds, null, null));
             System.out.println("NWChem on stampede deployment Id " + 
nwChemAppDeployId);
 
             //Register Trinity
             String trinityAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(trinityModuleId, 
stampedeResourceId,
                             
"/home1/01437/ogce/production/app_wrappers/trinity_wrapper.sh", 
ApplicationParallelismType.MPI,
-                            trinityDescription, null));
+                            trinityDescription, null, null, null));
             System.out.println("Trinity on stampede deployment Id " + 
trinityAppDeployId);
 
             //Register WRF
             String wrfAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(wrfModuleId, 
stampedeResourceId,
                             
"/home1/01437/ogce/production/app_wrappers/wrf_wrapper.sh", 
ApplicationParallelismType.MPI,
-                            wrfDescription, null));
+                            wrfDescription, null, null , null));
             System.out.println("WRF on stampede deployment Id " + 
wrfAppDeployId);
 
 
@@ -1007,7 +1010,8 @@ public class RegisterSampleApplications {
 
             String monteXAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(monteXModuleId, 
stampedeResourceId,
-                            
"/home1/00421/ccguser/apps/tinker/tinker/bin/monte.x", 
ApplicationParallelismType.OPENMP, monteXDescription, monteXModuleCmds));
+                            
"/home1/00421/ccguser/apps/tinker/tinker/bin/monte.x", 
ApplicationParallelismType.OPENMP,
+                            monteXDescription, monteXModuleCmds, null, null));
             System.out.println("Tinker Monte on trestles deployment Id " + 
monteXAppDeployId);
         } catch (TException e) {
             e.printStackTrace();
@@ -1021,28 +1025,29 @@ public class RegisterSampleApplications {
             //Register Echo
             String echoAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, 
trestlesResourceId,
-                            
"/home/ogce/production/app_wrappers/echo_wrapper.sh", 
ApplicationParallelismType.SERIAL, echoDescription, null));
+                            
"/home/ogce/production/app_wrappers/echo_wrapper.sh", 
ApplicationParallelismType.SERIAL,
+                            echoDescription, null, null, null));
             System.out.println("Echo on trestles deployment Id " + 
echoAppDeployId);
 
             //Register Amber
             String amberAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(amberModuleId, 
trestlesResourceId,
                             
"/home/ogce/production/app_wrappers/amber_wrapper.sh", 
ApplicationParallelismType.MPI,
-                            amberDescription, null));
+                            amberDescription, null, null, null));
             System.out.println("Amber on trestles deployment Id " + 
amberAppDeployId);
 
             //Register GROMACS
             String gromacsAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(gromacsModuleId, 
trestlesResourceId,
                             
"/home/ogce/production/app_wrappers/gromacs_wrapper.sh", 
ApplicationParallelismType.MPI,
-                            gromacsDescription, null));
+                            gromacsDescription, null, null, null));
             System.out.println("GROMACS on trestles deployment Id " + 
gromacsAppDeployId);
 
             //Register LAMMPS
             String lammpsAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(lammpsModuleId, 
trestlesResourceId,
                             
"/home/ogce/production/app_wrappers/lammps_wrapper.sh", 
ApplicationParallelismType.MPI,
-                            lammpsDescription, null));
+                            lammpsDescription, null, null , null));
             System.out.println("LAMMPS on trestles deployment Id " + 
lammpsAppDeployId);
 
             //Register GAMESS
@@ -1051,7 +1056,7 @@ public class RegisterSampleApplications {
             String gamessAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(gamessModuleId, 
trestlesResourceId,
                             "/opt/gamess/rungms", 
ApplicationParallelismType.MPI,
-                            gamessDescription, moduleLoadCmd));
+                            gamessDescription, moduleLoadCmd, null,null));
             System.out.println("Gamess on trestles deployment Id " + 
gamessAppDeployId);
 
 
@@ -1059,7 +1064,7 @@ public class RegisterSampleApplications {
             gaussianMouldes.add("module load gaussian");
             String gaussianAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(gaussianModuleId, 
trestlesResourceId,
-                            "g09", ApplicationParallelismType.OPENMP, 
gaussianDescription, gaussianMouldes));
+                            "g09", ApplicationParallelismType.OPENMP, 
gaussianDescription, gaussianMouldes , null, null));
             System.out.println("Gaussian on trestles deployment Id " + 
gaussianAppDeployId);
 
         } catch (TException e) {
@@ -1074,21 +1079,22 @@ public class RegisterSampleApplications {
             //Register Echo
             String echoAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, 
bigredResourceId,
-                            
"/N/u/cgateway/BigRed2/production/app_wrappers/echo_wrapper.sh", 
ApplicationParallelismType.SERIAL, echoDescription, null));
+                            
"/N/u/cgateway/BigRed2/production/app_wrappers/echo_wrapper.sh",
+                            ApplicationParallelismType.SERIAL, 
echoDescription, null, null, null));
             System.out.println("Echo on bigredII deployment Id " + 
echoAppDeployId);
 
             //Register Amber
             String amberAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(amberModuleId, 
bigredResourceId,
                             
"/N/u/cgateway/BigRed2/production/app_wrappers/amber_wrapper.sh", 
ApplicationParallelismType.MPI,
-                            amberDescription, null));
+                            amberDescription, null, null, null));
             System.out.println("Amber on bigredII deployment Id " + 
amberAppDeployId);
 
             //Register AutoDock
             String autoDockDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(autoDockModuleId, 
bigredResourceId,
                             
"/N/u/cgateway/BigRed2/production/app_wrappers/auto_dock_wrapper.sh", 
ApplicationParallelismType.MPI,
-                            autoDockDescription, null));
+                            autoDockDescription, null, null, null));
             System.out.println("AutoDock on bigredII deployment Id " + 
autoDockDeployId);
 
 //            //Register GROMACS
@@ -1117,13 +1123,13 @@ public class RegisterSampleApplications {
             //Register Echo
             String echoAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, 
fsdResourceId,
-                            "/bin/echo", ApplicationParallelismType.SERIAL, 
echoDescription, null));
+                            "/bin/echo", ApplicationParallelismType.SERIAL, 
echoDescription, null, null, null));
             System.out.println("Echo on FSD deployment Id: " + 
echoAppDeployId);
 
             //Register MPI
             String mpiAppDeployId = 
airavataClient.registerApplicationDeployment(
                     
RegisterSampleApplicationsUtils.createApplicationDeployment(mpiModuleId, 
fsdResourceId,
-                            "/home/bes/hellompi", 
ApplicationParallelismType.OPENMP_MPI, mpiDescription, null));
+                            "/home/bes/hellompi", 
ApplicationParallelismType.OPENMP_MPI, mpiDescription, null, null, null));
             System.out.println("MPI on FSD deployment Id: " + mpiAppDeployId);
 
         } catch (TException e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/73282871/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java
 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java
index 83be356..e31bf9c 100644
--- 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java
+++ 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplicationsUtils.java
@@ -57,7 +57,9 @@ public class RegisterSampleApplicationsUtils {
                                                                                
String executablePath,
                                                                                
ApplicationParallelismType parallelism,
                                                                                
String appDeploymentDescription,
-                                                                               
List<String> moduleLoadCmds) {
+                                                                               
List<String> moduleLoadCmds,
+                                                                               
List<String> preJobCmds,
+                                                                               
List<String> postJobCmds) {
         ApplicationDeploymentDescription deployment = new 
ApplicationDeploymentDescription();
 //             deployment.setIsEmpty(false);
         deployment.setAppDeploymentDescription(appDeploymentDescription);
@@ -66,6 +68,8 @@ public class RegisterSampleApplicationsUtils {
         deployment.setExecutablePath(executablePath);
         deployment.setParallelism(parallelism);
         deployment.setModuleLoadCmds(moduleLoadCmds);
+        deployment.setPreJobCommands(preJobCmds);
+        deployment.setPostJobCommands(postJobCmds);
         return deployment;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/73282871/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterUS3Application.java
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterUS3Application.java
 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterUS3Application.java
index 316daa3..73646b6 100644
--- 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterUS3Application.java
+++ 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterUS3Application.java
@@ -186,17 +186,17 @@ public class RegisterUS3Application {
 
                        // Register Stampede
                        String ultascanStamplede = 
airavataClient.registerApplicationDeployment(RegisterSampleApplicationsUtils.createApplicationDeployment(ultrascanModuleId,
-                                       stampedeResourceId, 
"/home1/01623/us3/bin/us_mpi_analysis", ApplicationParallelismType.MPI, 
"ultrascan application", null));
+                                       stampedeResourceId, 
"/home1/01623/us3/bin/us_mpi_analysis", ApplicationParallelismType.MPI, 
"ultrascan application", null, null, null));
                        System.out.println("Ultrascan on stampede deployment Id 
" + ultascanStamplede);
                        
                        String ultascanTrestles = 
airavataClient.registerApplicationDeployment(RegisterSampleApplicationsUtils.createApplicationDeployment(ultrascanModuleId,
-                                       trestlesResourceId, 
"/home/us3/trestles/bin/us_mpi_analysis", ApplicationParallelismType.MPI, 
"ultrascan application", null));
+                                       trestlesResourceId, 
"/home/us3/trestles/bin/us_mpi_analysis", ApplicationParallelismType.MPI, 
"ultrascan application", null, null, null));
                        System.out.println("Ultrascan on trestles deployment Id 
" + ultascanTrestles);
                        String ultascanLonestar = 
airavataClient.registerApplicationDeployment(RegisterSampleApplicationsUtils.createApplicationDeployment(ultrascanModuleId,
-                                       lonestarResourceId, 
"/home1/01623/us3/bin/us_mpi_analysis", ApplicationParallelismType.MPI, 
"ultrascan application", null));
+                                       lonestarResourceId, 
"/home1/01623/us3/bin/us_mpi_analysis", ApplicationParallelismType.MPI, 
"ultrascan application", null, null ,null));
                        System.out.println("Ultrascan on lonestar deployment Id 
" + ultascanLonestar);
                        String ultascanAlamo = 
airavataClient.registerApplicationDeployment(RegisterSampleApplicationsUtils.createApplicationDeployment(ultrascanModuleId,
-                                       alamoResourceId, 
"/home/us3/bin/us_mpi_analysis.sh", ApplicationParallelismType.MPI, "ultrascan 
application", null));
+                                       alamoResourceId, 
"/home/us3/bin/us_mpi_analysis.sh", ApplicationParallelismType.MPI, "ultrascan 
application", null, null ,null));
                        System.out.println("Ultrascan on alamo deployment Id " 
+ ultascanAlamo);
                } catch (Exception e) {
                        e.printStackTrace();

http://git-wip-us.apache.org/repos/asf/airavata/blob/73282871/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 2ed5d20..b82b249 100644
--- a/modules/configuration/server/src/main/resources/PBSTemplate.xslt
+++ b/modules/configuration/server/src/main/resources/PBSTemplate.xslt
@@ -61,16 +61,24 @@
 <xsl:text>&#xa;</xsl:text>
     </xsl:when>
     </xsl:choose>
+    <xsl:text>&#xa;</xsl:text>
 <xsl:for-each select="ns:exports/ns:name">
 <xsl:value-of select="."/>=<xsl:value-of 
select="./@value"/><xsl:text>&#xa;</xsl:text>
 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:text>&#xa;</xsl:text>
+<xsl:for-each select="ns:moduleLoadCommands/ns:command">
     <xsl:text>&#xa;</xsl:text>
     <xsl:value-of select="."/><xsl:text>   </xsl:text>
     </xsl:for-each>
+    <xsl:text>&#xa;</xsl:text>
 cd <xsl:text>   </xsl:text><xsl:value-of 
select="ns:workingDirectory"/><xsl:text>&#xa;</xsl:text>
+    <xsl:for-each select="ns:preJobCommands/ns:command">
+        <xsl:value-of select="."/><xsl:text>   </xsl:text>
+        <xsl:text>&#xa;</xsl:text>
+    </xsl:for-each>
+    <xsl:text>&#xa;</xsl:text>
     <xsl:choose><xsl:when test="ns:jobSubmitterCommand != ''">
 <xsl:value-of select="ns:jobSubmitterCommand"/><xsl:text>   </xsl:text>
 <xsl:value-of select="ns:cpuCount"/><xsl:text>   </xsl:text>
@@ -78,9 +86,11 @@ cd <xsl:text>   </xsl:text><xsl:value-of 
select="ns:workingDirectory"/><xsl:text
 <xsl:for-each select="ns:inputs/ns:input">
       <xsl:value-of select="."/><xsl:text>   </xsl:text>
     </xsl:for-each>
+    <xsl:text>&#xa;</xsl:text>
 <xsl:for-each select="ns:postJobCommands/ns:command">
       <xsl:value-of select="."/><xsl:text>   </xsl:text>
 </xsl:for-each>
+    <xsl:text>&#xa;</xsl:text>
 ~/rabbitmq-java-client-bin-3.3.5/runjava.sh 
com.rabbitmq.examples.SimpleProducer amqp://<xsl:value-of 
select="ns:callBackIp"/><xsl:text> </xsl:text><xsl:value-of 
select="ns:userName"/>,<xsl:value-of select="ns:jobName"/><xsl:text> 
</xsl:text><xsl:value-of select="$quote"/><xsl:value-of 
select="$quote"/><xsl:text> </xsl:text><xsl:value-of select="ns:callBackPort"/>
 </xsl:template>
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/73282871/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 9acdfd6..a3378e1 100644
--- a/modules/configuration/server/src/main/resources/SLURMTemplate.xslt
+++ b/modules/configuration/server/src/main/resources/SLURMTemplate.xslt
@@ -64,16 +64,34 @@
 #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>
+    <xsl:text>&#xa;</xsl:text>
+<xsl:for-each select="ns:exports/ns:name">
+   <xsl:value-of select="."/>=<xsl:value-of 
select="./@value"/><xsl:text>&#xa;</xsl:text>
+export<xsl:text>   </xsl:text><xsl:value-of select="."/>
+   <xsl:text>&#xa;</xsl:text>
+</xsl:for-each>
+    <xsl:text>&#xa;</xsl:text>
+<xsl:for-each select="ns:moduleLoadCommands/ns:command">
+    <xsl:value-of select="."/><xsl:text>   </xsl:text>
+    <xsl:text>&#xa;</xsl:text>
+</xsl:for-each>
+    <xsl:text>&#xa;</xsl:text>
 cd <xsl:text>   </xsl:text><xsl:value-of 
select="ns:workingDirectory"/><xsl:text>&#xa;</xsl:text>
+<xsl:for-each select="ns:preJobCommands/ns:command">
+    <xsl:value-of select="."/><xsl:text>   </xsl:text>
+    <xsl:text>&#xa;</xsl:text>
+</xsl:for-each>
+    <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>
 <xsl:for-each select="ns:inputs/ns:input">
       <xsl:value-of select="."/><xsl:text>   </xsl:text>
     </xsl:for-each>
+    <xsl:text>&#xa;</xsl:text>
+<xsl:for-each select="ns:postJobCommands/ns:command">
+    <xsl:text>&#xa;</xsl:text>
+    <xsl:value-of select="."/><xsl:text>   </xsl:text>
+</xsl:for-each>
     ~/rabbitmq-java-client-bin-3.3.5/runjava.sh 
com.rabbitmq.examples.SimpleProducer amqp://<xsl:value-of 
select="ns:callBackIp"/><xsl:text> </xsl:text><xsl:value-of 
select="ns:userName"/>,<xsl:value-of select="ns:jobName"/><xsl:text> 
</xsl:text><xsl:value-of select="$quote"/><xsl:value-of 
select="$quote"/><xsl:text> </xsl:text><xsl:value-of select="ns:callBackPort"/>
 </xsl:template>
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/73282871/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 33c83e5..6ef3395 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
@@ -27,7 +27,6 @@ import 
org.apache.airavata.credential.store.credential.impl.certificate.Certific
 import org.apache.airavata.credential.store.store.CredentialReader;
 import org.apache.airavata.gfac.GFacException;
 import org.apache.airavata.gfac.RequestData;
-import org.apache.airavata.gfac.core.context.ApplicationContext;
 import org.apache.airavata.gfac.core.context.JobExecutionContext;
 import org.apache.airavata.gfac.core.context.MessageContext;
 import org.apache.airavata.gfac.core.utils.GFacUtils;
@@ -289,10 +288,29 @@ public class GFACGSISSHUtils {
         List<String> moduleCmds = appDepDescription.getModuleLoadCmds();
         if (moduleCmds != null) {
             for (String moduleCmd : moduleCmds) {
-                jobDescriptor.addPreJobCommand(moduleCmd);
+                jobDescriptor.addModuleLoadCommands(moduleCmd);
             }
+        }
+        List<String> preJobCommands = appDepDescription.getPreJobCommands();
+        if (preJobCommands != null) {
+            for (String preJobCommand : preJobCommands) {
+                jobDescriptor.addPreJobCommand(parseCommand(preJobCommand, 
jobExecutionContext));
+            }
+        }
 
+        List<String> postJobCommands = appDepDescription.getPostJobCommands();
+        if (postJobCommands != null) {
+            for (String postJobCommand : postJobCommands) {
+                jobDescriptor.addPostJobCommand(parseCommand(postJobCommand, 
jobExecutionContext));
+            }
         }
         return jobDescriptor;
     }
+
+    private static String parseCommand(String value, JobExecutionContext 
jobExecutionContext) {
+        String parsedValue = value.replaceAll("\\$workingDir", 
jobExecutionContext.getWorkingDir());
+        parsedValue = parsedValue.replaceAll("\\$inputDir", 
jobExecutionContext.getInputDir());
+        parsedValue = parsedValue.replaceAll("\\$outputDir", 
jobExecutionContext.getOutputDir());
+        return parsedValue;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/73282871/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java
----------------------------------------------------------------------
diff --git 
a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java
 
b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java
index 9b7102b..557702d 100644
--- 
a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java
+++ 
b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/api/job/JobDescriptor.java
@@ -231,6 +231,20 @@ public class JobDescriptor {
         
this.getJobDescriptorDocument().getJobDescriptor().getPostJobCommands().setCommandArray(commands);
     }
 
+    public void setModuleLoadCommands(String[] commands) {
+        if 
(this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands() == 
null) {
+            
this.getJobDescriptorDocument().getJobDescriptor().addNewModuleLoadCommands();
+        }
+        
this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands().setCommandArray(commands);
+    }
+
+    public void addModuleLoadCommands(String command) {
+        if 
(this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands() == 
null) {
+            
this.getJobDescriptorDocument().getJobDescriptor().addNewModuleLoadCommands();
+        }
+        
this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands().addCommand(command);
+    }
+
     public void addPreJobCommand(String command){
         
if(this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands() == 
null){
             
this.getJobDescriptorDocument().getJobDescriptor().addNewPreJobCommands();
@@ -383,6 +397,13 @@ public class JobDescriptor {
         return null;
     }
 
+    public String[] getModuleCommands() {
+        if 
(this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands() != 
null) {
+            return 
this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands().getCommandArray();
+        }
+        return null;
+    }
+
     public String[] getPreJobCommands(){
         
if(this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands() != 
null) {
             return 
this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands().getCommandArray();

http://git-wip-us.apache.org/repos/asf/airavata/blob/73282871/tools/gsissh/src/main/resources/schemas/PBSJobDescriptor.xsd
----------------------------------------------------------------------
diff --git a/tools/gsissh/src/main/resources/schemas/PBSJobDescriptor.xsd 
b/tools/gsissh/src/main/resources/schemas/PBSJobDescriptor.xsd
index 7749769..2e56edb 100644
--- a/tools/gsissh/src/main/resources/schemas/PBSJobDescriptor.xsd
+++ b/tools/gsissh/src/main/resources/schemas/PBSJobDescriptor.xsd
@@ -54,6 +54,7 @@
             <element name="submitArgs" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>
             <element name="variableList" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>
             <element name="preJobCommands" type="gsissh:preJobCommands" 
minOccurs="0" maxOccurs="1"/>
+            <element name="moduleLoadCommands" 
type="gsissh:moduleLoadCommands" minOccurs="0" maxOccurs="1"/>
             <element name="postJobCommands" type="gsissh:postJobCommands" 
minOccurs="0" maxOccurs="1"/>
             <element name="jobSubmitterCommand" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>
             <element name="callBackIp" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>
@@ -61,6 +62,11 @@
                </sequence>
        </complexType>
 
+    <complexType name="moduleLoadCommands">
+        <sequence>
+                       <element name="command" type="xsd:string" minOccurs="0" 
maxOccurs="unbounded" />
+               </sequence>
+    </complexType>
     <complexType name="preJobCommands">
         <sequence>
                        <element name="command" type="xsd:string" minOccurs="0" 
maxOccurs="unbounded" />

Reply via email to