private void checkHelixConnection(String opr, String flowName, String flowGroup) throws FlowConfigLoggedException { if (this.helixManager.isPresent() && !this.helixManager.get().isConnected()) { // Specs in store will be notified when Scheduler is added as listener to FlowCatalog, so ignore // .. Specs if in cluster mode and Helix is not yet initialized log.warn("System not yet initialized. Skipping operation " + opr); throw new FlowConfigLoggedException(HttpStatus.S_500_INTERNAL_SERVER_ERROR, "System not yet initialized. Skipping " + opr + " flowConfig [flowName=" + flowName + " flowGroup=" + flowGroup + "]"); } }
/** * Delete flowConfig locally and trigger all listeners iff @param triggerListener is set to true */ public UpdateResponse deleteFlowConfig(FlowId flowId, Properties header, boolean triggerListener) throws FlowConfigLoggedException { log.info("[GAAS-REST] Delete called with flowGroup {} flowName {}", flowId.getFlowGroup(), flowId.getFlowName()); URI flowUri = null; try { flowUri = createFlowSpecUri(flowId); this.flowCatalog.remove(flowUri, header, triggerListener); return new UpdateResponse(HttpStatus.S_200_OK); } catch (URISyntaxException e) { throw new FlowConfigLoggedException(HttpStatus.S_400_BAD_REQUEST, "bad URI " + flowUri, e); } }
/** * Create a flow configuration that the service will forward to execution instances for execution * @param flowConfig flow configuration * @return {@link CreateResponse} */ @Override public CreateResponse create(FlowConfig flowConfig) { List<ServiceRequester> requestorList = this.requesterService.findRequesters(this); try { String serialized = this.requesterService.serialize(requestorList); flowConfig.getProperties().put(RequesterService.REQUESTER_LIST, serialized); LOG.info("Rest requester list is " + serialized); } catch (IOException e) { throw new FlowConfigLoggedException(HttpStatus.S_401_UNAUTHORIZED, "cannot get who is the requester", e); } return this.flowConfigsResourceHandler.createFlowConfig(flowConfig); }
/** * Update flowConfig locally and trigger all listeners iff @param triggerListener is set to true */ public UpdateResponse updateFlowConfig(FlowId flowId, FlowConfig flowConfig, boolean triggerListener) { log.info("[GAAS-REST] Update called with flowGroup {} flowName {}", flowId.getFlowGroup(), flowId.getFlowName()); if (!flowId.getFlowGroup().equals(flowConfig.getId().getFlowGroup()) || !flowId.getFlowName().equals(flowConfig.getId().getFlowName())) { throw new FlowConfigLoggedException(HttpStatus.S_400_BAD_REQUEST, "flowName and flowGroup cannot be changed in update", null); } this.flowCatalog.put(createFlowSpecForConfig(flowConfig), triggerListener); return new UpdateResponse(HttpStatus.S_200_OK); }
.setProperties(flowPropsAsStringMap); } catch (URISyntaxException e) { throw new FlowConfigLoggedException(HttpStatus.S_400_BAD_REQUEST, "bad URI " + flowId.getFlowName(), e); } catch (SpecNotFoundException e) { throw new FlowConfigLoggedException(HttpStatus.S_404_NOT_FOUND, "Flow requested does not exist: " + flowId.getFlowName(), null);
throw new FlowConfigLoggedException(HttpStatus.S_400_BAD_REQUEST, "flowName and flowGroup cannot be changed in update", null); throw new FlowConfigLoggedException(HttpStatus.S_500_INTERNAL_SERVER_ERROR, "Cannot update flowConfig [flowName=" + flowName + " flowGroup=" + flowGroup + "]", e);
throw new FlowConfigLoggedException(HttpStatus.S_500_INTERNAL_SERVER_ERROR, "Cannot delete flowConfig [flowName=" + flowName + " flowGroup=" + flowGroup + "]", e);
return FlowSpec.builder().withConfig(configWithFallback).withTemplate(templateURI).build(); } catch (URISyntaxException e) { throw new FlowConfigLoggedException(HttpStatus.S_400_BAD_REQUEST, "bad URI " + flowConfig.getTemplateUris(), e);
throw new FlowConfigLoggedException(HttpStatus.S_500_INTERNAL_SERVER_ERROR, "Cannot create flowConfig [flowName=" + flowName + " flowGroup=" + flowGroup + "]", e);
private void checkHelixConnection(String opr, String flowName, String flowGroup) throws FlowConfigLoggedException { if (this.helixManager.isPresent() && !this.helixManager.get().isConnected()) { // Specs in store will be notified when Scheduler is added as listener to FlowCatalog, so ignore // .. Specs if in cluster mode and Helix is not yet initialized log.warn("System not yet initialized. Skipping operation " + opr); throw new FlowConfigLoggedException(HttpStatus.S_500_INTERNAL_SERVER_ERROR, "System not yet initialized. Skipping " + opr + " flowConfig [flowName=" + flowName + " flowGroup=" + flowGroup + "]"); } }
throw new FlowConfigLoggedException(HttpStatus.S_400_BAD_REQUEST, "flowName and flowGroup cannot be changed in update", null); throw new FlowConfigLoggedException(HttpStatus.S_500_INTERNAL_SERVER_ERROR, "Cannot update flowConfig [flowName=" + flowName + " flowGroup=" + flowGroup + "]", e);
throw new FlowConfigLoggedException(HttpStatus.S_500_INTERNAL_SERVER_ERROR, "Cannot delete flowConfig [flowName=" + flowName + " flowGroup=" + flowGroup + "]", e);
throw new FlowConfigLoggedException(HttpStatus.S_500_INTERNAL_SERVER_ERROR, "Cannot create flowConfig [flowName=" + flowName + " flowGroup=" + flowGroup + "]", e);