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>
</xsl:text> </xsl:when> </xsl:choose> + <xsl:text>
</xsl:text> <xsl:for-each select="ns:exports/ns:name"> <xsl:value-of select="."/>=<xsl:value-of select="./@value"/><xsl:text>
</xsl:text> export<xsl:text> </xsl:text><xsl:value-of select="."/> <xsl:text>
</xsl:text> </xsl:for-each> -<xsl:for-each select="ns:preJobCommands/ns:command"> + <xsl:text>
</xsl:text> +<xsl:for-each select="ns:moduleLoadCommands/ns:command"> <xsl:text>
</xsl:text> <xsl:value-of select="."/><xsl:text> </xsl:text> </xsl:for-each> + <xsl:text>
</xsl:text> cd <xsl:text> </xsl:text><xsl:value-of select="ns:workingDirectory"/><xsl:text>
</xsl:text> + <xsl:for-each select="ns:preJobCommands/ns:command"> + <xsl:value-of select="."/><xsl:text> </xsl:text> + <xsl:text>
</xsl:text> + </xsl:for-each> + <xsl:text>
</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>
</xsl:text> <xsl:for-each select="ns:postJobCommands/ns:command"> <xsl:value-of select="."/><xsl:text> </xsl:text> </xsl:for-each> + <xsl:text>
</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>
</xsl:text> - <xsl:value-of select="."/><xsl:text> </xsl:text> - </xsl:for-each> + <xsl:text>
</xsl:text> +<xsl:for-each select="ns:exports/ns:name"> + <xsl:value-of select="."/>=<xsl:value-of select="./@value"/><xsl:text>
</xsl:text> +export<xsl:text> </xsl:text><xsl:value-of select="."/> + <xsl:text>
</xsl:text> +</xsl:for-each> + <xsl:text>
</xsl:text> +<xsl:for-each select="ns:moduleLoadCommands/ns:command"> + <xsl:value-of select="."/><xsl:text> </xsl:text> + <xsl:text>
</xsl:text> +</xsl:for-each> + <xsl:text>
</xsl:text> cd <xsl:text> </xsl:text><xsl:value-of select="ns:workingDirectory"/><xsl:text>
</xsl:text> +<xsl:for-each select="ns:preJobCommands/ns:command"> + <xsl:value-of select="."/><xsl:text> </xsl:text> + <xsl:text>
</xsl:text> +</xsl:for-each> + <xsl:text>
</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>
</xsl:text> +<xsl:for-each select="ns:postJobCommands/ns:command"> + <xsl:text>
</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" />
