Search in sources :

Example 6 with TaskContext

use of org.apache.airavata.gfac.core.context.TaskContext in project airavata by apache.

the class GFacEngineImpl method cancelProcess.

@Override
public void cancelProcess(ProcessContext processContext) throws GFacException {
    if (processContext != null) {
        switch(processContext.getProcessState()) {
            case MONITORING:
            case EXECUTING:
                // get job submission task and invoke cancel
                JobSubmissionTask jobSubmissionTask = Factory.getJobSubmissionTask(processContext.getJobSubmissionProtocol());
                TaskContext taskCtx = getJobSubmissionTaskContext(processContext);
                executeCancel(taskCtx, jobSubmissionTask);
                break;
            case COMPLETED:
            case FAILED:
            case CANCELED:
            case CANCELLING:
                log.warn("Process cancel trigger for already {} process", processContext.getProcessState().name());
                break;
            default:
                break;
        }
    }
}
Also used : TaskContext(org.apache.airavata.gfac.core.context.TaskContext) JobSubmissionTask(org.apache.airavata.gfac.core.task.JobSubmissionTask)

Example 7 with TaskContext

use of org.apache.airavata.gfac.core.context.TaskContext in project airavata by apache.

the class GFacEngineImpl method getTaskContext.

private TaskContext getTaskContext(ProcessContext processContext) {
    TaskContext taskCtx = new TaskContext();
    taskCtx.setParentProcessContext(processContext);
    return taskCtx;
}
Also used : TaskContext(org.apache.airavata.gfac.core.context.TaskContext)

Example 8 with TaskContext

use of org.apache.airavata.gfac.core.context.TaskContext 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

TaskContext (org.apache.airavata.gfac.core.context.TaskContext)8 JobSubmissionTaskModel (org.apache.airavata.model.task.JobSubmissionTaskModel)4 URISyntaxException (java.net.URISyntaxException)3 TaskStatus (org.apache.airavata.model.status.TaskStatus)3 DataStagingTaskModel (org.apache.airavata.model.task.DataStagingTaskModel)3 EnvironmentSetupTaskModel (org.apache.airavata.model.task.EnvironmentSetupTaskModel)3 MonitorTaskModel (org.apache.airavata.model.task.MonitorTaskModel)3 TaskModel (org.apache.airavata.model.task.TaskModel)3 URI (java.net.URI)2 GFacException (org.apache.airavata.gfac.core.GFacException)2 ProcessContext (org.apache.airavata.gfac.core.context.ProcessContext)2 OutputDataObjectType (org.apache.airavata.model.application.io.OutputDataObjectType)2 JobModel (org.apache.airavata.model.job.JobModel)2 TException (org.apache.thrift.TException)2 Writable (groovy.lang.Writable)1 GStringTemplateEngine (groovy.text.GStringTemplateEngine)1 TemplateEngine (groovy.text.TemplateEngine)1 java.io (java.io)1 InetAddress (java.net.InetAddress)1 URL (java.net.URL)1