Repository: airavata Updated Branches: refs/heads/workflow-support 16cd757f2 -> 915eda2e4
updating versions and fixing merge issues with the master Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/915eda2e Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/915eda2e Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/915eda2e Branch: refs/heads/workflow-support Commit: 915eda2e4b39301ca95b76ba5785239250ec9e76 Parents: 16cd757 Author: Saminda Wijeratne <[email protected]> Authored: Tue Jul 22 17:22:19 2014 -0400 Committer: Saminda Wijeratne <[email protected]> Committed: Tue Jul 22 17:22:19 2014 -0400 ---------------------------------------------------------------------- .../tools/RegisterSampleApplications.java | 29 ++++++++------- .../model/util/ExperimentModelUtil.java | 6 ++-- .../monitor/impl/pull/qstat/HPCPullMonitor.java | 2 -- .../server/OrchestratorServerHandler.java | 2 +- .../registry/jpa/model/WorkflowNodeDetail.java | 2 +- modules/workflow-model/workflow-engine/pom.xml | 2 +- .../engine/interpretor/WorkflowInterpreter.java | 38 +++++++++++++++----- .../workflow-model-component/pom.xml | 2 +- 8 files changed, 54 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/915eda2e/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 1f28d88..61f7697 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 @@ -20,31 +20,36 @@ */ package org.apache.airavata.client.tools; -import java.io.*; -import java.util.*; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; import org.apache.airavata.api.Airavata; import org.apache.airavata.api.client.AiravataClientFactory; -import org.apache.airavata.client.api.exception.AiravataAPIInvocationException; -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.appinterface.ApplicationInterfaceDescription; 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.appcatalog.computeresource.*; +import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription; +import org.apache.airavata.model.appcatalog.computeresource.JobManagerCommand; +import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager; +import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManagerType; +import org.apache.airavata.model.appcatalog.computeresource.SCPDataMovement; +import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission; +import org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol; import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference; import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile; import org.apache.airavata.model.error.AiravataClientException; -import org.apache.airavata.model.error.AiravataSystemException; -import org.apache.airavata.model.error.InvalidRequestException; - +import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.apache.thrift.TException; - public class RegisterSampleApplications { public static final String THRIFT_SERVER_HOST = "gw127.iu.xsede.org"; http://git-wip-us.apache.org/repos/asf/airavata/blob/915eda2e/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java index 7b08bcd..43fb241 100644 --- a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java +++ b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java @@ -155,9 +155,9 @@ public class ExperimentModelUtil { public static TaskDetails cloneTaskFromWorkflowNodeDetails(Experiment experiment, WorkflowNodeDetails nodeDetails){ TaskDetails taskDetails = new TaskDetails(); taskDetails.setCreationTime(nodeDetails.getCreationTime()); - String[] split = nodeDetails.getExecutionUnitData().split("/"); - taskDetails.setApplicationId(split[0]); - taskDetails.setApplicationVersion(split[1]); +// String[] split = ; + taskDetails.setApplicationId(nodeDetails.getExecutionUnitData()); +// taskDetails.setApplicationVersion(split[1]); List<DataObjectType> experimentInputs = nodeDetails.getNodeInputs(); if (experimentInputs != null){ taskDetails.setApplicationInputs(experimentInputs); http://git-wip-us.apache.org/repos/asf/airavata/blob/915eda2e/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java index 5150b49..731f88b 100644 --- a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java +++ b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/impl/pull/qstat/HPCPullMonitor.java @@ -195,8 +195,6 @@ public class HPCPullMonitor extends PullMonitor { } catch (GFacException e) { publisher.publish(new TaskStatusChangeRequest(new TaskIdentity(iMonitorID.getExperimentID(), iMonitorID.getWorkflowNodeID(), iMonitorID.getTaskID()), TaskState.FAILED)); - publisher.publish(new ExperimentStatusChangeRequest(new ExperimentIdentity(iMonitorID.getExperimentID()), - ExperimentState.FAILED)); logger.info(e.getLocalizedMessage(), e); } } else { http://git-wip-us.apache.org/repos/asf/airavata/blob/915eda2e/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java ---------------------------------------------------------------------- diff --git a/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java index ac8e9f3..3bffe23 100644 --- a/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java +++ b/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java @@ -484,7 +484,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface, IllegalAccessException { Map<String, String> moduleIdFilter = new HashMap<String, String>(); moduleIdFilter.put(AbstractResource.ApplicationDeploymentConstants.APP_MODULE_ID, selectedModuleId); - if (taskData.getTaskScheduling().getResourceHostId() != null) { + if (taskData.getTaskScheduling()!=null && taskData.getTaskScheduling().getResourceHostId() != null) { moduleIdFilter.put(AbstractResource.ApplicationDeploymentConstants.COMPUTE_HOST_ID, taskData.getTaskScheduling().getResourceHostId()); } List<ApplicationDeploymentDescription> applicationDeployements = appCatalog.getApplicationDeployment().getApplicationDeployements(moduleIdFilter); http://git-wip-us.apache.org/repos/asf/airavata/blob/915eda2e/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/WorkflowNodeDetail.java ---------------------------------------------------------------------- diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/WorkflowNodeDetail.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/WorkflowNodeDetail.java index 46b7d6e..b4ae29e 100644 --- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/WorkflowNodeDetail.java +++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/model/WorkflowNodeDetail.java @@ -38,7 +38,7 @@ public class WorkflowNodeDetail implements Serializable { private String nodeId; @Column(name = "EXECUTION_UNIT") private String executionUnit; - @Column(name = "EXECUTION_UNIT") + @Column(name = "EXECUTION_UNIT_DATA") private String executionUnitData; @Column(name = "CREATION_TIME") private Timestamp creationTime; http://git-wip-us.apache.org/repos/asf/airavata/blob/915eda2e/modules/workflow-model/workflow-engine/pom.xml ---------------------------------------------------------------------- diff --git a/modules/workflow-model/workflow-engine/pom.xml b/modules/workflow-model/workflow-engine/pom.xml index fcdfd87..ef6681b 100644 --- a/modules/workflow-model/workflow-engine/pom.xml +++ b/modules/workflow-model/workflow-engine/pom.xml @@ -13,7 +13,7 @@ <parent> <groupId>org.apache.airavata</groupId> <artifactId>airavata-workflow-model-parent</artifactId> - <version>0.13-SNAPSHOT</version> + <version>0.14-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> http://git-wip-us.apache.org/repos/asf/airavata/blob/915eda2e/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/interpretor/WorkflowInterpreter.java ---------------------------------------------------------------------- diff --git a/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/interpretor/WorkflowInterpreter.java b/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/interpretor/WorkflowInterpreter.java index 98fc560..fadde07 100644 --- a/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/interpretor/WorkflowInterpreter.java +++ b/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/interpretor/WorkflowInterpreter.java @@ -57,7 +57,6 @@ import org.apache.airavata.model.workspace.experiment.WorkflowNodeStatus; import org.apache.airavata.orchestrator.cpi.OrchestratorService; import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory; import org.apache.airavata.registry.cpi.ChildDataType; -import org.apache.airavata.registry.cpi.ParentDataType; import org.apache.airavata.registry.cpi.Registry; import org.apache.airavata.registry.cpi.RegistryException; import org.apache.airavata.registry.cpi.RegistryModelType; @@ -229,7 +228,7 @@ public class WorkflowInterpreter implements AbstractActivityListener{ elem.setKey(portName); elem.setValue(portValue==null?null:portValue.toString()); workflowNode.addToNodeInputs(elem); - workflowNode.setNodeInstanceId((String) getRegistry().add(ChildDataType.WORKFLOW_NODE_DETAIL, workflowNode, getExperiment().getExperimentID())); + getRegistry().update(RegistryModelType.WORKFLOW_NODE_DETAIL, workflowNode, workflowNode.getNodeInstanceId()); updateWorkflowNodeStatus(workflowNode, WorkflowNodeState.COMPLETED); } @@ -372,18 +371,23 @@ public class WorkflowInterpreter implements AbstractActivityListener{ } } - private WorkflowNodeDetails createWorkflowNodeDetails(Node node) { + private WorkflowNodeDetails createWorkflowNodeDetails(Node node) throws RegistryException { WorkflowNodeDetails workflowNode = ExperimentModelUtil.createWorkflowNode(node.getName(), null); ExecutionUnit executionUnit = ExecutionUnit.APPLICATION; + String executionData = null; if (node instanceof InputNode){ executionUnit = ExecutionUnit.INPUT; } else if (node instanceof OutputNode){ executionUnit = ExecutionUnit.OUTPUT; } if (node instanceof WSNode){ executionUnit = ExecutionUnit.APPLICATION; + executionData = ((WSNode)node).getComponent().getApplication().getApplicationId(); } workflowNode.setExecutionUnit(executionUnit); + workflowNode.setExecutionUnitData(executionData); + workflowNode.setNodeInstanceId((String) getRegistry().add(ChildDataType.WORKFLOW_NODE_DETAIL, workflowNode, getExperiment().getExperimentID())); nodeInstanceList.put(node, workflowNode); + setupNodeDetailsInput(node, workflowNode); return workflowNode; } @@ -422,7 +426,7 @@ public class WorkflowInterpreter implements AbstractActivityListener{ // next run // even if the next run runs before the notification arrives WorkflowNodeDetails workflowNodeDetails = createWorkflowNodeDetails(node); - workflowNodeDetails.setNodeInstanceId((String)getRegistry().add(ChildDataType.WORKFLOW_NODE_DETAIL, workflowNodeDetails, getExperiment().getExperimentID())); +// workflowNodeDetails.setNodeInstanceId((String)getRegistry().add(ChildDataType.WORKFLOW_NODE_DETAIL, workflowNodeDetails, getExperiment().getExperimentID())); node.setState(NodeExecutionState.EXECUTING); updateWorkflowNodeStatus(workflowNodeDetails, WorkflowNodeState.EXECUTING); // OutputNode node = (OutputNode) outputNode; @@ -987,8 +991,14 @@ public class WorkflowInterpreter implements AbstractActivityListener{ private void setupNodeDetailsInput(Node node, WorkflowNodeDetails nodeDetails){ List<DataPort> inputPorts = node.getInputPorts(); for (DataPort dataPort : inputPorts) { - Map<String, String> outputData = nodeOutputData.get(dataPort.getFromNode()); - String portInputValue = outputData.get(dataPort.getName()); + Node fromNode = dataPort.getFromNode(); + String portInputValue = null; + if (fromNode instanceof InputNode){ + portInputValue = (String) ((InputNode) fromNode).getDefaultValue(); + } else if (fromNode instanceof WSNode){ + Map<String, String> outputData = nodeOutputData.get(fromNode); + portInputValue = outputData.get(dataPort.getName()); + } DataObjectType elem = new DataObjectType(); elem.setKey(dataPort.getName()); elem.setValue(portInputValue); @@ -1392,16 +1402,17 @@ public class WorkflowInterpreter implements AbstractActivityListener{ String taskId = taskStatus.getIdentity().getTaskId(); if (isTaskAwaiting(taskId)){ WorkflowNodeState state=WorkflowNodeState.UNKNOWN; + Node node = getAwaitingNodeForTask(taskId); switch(taskStatus.getState()){ case CANCELED: ; break; case COMPLETED: //task is completed + state = WorkflowNodeState.COMPLETED; try { TaskDetails task = (TaskDetails)getRegistry().get(RegistryModelType.TASK_DETAIL, taskId); List<DataObjectType> applicationOutputs = task.getApplicationOutputs(); Map<String, String> outputData = new HashMap<String, String>(); - Node node = getAwaitingNodeForTask(taskId); for (DataObjectType outputObj : applicationOutputs) { List<DataPort> outputPorts = node.getOutputPorts(); for (DataPort dataPort : outputPorts) { @@ -1412,6 +1423,7 @@ public class WorkflowInterpreter implements AbstractActivityListener{ } nodeOutputData.put(node, outputData); setupNodeDetailsOutput(node); + node.setState(NodeExecutionState.FINISHED); } catch (RegistryException e) { e.printStackTrace(); } @@ -1419,16 +1431,26 @@ public class WorkflowInterpreter implements AbstractActivityListener{ case CONFIGURING_WORKSPACE: break; case FAILED: + state = WorkflowNodeState.FAILED; + node.setState(NodeExecutionState.FAILED); break; case EXECUTING: case WAITING: case PRE_PROCESSING: case POST_PROCESSING: case OUTPUT_DATA_STAGING: case INPUT_DATA_STAGING: + state = WorkflowNodeState.EXECUTING; + node.setState(NodeExecutionState.EXECUTING); break; case STARTED: break; case CANCELING: + state = WorkflowNodeState.CANCELING; break; default: break; - } + } + try { + updateWorkflowNodeStatus(nodeInstanceList.get(node), state); + } catch (RegistryException e) { + e.printStackTrace(); + } } } http://git-wip-us.apache.org/repos/asf/airavata/blob/915eda2e/modules/workflow-model/workflow-model-component/pom.xml ---------------------------------------------------------------------- diff --git a/modules/workflow-model/workflow-model-component/pom.xml b/modules/workflow-model/workflow-model-component/pom.xml index d7cbee3..bd2a0ae 100644 --- a/modules/workflow-model/workflow-model-component/pom.xml +++ b/modules/workflow-model/workflow-model-component/pom.xml @@ -13,7 +13,7 @@ <parent> <groupId>org.apache.airavata</groupId> <artifactId>airavata-workflow-model-parent</artifactId> - <version>0.13-SNAPSHOT</version> + <version>0.14-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent>
