You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2014/08/20 17:39:41 UTC
[4/4] git commit: fixing AIRAVATA-1404 and AIRAVATA-1405
fixing AIRAVATA-1404 and AIRAVATA-1405
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/6305d3a5
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/6305d3a5
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/6305d3a5
Branch: refs/heads/master
Commit: 6305d3a51ffd51b19a77ae255e01425e0ca0e1c7
Parents: 5bdb49d
Author: Chathuri Wimalasena <ka...@gmail.com>
Authored: Wed Aug 20 11:38:37 2014 -0400
Committer: Chathuri Wimalasena <ka...@gmail.com>
Committed: Wed Aug 20 11:38:37 2014 -0400
----------------------------------------------------------------------
.../server/handler/AiravataServerHandler.java | 85 +-
.../java/org/apache/airavata/api/Airavata.java | 4612 ++++++++++++++++--
.../main/resources/lib/airavata/Airavata.cpp | 1566 +++++-
.../src/main/resources/lib/airavata/Airavata.h | 410 +-
.../lib/airavata/Airavata_server.skeleton.cpp | 10 +
.../resources/lib/Airavata/API/Airavata.php | 1098 ++++-
.../client/samples/CreateLaunchExperiment.java | 2 +-
.../samples/TestCreateLaunchExperiment.java | 43 +-
.../model/workspace/experiment/Experiment.java | 2 +-
.../model/workspace/experiment/TaskStatus.java | 2 +-
.../airavataAPI.thrift | 24 +
.../registry/jpa/impl/ExperimentRegistry.java | 2 +-
12 files changed, 6926 insertions(+), 930 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/6305d3a5/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
index 4e4bab9..1051654 100644
--- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java
@@ -62,22 +62,13 @@ import org.apache.airavata.model.error.LaunchValidationException;
import org.apache.airavata.model.error.ProjectNotFoundException;
import org.apache.airavata.model.util.ExecutionType;
import org.apache.airavata.model.workspace.Project;
-import org.apache.airavata.model.workspace.experiment.ComputationalResourceScheduling;
-import org.apache.airavata.model.workspace.experiment.DataObjectType;
-import org.apache.airavata.model.workspace.experiment.Experiment;
-import org.apache.airavata.model.workspace.experiment.ExperimentState;
-import org.apache.airavata.model.workspace.experiment.ExperimentStatus;
-import org.apache.airavata.model.workspace.experiment.ExperimentSummary;
-import org.apache.airavata.model.workspace.experiment.JobDetails;
-import org.apache.airavata.model.workspace.experiment.JobStatus;
-import org.apache.airavata.model.workspace.experiment.TaskDetails;
-import org.apache.airavata.model.workspace.experiment.UserConfigurationData;
-import org.apache.airavata.model.workspace.experiment.WorkflowNodeDetails;
+import org.apache.airavata.model.workspace.experiment.*;
import org.apache.airavata.orchestrator.client.OrchestratorClientFactory;
import org.apache.airavata.orchestrator.cpi.OrchestratorService;
import org.apache.airavata.orchestrator.cpi.OrchestratorService.Client;
import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory;
+import org.apache.airavata.persistance.registry.jpa.model.JobDetail;
import org.apache.airavata.registry.cpi.ChildDataType;
import org.apache.airavata.registry.cpi.ParentDataType;
import org.apache.airavata.registry.cpi.Registry;
@@ -1042,6 +1033,78 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher {
return jobStatus;
}
+ @Override
+ public List<JobDetails> getJobDetails(String airavataExperimentId) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
+ List<JobDetails> jobDetailsList = new ArrayList<JobDetails>();
+ try {
+ registry = RegistryFactory.getDefaultRegistry();
+ if (!registry.isExist(RegistryModelType.EXPERIMENT, airavataExperimentId)){
+ throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
+ }
+ List<Object> workflowNodes = registry.get(RegistryModelType.WORKFLOW_NODE_DETAIL, Constants.FieldConstants.WorkflowNodeConstants.EXPERIMENT_ID, airavataExperimentId);
+ if (workflowNodes != null && !workflowNodes.isEmpty()){
+ for (Object wf : workflowNodes){
+ String nodeInstanceId = ((WorkflowNodeDetails) wf).getNodeInstanceId();
+ List<Object> taskDetails = registry.get(RegistryModelType.TASK_DETAIL, Constants.FieldConstants.TaskDetailConstants.NODE_ID, nodeInstanceId);
+ if (taskDetails != null && !taskDetails.isEmpty()){
+ for (Object ts : taskDetails){
+ String taskID = ((TaskDetails) ts).getTaskID();
+ List<Object> jobDetails = registry.get(RegistryModelType.JOB_DETAIL, Constants.FieldConstants.JobDetaisConstants.TASK_ID, taskID);
+ if (jobDetails != null && !jobDetails.isEmpty()){
+ for (Object job : jobDetails){
+ jobDetailsList.add((JobDetails) job);
+ }
+ }
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ logger.error("Error while retrieving the job details", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while retrieving the job details. More info : " + e.getMessage());
+ throw exception;
+ }
+ return jobDetailsList;
+ }
+
+ @Override
+ public List<DataTransferDetails> getDataTransferDetails(String airavataExperimentId) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
+ List<DataTransferDetails> dataTransferDetailList = new ArrayList<DataTransferDetails>();
+ try {
+ registry = RegistryFactory.getDefaultRegistry();
+ if (!registry.isExist(RegistryModelType.EXPERIMENT, airavataExperimentId)){
+ throw new ExperimentNotFoundException("Requested experiment id " + airavataExperimentId + " does not exist in the system..");
+ }
+ List<Object> workflowNodes = registry.get(RegistryModelType.WORKFLOW_NODE_DETAIL, Constants.FieldConstants.WorkflowNodeConstants.EXPERIMENT_ID, airavataExperimentId);
+ if (workflowNodes != null && !workflowNodes.isEmpty()){
+ for (Object wf : workflowNodes){
+ String nodeInstanceId = ((WorkflowNodeDetails) wf).getNodeInstanceId();
+ List<Object> taskDetails = registry.get(RegistryModelType.TASK_DETAIL, Constants.FieldConstants.TaskDetailConstants.NODE_ID, nodeInstanceId);
+ if (taskDetails != null && !taskDetails.isEmpty()){
+ for (Object ts : taskDetails){
+ String taskID = ((TaskDetails) ts).getTaskID();
+ List<Object> dataTransferDetails = registry.get(RegistryModelType.DATA_TRANSFER_DETAIL, Constants.FieldConstants.JobDetaisConstants.TASK_ID, taskID);
+ if (dataTransferDetails != null && !dataTransferDetails.isEmpty()){
+ for (Object dataTransfer : dataTransferDetails){
+ dataTransferDetailList.add((DataTransferDetails) dataTransfer);
+ }
+ }
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ logger.error("Error while retrieving the data transfer details", e);
+ AiravataSystemException exception = new AiravataSystemException();
+ exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
+ exception.setMessage("Error while retrieving the data transfer details. More info : " + e.getMessage());
+ throw exception;
+ }
+ return dataTransferDetailList;
+ }
+
/**
* Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
* notifications and intermediate and output data will be subsequently available for this experiment.