Repository: airavata
Updated Branches:
  refs/heads/master f5a2eac62 -> e0df621b6


Create and launch sample now independent; better file output handling;
some bits of us3 and juropa testing

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

Branch: refs/heads/master
Commit: e0df621b6f4af5147824d4c5d61d155b134828ff
Parents: f5a2eac
Author: msmemon <[email protected]>
Authored: Mon Mar 30 12:16:20 2015 +0200
Committer: msmemon <[email protected]>
Committed: Mon Mar 30 12:16:20 2015 +0200

----------------------------------------------------------------------
 .../client/samples/CreateLaunchBES.java         | 487 +++++++++++++++++++
 .../tools/RegisterSampleApplications.java       |  38 +-
 .../tools/RegisterSampleApplicationsUtils.java  |   3 +-
 .../gfac/bes/utils/ApplicationProcessor.java    |  58 ++-
 .../airavata/gfac/bes/utils/BESConstants.java   |   4 +
 .../gfac/bes/utils/DataTransferrer.java         |   7 +-
 .../gfac/bes/utils/ResourceProcessor.java       |   8 +-
 .../gfac/bes/utils/UASDataStagingProcessor.java |   5 +-
 8 files changed, 588 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/e0df621b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java
 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java
new file mode 100644
index 0000000..44ebfc7
--- /dev/null
+++ 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchBES.java
@@ -0,0 +1,487 @@
+package org.apache.airavata.client.samples;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.airavata.api.Airavata;
+import org.apache.airavata.api.client.AiravataClientFactory;
+import org.apache.airavata.client.tools.RegisterSampleApplications;
+import org.apache.airavata.client.tools.RegisterSampleApplicationsUtils;
+import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
+import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
+import 
org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
+import 
org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
+import 
org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
+import org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol;
+import 
org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission;
+import org.apache.airavata.model.error.AiravataClientException;
+import org.apache.airavata.model.error.AiravataErrorType;
+import org.apache.airavata.model.error.AiravataSystemException;
+import org.apache.airavata.model.error.ExperimentNotFoundException;
+import org.apache.airavata.model.error.InvalidRequestException;
+import org.apache.airavata.model.util.ExperimentModelUtil;
+import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.workspace.Project;
+import 
org.apache.airavata.model.workspace.experiment.AdvancedOutputDataHandling;
+import 
org.apache.airavata.model.workspace.experiment.ComputationalResourceScheduling;
+import org.apache.airavata.model.workspace.experiment.ErrorDetails;
+import org.apache.airavata.model.workspace.experiment.Experiment;
+import org.apache.airavata.model.workspace.experiment.ExperimentSummary;
+import org.apache.airavata.model.workspace.experiment.UserConfigurationData;
+import org.apache.thrift.TException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class CreateLaunchBES {
+ 
+    public static final String THRIFT_SERVER_HOST = "localhost";
+    public static final int THRIFT_SERVER_PORT = 8930;
+
+    private final static Logger logger = 
LoggerFactory.getLogger(CreateLaunchExperiment.class);
+    private static final String DEFAULT_USER = "default.registry.user";
+    private static final String DEFAULT_GATEWAY = "php_reference_gateway";
+    private static Airavata.Client airavataClient;
+
+    private static String echoAppId = 
"Echo_5dd52cd4-f9a0-459f-9baf-f8e715e44548";
+    private static String mpiAppId = 
"HelloMPI_f0bb3b56-914e-4752-bb7b-dd18ef9dce00";
+
+    private static String unicoreHostName = "fsd-cloud15.zam.kfa-juelich.de";
+
+    private static String gatewayId;
+
+    // unicore service endpoint url
+    private static final String unicoreEndPointURL = 
"https://deisa-unic.fz-juelich.de:9111/FZJ_JUROPA/services/BESFactory?res=default_bes_factory";;
+//    private static final String unicoreEndPointURL = 
"https://fsd-cloud15.zam.kfa-juelich.de:7000/INTEROP1/services/BESFactory?res=default_bes_factory";;
+
+    public static void main(String[] args) throws Exception {
+        airavataClient = 
AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, 
THRIFT_SERVER_PORT);
+        System.out.println("API version is " + airavataClient.getAPIVersion());
+//        createGateway();
+//        getGateway("testGatewayId");
+//        registerApplications(); // run this only the first time
+        createAndLaunchExp();
+        }
+
+    private static String fsdResourceId;
+
+
+    public static void getAvailableAppInterfaceComputeResources(String 
appInterfaceId) {
+        try {
+            Map<String, String> availableAppInterfaceComputeResources = 
airavataClient.getAvailableAppInterfaceComputeResources(appInterfaceId);
+            for (String key : availableAppInterfaceComputeResources.keySet()) {
+                System.out.println("id : " + key);
+                System.out.println("name : " + 
availableAppInterfaceComputeResources.get(key));
+            }
+        } catch (AiravataSystemException e) {
+            e.printStackTrace();
+        } catch (InvalidRequestException e) {
+            e.printStackTrace();
+        } catch (AiravataClientException e) {
+            e.printStackTrace();
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+
+    }
+
+
+    public static void createGateway() {
+        try {
+            Gateway gateway = new Gateway();
+            gateway.setGatewayId("testGatewayId2");
+            gateway.setGatewayName("testGateway2");
+            gatewayId = airavataClient.addGateway(gateway);
+            System.out.println(gatewayId);
+        } catch (AiravataSystemException e) {
+            e.printStackTrace();
+        } catch (InvalidRequestException e) {
+            e.printStackTrace();
+        } catch (AiravataClientException e) {
+            e.printStackTrace();
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    public static void getGateway(String gatewayId) {
+        try {
+            Gateway gateway = airavataClient.getGateway(gatewayId);
+            gateway.setDomain("testDomain");
+            airavataClient.updateGateway(gatewayId, gateway);
+            List<Gateway> allGateways = airavataClient.getAllGateways();
+            System.out.println(allGateways.size());
+            if (airavataClient.isGatewayExist(gatewayId)) {
+                Gateway gateway1 = airavataClient.getGateway(gatewayId);
+                System.out.println(gateway1.getGatewayName());
+            }
+            boolean b = airavataClient.deleteGateway("testGatewayId2");
+            System.out.println(b);
+        } catch (AiravataSystemException e) {
+            e.printStackTrace();
+        } catch (InvalidRequestException e) {
+            e.printStackTrace();
+        } catch (AiravataClientException e) {
+            e.printStackTrace();
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+
+    }
+
+
+    public static void createAndLaunchExp() throws TException {
+        List<String> experimentIds = new ArrayList<String>();
+        try {
+            for (int i = 0; i < 1; i++) {
+//                final String expId = 
createEchoExperimentForFSD(airavataClient);
+                final String expId = createMPIExperimentForFSD(airavataClient);
+                experimentIds.add(expId);
+                System.out.println("Experiment ID : " + expId);
+//                updateExperiment(airavata, expId);
+                launchExperiment(airavataClient, expId);
+            }
+
+            Thread.sleep(10000);
+            for (String exId : experimentIds) {
+                Experiment experiment = airavataClient.getExperiment(exId);
+                System.out.println(experiment.getExperimentID() + " " + 
experiment.getExperimentStatus().getExperimentState().name());
+            }
+
+
+        } catch (Exception e) {
+            logger.error("Error while connecting with server", e.getMessage());
+            e.printStackTrace();
+
+        }
+    }
+
+    public static void launchExperiment(Airavata.Client client, String expId)
+            throws TException {
+        try {
+            String tokenId = "-0bbb-403b-a88a-42b6dbe198e9";
+            client.launchExperiment(expId, tokenId);
+        } catch (ExperimentNotFoundException e) {
+            logger.error("Error occured while launching the experiment...", 
e.getMessage());
+            throw new ExperimentNotFoundException(e);
+        } catch (AiravataSystemException e) {
+            logger.error("Error occured while launching the experiment...", 
e.getMessage());
+            throw new AiravataSystemException(e);
+        } catch (InvalidRequestException e) {
+            logger.error("Error occured while launching the experiment...", 
e.getMessage());
+            throw new InvalidRequestException(e);
+        } catch (AiravataClientException e) {
+            logger.error("Error occured while launching the experiment...", 
e.getMessage());
+            throw new AiravataClientException(e);
+        } catch (TException e) {
+            logger.error("Error occured while launching the experiment...", 
e.getMessage());
+            throw new TException(e);
+        }
+    }
+
+    public static void registerApplications() {
+        RegisterSampleApplications registerSampleApplications = new 
RegisterSampleApplications(airavataClient);
+
+        //Register all compute hosts
+        registerSampleApplications.registerXSEDEHosts();
+
+
+        //Register Gateway Resource Preferences
+        registerSampleApplications.registerGatewayResourceProfile();
+
+        //Register all application modules
+        registerSampleApplications.registerAppModules();
+
+        //Register all application deployments
+        registerSampleApplications.registerAppDeployments();
+
+        //Register all application interfaces
+        registerSampleApplications.registerAppInterfaces();
+    }
+
+    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();
+        ucrJobSubmission.setSecurityProtocol(securityProtocol);
+        ucrJobSubmission.setUnicoreEndPointURL(unicoreEndPointURL);
+
+        return jobSubmission.getJobSubmissionInterfaceId();
+    }
+
+    public static String createEchoExperimentForFSD(Airavata.Client client) 
throws TException {
+        try {
+            List<InputDataObjectType> exInputs = 
client.getApplicationInputs(echoAppId);
+            for (InputDataObjectType inputDataObjectType : exInputs) {
+                if 
(inputDataObjectType.getName().equalsIgnoreCase("Input_to_Echo")) {
+                    inputDataObjectType.setValue("Hello World");
+                } else if 
(inputDataObjectType.getName().equalsIgnoreCase("Input_to_Echo2")) {
+                    
inputDataObjectType.setValue("http://www.textfiles.com/100/ad.txt";);
+                } else if 
(inputDataObjectType.getName().equalsIgnoreCase("Input_to_Echo3")) {
+                    inputDataObjectType.setValue("file:///tmp/test.txt");
+                }
+            }
+            List<OutputDataObjectType> exOut = 
client.getApplicationOutputs(echoAppId);
+
+            Experiment simpleExperiment =
+                    ExperimentModelUtil.createSimpleExperiment("default", 
"admin", "echoExperiment", "SimpleEcho2", echoAppId, exInputs);
+            simpleExperiment.setExperimentOutputs(exOut);
+
+
+            Map<String, String> computeResources = 
airavataClient.getAvailableAppInterfaceComputeResources(echoAppId);
+            if (computeResources != null && computeResources.size() != 0) {
+                for (String id : computeResources.keySet()) {
+                    String resourceName = computeResources.get(id);
+                    if (resourceName.equals(unicoreHostName)) {
+                        ComputationalResourceScheduling scheduling = 
ExperimentModelUtil.createComputationResourceScheduling(id, 1, 1, 1, "normal", 
30, 0, 1048576, "sds128");
+                        UserConfigurationData userConfigurationData = new 
UserConfigurationData();
+                        userConfigurationData.setAiravataAutoSchedule(false);
+                        
userConfigurationData.setOverrideManualScheduledParams(false);
+                        
userConfigurationData.setComputationalResourceScheduling(scheduling);
+                        
+                        userConfigurationData.setGenerateCert(false);
+                        userConfigurationData.setUserDN("");
+
+                        // set output directory 
+                        AdvancedOutputDataHandling dataHandling = new 
AdvancedOutputDataHandling();
+                        dataHandling.setOutputDataDir("/tmp/airavata/output/" 
+ UUID.randomUUID().toString() + "/");
+                        
userConfigurationData.setAdvanceOutputDataHandling(dataHandling);
+                        
simpleExperiment.setUserConfigurationData(userConfigurationData);
+
+                        return client.createExperiment(DEFAULT_GATEWAY, 
simpleExperiment);
+                    }
+                }
+            }
+        } catch (AiravataSystemException e) {
+            logger.error("Error occured while creating the experiment...", 
e.getMessage());
+            throw new AiravataSystemException(e);
+        } catch (InvalidRequestException e) {
+            logger.error("Error occured while creating the experiment...", 
e.getMessage());
+            throw new InvalidRequestException(e);
+        } catch (AiravataClientException e) {
+            logger.error("Error occured while creating the experiment...", 
e.getMessage());
+            throw new AiravataClientException(e);
+        } catch (TException e) {
+            logger.error("Error occured while creating the experiment...", 
e.getMessage());
+            throw new TException(e);
+        }
+        return null;
+    }
+
+
+    public static String createMPIExperimentForFSD(Airavata.Client client) 
throws TException {
+        try {
+            List<InputDataObjectType> exInputs = 
client.getApplicationInputs(mpiAppId);
+            for (InputDataObjectType inputDataObjectType : exInputs) {
+//                if 
(inputDataObjectType.getName().equalsIgnoreCase("Sample_Input")) {
+//                    inputDataObjectType.setValue("");
+//                }
+                if 
(inputDataObjectType.getName().equalsIgnoreCase("NumberOfProcesses")) {
+                    inputDataObjectType.setValue("32");
+                }
+                if 
(inputDataObjectType.getName().equalsIgnoreCase("US3INPUT")) {
+                    
inputDataObjectType.setValue("file://home/m.memon/us3input/smallerdata/hpcinput-uslims3.uthscsa.edu-uslims3_cauma3-01594.tar");
+                }
+                if 
(inputDataObjectType.getName().equalsIgnoreCase("US3INPUTARG")) {
+                    
inputDataObjectType.setValue("hpcinput-uslims3.uthscsa.edu-uslims3_cauma3-01594.tar");
+                }
+            }
+            
+            List<OutputDataObjectType> exOut = 
client.getApplicationOutputs(mpiAppId);
+            
+            for (OutputDataObjectType outputDataObjectType : exOut) {
+               if(outputDataObjectType.getName().equals("US3OUT")){
+                       
outputDataObjectType.setValue("output/analysis-results.tar");
+               }
+                       }
+            
+            Experiment simpleExperiment =
+                    ExperimentModelUtil.createSimpleExperiment("default", 
"admin", "mpiExperiment", "HelloMPI", mpiAppId, exInputs);
+            simpleExperiment.setExperimentOutputs(exOut);
+
+
+            Map<String, String> computeResources = 
airavataClient.getAvailableAppInterfaceComputeResources(mpiAppId);
+            if (computeResources != null && computeResources.size() != 0) {
+                for (String id : computeResources.keySet()) {
+                    String resourceName = computeResources.get(id);
+                    if (resourceName.equals(unicoreHostName)) {
+                        ComputationalResourceScheduling scheduling = 
ExperimentModelUtil.createComputationResourceScheduling(id, 0, 4, 0, null, 10, 
0, 0, null);
+                        UserConfigurationData userConfigurationData = new 
UserConfigurationData();
+                        userConfigurationData.setAiravataAutoSchedule(false);
+                        
userConfigurationData.setOverrideManualScheduledParams(false);
+                        
userConfigurationData.setComputationalResourceScheduling(scheduling);
+                        
+                        userConfigurationData.setGenerateCert(true);
+                        userConfigurationData.setUserDN("CN=m.memon, 
O=Ultrascan Gateway, C=DE");
+
+                        // set output directory 
+                        AdvancedOutputDataHandling dataHandling = new 
AdvancedOutputDataHandling();
+                        dataHandling.setOutputDataDir("/tmp/airavata/output/" 
+ UUID.randomUUID().toString() + "/");
+                        
userConfigurationData.setAdvanceOutputDataHandling(dataHandling);
+                        
simpleExperiment.setUserConfigurationData(userConfigurationData);
+
+                        return client.createExperiment(DEFAULT_GATEWAY, 
simpleExperiment);
+                    }
+                }
+            }
+        } catch (AiravataSystemException e) {
+            logger.error("Error occured while creating the experiment...", 
e.getMessage());
+            throw new AiravataSystemException(e);
+        } catch (InvalidRequestException e) {
+            logger.error("Error occured while creating the experiment...", 
e.getMessage());
+            throw new InvalidRequestException(e);
+        } catch (AiravataClientException e) {
+            logger.error("Error occured while creating the experiment...", 
e.getMessage());
+            throw new AiravataClientException(e);
+        } catch (TException e) {
+            logger.error("Error occured while creating the experiment...", 
e.getMessage());
+            throw new TException(e);
+        }
+        return null;
+    }
+    
+    
+    public static List<Experiment> getExperimentsForUser(Airavata.Client 
client, String user) {
+        try {
+            return client.getAllUserExperiments(DEFAULT_GATEWAY, user);
+        } catch (AiravataSystemException e) {
+            e.printStackTrace();
+        } catch (InvalidRequestException e) {
+            e.printStackTrace();
+        } catch (AiravataClientException e) {
+            e.printStackTrace();
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static List<Project> getAllUserProject(Airavata.Client client, 
String user) {
+        try {
+            return client.getAllUserProjects(DEFAULT_GATEWAY, user);
+        } catch (AiravataSystemException e) {
+            e.printStackTrace();
+        } catch (InvalidRequestException e) {
+            e.printStackTrace();
+        } catch (AiravataClientException e) {
+            e.printStackTrace();
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static List<Project> searchProjectsByProjectName(Airavata.Client 
client, String user, String projectName) {
+        try {
+            return client.searchProjectsByProjectName(DEFAULT_GATEWAY, user, 
projectName);
+        } catch (AiravataSystemException e) {
+            e.printStackTrace();
+        } catch (InvalidRequestException e) {
+            e.printStackTrace();
+        } catch (AiravataClientException e) {
+            e.printStackTrace();
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static List<Project> searchProjectsByProjectDesc(Airavata.Client 
client, String user, String desc) {
+        try {
+            return client.searchProjectsByProjectDesc(DEFAULT_GATEWAY, user, 
desc);
+        } catch (AiravataSystemException e) {
+            e.printStackTrace();
+        } catch (InvalidRequestException e) {
+            e.printStackTrace();
+        } catch (AiravataClientException e) {
+            e.printStackTrace();
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+    public static List<ExperimentSummary> 
searchExperimentsByName(Airavata.Client client, String user, String expName) {
+        try {
+            return client.searchExperimentsByName(DEFAULT_GATEWAY, user, 
expName);
+        } catch (AiravataSystemException e) {
+            e.printStackTrace();
+        } catch (InvalidRequestException e) {
+            e.printStackTrace();
+        } catch (AiravataClientException e) {
+            e.printStackTrace();
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static List<ExperimentSummary> 
searchExperimentsByDesc(Airavata.Client client, String user, String desc) {
+        try {
+            return client.searchExperimentsByDesc(DEFAULT_GATEWAY, user, desc);
+        } catch (AiravataSystemException e) {
+            e.printStackTrace();
+        } catch (InvalidRequestException e) {
+            e.printStackTrace();
+        } catch (AiravataClientException e) {
+            e.printStackTrace();
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static List<ExperimentSummary> 
searchExperimentsByApplication(Airavata.Client client, String user, String app) 
{
+        try {
+            return client.searchExperimentsByApplication(DEFAULT_GATEWAY, 
user, app);
+        } catch (AiravataSystemException e) {
+            e.printStackTrace();
+        } catch (InvalidRequestException e) {
+            e.printStackTrace();
+        } catch (AiravataClientException e) {
+            e.printStackTrace();
+        } catch (TException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static void getExperiment(Airavata.Client client, String expId) 
throws Exception {
+        try {
+            Experiment experiment = client.getExperiment(expId);
+            List<ErrorDetails> errors = experiment.getErrors();
+            if (errors != null && !errors.isEmpty()) {
+                for (ErrorDetails error : errors) {
+                    System.out.println("ERROR MESSAGE : " + 
error.getActualErrorMessage());
+                }
+            }
+
+        } catch (ExperimentNotFoundException e) {
+            logger.error("Experiment does not exist", e);
+            throw new ExperimentNotFoundException("Experiment does not exist");
+        } catch (AiravataSystemException e) {
+            logger.error("Error while retrieving experiment", e);
+            throw new 
AiravataSystemException(AiravataErrorType.INTERNAL_ERROR);
+        } catch (InvalidRequestException e) {
+            logger.error("Error while retrieving experiment", e);
+            throw new InvalidRequestException("Error while retrieving 
experiment");
+        } catch (AiravataClientException e) {
+            logger.error("Error while retrieving experiment", e);
+            throw new 
AiravataClientException(AiravataErrorType.INTERNAL_ERROR);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/e0df621b/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 e10dde2..19999e0 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
@@ -29,6 +29,7 @@ import java.util.*;
 import org.apache.airavata.api.Airavata;
 import org.apache.airavata.api.client.AiravataClientFactory;
 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;
@@ -60,7 +61,8 @@ public class RegisterSampleApplications {
 
     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://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";
@@ -565,17 +567,40 @@ public class RegisterSampleApplications {
             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);
             OutputDataObjectType output2 = 
RegisterSampleApplicationsUtils.createAppOutput("STDErr",
                     "", DataType.STDERR, true, true);
             
+            OutputDataObjectType output3 = 
RegisterSampleApplicationsUtils.createAppOutput("US3OUT",
+                    "", DataType.STRING, true, false);
+
             List<OutputDataObjectType> applicationOutputs = new 
ArrayList<OutputDataObjectType>();
             applicationOutputs.add(output1);
             applicationOutputs.add(output2);
+            applicationOutputs.add(output3);
  
             
             mpiInterfaceId = 
airavataClient.registerApplicationInterface(DEFAULT_GATEWAY,
@@ -1263,11 +1288,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,
-                            "/home/bes/hellompi", 
ApplicationParallelismType.OPENMP_MPI, mpiDescription, null, null, null));
+                            "us_mpi_analysis", ApplicationParallelismType.MPI, 
mpiDescription, null, null, null));
+
+            
             System.out.println("MPI on FSD deployment Id: " + mpiAppDeployId);
 
         } catch (TException e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/e0df621b/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 86f7d1a..5ef1eae 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
@@ -24,6 +24,7 @@ package org.apache.airavata.client.tools;
 import 
org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
 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;
@@ -73,7 +74,7 @@ public class RegisterSampleApplicationsUtils {
         return deployment;
     }
 
-    public static ApplicationModule createApplicationModule(String 
appModuleName,
+      public static ApplicationModule createApplicationModule(String 
appModuleName,
                                                             String 
appModuleVersion, String appModuleDescription) {
         ApplicationModule module = new ApplicationModule();
         module.setAppModuleDescription(appModuleDescription);

http://git-wip-us.apache.org/repos/asf/airavata/blob/e0df621b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/ApplicationProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/ApplicationProcessor.java
 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/ApplicationProcessor.java
index 7c7a59e..bc91e49 100644
--- 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/ApplicationProcessor.java
+++ 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/ApplicationProcessor.java
@@ -21,9 +21,13 @@
 
 package org.apache.airavata.gfac.bes.utils;
 
+import java.util.Iterator;
+import java.util.List;
+
 import org.apache.airavata.gfac.core.context.JobExecutionContext;
 import 
org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import 
org.apache.airavata.model.appcatalog.appdeployment.ApplicationParallelismType;
+import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
 import org.ggf.schemas.jsdl.x2005.x11.jsdl.ApplicationType;
 import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType;
 import org.ggf.schemas.jsdl.x2005.x11.jsdlPosix.FileNameType;
@@ -77,24 +81,35 @@ public class ApplicationProcessor {
                 }else if (parallelism.equals(ApplicationParallelismType.MPI)){
                     
JSDLUtils.getSPMDApplication(value).setSPMDVariation(SPMDVariations.MPI.value());
                 }
+                
+                // setting number of processes
+                try { 
+                       String np = getInputAsString(context, 
BESConstants.NUMBER_OF_PROCESSES);
+                       if((np != null)  && (Integer.parseInt(np) > 0)){
+                                               NumberOfProcessesType num = 
NumberOfProcessesType.Factory.newInstance();
+                           num.setStringValue(np);
+                                               
JSDLUtils.getSPMDApplication(value).setNumberOfProcesses(num);
+                                       }
+       
+                }catch(RuntimeException np) {
+                       // do nothing
+                }
 
-                int totalCPUCount = 
context.getTaskData().getTaskScheduling().getTotalCPUCount();
-                if(totalCPUCount > 0){
-                                       NumberOfProcessesType num = 
NumberOfProcessesType.Factory.newInstance();
-                    num.setStringValue(String.valueOf(totalCPUCount));
-                                       
JSDLUtils.getSPMDApplication(value).setNumberOfProcesses(num);
-                               }
 
-                int totalNodeCount = 
context.getTaskData().getTaskScheduling().getNodeCount();
-                if(totalNodeCount > 0){
-                    int ppn = totalCPUCount / totalNodeCount;
-                    ProcessesPerHostType pph = 
ProcessesPerHostType.Factory.newInstance();
-                    pph.setStringValue(String.valueOf(ppn));
-                    
JSDLUtils.getSPMDApplication(value).setProcessesPerHost(pph);
+                try { 
+                       // setting processes per host
+                       String pphost = getInputAsString(context, 
BESConstants.PROCESSES_PER_HOST);
+                       if((pphost != null)  && (Integer.parseInt(pphost) > 0)){
+                           ProcessesPerHostType pph = 
ProcessesPerHostType.Factory.newInstance();
+                           pph.setStringValue(String.valueOf(pphost));
+                           
JSDLUtils.getSPMDApplication(value).setProcessesPerHost(pph);
+                       }
+                }catch(RuntimeException np) {
+                       // do nothing
                 }
-
+                
                 int totalThreadCount = 
context.getTaskData().getTaskScheduling().getNumberOfThreads();
-
+                // we take it as threads per processes
                 if(totalThreadCount > 0){
                                        ThreadsPerProcessType tpp = 
ThreadsPerProcessType.Factory.newInstance();
                                        
tpp.setStringValue(String.valueOf(totalThreadCount));
@@ -187,5 +202,20 @@ public class ApplicationProcessor {
                return isParallel;
        }
        
+       private static String getInputAsString(JobExecutionContext context, 
String name) {
+               List<InputDataObjectType> inputList = 
context.getTaskData().getApplicationInputs();
+               String value = null;
+               for (Iterator<InputDataObjectType> iterator = 
inputList.iterator(); iterator.hasNext();) {
+                       InputDataObjectType inputDataObjectType = iterator
+                                       .next();
+                       if (inputDataObjectType.getName().equals(name)) {
+                               value = inputDataObjectType.getValue();
+                               break;
+                       }
+               }
+               return value;
+       }
+       
+       
 
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/e0df621b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/BESConstants.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/BESConstants.java
 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/BESConstants.java
index ffbf62e..6e87e28 100644
--- 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/BESConstants.java
+++ 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/BESConstants.java
@@ -36,6 +36,10 @@ public interface BESConstants {
        public static final String PROP_CA_KEY_PATH = "bes.ca.key.path";
        
        public static final String PROP_CA_KEY_PASS = "bes.ca.key.pass";
+       
+       public static final String NUMBER_OF_PROCESSES = "NumberOfProcesses";
+       
+       public static final String PROCESSES_PER_HOST = "ProcessesPerHost";
 
        
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/e0df621b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/DataTransferrer.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/DataTransferrer.java
 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/DataTransferrer.java
index cb036fa..d7f3244 100644
--- 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/DataTransferrer.java
+++ 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/DataTransferrer.java
@@ -37,6 +37,8 @@ import 
org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
 import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
 import org.apache.airavata.model.workspace.experiment.TaskDetails;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -91,9 +93,10 @@ public class DataTransferrer {
                        file.mkdirs();  
                }
                List<String> outPrms = extractOutParams(jobContext);
+               
                for (String outPrm : outPrms) {
-                               String outputLocation = 
downloadLocation+File.separator+outPrm;
-                               FileDownloader fileDownloader = new 
FileDownloader(outPrm,outputLocation, Mode.overwrite);
+                               if("".equals(outPrm)) continue;
+                               FileDownloader fileDownloader = new 
FileDownloader(outPrm,downloadLocation, Mode.overwrite);
                                try {
                                        fileDownloader.perform(storageClient);
                                } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/e0df621b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/ResourceProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/ResourceProcessor.java
 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/ResourceProcessor.java
index fce0c31..cc3ad8b 100644
--- 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/ResourceProcessor.java
+++ 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/ResourceProcessor.java
@@ -34,10 +34,13 @@ public class ResourceProcessor {
                
                TaskDetails taskData = context.getTaskData();
                
+               
+               
                if(taskData != null && taskData.isSetTaskScheduling()){
                        try {
-                               ComputationalResourceScheduling crs = 
taskData.getTaskScheduling();
                                
+                               ComputationalResourceScheduling crs = 
taskData.getTaskScheduling();
+                       
                                if (crs.getTotalPhysicalMemory() > 0) {
                                        RangeValueType rangeType = new 
RangeValueType();
                                        rangeType.setLowerBound(Double.NaN);
@@ -52,6 +55,8 @@ public class ResourceProcessor {
                                        rangeType.setUpperBound(Double.NaN);
                                        rangeType.setExact(crs.getNodeCount());
                                        
JSDLUtils.setTotalResourceCountRequirements(value, rangeType);
+                                       // set totalcpu count to -1 as we dont 
need that
+                                       crs.setTotalCPUCount(0);
                                }
        
                                if(crs.getWallTimeLimit() > 0) {
@@ -70,6 +75,7 @@ public class ResourceProcessor {
                                        
rangeType.setExact(crs.getTotalCPUCount());
                                        
JSDLUtils.setTotalCPUCountRequirements(value, rangeType);
                                }
+                               
                        } catch (NullPointerException npe) {
                                new GFacProviderException("No value set for 
resource requirements.",npe);
                        }

http://git-wip-us.apache.org/repos/asf/airavata/blob/e0df621b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/UASDataStagingProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/UASDataStagingProcessor.java
 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/UASDataStagingProcessor.java
index e82edef..09c6e11 100644
--- 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/UASDataStagingProcessor.java
+++ 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/UASDataStagingProcessor.java
@@ -136,7 +136,10 @@ public class UASDataStagingProcessor {
                                        
ApplicationProcessor.addApplicationArgument(value, context, input.getValue());
                                }
                                else if (input.getType().equals(DataType.FLOAT) 
|| input.getType().equals(DataType.INTEGER)){
-                                       
ApplicationProcessor.addApplicationArgument(value, context, 
String.valueOf(input.getValue()));
+                                       if(! 
(input.getName().equals(BESConstants.NUMBER_OF_PROCESSES) || 
input.getName().equals(BESConstants.PROCESSES_PER_HOST))) {
+                                               // temp avoid environ going to 
app args
+                                               
ApplicationProcessor.addApplicationArgument(value, context, 
String.valueOf(input.getValue()));
+                                       }
                                }
                        }
                }

Reply via email to