public static Timestamp getTime(long time) { if (time == 0 || time < 0){ return getCurrentTimestamp(); } return new Timestamp(time); }
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 void contextInitialized(ServletContextEvent servletContextEvent) { try { AiravataUtils.setExecutionAsServer(); ServletContext servletContext = servletContextEvent.getServletContext(); String gatewayID = ServerSettings.getSystemUserGateway(); String user = ServerSettings.getSystemUser(); Gateway gateway = new Gateway(gatewayID); servletContext.setAttribute(RestServicesConstants.GATEWAY, gateway); servletContext.setAttribute(RestServicesConstants.AIRAVATA_USER, user); servletContext.setAttribute( RestServicesConstants.AIRAVATA_REGISTRY_POOL,new RegistryInstancesPool(100)); } catch (Exception e) { e.printStackTrace(); } }
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(); }
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; }
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 String addTaskStatus(TaskStatus taskStatus, String taskID) throws RegistryException { try { TaskResource taskResource = new TaskResource(); taskResource.setTaskId(taskID); TaskStatusResource status = taskResource.getTaskStatus(); TaskState newState = taskStatus.getState(); if (status == null) { status = (TaskStatusResource) taskResource.create(ResourceType.TASK_STATUS); status.setStatusId(getStatusID("TASK_STATE")); }else { String state = status.getState(); if (newState != null && !state.equals(newState.toString())){ status.setStatusId(getStatusID("TASK_STATE")); } } status.setTaskId(taskID); status.setTimeOfStateChange(AiravataUtils.getTime(taskStatus.getTimeOfStateChange())); if (newState != null){ status.setState(newState.toString()); } status.setReason(taskStatus.getReason()); status.save(); logger.debug(taskID, "Added task {} status to {}.", taskID, taskStatus.toString()); } catch (Exception e) { logger.error(taskID, "Error while adding task status...", e); throw new RegistryException(e); } return taskID; }
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(); experimentResource.setUserName(experiment.getUserName()); experimentResource.setExperimentName(experiment.getExperimentName()); experimentResource.setCreationTime(AiravataUtils.getTime(experiment.getCreationTime())); experimentResource.setDescription(experiment.getDescription()); experimentResource.setExecutionId(experiment.getExecutionId()); experimentStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime()); addExperimentStatus(experimentStatus, experimentId);
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 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); } }
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);
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 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 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 void startUp(ConfigurationContext configctx, AxisService service) { AiravataUtils.setExecutionAsServer(); AxisConfiguration config = null; List<Phase> phases = null; config = service.getAxisConfiguration(); phases = config.getInFlowPhases(); /* * Add dispatcher and security handler to inFlowPhases */ for (Iterator<Phase> iterator = phases.iterator(); iterator.hasNext();) { Phase phase = (Phase) iterator.next(); if ("Security".equals(phase.getPhaseName())) { phase.addHandler(new MyProxySecurityHandler()); phase.addHandler(new AmazonSecurityHandler()); } else if ("Dispatch".equals(phase.getPhaseName())) { phase.addHandler(new GFacURIBasedDispatcher(), 0); } } initializeRepository(configctx); }
public JobModel getJobModel() { if (jobModel == null) { jobModel = new JobModel(); jobModel.setProcessId(processId); jobModel.setWorkingDir(getWorkingDir()); jobModel.setCreationTime(AiravataUtils.getCurrentTimestamp().getTime()); } return jobModel; }
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 String addProcessStatus(ProcessStatus processStatus, String processID) throws RegistryException { try { ProcessResource processResource = new ProcessResource(); processResource.setProcessId(processID); ProcessStatusResource status = processResource.getProcessStatus(); ProcessState newState = processStatus.getState(); if (status == null) { status = (ProcessStatusResource) processResource.create(ResourceType.PROCESS_STATUS); status.setStatusId(getStatusID("PROCESS_STATE")); }else { String state = status.getState(); if (newState != null && !state.equals(newState.toString())){ status.setStatusId(getStatusID("PROCESS_STATE")); } } status.setProcessId(processID); status.setTimeOfStateChange(AiravataUtils.getTime(processStatus.getTimeOfStateChange())); if (newState != null){ status.setState(newState.toString()); } status.setReason(processStatus.getReason()); status.save(); logger.debug(processID, "Added process {} status to {}.", processID, processStatus.toString()); } catch (Exception e) { logger.error(processID, "Error while adding process status...", e); throw new RegistryException(e); } return processID; }