public String addExperimentStatus(ExperimentStatus experimentStatus, String expId) throws RegistryException { try { ExperimentResource experiment = new ExperimentResource(); experiment.setExperimentId(expId); ExperimentStatusResource status = experiment.getExperimentStatus(); ExperimentState newState = experimentStatus.getState(); if (status == null) { status = (ExperimentStatusResource) experiment.create(ResourceType.EXPERIMENT_STATUS); status.setStatusId(getStatusID("EXPERIMENT_STATE")); }else { String state = status.getState(); if (newState != null && !state.equals(newState.toString())){ status.setStatusId(getStatusID("EXPERIMENT_STATE")); } } status.setExperimentId(expId); status.setTimeOfStateChange(AiravataUtils.getTime(experimentStatus.getTimeOfStateChange())); if (newState != null){ status.setState(newState.toString()); } status.setReason(experimentStatus.getReason()); status.save(); logger.debug(expId, "Added experiment {} status to {}.", expId, experimentStatus.toString()); } catch (Exception e) { logger.error(expId, "Error while adding experiment status...", e); throw new RegistryException(e); } return expId; }
public String addProcessError(ErrorModel processError, String processID) throws RegistryException { try { ProcessErrorResource error = new ProcessErrorResource(); error.setProcessId(processID); if (processError.getErrorId() == null){ error.setErrorId(AiravataUtils.getId("PROCESS_ERROR")); }else { error.setErrorId(processError.getErrorId()); } error.setCreationTime(AiravataUtils.getTime(processError.getCreationTime())); error.setActualErrorMessage(processError.getActualErrorMessage()); error.setUserFriendlyMessage(processError.getUserFriendlyMessage()); error.setTransientOrPersistent(processError.isTransientOrPersistent()); if(processError.getRootCauseErrorIdList() != null) { error.setRootCauseErrorIdList(StringUtils.join(processError.getRootCauseErrorIdList(), ",")); } error.save(); } catch (Exception e) { logger.error(processID, "Error while adding process status...", e); throw new RegistryException(e); } return processID; }
public String addExperimentError(ErrorModel experimentError, String expId) throws RegistryException { try { ExperimentErrorResource error = new ExperimentErrorResource(); if (experimentError.getErrorId() == null){ error.setErrorId(AiravataUtils.getId("EXP_ERROR")); }else { error.setErrorId(experimentError.getErrorId()); } error.setExperimentId(expId); error.setCreationTime(AiravataUtils.getTime(experimentError.getCreationTime())); error.setActualErrorMessage(experimentError.getActualErrorMessage()); error.setUserFriendlyMessage(experimentError.getUserFriendlyMessage()); error.setTransientOrPersistent(experimentError.isTransientOrPersistent()); if(experimentError.getRootCauseErrorIdList() != null) { error.setRootCauseErrorIdList(StringUtils.join(experimentError.getRootCauseErrorIdList(), ",")); } error.save(); } catch (Exception e) { logger.error(expId, "Error while updating experiment status...", e); throw new RegistryException(e); } return expId; }
public String addTaskError(ErrorModel taskError, String taskId) throws RegistryException { try { TaskErrorResource error = new TaskErrorResource(); error.setTaskId(taskId); if (taskError.getErrorId() == null){ error.setErrorId(AiravataUtils.getId("TASK_ERROR")); }else { error.setErrorId(taskError.getErrorId()); } error.setCreationTime(AiravataUtils.getTime(taskError.getCreationTime())); error.setActualErrorMessage(taskError.getActualErrorMessage()); error.setUserFriendlyMessage(taskError.getUserFriendlyMessage()); error.setTransientOrPersistent(taskError.isTransientOrPersistent()); if(taskError.getRootCauseErrorIdList() != null) { error.setRootCauseErrorIdList(StringUtils.join(taskError.getRootCauseErrorIdList(), ",")); } error.save(); } catch (Exception e) { logger.error(taskId, "Error while adding task status...", e); throw new RegistryException(e); } return taskId; }
public String addJobStatus(JobStatus jobStatus, CompositeIdentifier cis) throws RegistryException { String taskId = (String)cis.getTopLevelIdentifier(); String jobID = (String)cis.getSecondLevelIdentifier(); try { JobResource jobResource = new JobResource(); jobResource.setJobId(jobID); JobStatusResource status = jobResource.getJobStatus(); if (status == null) { status = new JobStatusResource(); } status.setStatusId(getStatusID(jobID)); status.setJobId(jobID); status.setTaskId(taskId); status.setTimeOfStateChange(AiravataUtils.getTime(jobStatus.getTimeOfStateChange())); status.setState(jobStatus.getJobState().toString()); status.setReason(jobStatus.getReason()); status.save(); logger.debug(jobID, "Added job {} status to {}.", jobID, jobStatus.toString()); } catch (Exception e) { logger.error(jobID, "Error while adding job status...", e); throw new RegistryException(e); } return jobID; }
public String updateTask(TaskModel task, String taskID) throws RegistryException { try { ProcessResource processResource = new ProcessResource(); TaskResource taskResource = processResource.getTask(taskID); taskResource.setTaskId(task.getTaskId()); taskResource.setParentProcessId(task.getParentProcessId()); taskResource.setTaskType(task.getTaskType().toString()); taskResource.setCreationTime(AiravataUtils.getTime(task.getCreationTime())); taskResource.setLastUpdateTime(AiravataUtils.getTime(task.getLastUpdateTime())); taskResource.setTaskDetail(task.getTaskDetail()); taskResource.setSubTaskModel(task.getSubTaskModel()); taskResource.save(); if(task.getTaskError() != null) { updateTaskError(task.getTaskError(), task.getTaskId()); } if(task.getTaskError() != null) { updateTaskError(task.getTaskError(), task.getTaskId()); } } catch (Exception e) { logger.error(taskID, "Error while adding task...", e); throw new RegistryException(e); } return taskID; }
public String updateWorkflowNodeStatus(WorkflowNodeStatus status, String nodeId) throws RegistryException { try { ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT); WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode(nodeId); StatusResource statusResource = workflowNode.getWorkflowNodeStatus(); if (statusResource == null) { statusResource = (StatusResource) workflowNode.create(ResourceType.STATUS); } statusResource.setExperimentResource(workflowNode.getExperimentResource()); statusResource.setWorkflowNodeDetail(workflowNode); statusResource.setStatusType(StatusType.WORKFLOW_NODE.toString()); statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange())); statusResource.setState(status.getWorkflowNodeState().toString()); statusResource.save(); logger.debugId(nodeId, "Updated workflow node {} status to {}.", nodeId, status.toString()); return String.valueOf(statusResource.getStatusId()); } catch (Exception e) { logger.errorId(nodeId, "Error while updating workflow node status to " + status.toString() + "...", e); throw new RegistryException(e); } }
public String addWorkflowNodeStatus(WorkflowNodeStatus status, CompositeIdentifier ids) throws RegistryException { try { ExperimentResource experiment = gatewayResource.getExperiment((String) ids.getTopLevelIdentifier()); WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode((String) ids.getSecondLevelIdentifier()); StatusResource statusResource = (StatusResource) experiment.create(ResourceType.STATUS); statusResource.setExperimentResource(experiment); statusResource.setWorkflowNodeDetail(workflowNode); statusResource.setStatusType(StatusType.WORKFLOW_NODE.toString()); statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange())); if (status.getWorkflowNodeState() == null) { statusResource.setState(WorkflowNodeState.UNKNOWN.toString()); } else { statusResource.setState(status.getWorkflowNodeState().toString()); } statusResource.save(); return String.valueOf(statusResource.getStatusId()); } catch (Exception e) { logger.error("Error while adding workflow node status...", e); throw new RegistryException(e); } }
public String addJob(JobModel job, String processId) throws RegistryException { try { JobResource jobResource = new JobResource(); jobResource.setJobId(job.getJobId()); jobResource.setProcessId(processId); jobResource.setTaskId(job.getTaskId()); jobResource.setJobDescription(job.getJobDescription()); jobResource.setCreationTime(AiravataUtils.getTime(job.getCreationTime())); jobResource.setComputeResourceConsumed(job.getComputeResourceConsumed()); jobResource.setJobName(job.getJobName()); jobResource.setWorkingDir(job.getWorkingDir()); jobResource.setExitCode(job.getExitCode()); jobResource.setStdOut(job.getStdOut()); jobResource.setStdErr(job.getStdErr()); jobResource.save(); } catch (Exception e) { logger.error(processId, "Error while adding task...", e); throw new RegistryException(e); } return processId; }
public String addTaskStatus(TaskStatus status, CompositeIdentifier ids) throws RegistryException { try { ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT); WorkflowNodeDetailResource workflowNode = experiment.getWorkflowNode((String) ids.getTopLevelIdentifier()); TaskDetailResource taskDetail = workflowNode.getTaskDetail((String) ids.getSecondLevelIdentifier()); StatusResource statusResource = (StatusResource) workflowNode.create(ResourceType.STATUS); statusResource.setExperimentResource(workflowNode.getExperimentResource()); statusResource.setWorkflowNodeDetail(workflowNode); statusResource.setTaskDetailResource(taskDetail); statusResource.setStatusType(StatusType.TASK.toString()); statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange())); if (status.getExecutionState() == null) { statusResource.setState(TaskState.UNKNOWN.toString()); } else { statusResource.setState(status.getExecutionState().toString()); } statusResource.save(); return String.valueOf(statusResource.getStatusId()); } catch (Exception e) { logger.error("Error while adding task status...", e); throw new RegistryException(e); } }
/** * @param status application status * @param ids composite id will contain taskid and jobid * @return status id */ public String addApplicationStatus(ApplicationStatus 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.APPLICATION.toString()); statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange())); if (status.getApplicationState() == null) { statusResource.setState("UNKNOWN"); } else { statusResource.setState(status.getApplicationState()); } statusResource.save(); return String.valueOf(statusResource.getStatusId()); } catch (Exception e) { logger.error("Unable to read airavata-server properties", e); throw new RegistryException(e); } }
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); } }
public String updateDataTransferDetails(DataTransferDetails transferDetails, String transferId) throws RegistryException { try { ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT); WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL); TaskDetailResource taskDetail = (TaskDetailResource) workflowNode.create(ResourceType.TASK_DETAIL); DataTransferDetailResource resource = taskDetail.getDataTransferDetail(transferId); // resource.setTaskDetailResource(taskDetail); resource.setTransferDescription(transferDetails.getTransferDescription()); resource.setCreationTime(AiravataUtils.getTime(transferDetails.getCreationTime())); resource.save(); String taskId = resource.getTaskDetailResource().getTaskId(); TransferStatus transferStatus = transferDetails.getTransferStatus(); if (transferStatus != null) { TransferStatus status = getDataTransferStatus(transferId); if (status != null) { updateTransferStatus(transferStatus, transferId); } else { CompositeIdentifier ids = new CompositeIdentifier(taskId, transferId); addTransferStatus(transferStatus, ids); } } return resource.getTransferId(); } catch (Exception e) { logger.error("Error while updating transfer details...", 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); } }
public void updateTransferStatus(TransferStatus status, String transferId) throws RegistryException { try { ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT); WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL); TaskDetailResource taskDetail = (TaskDetailResource) workflowNode.create(ResourceType.TASK_DETAIL); DataTransferDetailResource dataTransferDetail = taskDetail.getDataTransferDetail(transferId); StatusResource statusResource = dataTransferDetail.getDataTransferStatus(); WorkflowNodeDetailResource workflowNodeDetailResource = dataTransferDetail.getTaskDetailResource().getWorkflowNodeDetailResource(); if (workflowNodeDetailResource != null) { statusResource.setExperimentResource(workflowNodeDetailResource.getExperimentResource()); statusResource.setWorkflowNodeDetail(workflowNodeDetailResource); } statusResource.setTaskDetailResource(dataTransferDetail.getTaskDetailResource()); statusResource.setDataTransferDetail(dataTransferDetail); statusResource.setStatusType(StatusType.DATA_TRANSFER.toString()); statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange())); statusResource.setState(status.getTransferState().toString()); statusResource.save(); } catch (Exception e) { logger.error("Error while updating transfer status...", e); throw new RegistryException(e); } }
public void updateApplicationStatus(ApplicationStatus status, String jobId) throws RegistryException { try { ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT); WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL); TaskDetailResource taskDetail = (TaskDetailResource) workflowNode.create(ResourceType.TASK_DETAIL); JobDetailResource jobDetail = taskDetail.getJobDetail(jobId); StatusResource statusResource = jobDetail.getApplicationStatus(); statusResource.setExperimentResource(jobDetail.getTaskDetailResource().getWorkflowNodeDetailResource().getExperimentResource()); statusResource.setWorkflowNodeDetail(jobDetail.getTaskDetailResource().getWorkflowNodeDetailResource()); statusResource.setTaskDetailResource(jobDetail.getTaskDetailResource()); statusResource.setStatusType(StatusType.APPLICATION.toString()); statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange())); statusResource.setState(status.getApplicationState()); statusResource.save(); } catch (Exception e) { logger.error("Error while updating application status...", e); throw new RegistryException(e); } }
public String updateExperimentStatus(ExperimentStatus experimentStatus, String expId) throws RegistryException { try { ExperimentResource experiment = gatewayResource.getExperiment(expId); StatusResource status = experiment.getExperimentStatus(); if (status == null) { status = (StatusResource) experiment.create(ResourceType.STATUS); } status.setExperimentResource(experiment); status.setStatusUpdateTime(AiravataUtils.getTime(experimentStatus.getTimeOfStateChange())); if (status.getState() == null) { status.setState(ExperimentState.UNKNOWN.name()); } if (isValidStatusTransition(ExperimentState.valueOf(status.getState()), experimentStatus.getExperimentState())) { status.setState(experimentStatus.getExperimentState().toString()); status.setStatusType(StatusType.EXPERIMENT.toString()); status.save(); logger.debugId(expId, "Updated experiment {} status to {}.", expId, experimentStatus.toString()); } } catch (Exception e) { logger.errorId(expId, "Error while updating experiment status...", e); throw new RegistryException(e); } return expId; }
public void updateTaskStatus(TaskStatus status, String taskId) throws RegistryException { try { ExperimentResource experiment = (ExperimentResource) gatewayResource.create(ResourceType.EXPERIMENT); WorkflowNodeDetailResource workflowNode = (WorkflowNodeDetailResource) experiment.create(ResourceType.WORKFLOW_NODE_DETAIL); TaskDetailResource taskDetail = workflowNode.getTaskDetail(taskId); StatusResource statusResource; if (taskDetail.isTaskStatusExist(taskId)) { statusResource = taskDetail.getWorkflowNodeDetailResource().getTaskStatus(taskId); } else { statusResource = (StatusResource) taskDetail.create(ResourceType.STATUS); } statusResource.setExperimentResource(taskDetail.getWorkflowNodeDetailResource().getExperimentResource()); statusResource.setWorkflowNodeDetail(taskDetail.getWorkflowNodeDetailResource()); statusResource.setTaskDetailResource(taskDetail); statusResource.setStatusType(StatusType.TASK.toString()); statusResource.setStatusUpdateTime(AiravataUtils.getTime(status.getTimeOfStateChange())); statusResource.setState(status.getExecutionState().toString()); statusResource.save(); logger.infoId(taskId, "Updated task {} status to {}.", taskId, status.toString()); } catch (Exception e) { logger.errorId(taskId, "Error while updating task status to " + status.toString() + "...", e); throw new RegistryException(e); } }
public void addComputationScheduling(ComputationalResourceScheduling resourceScheduling, Resource resource) throws RegistryException { ComputationSchedulingResource cmsr = new ComputationSchedulingResource(); try { if (resource instanceof ExperimentResource) { ExperimentResource experiment = (ExperimentResource) resource; cmsr.setExperimentResource(experiment); } if (resource instanceof TaskDetailResource) { TaskDetailResource taskDetailResource = (TaskDetailResource) resource; cmsr.setTaskDetailResource(taskDetailResource); cmsr.setExperimentResource(taskDetailResource.getWorkflowNodeDetailResource().getExperimentResource()); } cmsr.setResourceHostId(resourceScheduling.getResourceHostId()); cmsr.setCpuCount(resourceScheduling.getTotalCPUCount()); cmsr.setNodeCount(resourceScheduling.getNodeCount()); cmsr.setNumberOfThreads(resourceScheduling.getNumberOfThreads()); cmsr.setQueueName(resourceScheduling.getQueueName()); cmsr.setWalltimeLimit(resourceScheduling.getWallTimeLimit()); cmsr.setJobStartTime(AiravataUtils.getTime(resourceScheduling.getJobStartTime())); cmsr.setPhysicalMemory(resourceScheduling.getTotalPhysicalMemory()); cmsr.setProjectName(resourceScheduling.getComputationalProjectAccount()); cmsr.save(); } catch (Exception e) { logger.error("Unable to save computational scheduling data", e); throw new RegistryException(e); } }
public void updateSchedulingData(ComputationalResourceScheduling resourceScheduling, Resource resource) throws RegistryException { ComputationSchedulingResource cmsr; try { if (resource instanceof ExperimentResource) { ExperimentResource expResource = (ExperimentResource) resource; cmsr = expResource.getComputationScheduling(expResource.getExpID()); cmsr.setExperimentResource(expResource); } else { TaskDetailResource taskDetailResource = (TaskDetailResource) resource; cmsr = taskDetailResource.getComputationScheduling(taskDetailResource.getTaskId()); cmsr.setTaskDetailResource(taskDetailResource); cmsr.setExperimentResource(taskDetailResource.getWorkflowNodeDetailResource().getExperimentResource()); } cmsr.setResourceHostId(resourceScheduling.getResourceHostId()); cmsr.setCpuCount(resourceScheduling.getTotalCPUCount()); cmsr.setNodeCount(resourceScheduling.getNodeCount()); cmsr.setNumberOfThreads(resourceScheduling.getNumberOfThreads()); cmsr.setQueueName(resourceScheduling.getQueueName()); cmsr.setWalltimeLimit(resourceScheduling.getWallTimeLimit()); cmsr.setJobStartTime(AiravataUtils.getTime(resourceScheduling.getJobStartTime())); cmsr.setPhysicalMemory(resourceScheduling.getTotalPhysicalMemory()); cmsr.setProjectName(resourceScheduling.getComputationalProjectAccount()); cmsr.save(); } catch (Exception e) { logger.error("Error while updating scheduling data...", e); throw new RegistryException(e); } }