public static Timestamp getTime(long time) { if (time == 0 || time < 0){ return getCurrentTimestamp(); } return new Timestamp(time); }
em.getTransaction().begin(); if (existingGatewayProfile != null) { existingGatewayProfile.setUpdateTime(AiravataUtils.getCurrentTimestamp()); em.merge(existingGatewayProfile); } else { GatewayProfile gatewayProfile = new GatewayProfile(); gatewayProfile.setGatewayID(gatewayID); gatewayProfile.setCreationTime(AiravataUtils.getCurrentTimestamp()); em.persist(gatewayProfile);
public JobModel getJobModel() { if (jobModel == null) { jobModel = new JobModel(); jobModel.setProcessId(processId); jobModel.setWorkingDir(getWorkingDir()); jobModel.setCreationTime(AiravataUtils.getCurrentTimestamp().getTime()); } return jobModel; }
if (existingLocalSubmission == null) { localSubmission = new LocalSubmission(); localSubmission.setCreationTime(AiravataUtils.getCurrentTimestamp()); } else { localSubmission = existingLocalSubmission; localSubmission.setUpdateTime(AiravataUtils.getCurrentTimestamp());
if (existingGridftpEndpoint == null) { gridftpEndpoint = new GridftpEndpoint(); gridftpEndpoint.setCreationTime(AiravataUtils.getCurrentTimestamp()); } else { gridftpEndpoint = existingGridftpEndpoint; gridftpEndpoint.setUpdateTime(AiravataUtils.getCurrentTimestamp());
existingModule.setModuleDesc(moduleDesc); existingModule.setGatewayId(gatewayId); existingModule.setUpdateTime(AiravataUtils.getCurrentTimestamp()); em.merge(existingModule); }else { applicationModule.setModuleDesc(moduleDesc); applicationModule.setGatewayId(gatewayId); applicationModule.setCreationTime(AiravataUtils.getCurrentTimestamp()); em.persist(applicationModule);
if (existingScpDataMovement == null) { scpDataMovement = new ScpDataMovement(); scpDataMovement.setCreationTime(AiravataUtils.getCurrentTimestamp()); } else { scpDataMovement = existingScpDataMovement; scpDataMovement.setUpdateTime(AiravataUtils.getCurrentTimestamp());
private boolean validateStatesAndCancel(String experimentId, String gatewayId) throws Exception { ExperimentStatus experimentStatus = OrchestratorUtils.getExperimentStatus(experimentId); switch (experimentStatus.getState()) { case COMPLETED: case CANCELED: case FAILED: case CANCELING: log.warn("Can't terminate already {} experiment", experimentStatus.getState().name()); return false; case CREATED: log.warn("Experiment termination is only allowed for launched experiments."); return false; default: String expCancelNodePath = ZKPaths.makePath(ZKPaths.makePath(ZkConstants.ZOOKEEPER_EXPERIMENT_NODE, experimentId), ZkConstants.ZOOKEEPER_CANCEL_LISTENER_NODE); Stat stat = curatorClient.checkExists().forPath(expCancelNodePath); if (stat != null) { curatorClient.setData().withVersion(-1).forPath(expCancelNodePath, ZkConstants.ZOOKEEPER_CANCEL_REQEUST .getBytes()); ExperimentStatus status = new ExperimentStatus(ExperimentState.CANCELING); status.setReason("Experiment cancel request processed"); status.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime()); OrchestratorUtils.updageAndPublishExperimentStatus(experimentId, status, publisher, gatewayId); log.info("expId : " + experimentId + " :- Experiment status updated to " + status.getState()); return true; } return false; } }
public static void handleProcessInterrupt(ProcessContext processContext) throws GFacException { if (processContext.isCancel()) { ProcessStatus pStatus = new ProcessStatus(ProcessState.CANCELLING); pStatus.setReason("Process Cancel triggered"); pStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime()); processContext.setProcessStatus(pStatus); saveAndPublishProcessStatus(processContext); // do cancel operation here pStatus.setState(ProcessState.CANCELED); processContext.setProcessStatus(pStatus); pStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime()); saveAndPublishProcessStatus(processContext); }else if (processContext.isHandOver()) { } else { log.error("expId: {}, processId: {} :- Unknown process interrupt", processContext.getExperimentId(), processContext.getProcessId()); } }
public static ProcessStatus getProcessStatus (ProcessStatusResource status){ if (status != null){ ProcessStatus processStatus = new ProcessStatus(); processStatus.setState(ProcessState.valueOf(status.getState())); Timestamp timeOfStateChange = status.getTimeOfStateChange(); if (timeOfStateChange == null){ timeOfStateChange = AiravataUtils.getCurrentTimestamp(); } processStatus.setTimeOfStateChange(timeOfStateChange.getTime()); processStatus.setReason(status.getReason()); return processStatus; } return null; }
public static JobStatus getJobStatus (JobStatusResource status){ if (status != null){ JobStatus jobStatus = new JobStatus(); jobStatus.setJobState(JobState.valueOf(status.getState())); Timestamp timeOfStateChange = status.getTimeOfStateChange(); if (timeOfStateChange == null){ timeOfStateChange = AiravataUtils.getCurrentTimestamp(); } jobStatus.setTimeOfStateChange(timeOfStateChange.getTime()); jobStatus.setReason(status.getReason()); return jobStatus; } return null; }
public static ExperimentStatus getExperimentStatus(ExperimentStatusResource status){ if (status != null){ ExperimentStatus experimentStatus = new ExperimentStatus(); experimentStatus.setState(ExperimentState.valueOf(status.getState())); Timestamp timeOfStateChange = status.getTimeOfStateChange(); if (timeOfStateChange == null){ timeOfStateChange = AiravataUtils.getCurrentTimestamp(); } experimentStatus.setTimeOfStateChange(timeOfStateChange.getTime()); experimentStatus.setReason(status.getReason()); return experimentStatus; } return null; }
public static TaskStatus getTaskStatus (TaskStatusResource status){ if (status != null){ TaskStatus taskStatus = new TaskStatus(); taskStatus.setState(TaskState.valueOf(status.getState())); Timestamp timeOfStateChange = status.getTimeOfStateChange(); if (timeOfStateChange == null){ timeOfStateChange = AiravataUtils.getCurrentTimestamp(); } taskStatus.setTimeOfStateChange(timeOfStateChange.getTime()); taskStatus.setReason(status.getReason()); return taskStatus; } return null; }
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); } }
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; }
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); } }
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 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); } }
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(); }