/** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.airavata.client.tools; import org.apache.airavata.api.Airavata; import org.apache.airavata.api.client.AiravataClientFactory; import org.apache.airavata.client.samples.CreateLaunchExperiment; import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription; import org.apache.airavata.model.appcatalog.appdeployment.CommandObject; import org.apache.airavata.model.appcatalog.computeresource.*; import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference; import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile; import org.apache.airavata.model.application.io.DataType; import org.apache.airavata.model.application.io.InputDataObjectType; import org.apache.airavata.model.application.io.OutputDataObjectType; import org.apache.airavata.model.data.movement.DMType; import org.apache.airavata.model.data.movement.DataMovementProtocol; import org.apache.airavata.model.data.movement.SCPDataMovement; import org.apache.airavata.model.data.movement.SecurityProtocol; import org.apache.airavata.model.error.AiravataClientException; import org.apache.airavata.model.parallelism.ApplicationParallelismType; import org.apache.airavata.model.security.AuthzToken; import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.*; public class RegisterSampleApplications { // public static final String THRIFT_SERVER_HOST = "gw127.iu.xsede.org"; public static final String THRIFT_SERVER_HOST = CreateLaunchExperiment.THRIFT_SERVER_HOST; // public static final int THRIFT_SERVER_PORT = 9930; public static final int THRIFT_SERVER_PORT = CreateLaunchExperiment.THRIFT_SERVER_PORT; private final static Logger logger = LoggerFactory.getLogger(RegisterSampleApplications.class); // private static final String DEFAULT_GATEWAY = "default"; private static final String DEFAULT_GATEWAY = CreateLaunchExperiment.DEFAULT_GATEWAY; private static Airavata.Client airavataClient; //Host Id's private static String localhostId = ""; private static String stampedeResourceId = "stampede.tacc.xsede.org_92ac5ed6-35a5-4910-82ef-48f128f9245a"; private static String trestlesResourceId = "trestles.sdsc.xsede.org_db29986e-5a27-4949-ae7f-04a6012d0d35"; private static String bigredResourceId = "bigred2.uits.iu.edu_3eae6e9d-a1a7-44ec-ac85-3796ef726ef1"; private static String lsfResourceId = "lsf_3eae6e9d-a1a7-44ec-ac85-3796ef726ef1"; private static String alamoResourceId; private static String fsdResourceId; // 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"; private static final String autoDockName = "AutoDock"; private static final String espressoName = "ESPRESSO"; private static final String gromacsName = "GROMACS"; private static final String lammpsName = "LAMMPS"; private static final String nwChemName = "NWChem"; private static final String trinityName = "Trinity"; private static final String wrfName = "WRF"; private static final String phastaName = "PHASTA"; private static final String mpiName = "HelloMPI"; private static final String monteXName = "TinkerMonte"; private static final String gaussianName = "Gaussian"; 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"; private static final String autoDockDescription = "AutoDock suite of automated docking tools"; private static final String espressoDescription = "Nanoscale electronic-structure calculations and materials modeling"; private static final String gromacsDescription = "GROMACS Molecular Dynamics Package"; private static final String lammpsDescription = "Large-scale Atomic/Molecular Massively Parallel Simulator"; private static final String nwChemDescription = "Ab initio computational chemistry software package"; private static final String trinityDescription = "de novo reconstruction of transcriptomes from RNA-seq data"; private static final String wrfDescription = "Weather Research and Forecasting"; private static final String phastaDescription = "Computational fluid dynamics solver"; private static final String mpiDescription = "A Hello MPI Application"; private static final String monteXDescription = "Grid Chem Tinker Monte Application"; 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; private static String autoDockModuleId; private static String espressoModuleId = "ESPRESSO_54dc94da-5e2b-4add-b054-41ad88891fdc"; private static String gromacsModuleId = "GROMACS_417271fd-7ac1-4f40-b2a5-ed0908a743eb"; private static String lammpsModuleId; private static String lammpsModuleId1; private static String nwChemModuleId = "NWChem_edbc318d-4c41-46a7-b216-32bad71eabdd"; private static String trinityModuleId = "Trinity_8af45ca0-b628-4614-9087-c7b73f5f2fb6"; private static String wrfModuleId; private static String phastaModuleId; private static String mpiModuleId; private static String monteXModuleId; private static String gaussianModuleId; private static String gamessModuleId; //App Interface Id's private static String echoInterfaceId = ""; private static String mpiInterfaceId = ""; private static String echoLocalInterfaceId = ""; private static String amberInterfaceId = ""; private static String autoDockInterfaceId = ""; private static String espressoInterfaceId = ""; private static String gromacsInterfaceId = ""; private static String lammpsInterfaceId = ""; private static String nwChemInterfaceId = ""; private static String trinityInterfaceId = ""; private static String wrfInterfaceId; private static String phastaInterfaceId; private static String gamessInterfaceId; private static String ultrascanModuleId; private static String ultrascanInterfaceId; public RegisterSampleApplications(Airavata.Client airavataClient) { this.airavataClient = airavataClient; } public static void main(String[] args) { try { Airavata.Client airavataClient = AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, THRIFT_SERVER_PORT); System.out.println("API version is " + airavataClient.getAPIVersion(null)); RegisterSampleApplications registerSampleApplications = new RegisterSampleApplications(airavataClient); registerLocalHost(); //Register all compute hosts registerSampleApplications.registerXSEDEHosts(); registerSampleApplications.registerNonXSEDEHosts(); //Register Gateway Resource Preferences registerSampleApplications.registerGatewayResourceProfile(); //Register all application modules registerSampleApplications.registerAppModules(); //Register all application deployments registerSampleApplications.registerAppDeployments(); //Register all application interfaces registerSampleApplications.registerAppInterfaces(); //write output into propertiesFile // registerSampleApplications.writeIdPropertyFile(); } catch (Exception e) { logger.error("Error while connecting with server", e.getMessage()); e.printStackTrace(); } } public static void registerLocalHost() { try { System.out.println("\n #### Registering Localhost Computational Resource #### \n"); ComputeResourceDescription computeResourceDescription = RegisterSampleApplicationsUtils. createComputeResourceDescription("localhost", "LocalHost", null, null); List<String> hostAliases = new ArrayList<String>(); hostAliases.add("alias1"); hostAliases.add("alias2"); computeResourceDescription.setHostAliases(hostAliases); localhostId = airavataClient.registerComputeResource(new AuthzToken(""), computeResourceDescription); ResourceJobManager resourceJobManager = RegisterSampleApplicationsUtils. createResourceJobManager(ResourceJobManagerType.FORK, null, null, null); LOCALSubmission submission = new LOCALSubmission(); submission.setResourceJobManager(resourceJobManager); airavataClient.addLocalSubmissionDetails(new AuthzToken(""), localhostId, 1, submission); System.out.println("LocalHost Resource Id is " + localhostId); } catch (TException e) { e.printStackTrace(); } } public void registerXSEDEHosts() { try { System.out.println("\n #### Registering XSEDE Computational Resources #### \n"); //Register Stampede List<BatchQueue> stampedeQueues = new ArrayList<BatchQueue>(); 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, "ibrun", stampedeQueues); System.out.println("Stampede Resource Id is " + stampedeResourceId); //Register Trestles // List<BatchQueue> trestlesQueues = new ArrayList<BatchQueue>(); // 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, "mpirun -np", trestlesQueues); // System.out.println("Trestles Resource Id is " + trestlesResourceId); //Register BigRedII List<BatchQueue> br2Queues = new ArrayList<BatchQueue>(); 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); br2Queues.add(serial_br2); bigredResourceId = registerComputeHost("bigred2.uits.iu.edu", "IU BigRed II Cluster", ResourceJobManagerType.PBS, "push", "/opt/torque/torque-4.2.3.1/bin/", SecurityProtocol.SSH_KEYS, 22, "aprun -n", br2Queues); System.out.println("BigredII Resource Id is " + bigredResourceId); fsdResourceId = registerUnicoreEndpoint("fsd-cloud15.zam.kfa-juelich.de", "interop host", JobSubmissionProtocol.UNICORE, SecurityProtocol.GSI); System.out.println("FSd Resource Id: "+fsdResourceId); //Register Alamo List<BatchQueue> alamoQueues = new ArrayList<BatchQueue>(); 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(); } } public void registerNonXSEDEHosts() { try { System.out.println("\n #### Registering Non-XSEDE Computational Resources #### \n"); //Register LSF resource List<BatchQueue> lsfQueues = new ArrayList<BatchQueue>(); 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); } catch (TException e) { e.printStackTrace(); } } 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(new AuthzToken(""), 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(); ucrJobSubmission.setSecurityProtocol(securityProtocol); ucrJobSubmission.setUnicoreEndPointURL(unicoreEndPointURL); // ucrJobSubmission.setAuthenticationMode(AuthenticationMode.MYPROXY_ISSUED); jobSubmission.setJobSubmissionProtocol(JobSubmissionProtocol.UNICORE); airavataClient.addUNICOREJobSubmissionDetails(new AuthzToken(""), fsdResourceId, 0, ucrJobSubmission); return jobSubmission.getJobSubmissionInterfaceId(); } public void registerAppModules() { try { System.out.println("\n #### Registering Application Modules #### \n"); //Register Echo echoModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( echoName, "1.0", echoDescription)); System.out.println("Echo Module Id " + echoModuleId); mpiModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( mpiName, "1.0", mpiDescription)); System.out.println("MPI Module Id " + mpiModuleId); //Register Amber amberModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( amberName, "12.0", amberDescription)); System.out.println("Amber Module Id " + amberModuleId); //Register AutoDock autoDockModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( autoDockName, "4.2", autoDockDescription)); System.out.println("AutoDock Module Id " + autoDockModuleId); //Register ESPRESSO espressoModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( espressoName, "5.0.3", espressoDescription)); System.out.println("ESPRESSO Module Id " + espressoModuleId); //Register GROMACS gromacsModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( gromacsName, "4.6.5", gromacsDescription)); System.out.println("GROMACS Module Id " + gromacsModuleId); //Register LAMMPS lammpsModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( lammpsName, "20Mar14", lammpsDescription)); lammpsModuleId1 = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( lammpsName, "28Jun14-base", lammpsDescription)); System.out.println("LAMMPS Module Id " + lammpsModuleId); System.out.println("LAMMPS Module Id for LSF " + lammpsModuleId1); //Register NWChem nwChemModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( nwChemName, "6.3", nwChemDescription)); System.out.println("NWChem Module Id " + nwChemModuleId); //Register Trinity trinityModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( trinityName, "r20130225", trinityDescription)); System.out.println("Trinity Module Id " + trinityModuleId); //Register WRF wrfModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( wrfName, "3.5.1", wrfDescription)); System.out.println("WRF Module Id " + wrfModuleId); //Register PHASTA phastaModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( phastaName, "1.0", phastaDescription)); System.out.println("phasta Module Id " + phastaModuleId); monteXModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( monteXName, "1.0", monteXDescription)); System.out.println("Tinker Monte Module Id " + monteXModuleId); gaussianModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( gaussianName, "1.0", gaussianDescription)); //Register GAMESS gamessModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( gamessName, "17May13", gamessDescription)); System.out.println("Gamess Module Id " + gamessModuleId); //Register Ultrascan ultrascanModuleId = airavataClient.registerApplicationModule(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationModule( ultrascanName, "1.0", ultrascanDescription)); System.out.println("Ultrascan Module Id " + ultrascanModuleId); } catch (TException e) { e.printStackTrace(); } } public void registerAppDeployments() { System.out.println("\n #### Registering Application Deployments #### \n"); //Registering localhost echo App registerLocalApps(); //Registering Stampede Apps registerStampedeApps(); //Registering Trestles Apps registerTrestlesApps(); //Registering BigRed II Apps registerBigRedApps(); //Registering FSD Apps registerFSDApps(); registerLSFApps(); //Registering Alamo Apps registerAlamoApps(); } public void registerAppInterfaces() { System.out.println("\n #### Registering Application Interfaces #### \n"); //Registering local Echo registerLocalEchoInterface(); //Registering Echo registerEchoInterface(); //Registering MPI registerMPIInterface(); //Registering Amber registerAmberInterface(); //Registering AutoDock registerAutoDockInterface(); //Registering Espresso registerEspressoInterface(); //Registering Gromacs registerGromacsInterface(); //Registering Lammps registerLammpsInterface(); //Registrting Gamess registerGamessInterface(); //Registering NWChem registerNWChemInterface(); //Registering Trinity registerTrinityInterface(); //Registering WRF registerWRFInterface(); registerTinkerMonteInterface(); registerGaussianInterface(); // Register Ultrascan registerUltrascanInterface(); } public void registerGamessInterface() { try { System.out.println("#### Registering Gamess Interface #### \n"); List<String> appModules = new ArrayList<String>(); appModules.add(gamessModuleId); List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>(); applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("gams_input", "", DataType.URI, null, 1, true, false, false, "Gamess Input file", null)); // applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("EXT_FILE", "", // DataType.URI, null, 2, ValidityType.OPTIONAL, CommandLineType.EXCLUSIVE, false, "Gamess EXT file", null)); List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>(); applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("gams_output", "", DataType.URI, true, false, null)); applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("dat_file", "", DataType.URI, true, true, null)); applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("trj_file", "", DataType.URI, false, true, null)); applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("rst_file", "", DataType.URI, false, true, null)); applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("f10_file", "", DataType.URI, false, true, null)); applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("STDOUT", "", DataType.STDOUT, false, true, null)); applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("STDERR", "", DataType.STDERR, false, true, null)); gamessInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("gamess", "gamess", appModules, applicationInputs, applicationOutputs)); System.out.println("GAMESS Application Interface Id " + gamessModuleId); } catch (TException e) { e.printStackTrace(); } } public void registerLocalEchoInterface() { try { System.out.println("#### Registering Echo Interface #### \n"); List<String> appModules = new ArrayList<String>(); appModules.add(echoModuleId); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("echo_input", "echo_output=Hello World", DataType.STRING, null, 1,false, false, false, "A test string to Echo", null); List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>(); applicationInputs.add(input1); OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT", "", DataType.STDOUT, false, false, null); OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDERR", "", DataType.STDERR, false, false, null); List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>(); applicationOutputs.add(output1); applicationOutputs.add(output2); echoLocalInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(echoName, echoDescription, appModules, applicationInputs, applicationOutputs)); System.out.println("Local Echo Application Interface Id " + echoLocalInterfaceId); } catch (TException e) { e.printStackTrace(); } } public void registerEchoInterface() { try { System.out.println("#### Registering Echo Interface #### \n"); List<String> appModules = new ArrayList<String>(); appModules.add(echoModuleId); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Input_to_Echo", "", 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, null); OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("Echoed_Error", "", DataType.STDERR, true, false, null); List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>(); applicationOutputs.add(output1); applicationOutputs.add(output2); echoInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(echoName, echoDescription, appModules, applicationInputs, applicationOutputs)); System.out.println("Echo Application Interface Id " + echoInterfaceId); } catch (TException e) { e.printStackTrace(); } } 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); applicationInputs.add(input2); applicationInputs.add(input3); applicationInputs.add(input11); applicationInputs.add(input12); OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("STDOutput", "", DataType.STDOUT, true, true, null); OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDErr", "", DataType.STDERR, true, true, null); OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("US3OUT", "", DataType.STRING, true, false, null); List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>(); applicationOutputs.add(output1); applicationOutputs.add(output2); applicationOutputs.add(output3); mpiInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(mpiName, mpiDescription, appModules, applicationInputs, applicationOutputs)); System.out.println("MPI Application Interface Id " + mpiInterfaceId); } catch (TException e) { e.printStackTrace(); } } public void registerAmberInterface() { try { System.out.println("#### Registering Amber Interface #### \n"); List<String> appModules = new ArrayList<String>(); appModules.add(amberModuleId); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Heat_Restart_File", 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, "-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, "-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, "-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); applicationOutputs.add(output3); applicationOutputs.add(output4); applicationOutputs.add(output5); applicationOutputs.add(output6); amberInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(amberName, amberDescription, appModules, applicationInputs, applicationOutputs)); System.out.println("Amber Application Interface Id " + amberInterfaceId); } catch (TException e) { e.printStackTrace(); } } public void registerAutoDockInterface() { try { System.out.println("#### Registering AutoDock Interface #### \n"); List<String> appModules = new ArrayList<String>(); appModules.add(autoDockModuleId); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Heat_Restart_File", null, DataType.URI, null, 1,true, true, false, "Heating up the system equilibration stage", null); InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("Production_Control_File", null, DataType.URI, null, 2,true, true, false, "Constant pressure and temperature for production stage", null); 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, null); OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDERR",null,DataType.STDERR, true, true, null); List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>(); applicationOutputs.add(output1); applicationOutputs.add(output2); autoDockInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(autoDockName, autoDockDescription, appModules, applicationInputs, applicationOutputs)); System.out.println("AutoDock Application Interface Id " + autoDockInterfaceId); } catch (TException e) { e.printStackTrace(); } } public void registerEspressoInterface() { try { System.out.println("#### Registering Espresso Interface #### \n"); List<String> appModules = new ArrayList<String>(); appModules.add(espressoModuleId); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("AI_Primitive_Cell", null, DataType.URI, null, 1, true, true,false, "AI_Metal_Input_File - Al.sample.in", null); InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("AI_Pseudopotential_File", null, DataType.URI, null, 2, true, true,false, "Constant pressure and temperature for production stage - Al.pz-vbc.UPF", null); List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>(); applicationInputs.add(input1); applicationInputs.add(input2); 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); applicationOutputs.add(output3); applicationOutputs.add(output4); espressoInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(espressoName, espressoDescription, appModules, applicationInputs, applicationOutputs)); System.out.println("Espresso Application Interface Id " + espressoInterfaceId); } catch (TException e) { e.printStackTrace(); } } public void registerGromacsInterface() { try { System.out.println("#### Registering Gromacs Interface #### \n"); List<String> appModules = new ArrayList<String>(); appModules.add(gromacsModuleId); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Portable_Input_Binary_File", null, DataType.URI, null, 1, true, true, false, "Coordinates velocities, molecular topology and simulation parameters - pdb1y6l-EM-vacuum.tpr", null); InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("GROMOS_Coordinate_File", null, DataType.URI, null, 2, true, true,false, "Trajectory Coordinates Molecular Structure in Gromos87 format - pdb1y6l-EM-vacuum.gro", null); List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>(); applicationInputs.add(input1); applicationInputs.add(input2); 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); applicationOutputs.add(output3); applicationOutputs.add(output4); applicationOutputs.add(output5); gromacsInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(gromacsName, gromacsDescription, appModules, applicationInputs, applicationOutputs)); System.out.println("Gromacs Application Interface Id " + gromacsInterfaceId); } catch (TException e) { e.printStackTrace(); } } public void registerLammpsInterface() { try { System.out.println("#### Registering LAMMPS Interface #### \n"); List<String> appModules = new ArrayList<String>(); appModules.add(lammpsModuleId); appModules.add(lammpsModuleId1); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Friction_Simulation_Input", null, DataType.URI, "<", 1,true, true, false, "Friction Simulation Input - in.friction", null); List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>(); applicationInputs.add(input1); 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); applicationOutputs.add(output3); lammpsInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(lammpsName, lammpsDescription, appModules, applicationInputs, applicationOutputs)); System.out.println("LAMMPS Application Interface Id " + lammpsInterfaceId); } catch (TException e) { e.printStackTrace(); } } public void registerNWChemInterface() { try { System.out.println("#### Registering NWChem Interface #### \n"); List<String> appModules = new ArrayList<String>(); appModules.add(nwChemModuleId); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Water_Molecule_Input", null, DataType.URI, null, 1,true , true, false, "Water Molecule Input File - water.nw", null); List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>(); applicationInputs.add(input1); OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("NWChem_Execution_Log", 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); applicationOutputs.add(output2); applicationOutputs.add(output3); nwChemInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(nwChemName, nwChemDescription, appModules, applicationInputs, applicationOutputs)); System.out.println("NWChem Application Interface Id " + nwChemInterfaceId); } catch (TException e) { e.printStackTrace(); } } public void registerTrinityInterface() { try { System.out.println("#### Registering Trinity Interface #### \n"); List<String> appModules = new ArrayList<String>(); appModules.add(trinityModuleId); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("RNA_Seq_Left_Input", null, DataType.URI, null, 1,true, true, false, "RNA-Seq Left Library - reads.left.fq", null); InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("RNA_Seq_Right_Input", null, DataType.URI, null, 2, true, true,false, "RNA-Seq Right Library - reads.right.fq", null); List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>(); applicationInputs.add(input1); applicationInputs.add(input2); 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); applicationOutputs.add(output2); applicationOutputs.add(output3); applicationOutputs.add(output4); trinityInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(trinityName, trinityDescription, appModules, applicationInputs, applicationOutputs)); System.out.println("Trinity Application Interface Id " + trinityInterfaceId); } catch (TException e) { e.printStackTrace(); } } public void registerWRFInterface() { try { System.out.println("#### Registering WRF Interface #### \n"); List<String> appModules = new ArrayList<String>(); appModules.add(wrfModuleId); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Config_Namelist_File", null, DataType.URI, null, 1,true, true, false, "Namelist Configuration File - namelist.input", null); InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("WRF_Initial_Conditions", null, DataType.URI, null, 2, true, true,false, "Initial Conditions File - wrfinput_d01", null); InputDataObjectType input3 = RegisterSampleApplicationsUtils.createAppInput("WRF_Boundary_File", null, DataType.URI, null, 3,true, true, false, "Boundary Conditions File - wrfbdy_d01", null); List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>(); applicationInputs.add(input1); applicationInputs.add(input2); applicationInputs.add(input3); OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("WRF_Output", "", DataType.URI, true, true, null); OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("WRF_Execution_Log", "", 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(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(wrfName, wrfDescription, appModules, applicationInputs, applicationOutputs)); System.out.println("WRF Application Interface Id " + wrfInterfaceId); } catch (TException e) { e.printStackTrace(); } } public void registerPhastaInterface() { try { System.out.println("#### Registering PHASTA Interface #### \n"); List<String> appModules = new ArrayList<String>(); appModules.add(phastaModuleId); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("Parasolid_Geometric_Model", null, DataType.URI, null, 1, true, true,false, "Parasolid geometric model - geom.xmt_txt", null); InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("Problem_Definition", null, DataType.URI, null, 2,true, true, false, "problem definition - geom.smd", null); InputDataObjectType input3 = RegisterSampleApplicationsUtils.createAppInput("Mesh_Description_File", null, DataType.URI, null, 3, true, true,false, "Mesh Description - geom.sms", null); List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>(); applicationInputs.add(input1); applicationInputs.add(input2); applicationInputs.add(input3); 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); applicationOutputs.add(output3); applicationOutputs.add(output4); phastaInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription(phastaName, phastaDescription, appModules, applicationInputs, applicationOutputs)); System.out.println("phasta Application Interface Id " + phastaInterfaceId); } catch (TException e) { e.printStackTrace(); } } public void registerLocalApps (){ try { System.out.println("#### Registering Application Deployments on Localhost #### \n"); //Register Echo String echoAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, localhostId, "/bin/echo", ApplicationParallelismType.SERIAL, echoDescription, null, null, null)); System.out.println("Echo on localhost Id " + echoAppDeployId); }catch (TException e) { e.printStackTrace(); } } private void registerGaussianInterface() { try { System.out.println("#### Registering Gaussian Application Interface ####"); List<String> appModules = new ArrayList<String>(); appModules.add(gaussianModuleId); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("MainInputFile", null, DataType.URI, null, 1, true, true, false, "Gaussian main input file", null); List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>(); applicationInputs.add(input1); OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("gaussian.out", "", 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(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Gaussian", "Gaussian application", appModules, applicationInputs, applicationOutputs)); System.out.println("Gaussian Application Interface Id " + addApplicationInterfaceId); } catch (TException e) { e.printStackTrace(); } } private void registerTinkerMonteInterface() { try { System.out.println("#### Registering Tinker Monte Application Interface ####"); List<String> appModules = new ArrayList<String>(); appModules.add(monteXModuleId); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("xyzf", "O16.xyz", DataType.URI, null, 1, true, true, false, "Tinker monte input_1", null); InputDataObjectType input2 = RegisterSampleApplicationsUtils.createAppInput("keyf", "O16.key", DataType.URI, "-k", 2, true, true, false, "Tinker monte input_2", null); InputDataObjectType input3 = RegisterSampleApplicationsUtils.createAppInput("stps", "20000", DataType.STRING, null, 3, true, true, false, "Tinker monte input_3", null); InputDataObjectType input4 = RegisterSampleApplicationsUtils.createAppInput("Ctc", "C", DataType.STRING, null, 4, true, true, false, "Tinker monte input_4", null); InputDataObjectType input5 = RegisterSampleApplicationsUtils.createAppInput("stpsZ", "3.0", DataType.STRING, null, 5, true, true, false, "Tinker monte input_5", null); InputDataObjectType input6 = RegisterSampleApplicationsUtils.createAppInput("temp", "298", DataType.STRING, null, 6, true, true, false, "Tinker monte input_6", null); InputDataObjectType input7 = RegisterSampleApplicationsUtils.createAppInput("Rconv", "0.01", DataType.STRING, null, 7, true, true, false, "Tinker monte input_7", null); List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>(); applicationInputs.add(input1); applicationInputs.add(input2); applicationInputs.add(input3); applicationInputs.add(input4); applicationInputs.add(input5); applicationInputs.add(input6); applicationInputs.add(input7); OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("Diskoutputfile_with_dir", "", DataType.URI, 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); applicationOutputs.add(output3); String addApplicationInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Tinker_Monte", "Monte application", appModules, applicationInputs, applicationOutputs)); System.out.println("Monte Application Interface Id " + addApplicationInterfaceId); } catch (TException e) { e.printStackTrace(); } } public void registerStampedeApps() { try { System.out.println("#### Registering Application Deployments on Stampede #### \n"); //Register Echo String echoAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, stampedeResourceId, "/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 List<CommandObject> moduleLoadCMDs = new ArrayList<>(); CommandObject cmd = new CommandObject("module load amber"); moduleLoadCMDs.add(cmd); 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(new AuthzToken(""), DEFAULT_GATEWAY,amberStampedeDeployment); System.out.println("Amber on stampede deployment Id " + amberAppDeployId); //Register ESPRESSO String espressoAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(espressoModuleId, stampedeResourceId, "/home1/01437/ogce/production/app_wrappers/espresso_wrapper.sh", ApplicationParallelismType.MPI, espressoDescription, null, null, null)); System.out.println("ESPRESSO on stampede deployment Id " + espressoAppDeployId); //Register GROMACS String gromacsAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(gromacsModuleId, stampedeResourceId, "/home1/01437/ogce/production/app_wrappers/gromacs_wrapper.sh", ApplicationParallelismType.MPI, gromacsDescription, null, null ,null)); System.out.println("GROMACS on stampede deployment Id " + gromacsAppDeployId); //Register LAMMPS List<CommandObject> preJobCommands = new ArrayList(); preJobCommands.add(new CommandObject("cp /home1/00421/ccguser/apps/ds_lammps/data/* $workingDir")); String lammpsAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(lammpsModuleId, stampedeResourceId, "~/apps/ds_lammps/bin/lmp_stampede", ApplicationParallelismType.MPI, lammpsDescription,null, preJobCommands, null)); System.out.println("LAMMPS on stampede deployment Id " + lammpsAppDeployId); //Register NWChem List<CommandObject> nwChemModuleCmds = new ArrayList(); nwChemModuleCmds.add(new CommandObject("module load nwchem")); String nwChemAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(nwChemModuleId, stampedeResourceId, "nwchem", ApplicationParallelismType.MPI, nwChemDescription, nwChemModuleCmds, null, null)); System.out.println("NWChem on stampede deployment Id " + nwChemAppDeployId); //Register Trinity String trinityAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(trinityModuleId, stampedeResourceId, "/home1/01437/ogce/production/app_wrappers/trinity_wrapper.sh", ApplicationParallelismType.MPI, trinityDescription, null, null, null)); System.out.println("Trinity on stampede deployment Id " + trinityAppDeployId); //Register WRF String wrfAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(wrfModuleId, stampedeResourceId, "/home1/01437/ogce/production/app_wrappers/wrf_wrapper.sh", ApplicationParallelismType.MPI, wrfDescription, null, null , null)); System.out.println("WRF on stampede deployment Id " + wrfAppDeployId); List<CommandObject> monteXModuleCmds = new ArrayList(); // monteXModuleCmds.add("module load globus"); // monteXModuleCmds.add("module load uberftp"); monteXModuleCmds.add(new CommandObject("module load fftw3")); String monteXAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(monteXModuleId, stampedeResourceId, "/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(); } } public void registerTrestlesApps() { try { System.out.println("#### Registering Application Deployments on Trestles #### \n"); //Register Echo String echoAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, trestlesResourceId, "/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 List<CommandObject> moduleLoadCMDs = new ArrayList(); moduleLoadCMDs.add(new CommandObject("module load amber")); String amberAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(amberModuleId, trestlesResourceId, "/opt/amber/bin/sander.MPI -O", ApplicationParallelismType.MPI, amberDescription, moduleLoadCMDs, null, null)); System.out.println("Amber on trestles deployment Id " + amberAppDeployId); //Register GROMACS String gromacsAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(gromacsModuleId, trestlesResourceId, "/home/ogce/production/app_wrappers/gromacs_wrapper.sh", ApplicationParallelismType.MPI, gromacsDescription, null, null, null)); System.out.println("GROMACS on trestles deployment Id " + gromacsAppDeployId); //Register LAMMPS String lammpsAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(lammpsModuleId, trestlesResourceId, "/home/ogce/production/app_wrappers/lammps_wrapper.sh", ApplicationParallelismType.MPI, lammpsDescription, null, null , null)); System.out.println("LAMMPS on trestles deployment Id " + lammpsAppDeployId); //Register GAMESS List<CommandObject> moduleLoadCmd = new ArrayList(); moduleLoadCmd.add(new CommandObject("module load gamess")); String gamessAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(gamessModuleId, trestlesResourceId, "/opt/gamess/rungms", ApplicationParallelismType.MPI, gamessDescription, moduleLoadCmd, null,null)); System.out.println("Gamess on trestles deployment Id " + gamessAppDeployId); List<CommandObject> gaussianMouldes = new ArrayList(); gaussianMouldes.add(new CommandObject("module load gaussian")); String gaussianAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(gaussianModuleId, trestlesResourceId, "g09", ApplicationParallelismType.OPENMP, gaussianDescription, gaussianMouldes , null, null)); System.out.println("Gaussian on trestles deployment Id " + gaussianAppDeployId); } catch (TException e) { e.printStackTrace(); } } public void registerLSFApps() { try { System.out.println("#### Registering Application Deployments on Trestles #### \n"); //Register Echo String echoAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, lsfResourceId, "/home/lg11w/executables/echo.sh", ApplicationParallelismType.SERIAL, echoDescription, null, null, null)); List<CommandObject> moduleLoadCmd = new ArrayList(); moduleLoadCmd.add(new CommandObject("module load LAMMPS/28Jun14-base")); //Register Echo String lammpsDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(lammpsModuleId, lsfResourceId, "lmp_ghpcc", ApplicationParallelismType.MPI, echoDescription, moduleLoadCmd, null, null)); System.out.println("Echo on LSF deployment Id " + echoAppDeployId); System.out.println("LAMMPS on LSF deployment Id " + lammpsDeployId); } catch (TException e) { e.printStackTrace(); } } public void registerBigRedApps() { try { System.out.println("#### Registering Application Deployments on BigRed II #### \n"); //Register Echo String echoAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(echoModuleId, bigredResourceId, "/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 List<CommandObject> amberModuleLoadCMDsBr2 = new ArrayList(); amberModuleLoadCMDsBr2.add(new CommandObject("module load amber/gnu/mpi/12")); amberModuleLoadCMDsBr2.add(new CommandObject("module swap PrgEnv-cray PrgEnv-gnu")); String amberAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(amberModuleId, bigredResourceId, "/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 String autoDockDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(autoDockModuleId, bigredResourceId, "/N/u/cgateway/BigRed2/production/app_wrappers/auto_dock_wrapper.sh", ApplicationParallelismType.MPI, autoDockDescription, null, null, null)); System.out.println("AutoDock on bigredII deployment Id " + autoDockDeployId); // //Register GROMACS // String gromacsAppDeployId = airavataClient.registerApplicationDeployment( // RegisterSampleApplicationsUtils.createApplicationDeployment(gromacsModuleId, bigredResourceId, // "/N/u/cgateway/BigRed2/production/app_wrappers/gromacs_wrapper.sh", ApplicationParallelismType.MPI, // gromacsDescription)); // System.out.println("GROMACS on bigredII deployment Id " + gromacsAppDeployId); // // //Register LAMMPS // String lammpsAppDeployId = airavataClient.registerApplicationDeployment( // RegisterSampleApplicationsUtils.createApplicationDeployment(lammpsModuleId, bigredResourceId, // "/N/u/cgateway/BigRed2/production/app_wrappers/lammps_wrapper.sh", ApplicationParallelismType.MPI, // lammpsDescription)); // System.out.println("LAMMPS on bigredII deployment Id " + lammpsAppDeployId); } catch (TException e) { e.printStackTrace(); } } public void registerFSDApps() { try { System.out.println("#### Registering Application Deployments on FSD #### \n"); //Register Echo String echoAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, 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(new AuthzToken(""), 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) { e.printStackTrace(); } } public BatchQueue createBatchQueue (String queuename, String queueDesc, int maxRunTime, int maxNodes, int maxProcessors, int maxJobsInQueue, int maxMemory){ BatchQueue batchQueue = new BatchQueue(); batchQueue.setQueueName(queuename); batchQueue.setQueueDescription(queueDesc); batchQueue.setMaxMemory(maxMemory); batchQueue.setMaxJobsInQueue(maxJobsInQueue); batchQueue.setMaxNodes(maxNodes); batchQueue.setMaxRunTime(maxRunTime); batchQueue.setMaxProcessors(maxProcessors); return batchQueue; } public String registerComputeHost(String hostName, String hostDesc, ResourceJobManagerType resourceJobManagerType, String monitoringEndPoint, String jobMangerBinPath, SecurityProtocol securityProtocol, int portNumber, String jobManagerCommand, List<BatchQueue> batchQueues) throws TException { ComputeResourceDescription computeResourceDescription = RegisterSampleApplicationsUtils. createComputeResourceDescription(hostName, hostDesc, null, null); computeResourceDescription.setBatchQueues(batchQueues); String computeResourceId = airavataClient.registerComputeResource(new AuthzToken(""), computeResourceDescription); if (computeResourceId.isEmpty()) throw new AiravataClientException(); ResourceJobManager resourceJobManager = RegisterSampleApplicationsUtils. createResourceJobManager(resourceJobManagerType, monitoringEndPoint, jobMangerBinPath, null); Map<JobManagerCommand, String> jobManagerCommandStringMap = new HashMap<JobManagerCommand, String>(); if (resourceJobManagerType == ResourceJobManagerType.SLURM) { jobManagerCommandStringMap.put(JobManagerCommand.SUBMISSION, "sbatch"); jobManagerCommandStringMap.put(JobManagerCommand.JOB_MONITORING, "squeue"); jobManagerCommandStringMap.put(JobManagerCommand.DELETION, "scancel"); resourceJobManager.setJobManagerCommands(jobManagerCommandStringMap); } else if (resourceJobManagerType == ResourceJobManagerType.PBS) { jobManagerCommandStringMap.put(JobManagerCommand.SUBMISSION, "qsub"); jobManagerCommandStringMap.put(JobManagerCommand.JOB_MONITORING, "qstat"); jobManagerCommandStringMap.put(JobManagerCommand.DELETION, "qdel"); resourceJobManager.setJobManagerCommands(jobManagerCommandStringMap); } // TODO - set job manage commands for UGE and LSF type compute resources. // TODO - set parallelism command SSHJobSubmission sshJobSubmission = new SSHJobSubmission(); sshJobSubmission.setResourceJobManager(resourceJobManager); sshJobSubmission.setSecurityProtocol(securityProtocol); sshJobSubmission.setSshPort(portNumber); sshJobSubmission.setMonitorMode(MonitorMode.JOB_EMAIL_NOTIFICATION_MONITOR); airavataClient.addSSHJobSubmissionDetails(new AuthzToken(""), computeResourceId, 1, sshJobSubmission); SCPDataMovement scpDataMovement = new SCPDataMovement(); scpDataMovement.setSecurityProtocol(securityProtocol); scpDataMovement.setSshPort(portNumber); airavataClient.addSCPDataMovementDetails(new AuthzToken(""), computeResourceId, DMType.COMPUTE_RESOURCE, 1, scpDataMovement); return computeResourceId; } public void registerGatewayResourceProfile() { try { System.out.println("#### Registering Application Deployments on BigRed II #### \n"); ComputeResourcePreference stampedeResourcePreferences = RegisterSampleApplicationsUtils. createComputeResourcePreference(stampedeResourceId, "TG-STA110014S", false, null, JobSubmissionProtocol.SSH, DataMovementProtocol.SCP, "/scratch/01437/ogce/gta-work-dirs"); ComputeResourcePreference trestlesResourcePreferences = RegisterSampleApplicationsUtils. createComputeResourcePreference(trestlesResourceId, "sds128", false, null, JobSubmissionProtocol.SSH, DataMovementProtocol.SCP, "/oasis/scratch/trestles/ogce/temp_project/gta-work-dirs"); ComputeResourcePreference bigRedResourcePreferences = RegisterSampleApplicationsUtils. createComputeResourcePreference(bigredResourceId, "TG-STA110014S", false, null, null, null, "/N/dc2/scratch/cgateway/gta-work-dirs"); 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); gatewayResourceProfile.addToComputeResourcePreferences(trestlesResourcePreferences); gatewayResourceProfile.addToComputeResourcePreferences(bigRedResourcePreferences); gatewayResourceProfile.addToComputeResourcePreferences(fsdResourcePreferences); gatewayResourceProfile.addToComputeResourcePreferences(lsfResourcePreferences); String gatewayProfile = airavataClient.registerGatewayResourceProfile(new AuthzToken(""), gatewayResourceProfile); System.out.println("Gateway Profile is registered with Id " + gatewayProfile); } catch (TException e) { e.printStackTrace(); } } public void writeIdPropertyFile() { try { Properties properties = new Properties(); properties.setProperty("stampedeResourceId", stampedeResourceId); properties.setProperty("trestlesResourceId", trestlesResourceId); properties.setProperty("bigredResourceId", bigredResourceId); properties.setProperty("lsfResourceId", lsfResourceId); properties.setProperty("echoInterfaceId", echoInterfaceId); properties.setProperty("amberInterfaceId", amberInterfaceId); properties.setProperty("autoDockInterfaceId", autoDockInterfaceId); properties.setProperty("espressoInterfaceId", espressoInterfaceId); properties.setProperty("gromacsInterfaceId", gromacsInterfaceId); properties.setProperty("lammpsInterfaceId", lammpsInterfaceId); properties.setProperty("nwChemInterfaceId", nwChemInterfaceId); properties.setProperty("trinityInterfaceId", trinityInterfaceId); properties.setProperty("wrfInterfaceId", wrfInterfaceId); File file = new File("airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/conf/app-catalog-identifiers.ini"); FileOutputStream fileOut = new FileOutputStream(file); properties.store(fileOut, "Apache Airavata Gateway to Airavata Deployment Identifiers"); fileOut.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void registerAlamoApps() { try { System.out.println("#### Registering Application Deployments on Alamo #### \n"); //Register Ultrascan on Alamo List<CommandObject> ultrascanMouldes = new ArrayList(); ultrascanMouldes.add(new CommandObject("module load intel/2015/64")); ultrascanMouldes.add(new CommandObject("module load openmpi/intel/1.8.4")); ultrascanMouldes.add(new CommandObject("module load qt4/4.8.6")); ultrascanMouldes.add(new CommandObject("module load ultrascan3/3.3")); String ultrascanAppDeployId = airavataClient.registerApplicationDeployment(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationDeployment(ultrascanModuleId, alamoResourceId, "/home/us3/bin/us_mpi_analysis", ApplicationParallelismType.OPENMP, ultrascanDescription, ultrascanMouldes , null, null)); System.out.println("Ultrascan on alamo deployment Id " + ultrascanAppDeployId); } catch (TException e) { e.printStackTrace(); } } private void registerUltrascanInterface() { try { System.out.println("#### Registering Ultrascan Application Interface ####"); List<String> appModules = new ArrayList<String>(); appModules.add(ultrascanModuleId); InputDataObjectType input1 = RegisterSampleApplicationsUtils.createAppInput("input", null, DataType.URI, null, 1, true, true, false, "input file", null); List<InputDataObjectType> applicationInputs = new ArrayList<InputDataObjectType>(); applicationInputs.add(input1); OutputDataObjectType output1 = RegisterSampleApplicationsUtils.createAppOutput("output/analysis-results.tar", "", DataType.URI, true, true, null ); OutputDataObjectType output2 = RegisterSampleApplicationsUtils.createAppOutput("STDOUT", "", DataType.STDOUT, true, true, null ); OutputDataObjectType output3 = RegisterSampleApplicationsUtils.createAppOutput("STDERR", "", DataType.STDERR, true, true, null ); List<OutputDataObjectType> applicationOutputs = new ArrayList<OutputDataObjectType>(); applicationOutputs.add(output1); applicationOutputs.add(output2); applicationOutputs.add(output3); String ultrascanInterfaceId = airavataClient.registerApplicationInterface(new AuthzToken(""), DEFAULT_GATEWAY, RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("Ultrascan", "Ultrascan application", appModules, applicationInputs, applicationOutputs)); System.out.println("Ultrascan Application Interface Id " + ultrascanInterfaceId); } catch (TException e) { e.printStackTrace(); } } }