private Map<String, NestedState> createComponentNestedStates(CompositeTemplate compositeTemplate) { return compositeTemplate.components.entrySet().stream() .collect(Collectors.toMap( e -> e.getKey(), e -> createComponentNestedState(e.getValue()))); }
private void processCompositeDescriptionWithKubernetes(CompositeDescription description, Operation op, boolean returnInline) { List<Operation> getDescOps = description.descriptionLinks.stream() .map(l -> Operation.createGet(this, l)).collect(Collectors.toList()); OperationJoin.create(getDescOps) .setCompletion((ops, errors) -> { if (errors != null) { List<Throwable> throwables = errors.values().stream() .filter(e -> e != null) .collect(Collectors.toList()); op.fail(throwables.get(0)); throwables.stream().skip(1) .forEach(e -> logWarning("%s", e.getMessage())); } else { StringBuilder builder = new StringBuilder(); ops.values().forEach(o -> { KubernetesDescription desc = o.getBody(KubernetesDescription.class); builder.append(desc.kubernetesEntity); builder.append("\n"); }); op.setBody(builder.toString().trim()); op.setContentType(MEDIA_TYPE_APPLICATION_YAML); String contentDisposition = (returnInline ? CONTENT_DISPOSITION_INLINE : CONTENT_DISPOSITION_ATTACHMENT) + CONTENT_DISPOSITION_FILENAME; op.addResponseHeader(CONTENT_DISPOSITION_HEADER, contentDisposition); op.complete(); } }).sendWith(this); }
private DeferredResult<CompositeDescription> persistCompositeDescription( CompositeTemplate template, Map<String, NestedState> componentNestedStates, String projectLink) { CompositeDescription description = fromCompositeTemplateToCompositeDescription( template); description.descriptionLinks = componentNestedStates.values().stream() .map(ns -> ns.object.documentSelfLink).collect(Collectors.toList()); Operation createDescriptionOp = Operation .createPost(this, CompositeDescriptionFactoryService.SELF_LINK) .setBody(description); if (projectLink != null && !projectLink.isEmpty()) { createDescriptionOp.addRequestHeader(OperationUtil.PROJECT_ADMIRAL_HEADER, projectLink); } return sendWithDeferredResult(createDescriptionOp, CompositeDescription.class); }
private void processCompositeTemplate(CompositeTemplate template, Operation op) { validateCompositeTemplate(template); Map<String, NestedState> componentNestedStates = createComponentNestedStates(template); .collect(Collectors.toList())); publishComponentsDR .thenCompose(ignore -> updateComponentLinks(componentNestedStates)) .thenCompose(ignore -> persistCompositeDescription(template, componentNestedStates, projectLink)) .whenComplete((description, e) -> { if (e != null) { logWarning("Failed to create CompositeDescription: %s", Utils.toString(e)); LocalizableValidationException ex = new LocalizableValidationException(e, "Failed to create CompositeDescription: " + Utils.toString(e),
if (containsKubernetesDescriptions(description)) { processCompositeDescriptionWithKubernetes(description, op, returnInline); } else { convertCompositeDescriptionToCompositeTemplate(this, description).thenAccept( template -> serializeAndComplete(template, returnDocker, returnInline, op)) .exceptionally(e -> { op.fail(e); sendRequest(getDocument);
template = op.getBody(CompositeTemplate.class); } catch (Exception e) { logWarning("Failed to deserialize CompositeTemplate serialized content! %s", Utils.toString(e)); throw new LocalizableValidationException( processKubernetesTemplate(content, op); } else { processCompositeTemplate(template, op);
sendRequest(Operation.createPost(this, KubernetesDescriptionContentService.SELF_LINK) .setBody(yamlContent) .setCompletion((o, ex) -> { sendRequest(createCompositeDescription);