From 6e1b6c02c23fc5f3415f4577eb7d66471ab0ba9e Mon Sep 17 00:00:00 2001 From: Ryanne Dolan Date: Mon, 28 Aug 2023 13:06:57 -0500 Subject: [PATCH] Allow multiple additive templates (#49) * Allow multiple additive templates * Drop fat application jars * Bug fix: actually skip when not a KafkaTopic Acl --- Dockerfile | 8 ++- bin/hoptimator | 2 +- deploy/hoptimator-operator-deployment.yaml | 2 +- deploy/hoptimator-pod.yaml | 2 +- .../linkedin/hoptimator/catalog/Resource.java | 52 ++++++++++++------- hoptimator-cli-integration/build.gradle | 37 +++++++++++++ hoptimator-cli/build.gradle | 17 ------ hoptimator-cli/run.sh | 10 ---- .../linkedin/hoptimator/HoptimatorCliApp.java | 2 +- .../kafka/KafkaTopicAclReconciler.java | 1 + hoptimator-operator-integration/build.gradle | 36 +++++++++++++ hoptimator-operator/build.gradle | 30 ----------- hoptimator-operator/run.sh | 9 ---- .../subscription/SubscriptionReconciler.java | 9 ++-- .../linkedin/hoptimator/planner/Pipeline.java | 13 ++--- settings.gradle | 2 + 16 files changed, 128 insertions(+), 104 deletions(-) create mode 100644 hoptimator-cli-integration/build.gradle delete mode 100755 hoptimator-cli/run.sh create mode 100644 hoptimator-operator-integration/build.gradle delete mode 100755 hoptimator-operator/run.sh diff --git a/Dockerfile b/Dockerfile index 3fe0c96..41331ef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,8 @@ FROM eclipse-temurin:18 WORKDIR /home/ -ADD ./hoptimator-cli/run.sh ./hoptimator -ADD ./hoptimator-operator/run.sh ./hoptimator-operator -ADD ./hoptimator-cli/build/libs/hoptimator-cli-all.jar ./hoptimator-cli-all.jar -ADD ./hoptimator-operator/build/libs/hoptimator-operator-all.jar ./hoptimator-operator-all.jar +ADD ./hoptimator-cli-integration/build/distributions/hoptimator-cli-integration.tar ./ +ADD ./hoptimator-operator-integration/build/distributions/hoptimator-operator-integration.tar ./ ADD ./etc/* ./ ENTRYPOINT ["/bin/sh", "-c"] -CMD ["./hoptimator -n '' -p '' -u jdbc:calcite:model=model.yaml"] +CMD ["./hoptimator-cli-integration/bin/hoptimator-cli-integration -n '' -p '' -u jdbc:calcite:model=model.yaml"] diff --git a/bin/hoptimator b/bin/hoptimator index 46d4602..7fecf4b 100755 --- a/bin/hoptimator +++ b/bin/hoptimator @@ -1,3 +1,3 @@ #!/bin/sh -kubectl exec -it hoptimator -c hoptimator -- ./hoptimator -n "" -p "" -u "jdbc:calcite:model=/etc/config/model.yaml" "$@" +kubectl exec -it hoptimator -c hoptimator -- ./hoptimator-cli-integration/bin/hoptimator-cli-integration -n "" -p "" -u "jdbc:calcite:model=/etc/config/model.yaml" "$@" diff --git a/deploy/hoptimator-operator-deployment.yaml b/deploy/hoptimator-operator-deployment.yaml index 679bf58..8487f4f 100644 --- a/deploy/hoptimator-operator-deployment.yaml +++ b/deploy/hoptimator-operator-deployment.yaml @@ -19,7 +19,7 @@ spec: - name: hoptimator-operator image: docker.io/library/hoptimator imagePullPolicy: Never - command: ["./hoptimator-operator", "/etc/config/model.yaml"] + command: ["./hoptimator-operator-integration/bin/hoptimator-operator-integration", "/etc/config/model.yaml"] volumeMounts: - name: config-volume mountPath: /etc/config diff --git a/deploy/hoptimator-pod.yaml b/deploy/hoptimator-pod.yaml index aeb3685..fc6d8fb 100644 --- a/deploy/hoptimator-pod.yaml +++ b/deploy/hoptimator-pod.yaml @@ -13,7 +13,7 @@ spec: mountPath: /etc/config readinessProbe: exec: - command: ["./hoptimator", "--run=./readiness-probe.sql"] + command: ["./hoptimator-cli-integration/bin/hoptimator-cli-integration", "--run=./readiness-probe.sql"] timeoutSeconds: 30 volumes: - name: config-volume diff --git a/hoptimator-catalog/src/main/java/com/linkedin/hoptimator/catalog/Resource.java b/hoptimator-catalog/src/main/java/com/linkedin/hoptimator/catalog/Resource.java index b09a3cf..fb5c3af 100644 --- a/hoptimator-catalog/src/main/java/com/linkedin/hoptimator/catalog/Resource.java +++ b/hoptimator-catalog/src/main/java/com/linkedin/hoptimator/catalog/Resource.java @@ -1,21 +1,24 @@ package com.linkedin.hoptimator.catalog; +import java.io.InputStream; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; +import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; +import java.util.Scanner; import java.util.SortedMap; import java.util.TreeMap; import java.util.UUID; +import java.util.function.Supplier; import java.util.regex.Pattern; import java.util.regex.Matcher; -import java.util.Scanner; -import java.util.function.Supplier; -import java.io.InputStream; import java.util.stream.Collectors; +import java.net.URL; /** * Represents something required by a Table. @@ -96,9 +99,13 @@ public Set keys() { } /** Render this Resource using the given TemplateFactory */ - public String render(TemplateFactory templateFactory) { + public Collection render(TemplateFactory templateFactory) { try { - return templateFactory.get(this).render(this); + List res = new ArrayList<>(); + for (Template template : templateFactory.find(this)) { + res.add(template.render(this)); + } + return res; } catch (Exception e) { throw new RuntimeException("Error rendering " + template, e); } @@ -306,10 +313,15 @@ public String render(Resource resource) { /** Locates a Template for a given Resource */ public interface TemplateFactory { - Template get(Resource resource); + Collection