public static JobStatus getJobStatus (StatusResource status){ if (status != null){ JobStatus jobStatus = new JobStatus(); if (status.getState() == null || status.getState().equals("")){ status.setState("UNKNOWN"); } jobStatus.setJobState(JobState.valueOf(status.getState())); jobStatus.setTimeOfStateChange(status.getStatusUpdateTime().getTime()); return jobStatus; } return null; }
public String updateJobStatus(JobStatus status, CompositeIdentifier ids) throws RegistryException { try { ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT); WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL); TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) ids.getTopLevelIdentifier()); JobDetailResource jobDetail = taskDetail.getJobDetail((String) ids.getSecondLevelIdentifier()); StatusResource statusResource = jobDetail.getJobStatus(); workflowNode = taskDetail.getWorkflowNodeDetailResource(); experiment = workflowNode.getExperimentResource(); statusResource.setExperimentResource(experiment); statusResource.setWorkflowNodeDetail(workflowNode); statusResource.setTaskDetailResource(taskDetail); statusResource.setStatusType(StatusType.JOB.toString()); statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange())); statusResource.setState(status.getJobState().toString()); statusResource.save(); logger.infoId(ids.toString(), "Updated job status to {}", status.toString()); return String.valueOf(statusResource.getStatusId()); } catch (Exception e) { logger.errorId(ids.toString(), "Error while updating job status to " + status.toString() + " ...", e); throw new RegistryException(e); } }
/** * @param status job status * @param ids composite id will contain taskid and jobid * @return status id */ public String addJobStatus(JobStatus status, CompositeIdentifier ids) throws RegistryException { try { ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT); WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL); TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) ids.getTopLevelIdentifier()); JobDetailResource jobDetail = taskDetail.getJobDetail((String) ids.getSecondLevelIdentifier()); StatusResource statusResource = (StatusResource) jobDetail.create(ResourceType.STATUS); statusResource.setExperimentResource(taskDetail.getWorkflowNodeDetailResource().getExperimentResource()); statusResource.setWorkflowNodeDetail(taskDetail.getWorkflowNodeDetailResource()); statusResource.setTaskDetailResource(taskDetail); statusResource.setStatusType(StatusType.JOB.toString()); statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange())); if (status.getJobState() == null) { statusResource.setState(JobState.UNKNOWN.toString()); } else { statusResource.setState(status.getJobState().toString()); } statusResource.save(); return String.valueOf(statusResource.getStatusId()); } catch (Exception e) { logger.error("Error while adding job status...", e); throw new RegistryException(e); } }
private void process(JobStatusResult jobStatusResult, JobExecutionContext jEC){ JobState resultState = jobStatusResult.getState(); jEC.getJobDetails().setJobStatus(new JobStatus(resultState)); boolean runOutHandlers = false; String jobDetails = "JobName : " + jobStatusResult.getJobName() + ", JobId : " + jobStatusResult.getJobId();
private void publishJobStatusChange(JobExecutionContext jobExecutionContext) { JobStatusChangeRequestEvent jobStatus = new JobStatusChangeRequestEvent(); JobIdentifier jobIdentity = new JobIdentifier(jobExecutionContext.getJobDetails().getJobID(), jobExecutionContext.getTaskData().getTaskID(), jobExecutionContext.getWorkflowNodeDetails().getNodeInstanceId(), jobExecutionContext.getExperimentID(), jobExecutionContext.getGatewayID()); jobStatus.setJobIdentity(jobIdentity); jobStatus.setState(jobExecutionContext.getJobDetails().getJobStatus().getJobState()); // we have this JobStatus class to handle amqp monitoring log.debugId(jobStatus.getJobIdentity().getJobId(), "[EJM]: Published job status(" + jobExecutionContext.getJobDetails().getJobStatus().getJobState().toString() + ") change request, " + "experiment {} , task {}", jobStatus.getJobIdentity().getExperimentId(), jobStatus.getJobIdentity().getTaskId()); BetterGfacImpl.getMonitorPublisher().publish(jobStatus); }