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/03/05 18:22:53 UTC
git commit: AIRAVATA-1052
Repository: airavata
Updated Branches:
refs/heads/master 79cb0ef51 -> e40016ddb
AIRAVATA-1052
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/e40016dd
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/e40016dd
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/e40016dd
Branch: refs/heads/master
Commit: e40016ddb3b11560a6a94c90c5457e1bda39457d
Parents: 79cb0ef
Author: chathuri <ch...@apache.org>
Authored: Wed Mar 5 12:22:46 2014 -0500
Committer: chathuri <ch...@apache.org>
Committed: Wed Mar 5 12:22:46 2014 -0500
----------------------------------------------------------------------
.../registry/jpa/impl/ExperimentRegistry.java | 99 ++++++++++++++++++--
1 file changed, 93 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/e40016dd/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
index d2fcd9c..bf86bf0 100644
--- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
+++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
@@ -25,6 +25,7 @@ import org.apache.airavata.model.workspace.experiment.*;
import org.apache.airavata.persistance.registry.jpa.Resource;
import org.apache.airavata.persistance.registry.jpa.ResourceType;
import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
+import org.apache.airavata.persistance.registry.jpa.model.ErrorDetail;
import org.apache.airavata.persistance.registry.jpa.model.WorkflowNodeDetail;
import org.apache.airavata.persistance.registry.jpa.resources.*;
import org.apache.airavata.persistance.registry.jpa.utils.ThriftDataModelConversion;
@@ -50,7 +51,7 @@ public class ExperimentRegistry {
}
public String addExperiment(Experiment experiment) throws Exception {
- String experimentID = "";
+ String experimentID;
try {
if (!ResourceUtils.isUserExist(experiment.getUserName())) {
logger.error("User does not exist in the system..");
@@ -98,6 +99,10 @@ public class ExperimentRegistry {
ExperimentStatus experimentStatus = experiment.getExperimentStatus();
if (experimentStatus != null){
updateExperimentStatus(experimentStatus, experimentID);
+ }else {
+ experimentStatus = new ExperimentStatus();
+ experimentStatus.setExperimentState(ExperimentState.CREATED);
+ updateExperimentStatus(experimentStatus, experimentID);
}
List<WorkflowNodeDetails> workflowNodeDetailsList = experiment.getWorkflowNodeDetailsList();
@@ -106,6 +111,12 @@ public class ExperimentRegistry {
addWorkflowNodeDetails(wf, experimentID);
}
}
+ List<ErrorDetails> errors = experiment.getErrors();
+ if (errors != null && !errors.isEmpty()){
+ for (ErrorDetails errror : errors){
+ addErrorDetails(errror, experimentID);
+ }
+ }
} catch (Exception e) {
logger.error("Error while saving experiment to registry", e.getMessage());
throw new Exception(e);
@@ -631,16 +642,39 @@ public class ExperimentRegistry {
resource.setCreationTime(getTime(nodeDetails.getCreationTime()));
resource.setNodeInstanceId(getNodeInstanceID(nodeDetails.getNodeName()));
resource.save();
+ String nodeId = resource.getNodeInstanceId();
List<DataObjectType> nodeInputs = nodeDetails.getNodeInputs();
if (nodeInputs != null) {
addWorkflowInputs(nodeDetails.getNodeInputs(), resource);
}
List<DataObjectType> nodeOutputs = nodeDetails.getNodeOutputs();
if (nodeOutputs != null && !nodeOutputs.isEmpty()){
- CompositeIdentifier ids = new CompositeIdentifier(expId, resource.getNodeInstanceId());
+ CompositeIdentifier ids = new CompositeIdentifier(expId, nodeId);
addNodeOutputs(nodeOutputs, ids);
}
- return resource.getNodeInstanceId();
+ WorkflowNodeStatus workflowNodeStatus = nodeDetails.getWorkflowNodeStatus();
+ if (workflowNodeStatus != null){
+ WorkflowNodeStatus status = getWorkflowNodeStatus(nodeId);
+ if (status != null){
+ updateWorkflowNodeStatus(workflowNodeStatus, nodeId);
+ }else {
+ CompositeIdentifier ids = new CompositeIdentifier(expId, nodeId);
+ addWorkflowNodeStatus(workflowNodeStatus,ids);
+ }
+ }
+ List<TaskDetails> taskDetails = nodeDetails.getTaskDetailsList();
+ if (taskDetails != null && !taskDetails.isEmpty()){
+ for (TaskDetails task : taskDetails){
+ addTaskDetails(task, nodeId);
+ }
+ }
+ List<ErrorDetails> errors = nodeDetails.getErrors();
+ if (errors != null && !errors.isEmpty()){
+ for (ErrorDetails error : errors){
+ addErrorDetails(error, nodeId);
+ }
+ }
+ return nodeId;
} catch (Exception e) {
logger.error("Error while adding workflow node details...", e.getMessage());
throw new Exception(e);
@@ -651,11 +685,11 @@ public class ExperimentRegistry {
try {
ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT);
WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode(nodeId);
- workflowNode.setExperimentResource(experiment);
workflowNode.setNodeName(nodeDetails.getNodeName());
workflowNode.setCreationTime(getTime(nodeDetails.getCreationTime()));
workflowNode.setNodeInstanceId(getNodeInstanceID(nodeDetails.getNodeName()));
workflowNode.save();
+ String expID = workflowNode.getExperimentResource().getExpID();
List<DataObjectType> nodeInputs = nodeDetails.getNodeInputs();
if (nodeInputs != null) {
updateWorkflowInputs(nodeDetails.getNodeInputs(), workflowNode);
@@ -664,6 +698,32 @@ public class ExperimentRegistry {
if (nodeOutputs != null && !nodeOutputs.isEmpty()){
updateNodeOutputs(nodeOutputs, nodeId);
}
+ WorkflowNodeStatus workflowNodeStatus = nodeDetails.getWorkflowNodeStatus();
+ if (workflowNodeStatus != null){
+ if (isWFNodeExist(nodeId)){
+ updateWorkflowNodeStatus(workflowNodeStatus, nodeId);
+ }else {
+ CompositeIdentifier ids = new CompositeIdentifier(expID, nodeId);
+ addWorkflowNodeStatus(workflowNodeStatus,ids);
+ }
+ }
+ List<TaskDetails> taskDetails = nodeDetails.getTaskDetailsList();
+ if (taskDetails != null && !taskDetails.isEmpty()){
+ for (TaskDetails task : taskDetails){
+ String taskID = task.getTaskID();
+ if(isTaskDetailExist(taskID)){
+ updateTaskDetails(task, taskID);
+ }else {
+ addTaskDetails(task, nodeId);
+ }
+ }
+ }
+ List<ErrorDetails> errors = nodeDetails.getErrors();
+ if (errors != null && !errors.isEmpty()){
+ for (ErrorDetails error : errors){
+ addErrorDetails(error, nodeId);
+ }
+ }
} catch (Exception e) {
logger.error("Error while updating workflow node details...", e.getMessage());
throw new Exception(e);
@@ -1010,6 +1070,17 @@ public class ExperimentRegistry {
resource.setTransferDescription(transferDetails.getTransferDescription());
resource.setCreationTime(getTime(transferDetails.getCreationTime()));
resource.save();
+ String transferId = resource.getTransferId();
+ TransferStatus transferStatus = transferDetails.getTransferStatus();
+ if (transferStatus != null){
+ TransferStatus status = getDataTransferStatus(transferId);
+ if (status != null){
+ updateTransferStatus(transferStatus, transferId);
+ }else {
+ CompositeIdentifier ids = new CompositeIdentifier(taskId, transferId);
+ addTransferStatus(transferStatus, ids);
+ }
+ }
return resource.getTransferId();
} catch (Exception e) {
logger.error("Error while adding transfer details...", e.getMessage());
@@ -1027,6 +1098,17 @@ public class ExperimentRegistry {
resource.setTransferDescription(transferDetails.getTransferDescription());
resource.setCreationTime(getTime(transferDetails.getCreationTime()));
resource.save();
+ String taskId = resource.getTaskDetailResource().getTaskId();
+ TransferStatus transferStatus = transferDetails.getTransferStatus();
+ if (transferStatus != null){
+ TransferStatus status = getDataTransferStatus(transferId);
+ if (status != null){
+ updateTransferStatus(transferStatus, transferId);
+ }else {
+ CompositeIdentifier ids = new CompositeIdentifier(taskId, transferId);
+ addTransferStatus(transferStatus, ids);
+ }
+ }
return resource.getTransferId();
} catch (Exception e) {
logger.error("Error while updating transfer details...", e.getMessage());
@@ -1327,6 +1409,12 @@ public class ExperimentRegistry {
updateWorkflowNodeDetails(wf, wf.getNodeInstanceId());
}
}
+ List<ErrorDetails> errors = experiment.getErrors();
+ if (errors != null && !errors.isEmpty()){
+ for (ErrorDetails errror : errors){
+ addErrorDetails(errror, expId);
+ }
+ }
} catch (Exception e) {
logger.error("Error while updating experiment...", e.getMessage());
throw new Exception(e);
@@ -1342,7 +1430,7 @@ public class ExperimentRegistry {
resource.setAiravataAutoSchedule(configData.isAiravataAutoSchedule());
resource.setOverrideManualParams(configData.isOverrideManualScheduledParams());
resource.setShareExp(configData.isShareExperimentPublicly());
-
+ resource.save();
ComputationalResourceScheduling resourceScheduling = configData.getComputationalResourceScheduling();
if (resourceScheduling != null) {
updateSchedulingData(resourceScheduling, experiment);
@@ -1360,7 +1448,6 @@ public class ExperimentRegistry {
if (qosParams != null) {
updateQosParams(qosParams, experiment);
}
- resource.save();
} catch (Exception e) {
logger.error("Error while updating user config data...", e.getMessage());
throw new Exception(e);