private void publishNodeStatusChange(WorkflowNodeState state, String nodeId , String expId) throws AiravataException { if (publisher != null) { MessageContext msgCtx = new MessageContext(new WorkflowNodeStatusChangeEvent(state, new WorkflowIdentifier(nodeId, expId, gatewayId)), MessageType.WORKFLOWNODE, AiravataUtils.getId("NODE"), gatewayId); msgCtx.setUpdatedTime(new Timestamp(Calendar.getInstance().getTimeInMillis())); publisher.publish(msgCtx); } else { log.warn("Failed to publish workflow status change, publisher is null"); } }
public static void saveExperimentError(ProcessContext processContext, ErrorModel errorModel) throws GFacException { try { ExperimentCatalog experimentCatalog = processContext.getExperimentCatalog(); String experimentId = processContext.getExperimentId(); errorModel.setErrorId(AiravataUtils.getId("EXP_ERROR")); experimentCatalog.add(ExpCatChildDataType.EXPERIMENT_ERROR, errorModel, experimentId); } catch (RegistryException e) { String msg = "expId: " + processContext.getExperimentId() + " processId: " + processContext.getProcessId() + " : - Error while updating experiment errors"; throw new GFacException(msg, e); } }
public static void updageAndPublishExperimentStatus(String experimentId, ExperimentStatus status, Publisher publisher, String gatewayId) { try { RegistryFactory.getDefaultExpCatalog().update(ExperimentCatalogModelType.EXPERIMENT_STATUS, status, experimentId); ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent(status.getState(), experimentId, gatewayId); String messageId = AiravataUtils.getId("EXPERIMENT"); MessageContext messageContext = new MessageContext(event, MessageType.EXPERIMENT, messageId, gatewayId); messageContext.setUpdatedTime(AiravataUtils.getCurrentTimestamp()); publisher.publish(messageContext); } catch (RegistryException e) { log.error("expId : " + experimentId + " Error while updating experiment status to " + status.toString(), e); } catch (AiravataException e) { log.error("expId : " + experimentId + " Error while publishing experiment status to " + status.toString(), e); } }
public static void saveProcessError(ProcessContext processContext, ErrorModel errorModel) throws GFacException { try { ExperimentCatalog experimentCatalog = processContext.getExperimentCatalog(); errorModel.setErrorId(AiravataUtils.getId("PROCESS_ERROR")); experimentCatalog.add(ExpCatChildDataType.PROCESS_ERROR, errorModel, processContext.getProcessId()); } catch (RegistryException e) { String msg = "expId: " + processContext.getExperimentId() + " processId: " + processContext.getProcessId() + " : - Error while updating process errors"; throw new GFacException(msg, e); } }
public static void saveTaskError(TaskContext taskContext, ErrorModel errorModel) throws GFacException { try { ExperimentCatalog experimentCatalog = taskContext.getParentProcessContext().getExperimentCatalog(); String taskId = taskContext.getTaskId(); errorModel.setErrorId(AiravataUtils.getId("TASK_ERROR")); experimentCatalog.add(ExpCatChildDataType.TASK_ERROR, errorModel, taskId); } catch (RegistryException e) { String msg = "expId: " + taskContext.getParentProcessContext().getExperimentId() + " processId: " + taskContext.getParentProcessContext().getProcessId() + " taskId: " + taskContext.getTaskId() + " : - Error while updating task errors"; throw new GFacException(msg, e); } }
private boolean launchSingleAppExperiment() throws TException, AiravataException { try { List<String> processIds = experimentCatalog.getIds(ExperimentCatalogModelType.PROCESS, AbstractExpCatResource.ProcessConstants.EXPERIMENT_ID, experimentId); for (String processId : processIds) { launchProcess(processId, airavataCredStoreToken, gatewayId); } // ExperimentStatus status = new ExperimentStatus(ExperimentState.LAUNCHED); // status.setReason("submitted all processes"); // status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime()); // OrchestratorUtils.updageAndPublishExperimentStatus(experimentId, status); // log.info("expId: {}, Launched experiment ", experimentId); } catch (Exception e) { ExperimentStatus status = new ExperimentStatus(ExperimentState.FAILED); status.setReason("Error while updating task status"); OrchestratorUtils.updageAndPublishExperimentStatus(experimentId, status, publisher, gatewayId); log.error("expId: " + experimentId + ", Error while updating task status, hence updated experiment status to " + ExperimentState.FAILED, e); ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent(ExperimentState.FAILED, experimentId, gatewayId); String messageId = AiravataUtils.getId("EXPERIMENT"); MessageContext messageContext = new MessageContext(event, MessageType.EXPERIMENT, messageId, gatewayId); messageContext.setUpdatedTime(AiravataUtils.getCurrentTimestamp()); publisher.publish(messageContext); throw new TException(e); } return true; }
private void publishProcessStatus(ProcessSubmitEvent event, ProcessStatus status) throws AiravataException { ProcessIdentifier identifier = new ProcessIdentifier(event.getProcessId(), event.getExperimentId(), event.getGatewayId()); ProcessStatusChangeEvent processStatusChangeEvent = new ProcessStatusChangeEvent(status.getState(), identifier); MessageContext msgCtx = new MessageContext(processStatusChangeEvent, MessageType.PROCESS, AiravataUtils.getId(MessageType.PROCESS.name()), event.getGatewayId()); msgCtx.setUpdatedTime(AiravataUtils.getCurrentTimestamp()); statusPublisher.publish(msgCtx); }
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 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; }
this.getWorkflow().setExecutionState(WorkflowExecutionState.NONE); ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent(ExperimentState.COMPLETED, experiment.getExperimentID(), gatewayId); MessageContext msgCtx = new MessageContext(event, MessageType.EXPERIMENT, AiravataUtils.getId("EXPERIMENT"), gatewayId); msgCtx.setUpdatedTime(new Timestamp(Calendar.getInstance().getTimeInMillis())); publisher.publish(msgCtx);
public static void saveAndPublishProcessStatus(ProcessContext processContext) throws GFacException { try { // first we save job jobModel to the registry for sa and then save the job status. ExperimentCatalog experimentCatalog = processContext.getExperimentCatalog(); ProcessStatus status = processContext.getProcessStatus(); if (status.getTimeOfStateChange() == 0 || status.getTimeOfStateChange() > 0 ){ status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime()); }else { status.setTimeOfStateChange(status.getTimeOfStateChange()); } experimentCatalog.add(ExpCatChildDataType.PROCESS_STATUS, status, processContext.getProcessId()); ProcessIdentifier identifier = new ProcessIdentifier(processContext.getProcessId(), processContext.getProcessModel().getExperimentId(), processContext.getGatewayId()); ProcessStatusChangeEvent processStatusChangeEvent = new ProcessStatusChangeEvent(status.getState(), identifier); MessageContext msgCtx = new MessageContext(processStatusChangeEvent, MessageType.PROCESS, AiravataUtils.getId(MessageType.PROCESS.name()), processContext.getGatewayId()); msgCtx.setUpdatedTime(AiravataUtils.getCurrentTimestamp()); processContext.getStatusPublisher().publish(msgCtx); } catch (Exception e) { throw new GFacException("Error persisting process status" + e.getLocalizedMessage(), e); } }
experimentId, gatewayId); String messageId = AiravataUtils.getId("EXPERIMENT"); MessageContext messageContext = new MessageContext(event, MessageType.EXPERIMENT, messageId, gatewayId); messageContext.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
public static void saveAndPublishTaskStatus(TaskContext taskContext) throws GFacException { try { TaskState state = taskContext.getTaskState(); // first we save job jobModel to the registry for sa and then save the job status. ProcessContext processContext = taskContext.getParentProcessContext(); ExperimentCatalog experimentCatalog = processContext.getExperimentCatalog(); TaskStatus status = taskContext.getTaskStatus(); if (status.getTimeOfStateChange() == 0 || status.getTimeOfStateChange() > 0 ){ status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime()); }else { status.setTimeOfStateChange(status.getTimeOfStateChange()); } experimentCatalog.add(ExpCatChildDataType.TASK_STATUS, status, taskContext.getTaskId()); TaskIdentifier identifier = new TaskIdentifier(taskContext.getTaskId(), processContext.getProcessId(), processContext.getProcessModel().getExperimentId(), processContext.getGatewayId()); TaskStatusChangeEvent taskStatusChangeEvent = new TaskStatusChangeEvent(state, identifier); MessageContext msgCtx = new MessageContext(taskStatusChangeEvent, MessageType.TASK, AiravataUtils.getId (MessageType.TASK.name()), taskContext.getParentProcessContext().getGatewayId()); msgCtx.setUpdatedTime(AiravataUtils.getCurrentTimestamp()); processContext.getStatusPublisher().publish(msgCtx); } catch (Exception e) { throw new GFacException("Error persisting task status" + e.getLocalizedMessage(), e); } }
public static void saveJobStatus(ProcessContext processContext, JobModel jobModel) throws GFacException { try { // first we save job jobModel to the registry for sa and then save the job status. JobStatus jobStatus = jobModel.getJobStatus(); ExperimentCatalog experimentCatalog = processContext.getExperimentCatalog(); jobModel.setJobStatus(jobStatus); if (jobStatus.getTimeOfStateChange() == 0 || jobStatus.getTimeOfStateChange() > 0 ){ jobStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime()); }else { jobStatus.setTimeOfStateChange(jobStatus.getTimeOfStateChange()); } CompositeIdentifier ids = new CompositeIdentifier(jobModel.getTaskId(), jobModel.getJobId()); experimentCatalog.add(ExpCatChildDataType.JOB_STATUS, jobStatus, ids); JobIdentifier identifier = new JobIdentifier(jobModel.getJobId(), jobModel.getTaskId(), processContext.getProcessId(), processContext.getProcessModel().getExperimentId(), processContext.getGatewayId()); JobStatusChangeEvent jobStatusChangeEvent = new JobStatusChangeEvent(jobStatus.getJobState(), identifier); MessageContext msgCtx = new MessageContext(jobStatusChangeEvent, MessageType.JOB, AiravataUtils.getId (MessageType.JOB.name()), processContext.getGatewayId()); msgCtx.setUpdatedTime(AiravataUtils.getCurrentTimestamp()); processContext.getStatusPublisher().publish(msgCtx); } catch (Exception e) { throw new GFacException("Error persisting job status" + e.getLocalizedMessage(), e); } }
throw new Exception("Project does not exist in the system, Please create the project first..."); experimentId = AiravataUtils.getId(experiment.getExperimentName()); experiment.setExperimentId(experimentId); ExperimentResource experimentResource = new ExperimentResource();
public String addTask(TaskModel task, String processID) throws RegistryException { try { TaskResource taskResource = new TaskResource(); task.setTaskId(AiravataUtils.getId("TASK")); 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(); TaskStatus taskStatus = new TaskStatus(); taskStatus.setState(TaskState.CREATED); taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime()); addTaskStatus(taskStatus, task.getTaskId()); if(task.getTaskError() != null) { addTaskError(task.getTaskError(), task.getTaskId()); } } catch (Exception e) { logger.error(processID, "Error while adding task...", e); throw new RegistryException(e); } return task.getTaskId(); }
String processId = AiravataUtils.getId("PROCESS"); process.setProcessId(processId); processResource.setProcessId(processId);