private String newId() { while(true) { String id = Uuids.longUid(); if(!this.entries.containsKey(id)) { return id; } } }
private Map<String, Object> createParameters(PipelineStageSchema stage, PipelineSchema pipelineSchema, PipelineInstance instance) { String image = pipelineSchema.getRegistry() + "/" + pipelineSchema.getFilter(); Map<String, Object> map = new HashMap<>(); map.put(JP_CLUSTER, stage.getClusters().get(0)); map.put(LoadContainersOfImageTasklet.JP_IMAGE, image); String tagSuffix = stage.getTagSuffix(); if (!StringUtils.hasText(tagSuffix)) { tagSuffix = "latest"; } map.put(JP_IMAGE_TARGET_VERSION, tagSuffix); map.put(JP_ROLLBACK_ENABLE, false); Map<String, Object> containers = new HashMap<>(); Map<String, Object> container = new HashMap<>(); containers.put(image, container); String labels = "labels."; container.put(labels + PIPELINE_NAME, pipelineSchema.getName()); container.put(labels + PIPELINE_STAGE_NAME, stage.getName()); container.put(labels + PIPELINE_ID, instance.getId()); map.put("container", containers); map.put(JP_ROLLBACK_ENABLE, false); //creating filter Map<String, String> requiredLabels = new HashMap<>(getRequiredLabels(pipelineSchema, stage)); requiredLabels.put(PIPELINE_ID, instance.getId()); map.put(FILTER, createLabelFilter(requiredLabels)); //we pass random id, instead job will be cached map.put("id", Uuids.liteRandom()); return map; }
private JobParameters createParametersString(String cluster, UiUpdateContainers req) { JobParameters.Builder b = JobParameters.builder(); b.type(UpdateContainersUtil.JOB_PREFIX + req.getStrategy()); Float percentage = req.getPercentage(); if(percentage != null) { b.parameter(LoadContainersOfImageTasklet.JP_PERCENTAGE, percentage); } b.parameter(BatchUtils.JP_CLUSTER, cluster); b.parameter(LoadContainersOfImageTasklet.JP_IMAGE, req.getService()); b.parameter(BatchUtils.JP_IMAGE_TARGET_VERSION, req.getVersion()); b.parameter(HealthCheckContainerTasklet.JP_HEALTH_CHECK_ENABLED, req.isHealthCheckEnabled()); b.parameter(BatchUtils.JP_ROLLBACK_ENABLE, req.isRollbackEnabled()); //we pass random id, instead job will be cached b.parameter("id", Uuids.liteRandom()); return b.build(); }
@Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { final HttpServletRequest request = (HttpServletRequest) req; final HttpServletResponse response = (HttpServletResponse) res; String id = Uuids.longUid(); NettyHandler handler = null; try { String uri = Utils.reconstructUri(request); log.debug("{}: start {} {}", id, request.getMethod(), uri); String upgrade = request.getHeader(org.springframework.http.HttpHeaders.UPGRADE); if (upgrade != null) { doUpgrade(id, request, response); return; } ChannelFuture cf = backend.connect().sync(); Channel channel = cf.channel(); DefaultFullHttpRequest backendReq = buildRequest(id, request, uri); handler = new NettyHandler(id, request, response); channel.pipeline().addLast(handler); channel.writeAndFlush(backendReq).sync(); channel.closeFuture().sync(); } catch (Exception e) { log.error("{}: error in service(): ", id, e); } finally { Closeables.close(handler); log.debug("{}: end", id); } }