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); } }