Search in sources :

Example 6 with TaskException

use of org.apache.airavata.gfac.core.task.TaskException in project airavata by apache.

the class GFacEngineImpl method getDataStagingTaskContext.

private TaskContext getDataStagingTaskContext(ProcessContext processContext, OutputDataObjectType processOutput) throws TException, TaskException, GFacException {
    TaskContext taskCtx = new TaskContext();
    taskCtx.setParentProcessContext(processContext);
    // create new task model for this task
    TaskModel taskModel = new TaskModel();
    taskModel.setParentProcessId(processContext.getProcessId());
    taskModel.setCreationTime(AiravataUtils.getCurrentTimestamp().getTime());
    taskModel.setLastUpdateTime(taskModel.getCreationTime());
    TaskStatus taskStatus = new TaskStatus(TaskState.CREATED);
    taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
    taskModel.setTaskStatuses(Arrays.asList(taskStatus));
    taskModel.setTaskType(TaskTypes.DATA_STAGING);
    // create data staging sub task model
    String remoteOutputDir = processContext.getOutputDir();
    remoteOutputDir = remoteOutputDir.endsWith("/") ? remoteOutputDir : remoteOutputDir + "/";
    DataStagingTaskModel submodel = new DataStagingTaskModel();
    ServerInfo serverInfo = processContext.getComputeResourceServerInfo();
    URI source = null;
    try {
        source = new URI(processContext.getDataMovementProtocol().name(), serverInfo.getHost(), serverInfo.getUserName(), serverInfo.getPort(), remoteOutputDir + processOutput.getValue(), null, null);
    } catch (URISyntaxException e) {
        throw new TaskException("Error while constructing source file URI");
    }
    submodel.setSource(source.toString());
    // We don't know destination location at this time, data staging task will set this.
    // because destination is required field we set dummy destination
    submodel.setDestination("dummy://temp/file/location");
    taskModel.setSubTaskModel(ThriftUtils.serializeThriftObject(submodel));
    taskCtx.setTaskModel(taskModel);
    taskCtx.setProcessOutput(processOutput);
    return taskCtx;
}
Also used : TaskContext(org.apache.airavata.gfac.core.context.TaskContext) TaskException(org.apache.airavata.gfac.core.task.TaskException) ServerInfo(org.apache.airavata.gfac.core.cluster.ServerInfo) DataStagingTaskModel(org.apache.airavata.model.task.DataStagingTaskModel) URISyntaxException(java.net.URISyntaxException) TaskStatus(org.apache.airavata.model.status.TaskStatus) URI(java.net.URI) EnvironmentSetupTaskModel(org.apache.airavata.model.task.EnvironmentSetupTaskModel) JobSubmissionTaskModel(org.apache.airavata.model.task.JobSubmissionTaskModel) MonitorTaskModel(org.apache.airavata.model.task.MonitorTaskModel) DataStagingTaskModel(org.apache.airavata.model.task.DataStagingTaskModel) TaskModel(org.apache.airavata.model.task.TaskModel)

Aggregations

TaskException (org.apache.airavata.gfac.core.task.TaskException)6 URI (java.net.URI)3 URISyntaxException (java.net.URISyntaxException)3 TaskStatus (org.apache.airavata.model.status.TaskStatus)3 ProcessContext (org.apache.airavata.gfac.core.context.ProcessContext)2 DataMovementProtocol (org.apache.airavata.model.data.movement.DataMovementProtocol)2 AiravataException (org.apache.airavata.common.exception.AiravataException)1 GFacException (org.apache.airavata.gfac.core.GFacException)1 RemoteCluster (org.apache.airavata.gfac.core.cluster.RemoteCluster)1 ServerInfo (org.apache.airavata.gfac.core.cluster.ServerInfo)1 TaskContext (org.apache.airavata.gfac.core.context.TaskContext)1 JobMonitor (org.apache.airavata.gfac.core.monitor.JobMonitor)1 DataType (org.apache.airavata.model.application.io.DataType)1 InputDataObjectType (org.apache.airavata.model.application.io.InputDataObjectType)1 JobModel (org.apache.airavata.model.job.JobModel)1 JobStatus (org.apache.airavata.model.status.JobStatus)1 DataStagingTaskModel (org.apache.airavata.model.task.DataStagingTaskModel)1 EnvironmentSetupTaskModel (org.apache.airavata.model.task.EnvironmentSetupTaskModel)1 JobSubmissionTaskModel (org.apache.airavata.model.task.JobSubmissionTaskModel)1 MonitorTaskModel (org.apache.airavata.model.task.MonitorTaskModel)1