You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2015/04/23 20:50:57 UTC

airavata git commit: fixing pbs script generation and update app catalog registration

Repository: airavata
Updated Branches:
  refs/heads/master d89f3f6bd -> 4f89c6725


fixing pbs script generation and update app catalog registration


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

Branch: refs/heads/master
Commit: 4f89c67256938ee523eb92b57897581e8460d12b
Parents: d89f3f6
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Thu Apr 23 14:50:49 2015 -0400
Committer: Chathuri Wimalasena <ch...@apache.org>
Committed: Thu Apr 23 14:50:49 2015 -0400

----------------------------------------------------------------------
 .../client/samples/CreateLaunchExperiment.java  |  22 +-
 .../client/samples/RegisterSampleData.java      |  12 +-
 .../tools/RegisterOGCEUS3Application.java       |   4 +-
 .../tools/RegisterSampleApplications.java       | 282 ++++++++++---------
 .../tools/RegisterSampleApplicationsUtils.java  |  11 +-
 .../client/tools/RegisterUS3Application.java    |   2 +-
 .../gfac/gsissh/util/GFACGSISSHUtils.java       |  25 +-
 .../airavata/gfac/ssh/util/GFACSSHUtils.java    |  35 ++-
 8 files changed, 210 insertions(+), 183 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/4f89c672/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 6ea537e..71ad870 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
@@ -58,10 +58,10 @@ public class CreateLaunchExperiment {
     private static final String DEFAULT_GATEWAY = "php_reference_gateway";
     private static Airavata.Client airavataClient;
 
-    private static String echoAppId = "Echo_9cbcfae4-616b-4bef-aa41-d3cd2bec6002";
+    private static String echoAppId = "Echo_4d075102-3591-4ad5-a218-c7e63471ba4a";
     private static String mpiAppId = "HelloMPI_bfd56d58-6085-4b7f-89fc-646576830518";
     private static String wrfAppId = "WRF_7ad5da38-c08b-417c-a9ea-da9298839762";
-    private static String amberAppId = "Amber_ee7e3e85-9dfd-459c-9f45-aca223192f5f";
+    private static String amberAppId = "Amber_6da3c39f-c435-413a-bb90-f14f87e8d6c3";
     private static String gromacsAppId = "GROMACS_05622038-9edd-4cb1-824e-0b7cb993364b";
     private static String espressoAppId = "ESPRESSO_10cc2820-5d0b-4c63-9546-8a8b595593c1";
     private static String lammpsAppId = "LAMMPS_2472685b-8acf-497e-aafe-cc66fe5f4cb6";
@@ -162,11 +162,11 @@ public class CreateLaunchExperiment {
     public static void createAndLaunchExp() throws TException {
         List<String> experimentIds = new ArrayList<String>();
         try {
-            for (int i = 0; i < 10; i++) {
+            for (int i = 0; i < 1; i++) {
 //                final String expId = createExperimentForSSHHost(airavata);
 //                final String expId = createEchoExperimentForFSD(airavataClient);
 //                final String expId = createMPIExperimentForFSD(airavataClient);
-//               final String expId = createEchoExperimentForStampede(airavataClient);
+               final String expId = createEchoExperimentForStampede(airavataClient);
 //                final String expId = createEchoExperimentForTrestles(airavataClient);
 //                final String expId = createExperimentEchoForLocalHost(airavataClient);
 //                final String expId = createExperimentWRFTrestles(airavataClient);
@@ -174,7 +174,7 @@ public class CreateLaunchExperiment {
 //                final String expId = createExperimentForBR2Amber(airavataClient);
 //                final String expId = createExperimentWRFStampede(airavataClient);
 //                final String expId = createExperimentForStampedeAmber(airavataClient);
-                String expId = createExperimentForTrestlesAmber(airavataClient);
+//                String expId = createExperimentForTrestlesAmber(airavataClient);
 //                final String expId = createExperimentGROMACSStampede(airavataClient);
 //                final String expId = createExperimentESPRESSOStampede(airavataClient);
 //                final String expId = createExperimentLAMMPSStampede(airavataClient);
@@ -1323,11 +1323,11 @@ public class CreateLaunchExperiment {
 //			}
             for (InputDataObjectType inputDataObjectType : exInputs) {
                 if (inputDataObjectType.getName().equalsIgnoreCase("Heat_Restart_File")) {
-                    inputDataObjectType.setValue("/Users/lginnali/Downloads/02_Heat.rst");
+                    inputDataObjectType.setValue("/Users/chathuri/dev/airavata/source/php/inputs/AMBER_FILES/02_Heat.rst");
                 } else if (inputDataObjectType.getName().equalsIgnoreCase("Production_Control_File")) {
-                    inputDataObjectType.setValue("/Users/lginnali/Downloads/03_Prod.in");
+                    inputDataObjectType.setValue("/Users/chathuri/dev/airavata/source/php/inputs/AMBER_FILES/03_Prod.in");
                 } else if (inputDataObjectType.getName().equalsIgnoreCase("Parameter_Topology_File")) {
-                    inputDataObjectType.setValue("/Users/lginnali/Downloads/prmtop");
+                    inputDataObjectType.setValue("/Users/chathuri/dev/airavata/source/php/inputs/AMBER_FILES/prmtop");
                 }
             }
 
@@ -1388,11 +1388,11 @@ public class CreateLaunchExperiment {
 //			}
             for (InputDataObjectType inputDataObjectType : exInputs) {
                 if (inputDataObjectType.getName().equalsIgnoreCase("Heat_Restart_File")) {
-                    inputDataObjectType.setValue("/Users/lginnali/Downloads/02_Heat.rst");
+                    inputDataObjectType.setValue("/Users/chathuri/dev/airavata/source/php/inputs/AMBER_FILES/02_Heat.rst");
                 } else if (inputDataObjectType.getName().equalsIgnoreCase("Production_Control_File")) {
-                    inputDataObjectType.setValue("/Users/lginnali/Downloads/03_Prod.in");
+                    inputDataObjectType.setValue("/Users/chathuri/dev/airavata/source/php/inputs/AMBER_FILES/03_Prod.in");
                 } else if (inputDataObjectType.getName().equalsIgnoreCase("Parameter_Topology_File")) {
-                    inputDataObjectType.setValue("/Users/lginnali/Downloads/prmtop");
+                    inputDataObjectType.setValue("/Users/chathuri/dev/airavata/source/php/inputs/AMBER_FILES/prmtop");
                 }
             }
             List<OutputDataObjectType> exOut = client.getApplicationOutputs(amberAppId);

http://git-wip-us.apache.org/repos/asf/airavata/blob/4f89c672/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 75413cb..868514b 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
@@ -156,7 +156,7 @@ public class RegisterSampleData {
             applicationInputs.add(input1);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("gaussian.out",
-                    "", DataType.URI, true,true);
+                    "", DataType.URI, true,true, null);
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
@@ -204,7 +204,7 @@ public class RegisterSampleData {
             applicationInputs.add(input7);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Diskoutputfile_with_dir",
-                    "", DataType.URI, true,false);
+                    "", DataType.URI, true,false, null);
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
@@ -308,7 +308,7 @@ public class RegisterSampleData {
             applicationInputs.add(input1);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Echoed_Output",
-                    "", DataType.STRING, true, false);
+                    "", DataType.STRING, true, false, null);
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
@@ -340,7 +340,7 @@ public class RegisterSampleData {
             applicationInputs.add(input2);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Result",
-                    "0", DataType.STRING, true,false);
+                    "0", DataType.STRING, true,false, null);
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
@@ -372,7 +372,7 @@ public class RegisterSampleData {
             applicationInputs.add(input2);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Result",
-                    "0", DataType.STRING,true,false);
+                    "0", DataType.STRING,true,false, null);
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
@@ -404,7 +404,7 @@ public class RegisterSampleData {
             applicationInputs.add(input2);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Result",
-                    "0", DataType.STRING, true,false);
+                    "0", DataType.STRING, true,false, null);
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);

http://git-wip-us.apache.org/repos/asf/airavata/blob/4f89c672/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 c1f5cc8..6389e7d 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
@@ -181,7 +181,7 @@ public class RegisterOGCEUS3Application {
             applicationInputs.add(input1);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("output",
-                    "", DataType.URI, true, false);
+                    "", DataType.URI, true, false, null);
 
 //            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("stdout",
 //                    "", DataType.URI);
@@ -190,7 +190,7 @@ public class RegisterOGCEUS3Application {
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
-  
+
             ultrascanAppId = airavataClient.registerApplicationInterface(DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("ultrascan", "ultrascan application",
                             appModules, applicationInputs, applicationOutputs));

http://git-wip-us.apache.org/repos/asf/airavata/blob/4f89c672/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 b3efbef..e53074e 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
@@ -28,8 +28,8 @@ import java.util.*;
 
 import org.apache.airavata.api.Airavata;
 import org.apache.airavata.api.client.AiravataClientFactory;
+import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationParallelismType;
-import org.apache.airavata.model.appcatalog.appdeployment.SetEnvPaths;
 import org.apache.airavata.model.appcatalog.appinterface.*;
 import org.apache.airavata.model.appcatalog.computeresource.*;
 import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
@@ -63,7 +63,7 @@ public class RegisterSampleApplications {
  // unicore service endpoint url
 //    private static final String unicoreEndPointURL = "https://fsd-cloud15.zam.kfa-juelich.de:7000/INTEROP1/services/BESFactory?res=default_bes_factory";
     private static final String unicoreEndPointURL = "https://deisa-unic.fz-juelich.de:9111/FZJ_JUROPA/services/BESFactory?res=default_bes_factory";
-    
+
     //Appplication Names
     private static final String echoName = "Echo";
     private static final String amberName = "Amber";
@@ -81,7 +81,7 @@ public class RegisterSampleApplications {
     private static final String gamessName = "Gamess";
     private static final String stressMemName = "StressMem";
     private static final String ultrascanName = "Ultrascan";
-   
+
     //Appplication Descriptions
     private static final String echoDescription = "A Simple Echo Application";
     private static final String amberDescription = "Assisted Model Building with Energy Refinement MD Package";
@@ -98,7 +98,7 @@ public class RegisterSampleApplications {
     private static final String gaussianDescription = "Grid Chem Gaussian Application";
     private static final String gamessDescription = "A Gamess Application";
     private static final String ultrascanDescription = "Ultrascan Application";
-    
+
     //App Module Id's
     private static String echoModuleId;
     private static String amberModuleId;
@@ -200,28 +200,28 @@ public class RegisterSampleApplications {
             System.out.println("\n #### Registering XSEDE Computational Resources #### \n");
 
             //Register Stampede
-            List<BatchQueue> stampedeQueues = new ArrayList<BatchQueue>();
+            List<BatchQueue> stampedeQueues = new ArrayList<>();
             BatchQueue normalQueue = createBatchQueue("normal", "Normal Queue", 2880, 256, 4000, 50, 0);
             BatchQueue developmentQueue = createBatchQueue("development", "Development Queue", 120, 16, 4000, 1, 0);
             stampedeQueues.add(normalQueue);
             stampedeQueues.add(developmentQueue);
             stampedeResourceId = registerComputeHost("stampede.tacc.xsede.org", "TACC Stampede Cluster",
-                    ResourceJobManagerType.SLURM, "push", "/usr/bin", SecurityProtocol.SSH_KEYS, 22, null, stampedeQueues);
+                    ResourceJobManagerType.SLURM, "push", "/usr/bin", SecurityProtocol.SSH_KEYS, 22, "ibrun", stampedeQueues);
 
             System.out.println("Stampede Resource Id is " + stampedeResourceId);
 
             //Register Trestles
-            List<BatchQueue> trestlesQueues = new ArrayList<BatchQueue>();
+            List<BatchQueue> trestlesQueues = new ArrayList<>();
             BatchQueue normalQueue_tr = createBatchQueue("normal", "Normal Queue", 2880, 32, 32, 50, 0);
             BatchQueue sharedQueue_tr = createBatchQueue("shared", "Shared Queue", 2880, 4, 32, 50, 0);
             trestlesQueues.add(normalQueue_tr);
             trestlesQueues.add(sharedQueue_tr);
             trestlesResourceId = registerComputeHost("trestles.sdsc.xsede.org", "SDSC Trestles Cluster",
-                    ResourceJobManagerType.PBS, "push", "/opt/torque/bin/", SecurityProtocol.SSH_KEYS, 22, null, trestlesQueues);
+                    ResourceJobManagerType.PBS, "push", "/opt/torque/bin/", SecurityProtocol.SSH_KEYS, 22, "mpirun -np", trestlesQueues);
             System.out.println("Trestles Resource Id is " + trestlesResourceId);
 
             //Register BigRedII
-            List<BatchQueue> br2Queues = new ArrayList<BatchQueue>();
+            List<BatchQueue> br2Queues = new ArrayList<>();
             BatchQueue normalQueue_br2 = createBatchQueue("normal", "Normal Queue", 2880, 340, 2048, 50, 0);
             BatchQueue serial_br2 = createBatchQueue("serial", "Normal Queue", 10080, 340, 2048, 50, 0);
             br2Queues.add(normalQueue_br2);
@@ -234,11 +234,11 @@ public class RegisterSampleApplications {
             System.out.println("FSd Resource Id: "+fsdResourceId);
 
             //Register Alamo
-            List<BatchQueue> alamoQueues = new ArrayList<BatchQueue>();
+            List<BatchQueue> alamoQueues = new ArrayList<>();
             alamoResourceId = registerComputeHost("alamo.uthscsa.edu", "Alamo Cluster",
                     ResourceJobManagerType.PBS, "push", "/usr/bin/", SecurityProtocol.SSH_KEYS, 22, "/usr/bin/mpiexec -np", alamoQueues);
             System.out.println("Alamo Cluster " + alamoResourceId);
-            
+
 
         } catch (TException e) {
             e.printStackTrace();
@@ -251,7 +251,7 @@ public class RegisterSampleApplications {
             System.out.println("\n #### Registering Non-XSEDE Computational Resources #### \n");
 
             //Register LSF resource
-            List<BatchQueue> lsfQueues = new ArrayList<BatchQueue>();
+            List<BatchQueue> lsfQueues = new ArrayList<>();
             lsfResourceId = registerComputeHost("ghpcc06.umassrc.org", "LSF Cluster",
                     ResourceJobManagerType.LSF, "push", "source /etc/bashrc;/lsf/9.1/linux2.6-glibc2.3-x86_64/bin", SecurityProtocol.SSH_KEYS, 22, "mpiexec", lsfQueues);
             System.out.println("LSF Resource Id is " + lsfResourceId);
@@ -261,17 +261,17 @@ public class RegisterSampleApplications {
         }
 
     }
-    
+
     public static String registerUnicoreEndpoint(String hostName, String hostDesc, JobSubmissionProtocol protocol, SecurityProtocol securityProtocol) throws TException {
-		
+
 		ComputeResourceDescription computeResourceDescription = RegisterSampleApplicationsUtils
 				.createComputeResourceDescription(hostName, hostDesc, null, null);
-		
+
 		fsdResourceId = airavataClient.registerComputeResource(computeResourceDescription);
-		
+
 		if (fsdResourceId.isEmpty())
 			throw new AiravataClientException();
-		
+
 		System.out.println("FSD Compute ResourceID: "+fsdResourceId);
 		JobSubmissionInterface jobSubmission = RegisterSampleApplicationsUtils.createJobSubmissionInterface(fsdResourceId, protocol, 2);
 		UnicoreJobSubmission ucrJobSubmission = new UnicoreJobSubmission();
@@ -279,12 +279,12 @@ public class RegisterSampleApplications {
 		ucrJobSubmission.setUnicoreEndPointURL(unicoreEndPointURL);
 //		ucrJobSubmission.setAuthenticationMode(AuthenticationMode.MYPROXY_ISSUED);
 		jobSubmission.setJobSubmissionProtocol(JobSubmissionProtocol.UNICORE);
-		
+
 		airavataClient.addUNICOREJobSubmissionDetails(fsdResourceId, 0, ucrJobSubmission);
-		
+
 		return jobSubmission.getJobSubmissionInterfaceId();
 	}
-    
+
     public void registerAppModules() {
         try {
             System.out.println("\n #### Registering Application Modules #### \n");
@@ -294,12 +294,12 @@ public class RegisterSampleApplications {
                     RegisterSampleApplicationsUtils.createApplicationModule(
                             echoName, "1.0", echoDescription));
             System.out.println("Echo Module Id " + echoModuleId);
-            
+
             mpiModuleId = airavataClient.registerApplicationModule(DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationModule(
                             mpiName, "1.0", mpiDescription));
             System.out.println("MPI Module Id " + mpiModuleId);
-            
+
 
             //Register Amber
             amberModuleId = airavataClient.registerApplicationModule(DEFAULT_GATEWAY,
@@ -400,12 +400,12 @@ public class RegisterSampleApplications {
 
         //Registering BigRed II Apps
         registerBigRedApps();
-        
+
         //Registering FSD Apps
         registerFSDApps();
 
         registerLSFApps();
-        
+
         //Registering Alamo Apps
         registerAlamoApps();
 
@@ -419,7 +419,7 @@ public class RegisterSampleApplications {
 
         //Registering Echo
         registerEchoInterface();
-        
+
         //Registering MPI
         registerMPIInterface();
 
@@ -452,7 +452,7 @@ public class RegisterSampleApplications {
         registerTinkerMonteInterface();
 
         registerGaussianInterface();
-        
+
         // Register Ultrascan
         registerUltrascanInterface();
 
@@ -474,19 +474,19 @@ public class RegisterSampleApplications {
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("gams_output",
-                    "", DataType.URI, true, false));
+                    "", DataType.URI, true, false, null));
             applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("dat_file",
-                    "", DataType.URI, true, true));
+                    "", DataType.URI, true, true, null));
             applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("trj_file",
-                    "", DataType.URI, false, true));
+                    "", DataType.URI, false, true, null));
             applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("rst_file",
-                    "", DataType.URI, false, true));
+                    "", DataType.URI, false, true, null));
             applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("f10_file",
-                    "", DataType.URI, false, true));
+                    "", DataType.URI, false, true, null));
             applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("STDOUT",
-                    "", DataType.STDOUT, false, true));
+                    "", DataType.STDOUT, false, true, null));
             applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("STDERR",
-                    "", DataType.STDERR, false, true));
+                    "", DataType.STDERR, false, true, null));
 
             gamessInterfaceId = airavataClient.registerApplicationInterface(DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("gamess", "gamess",
@@ -513,9 +513,9 @@ public class RegisterSampleApplications {
             applicationInputs.add(input1);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",
-                    "", DataType.STDOUT, false, false);
+                    "", DataType.STDOUT, false, false, null);
             OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",
-                    "", DataType.STDERR, false, false);
+                    "", DataType.STDERR, false, false, null);
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
@@ -540,24 +540,24 @@ public class RegisterSampleApplications {
 
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Input_to_Echo", "",
-                    DataType.STRING, null, 1, false, false,false, "A test string to Echo", null);
-            
+                    DataType.STRING, null, 1, false, true,false, "A test string to Echo", null);
+
 //            InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("Input_to_Echo2", "",
 //                    DataType.URI, null, 2, false, false,false, "A sample input remote file", null);
 //
 //            InputDataObjectType input3 = RegisterSampleApplicationsUtils.createAppInput("Input_to_Echo3", "file:///tmp/test.txt",
 //                    DataType.URI, null, 3,false, false, false, "A sample input local file", null);
 
-            
+
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
 //            applicationInputs.add(input2); applicationInputs.add(input3);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Echoed_Output",
-                    "", DataType.STDOUT, true, false);
+                    "", DataType.STDOUT, true, false, null);
 
             OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("Echoed_Error",
-                    "", DataType.STDERR, true, false);
+                    "", DataType.STDERR, true, false, null);
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
@@ -578,27 +578,27 @@ public class RegisterSampleApplications {
     public void registerMPIInterface() {
         try {
             System.out.println("#### Registering MPI Interface #### \n");
-            
+
             List<String> appModules = new ArrayList<String>();
             appModules.add(mpiModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Sample_Input", "",
                     DataType.STRING, null, 1,true, false, false, "An optional MPI source file", null);
-            
+
             InputDataObjectType input11 = RegisterSampleApplicationsUtils.createAppInput("US3INPUT", "",
                     DataType.URI, null, 1,true, false, false, "Input US3 file", null);
-            
+
             InputDataObjectType input12 = RegisterSampleApplicationsUtils.createAppInput("US3INPUTARG", "",
                     DataType.STRING, null, 1,true, false, false, "Input US3 Arg", null);
 
-            
+
             InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("NumberOfProcesses", "",
                     DataType.INTEGER, null, 2,false, true, false, "Number Of Processes", null);
-            
-            
+
+
             InputDataObjectType input3 = RegisterSampleApplicationsUtils.createAppInput("ProcessesPerHost", "",
                     DataType.INTEGER, null, 3,false, true, false, "Processes per host", null);
-            
+
 
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
@@ -606,21 +606,21 @@ public class RegisterSampleApplications {
             applicationInputs.add(input3);
             applicationInputs.add(input11);
             applicationInputs.add(input12);
-            
+
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("STDOutput",
-                    "", DataType.STDOUT, true, true);
+                    "", DataType.STDOUT, true, true, null);
             OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDErr",
-                    "", DataType.STDERR, true, true);
-            
+                    "", DataType.STDERR, true, true, null);
+
             OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("US3OUT",
-                    "", DataType.STRING, true, false);
+                    "", DataType.STRING, true, false, null);
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
             applicationOutputs.add(output2);
             applicationOutputs.add(output3);
- 
-            
+
+
             mpiInterfaceId = airavataClient.registerApplicationInterface(DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(mpiName, mpiDescription,
                             appModules, applicationInputs, applicationOutputs));
@@ -631,7 +631,7 @@ public class RegisterSampleApplications {
         }
     }
 
-    
+
     public void registerAmberInterface() {
         try {
             System.out.println("#### Registering Amber Interface #### \n");
@@ -640,25 +640,25 @@ public class RegisterSampleApplications {
             appModules.add(amberModuleId);
 
             InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Heat_Restart_File", null,
-                    DataType.URI, null, 1, true, true,false, "Heating up the system equilibration stage - 02_Heat.rst", null);
+                    DataType.URI, "-c", 1, true, true, false, "Heating up the system equilibration stage - 02_Heat.rst", null);
 
             InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("Production_Control_File", null,
-                    DataType.URI, null, 2,true, true, false, "Constant pressure and temperature for production stage - 03_Prod.in", null);
+                    DataType.URI, "-i ", 2, true, true, false, "Constant pressure and temperature for production stage - 03_Prod.in", null);
 
             InputDataObjectType input3 = RegisterSampleApplicationsUtils.createAppInput("Parameter_Topology_File", null,
-                    DataType.URI, null, 3,true, true, false, "Parameter and Topology coordinates - prmtop", null);
+                    DataType.URI, "-p", 3, true, true, false, "Parameter and Topology coordinates - prmtop", null);
 
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
             applicationInputs.add(input2);
             applicationInputs.add(input3);
 
-            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("AMBER_Execution_Summary","03_Prod.info",DataType.URI, true, true);
-            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("AMBER_Execution_log","03_Prod.out",DataType.URI, true, true);
-            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("AMBER_Trajectory_file","03_Prod.mdcrd",DataType.URI, true, true);
-            OutputDataObjectType output4 = RegisterSampleApplicationsUtils.createAppOutput("AMBER_Restart_file","03_Prod.rst",DataType.URI, true, true);
-            OutputDataObjectType output5 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true);
-            OutputDataObjectType output6 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true);
+            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("AMBER_Execution_Summary", "03_Prod.info", DataType.URI, true, true, "-inf");
+            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("AMBER_Execution_log", "03_Prod.out", DataType.URI, true, true, "-o");
+            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("AMBER_Trajectory_file", "03_Prod.mdcrd", DataType.URI, true, true, "-x");
+            OutputDataObjectType output4 = RegisterSampleApplicationsUtils.createAppOutput("AMBER_Restart_file", "03_Prod.rst", DataType.URI, true, true, " -r");
+            OutputDataObjectType output5 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT", null, DataType.STDOUT, true, false, null);
+            OutputDataObjectType output6 = RegisterSampleApplicationsUtils.createAppOutput("STDERR", null, DataType.STDERR, true, false, null);
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
             applicationOutputs.add(output2);
@@ -666,7 +666,7 @@ public class RegisterSampleApplications {
             applicationOutputs.add(output4);
             applicationOutputs.add(output5);
             applicationOutputs.add(output6);
-            
+
             amberInterfaceId = airavataClient.registerApplicationInterface(DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(amberName, amberDescription,
                             appModules, applicationInputs, applicationOutputs));
@@ -692,15 +692,15 @@ public class RegisterSampleApplications {
 
             InputDataObjectType input3 = RegisterSampleApplicationsUtils.createAppInput("Parameter_Topology_File", null,
                     DataType.URI, null, 3,true, true, false, "Parameter and Topology coordinates", null);
-            
+
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
             applicationInputs.add(input2);
             applicationInputs.add(input3);
 
-            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true);
-            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true);
-          
+            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true, null);
+            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true, null);
+
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
@@ -733,11 +733,11 @@ public class RegisterSampleApplications {
             applicationInputs.add(input1);
             applicationInputs.add(input2);
 
-            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("ESPRESSO_Execution_Log",null,DataType.URI, true, true);
-            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("ESPRESSO_WFC_Binary_file",null,DataType.URI, true, true);
-            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true);
-            OutputDataObjectType output4 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true);
-            
+            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("ESPRESSO_Execution_Log",null,DataType.URI, true, true, null);
+            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("ESPRESSO_WFC_Binary_file",null,DataType.URI, true, true, null);
+            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true, null);
+            OutputDataObjectType output4 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true, null);
+
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
             applicationOutputs.add(output2);
@@ -771,12 +771,12 @@ public class RegisterSampleApplications {
             applicationInputs.add(input1);
             applicationInputs.add(input2);
 
-            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("GROMACS_Execution_Log",null,DataType.URI, true, true);
-            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("Full_Precision_Trajectory_file",null,DataType.URI, true, true);
-            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("Portable_Energy_file",null,DataType.URI, true, true);
-            OutputDataObjectType output4 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true);
-            OutputDataObjectType output5 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true);
-        
+            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("GROMACS_Execution_Log",null,DataType.URI, true, true, null);
+            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("Full_Precision_Trajectory_file",null,DataType.URI, true, true, null);
+            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("Portable_Energy_file",null,DataType.URI, true, true, null);
+            OutputDataObjectType output4 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true, null);
+            OutputDataObjectType output5 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true, null);
+
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
             applicationOutputs.add(output2);
@@ -808,11 +808,11 @@ public class RegisterSampleApplications {
             List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>();
             applicationInputs.add(input1);
 
-            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("LAMMPS_Simulation_Log",null,DataType.URI, true, true);
-            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true);
-            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true);
-       
-          
+            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("LAMMPS_Simulation_Log",null,DataType.URI, true, true, null);
+            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true, null);
+            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true, null);
+
+
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
             applicationOutputs.add(output2);
@@ -842,10 +842,10 @@ public class RegisterSampleApplications {
             applicationInputs.add(input1);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("NWChem_Execution_Log",
-                    null, DataType.URI, true, false);
-            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true);
-            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true);
-           
+                    null, DataType.URI, true, false, null);
+            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true, null);
+            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true, null);
+
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
@@ -880,10 +880,10 @@ public class RegisterSampleApplications {
             applicationInputs.add(input1);
             applicationInputs.add(input2);
 
-            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Trinity_Execution_Log",null,DataType.URI, true, true);
-            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("Trinity_FASTA_File",null,DataType.URI, true, true);
-            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true);
-            OutputDataObjectType output4 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true);
+            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Trinity_Execution_Log",null,DataType.URI, true, true, null);
+            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("Trinity_FASTA_File",null,DataType.URI, true, true, null);
+            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true, null);
+            OutputDataObjectType output4 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true, null);
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
@@ -924,20 +924,20 @@ public class RegisterSampleApplications {
             applicationInputs.add(input3);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("WRF_Output",
-                    "", DataType.URI, true, true);
+                    "", DataType.URI, true, true, null);
 
             OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("WRF_Execution_Log",
-                    "", DataType.URI, true, true);
-            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true);
-            OutputDataObjectType output4 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true);
+                    "", DataType.URI, true, true, null);
+            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true, null);
+            OutputDataObjectType output4 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true, null);
+
 
-            
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
             applicationOutputs.add(output2);
             applicationOutputs.add(output3);
             applicationOutputs.add(output4);
-            
+
             wrfInterfaceId = airavataClient.registerApplicationInterface(DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(wrfName, wrfDescription,
                             appModules, applicationInputs, applicationOutputs));
@@ -969,12 +969,12 @@ public class RegisterSampleApplications {
             applicationInputs.add(input2);
             applicationInputs.add(input3);
 
-            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("PHASTA_Execution_Log",null,DataType.URI, true, true);
-            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("PHASTA_Output_tar",null,DataType.URI, true, true);
-            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true);
-            OutputDataObjectType output4 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true);
+            OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("PHASTA_Execution_Log",null,DataType.URI, true, true, null);
+            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("PHASTA_Output_tar",null,DataType.URI, true, true, null);
+            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true, null);
+            OutputDataObjectType output4 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true, null);
+
 
-            
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
             applicationOutputs.add(output2);
@@ -1021,16 +1021,16 @@ public class RegisterSampleApplications {
             applicationInputs.add(input1);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("gaussian.out",
-                    "", DataType.URI, true, true );
-            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true);
-            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true);
+                    "", DataType.URI, true, true, null);
+            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true, null);
+            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true, null);
 
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
             applicationOutputs.add(output2);
             applicationOutputs.add(output3);
-            
+
             String addApplicationInterfaceId = airavataClient.registerApplicationInterface(DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Gaussian", "Gaussian application",
                             appModules, applicationInputs, applicationOutputs));
@@ -1073,11 +1073,11 @@ public class RegisterSampleApplications {
             applicationInputs.add(input7);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Diskoutputfile_with_dir",
-                    "", DataType.URI, false, false);
-            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true);
-            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true);
+                    "", DataType.URI, false, false, null);
+            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",null,DataType.STDOUT, true, true, null);
+            OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true, null);
+
 
-            
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
             applicationOutputs.add(output2);
@@ -1106,10 +1106,12 @@ public class RegisterSampleApplications {
             System.out.println("Echo on stampede deployment Id " + echoAppDeployId);
 
             //Register Amber
-            String amberAppDeployId = airavataClient.registerApplicationDeployment(DEFAULT_GATEWAY,
-                    RegisterSampleApplicationsUtils.createApplicationDeployment(amberModuleId, stampedeResourceId,
-                            "/home1/01437/ogce/production/app_wrappers/amber_wrapper.sh", ApplicationParallelismType.MPI,
-                            amberDescription, null, null, null));
+            List<String> moduleLoadCMDs = new ArrayList<String>();
+            moduleLoadCMDs.add("module load amber");
+            ApplicationDeploymentDescription amberStampedeDeployment = RegisterSampleApplicationsUtils.createApplicationDeployment(amberModuleId, stampedeResourceId,
+                    "/opt/apps/intel13/mvapich2_1_9/amber/12.0/bin/sander.MPI -O", ApplicationParallelismType.MPI,
+                    amberDescription, moduleLoadCMDs, null, null);
+            String amberAppDeployId = airavataClient.registerApplicationDeployment(DEFAULT_GATEWAY,amberStampedeDeployment);
             System.out.println("Amber on stampede deployment Id " + amberAppDeployId);
 
             //Register ESPRESSO
@@ -1186,10 +1188,12 @@ public class RegisterSampleApplications {
             System.out.println("Echo on trestles deployment Id " + echoAppDeployId);
 
             //Register Amber
+            List<String> moduleLoadCMDs = new ArrayList<String>();
+            moduleLoadCMDs.add("module load amber");
             String amberAppDeployId = airavataClient.registerApplicationDeployment(DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationDeployment(amberModuleId, trestlesResourceId,
-                            "/home/ogce/production/app_wrappers/amber_wrapper.sh", ApplicationParallelismType.MPI,
-                            amberDescription, null, null, null));
+                            "/opt/amber/bin/sander.MPI -O", ApplicationParallelismType.MPI,
+                            amberDescription, moduleLoadCMDs, null, null));
             System.out.println("Amber on trestles deployment Id " + amberAppDeployId);
 
             //Register GROMACS
@@ -1265,10 +1269,14 @@ public class RegisterSampleApplications {
             System.out.println("Echo on bigredII deployment Id " + echoAppDeployId);
 
             //Register Amber
+            List<String> amberModuleLoadCMDsBr2 = new ArrayList<String>();
+            amberModuleLoadCMDsBr2.add("module load amber/gnu/mpi/12");
+            amberModuleLoadCMDsBr2.add("module swap PrgEnv-cray PrgEnv-gnu");
             String amberAppDeployId = airavataClient.registerApplicationDeployment(DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationDeployment(amberModuleId, bigredResourceId,
-                            "/N/u/cgateway/BigRed2/production/app_wrappers/amber_wrapper.sh", ApplicationParallelismType.MPI,
-                            amberDescription, null, null, null));
+                            "/N/soft/cle4/amber/gnu/mpi/12/amber12/bin/sander.MPI -O", ApplicationParallelismType.MPI,
+                            amberDescription, amberModuleLoadCMDsBr2, null, null));
+
             System.out.println("Amber on bigredII deployment Id " + amberAppDeployId);
 
             //Register AutoDock
@@ -1306,18 +1314,18 @@ public class RegisterSampleApplications {
                     RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, fsdResourceId,
                             "/bin/echo", ApplicationParallelismType.SERIAL, echoDescription, null, null, null));
             System.out.println("Echo on FSD deployment Id: " + echoAppDeployId);
-            
+
             //Register MPI
 //            String mpiAppDeployId = airavataClient.registerApplicationDeployment(DEFAULT_GATEWAY,
 //                    RegisterSampleApplicationsUtils.createApplicationDeployment(mpiModuleId, fsdResourceId,
 //                            "/home/bes/hellompi", ApplicationParallelismType.OPENMP_MPI, mpiDescription, null, null, null));
-            
-            
+
+
             String mpiAppDeployId = airavataClient.registerApplicationDeployment(DEFAULT_GATEWAY,
                     RegisterSampleApplicationsUtils.createApplicationDeployment(mpiModuleId, fsdResourceId,
                             "us_mpi_analysis", ApplicationParallelismType.MPI, mpiDescription, null, null, null));
 
-            
+
             System.out.println("MPI on FSD deployment Id: " + mpiAppDeployId);
 
         } catch (TException e) {
@@ -1342,7 +1350,7 @@ public class RegisterSampleApplications {
         batchQueue.setMaxProcessors(maxProcessors);
         return batchQueue;
     }
-    
+
     public String registerComputeHost(String hostName, String hostDesc,
                                              ResourceJobManagerType resourceJobManagerType,
                                              String monitoringEndPoint, String jobMangerBinPath,
@@ -1380,11 +1388,11 @@ public class RegisterSampleApplications {
 
         return computeResourceId;
     }
-    
-    
-    
-    
-    
+
+
+
+
+
     public void registerGatewayResourceProfile() {
 
         try {
@@ -1406,13 +1414,13 @@ public class RegisterSampleApplications {
             ComputeResourcePreference lsfResourcePreferences = RegisterSampleApplicationsUtils.
                     createComputeResourcePreference(lsfResourceId, "airavata", false, null, null, null,
                             "/home/lg11w/mywork");
-            
+
             ComputeResourcePreference fsdResourcePreferences = RegisterSampleApplicationsUtils.
                     createComputeResourcePreference(fsdResourceId, null, false, null, JobSubmissionProtocol.UNICORE, DataMovementProtocol.UNICORE_STORAGE_SERVICE,null);
-            
+
             ComputeResourcePreference alamoResourcePreferences = RegisterSampleApplicationsUtils.
                     createComputeResourcePreference(alamoResourceId, null, false, null, JobSubmissionProtocol.SSH, DataMovementProtocol.SCP,"/home/us3/work/uslims3_cauma3-03896");
-          
+
             GatewayResourceProfile gatewayResourceProfile = new GatewayResourceProfile();
             gatewayResourceProfile.setGatewayID(DEFAULT_GATEWAY);
             gatewayResourceProfile.addToComputeResourcePreferences(stampedeResourcePreferences);
@@ -1477,7 +1485,7 @@ public class RegisterSampleApplications {
             e.printStackTrace();
         }
     }
-    
+
      private void registerUltrascanInterface() {
         try {
             System.out.println("#### Registering Ultrascan Application Interface ####");
@@ -1492,13 +1500,13 @@ public class RegisterSampleApplications {
             applicationInputs.add(input1);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("output/analysis-results.tar",
-                    "", DataType.URI, true, true );
+                    "", DataType.URI, true, true, null );
 
             OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT",
-                    "", DataType.STDOUT, true, true );
+                    "", DataType.STDOUT, true, true, null );
 
             OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",
-                    "", DataType.STDERR, true, true );
+                    "", DataType.STDERR, true, true, null );
 
             List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);

http://git-wip-us.apache.org/repos/asf/airavata/blob/4f89c672/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 5ef1eae..a466b9f 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
@@ -150,17 +150,18 @@ public class RegisterSampleApplicationsUtils {
     }
 
     public static OutputDataObjectType createAppOutput(String inputName,
-                                                       String value,
-                                                       DataType type,
-                                                       boolean isRequired,
-                                                       boolean requiredToCMD) {
+                                                   String value,
+                                                   DataType type,
+                                                   boolean isRequired,
+                                                   boolean requiredToCMD,
+                                                   String argument) {
         OutputDataObjectType outputDataObjectType = new OutputDataObjectType();
-//        outputDataObjectType.setIsEmpty(false);
         if (inputName != null) outputDataObjectType.setName(inputName);
         if (value != null) outputDataObjectType.setValue(value);
         if (type != null) outputDataObjectType.setType(type);
         outputDataObjectType.setIsRequired(isRequired);
         outputDataObjectType.setRequiredToAddedToCommandLine(requiredToCMD);
+        outputDataObjectType.setApplicationArgument(argument);
         return outputDataObjectType;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4f89c672/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 27a4063..4e0510c 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
@@ -181,7 +181,7 @@ public class RegisterUS3Application {
             applicationInputs.add(input1);
 
             OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("output",
-                    "", DataType.URI, true, false);
+                    "", DataType.URI, true, false, null);
 
 //            OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("stdout",
 //                    "", DataType.URI);

http://git-wip-us.apache.org/repos/asf/airavata/blob/4f89c672/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 631f59c..cfd40e0 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
@@ -40,6 +40,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.appdeployment.ApplicationParallelismType;
 import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
 import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
@@ -168,15 +169,6 @@ public class GFACGSISSHUtils {
         JobDescriptor jobDescriptor = new JobDescriptor();
         TaskDetails taskData = jobExecutionContext.getTaskData();
         ResourceJobManager resourceJobManager = jobExecutionContext.getResourceJobManager();
-        Map<JobManagerCommand, String> jobManagerCommands = resourceJobManager.getJobManagerCommands();
-        if (jobManagerCommands != null && !jobManagerCommands.isEmpty()) {
-            for (JobManagerCommand command : jobManagerCommands.keySet()) {
-                if (command == JobManagerCommand.SUBMISSION) {
-                    String commandVal = jobManagerCommands.get(command);
-                    jobDescriptor.setJobSubmitter(commandVal);
-                }
-            }
-        }
         try {
 			if(ServerSettings.getSetting(ServerSettings.JOB_NOTIFICATION_ENABLE).equalsIgnoreCase("true")){
 				jobDescriptor.setMailOptions(ServerSettings.getSetting(ServerSettings.JOB_NOTIFICATION_FLAGS));
@@ -348,6 +340,21 @@ public class GFACGSISSHUtils {
                 jobDescriptor.addPostJobCommand(parseCommand(postJobCommand, jobExecutionContext));
             }
         }
+
+        ApplicationParallelismType parallelism = appDepDescription.getParallelism();
+        if (parallelism != null){
+            if (parallelism == ApplicationParallelismType.MPI || parallelism == ApplicationParallelismType.OPENMP || parallelism == ApplicationParallelismType.OPENMP_MPI){
+                Map<JobManagerCommand, String> jobManagerCommands = resourceJobManager.getJobManagerCommands();
+                if (jobManagerCommands != null && !jobManagerCommands.isEmpty()) {
+                    for (JobManagerCommand command : jobManagerCommands.keySet()) {
+                        if (command == JobManagerCommand.SUBMISSION) {
+                            String commandVal = jobManagerCommands.get(command);
+                            jobDescriptor.setJobSubmitter(commandVal);
+                        }
+                    }
+                }
+            }
+        }
         return jobDescriptor;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/4f89c672/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/util/GFACSSHUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/util/GFACSSHUtils.java b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/util/GFACSSHUtils.java
index e810302..c04aecb 100644
--- a/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/util/GFACSSHUtils.java
+++ b/modules/gfac/gfac-ssh/src/main/java/org/apache/airavata/gfac/ssh/util/GFACSSHUtils.java
@@ -45,6 +45,7 @@ import org.apache.airavata.gsi.ssh.impl.PBSCluster;
 import org.apache.airavata.gsi.ssh.impl.authentication.DefaultPasswordAuthenticationInfo;
 import org.apache.airavata.gsi.ssh.util.CommonUtils;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
+import org.apache.airavata.model.appcatalog.appdeployment.ApplicationParallelismType;
 import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
 import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
@@ -207,7 +208,7 @@ public class GFACSSHUtils {
             AppCatalog appCatalog = jobExecutionContext.getAppCatalog();
             JobSubmissionInterface preferredJobSubmissionInterface = jobExecutionContext.getPreferredJobSubmissionInterface();
             SSHJobSubmission sshJobSubmission = appCatalog.getComputeResource().getSSHJobSubmission(preferredJobSubmissionInterface.getJobSubmissionInterfaceId());
-            
+
             Cluster pbsCluster = null;
             String key=sshAuth.getKey();
             boolean recreate = false;
@@ -281,16 +282,8 @@ public class GFACSSHUtils {
     public static JobDescriptor createJobDescriptor(JobExecutionContext jobExecutionContext, Cluster cluster) {
         JobDescriptor jobDescriptor = new JobDescriptor();
         TaskDetails taskData = jobExecutionContext.getTaskData();
-        ResourceJobManager resourceJobManager = jobExecutionContext.getResourceJobManager();
-        Map<JobManagerCommand, String> jobManagerCommands = resourceJobManager.getJobManagerCommands();
-        if (jobManagerCommands != null && !jobManagerCommands.isEmpty()) {
-            for (JobManagerCommand command : jobManagerCommands.keySet()) {
-                if (command == JobManagerCommand.SUBMISSION) {
-                    String commandVal = jobManagerCommands.get(command);
-                    jobDescriptor.setJobSubmitter(commandVal);
-                }
-            }
-        }
+
+
         try {
 			if(ServerSettings.getSetting(ServerSettings.JOB_NOTIFICATION_ENABLE).equalsIgnoreCase("true")) {
                 String flags = ServerSettings.getSetting(ServerSettings.JOB_NOTIFICATION_FLAGS);
@@ -321,7 +314,7 @@ public class GFACSSHUtils {
 			 logger.error("ApplicationSettingsException : " +e.getLocalizedMessage());
 		}
         // this is common for any application descriptor
-        
+
         jobDescriptor.setCallBackIp(ServerSettings.getIp());
         jobDescriptor.setCallBackPort(ServerSettings.getSetting(org.apache.airavata.common.utils.Constants.GFAC_SERVER_PORT, "8950"));
         jobDescriptor.setInputDirectory(jobExecutionContext.getInputDir());
@@ -407,6 +400,9 @@ public class GFACSSHUtils {
         jobDescriptor.setAllEnvExport(true);
         jobDescriptor.setOwner(((PBSCluster) cluster).getServerInfo().getUserName());
 
+        ResourceJobManager resourceJobManager = jobExecutionContext.getResourceJobManager();
+
+
         ComputationalResourceScheduling taskScheduling = taskData.getTaskScheduling();
         if (taskScheduling != null) {
             int totalNodeCount = taskScheduling.getNodeCount();
@@ -466,6 +462,21 @@ public class GFACSSHUtils {
                 jobDescriptor.addPostJobCommand(parseCommand(postJobCommand, jobExecutionContext));
             }
         }
+
+        ApplicationParallelismType parallelism = appDepDescription.getParallelism();
+        if (parallelism != null){
+            if (parallelism == ApplicationParallelismType.MPI || parallelism == ApplicationParallelismType.OPENMP || parallelism == ApplicationParallelismType.OPENMP_MPI){
+                Map<JobManagerCommand, String> jobManagerCommands = resourceJobManager.getJobManagerCommands();
+                if (jobManagerCommands != null && !jobManagerCommands.isEmpty()) {
+                    for (JobManagerCommand command : jobManagerCommands.keySet()) {
+                        if (command == JobManagerCommand.SUBMISSION) {
+                            String commandVal = jobManagerCommands.get(command);
+                            jobDescriptor.setJobSubmitter(commandVal);
+                        }
+                    }
+                }
+            }
+        }
         return jobDescriptor;
     }