From 037c1f8996fa2c65cc9fe478394efeceaac24fed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Fri, 3 May 2024 18:07:32 +0200 Subject: [PATCH] wip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- .../glue/customresource/operator/Parent.java | 16 +++++++++++++--- .../operator/GlueOperatorReconciler.java | 2 +- .../csviri/operator/glue/GlueOperatorTest.java | 18 +++++++++++++----- .../secretcopy/secret-copy.operator.yaml | 3 ++- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/csviri/operator/glue/customresource/operator/Parent.java b/src/main/java/io/csviri/operator/glue/customresource/operator/Parent.java index fde35ad..54fa936 100644 --- a/src/main/java/io/csviri/operator/glue/customresource/operator/Parent.java +++ b/src/main/java/io/csviri/operator/glue/customresource/operator/Parent.java @@ -6,8 +6,10 @@ public class Parent { private String apiVersion; private String kind; + private boolean clusterScoped = false; private String labelSelector; + public Parent() {} public Parent(String apiVersion, String kind) { @@ -41,6 +43,14 @@ public void setLabelSelector(String labelSelector) { this.labelSelector = labelSelector; } + public boolean isClusterScoped() { + return clusterScoped; + } + + public void setClusterScoped(boolean clusterScoped) { + this.clusterScoped = clusterScoped; + } + @Override public boolean equals(Object o) { if (this == o) @@ -48,12 +58,12 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) return false; Parent parent = (Parent) o; - return Objects.equals(apiVersion, parent.apiVersion) && Objects.equals(kind, parent.kind) - && Objects.equals(labelSelector, parent.labelSelector); + return clusterScoped == parent.clusterScoped && Objects.equals(apiVersion, parent.apiVersion) + && Objects.equals(kind, parent.kind) && Objects.equals(labelSelector, parent.labelSelector); } @Override public int hashCode() { - return Objects.hash(apiVersion, kind, labelSelector); + return Objects.hash(apiVersion, kind, clusterScoped, labelSelector); } } diff --git a/src/main/java/io/csviri/operator/glue/reconciler/operator/GlueOperatorReconciler.java b/src/main/java/io/csviri/operator/glue/reconciler/operator/GlueOperatorReconciler.java index 1475f64..2d8bef5 100644 --- a/src/main/java/io/csviri/operator/glue/reconciler/operator/GlueOperatorReconciler.java +++ b/src/main/java/io/csviri/operator/glue/reconciler/operator/GlueOperatorReconciler.java @@ -118,9 +118,9 @@ private Glue createGlue(GenericKubernetesResource targetParentResource, parentRelatedSpec.setKind(parent.getKind()); parentRelatedSpec.setResourceNames(List.of(targetParentResource.getMetadata().getName())); parentRelatedSpec.setNamespace(targetParentResource.getMetadata().getNamespace()); + parentRelatedSpec.setClusterScoped(glueOperator.getSpec().getParent().isClusterScoped()); glue.getSpec().getRelatedResources().add(parentRelatedSpec); - glue.addOwnerReference(targetParentResource); return glue; } diff --git a/src/test/java/io/csviri/operator/glue/GlueOperatorTest.java b/src/test/java/io/csviri/operator/glue/GlueOperatorTest.java index 19b41c6..9dcf207 100644 --- a/src/test/java/io/csviri/operator/glue/GlueOperatorTest.java +++ b/src/test/java/io/csviri/operator/glue/GlueOperatorTest.java @@ -5,7 +5,6 @@ import java.util.stream.IntStream; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import io.csviri.operator.glue.customresource.TestCustomResource; @@ -191,8 +190,6 @@ void parentWithLabelSelector() { }); } - - @Disabled @Test void secretCopySample() { var secret = TestUtils.load("/sample/secretcopy/secret-to-copy.yaml", Secret.class); @@ -205,12 +202,23 @@ void secretCopySample() { var namespaces = client.namespaces().list().getItems(); namespaces.forEach(ns -> { var copiedSecret = - client.secrets().inNamespace(ns.getMetadata().getName()).withName("copied-secret"); + client.secrets().inNamespace(ns.getMetadata().getName()).withName("copied-secret") + .get(); assertThat(copiedSecret).isNotNull(); + assertThat(copiedSecret.getData().get("shared-password")) + .isEqualTo(secret.getData().get("password")); }); }); - + delete(go); + await().untilAsserted(() -> { + var namespaces = client.namespaces().list().getItems(); + namespaces.forEach(ns -> { + var copiedSecret = + client.secrets().inNamespace(ns.getMetadata().getName()).withName("copied-secret"); + assertThat(copiedSecret).isNull(); + }); + }); } diff --git a/src/test/resources/sample/secretcopy/secret-copy.operator.yaml b/src/test/resources/sample/secretcopy/secret-copy.operator.yaml index 7512758..388abc6 100644 --- a/src/test/resources/sample/secretcopy/secret-copy.operator.yaml +++ b/src/test/resources/sample/secretcopy/secret-copy.operator.yaml @@ -8,7 +8,7 @@ spec: kind: Namespace glueMetadata: name: copied-secret-glue - namespace: {parent.metadata.name} + namespace: "{parent.metadata.name}" childResources: - name: secret resource: @@ -23,4 +23,5 @@ spec: - name: sharedsecret apiVersion: v1 kind: Secret + namespace: default resourceNames: [ "secret-to-copy" ]