From ee57765cfdfbb2d8762954348ee80aafa6898f78 Mon Sep 17 00:00:00 2001 From: Jochen Mader Date: Sat, 1 Oct 2022 20:06:12 +0200 Subject: [PATCH 1/2] Add ability to provide a preconfigured KubernetesClient --- .../junit/AbstractOperatorExtension.java | 6 ++-- .../ClusterDeployedOperatorExtension.java | 31 +++++++++++++------ .../junit/LocallyRunOperatorExtension.java | 16 ++++++++-- 3 files changed, 37 insertions(+), 16 deletions(-) diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java index 0598cfc198..8fc1f3ba0d 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java @@ -50,9 +50,9 @@ protected AbstractOperatorExtension( Duration infrastructureTimeout, boolean oneNamespacePerClass, boolean preserveNamespaceOnError, - boolean waitForNamespaceDeletion) { - - this.kubernetesClient = new KubernetesClientBuilder().build(); + boolean waitForNamespaceDeletion, + KubernetesClient kubernetesClient) { + this.kubernetesClient = kubernetesClient; this.configurationService = configurationService; this.infrastructure = infrastructure; this.infrastructureTimeout = infrastructureTimeout; diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/ClusterDeployedOperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/ClusterDeployedOperatorExtension.java index 4b23fe0805..899c263417 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/ClusterDeployedOperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/ClusterDeployedOperatorExtension.java @@ -12,6 +12,8 @@ import java.util.concurrent.TimeUnit; import java.util.function.Consumer; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.KubernetesClientBuilder; import org.junit.jupiter.api.extension.ExtensionContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,17 +31,19 @@ public class ClusterDeployedOperatorExtension extends AbstractOperatorExtension private final Duration operatorDeploymentTimeout; private ClusterDeployedOperatorExtension( - ConfigurationService configurationService, - List operatorDeployment, - Duration operatorDeploymentTimeout, - List infrastructure, - Duration infrastructureTimeout, - boolean preserveNamespaceOnError, - boolean waitForNamespaceDeletion, - boolean oneNamespacePerClass) { + ConfigurationService configurationService, + List operatorDeployment, + Duration operatorDeploymentTimeout, + List infrastructure, + Duration infrastructureTimeout, + boolean preserveNamespaceOnError, + boolean waitForNamespaceDeletion, + boolean oneNamespacePerClass, + KubernetesClient kubernetesClient) { super(configurationService, infrastructure, infrastructureTimeout, oneNamespacePerClass, preserveNamespaceOnError, - waitForNamespaceDeletion); + waitForNamespaceDeletion, + kubernetesClient); this.operatorDeployment = operatorDeployment; this.operatorDeploymentTimeout = operatorDeploymentTimeout; } @@ -104,6 +108,7 @@ protected void deleteOperator() { public static class Builder extends AbstractBuilder { private final List operatorDeployment; private Duration deploymentTimeout; + private KubernetesClient kubernetesClient; protected Builder() { super(); @@ -135,6 +140,11 @@ public Builder withOperatorDeployment(HasMetadata... hms) { return this; } + public Builder withKubernetesClient(KubernetesClient kubernetesClient) { + this.kubernetesClient = kubernetesClient; + return this; + } + public ClusterDeployedOperatorExtension build() { return new ClusterDeployedOperatorExtension( configurationService, @@ -144,7 +154,8 @@ public ClusterDeployedOperatorExtension build() { infrastructureTimeout, preserveNamespaceOnError, waitForNamespaceDeletion, - oneNamespacePerClass); + oneNamespacePerClass, + kubernetesClient != null ? kubernetesClient : new KubernetesClientBuilder().build()); } } } diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java index f7627a5555..c0adef4594 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java @@ -10,6 +10,8 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.KubernetesClientBuilder; import org.junit.jupiter.api.extension.ExtensionContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,14 +50,16 @@ private LocallyRunOperatorExtension( Duration infrastructureTimeout, boolean preserveNamespaceOnError, boolean waitForNamespaceDeletion, - boolean oneNamespacePerClass) { + boolean oneNamespacePerClass, + KubernetesClient kubernetesClient) { super( configurationService, infrastructure, infrastructureTimeout, oneNamespacePerClass, preserveNamespaceOnError, - waitForNamespaceDeletion); + waitForNamespaceDeletion, + kubernetesClient); this.reconcilers = reconcilers; this.portForwards = portForwards; this.localPortForwards = new ArrayList<>(portForwards.size()); @@ -194,6 +198,7 @@ public static class Builder extends AbstractBuilder { private final List reconcilers; private final List portForwards; private final List> additionalCustomResourceDefinitions; + private KubernetesClient kubernetesClient; protected Builder() { super(); @@ -243,6 +248,10 @@ public Builder withPortForward(String namespace, String labelKey, String labelVa return this; } + public Builder withKubernetesClient(KubernetesClient kubernetesClient) { + this.kubernetesClient = kubernetesClient; + return this; + } public Builder withAdditionalCustomResourceDefinition( Class customResource) { @@ -260,7 +269,8 @@ public LocallyRunOperatorExtension build() { infrastructureTimeout, preserveNamespaceOnError, waitForNamespaceDeletion, - oneNamespacePerClass); + oneNamespacePerClass, + kubernetesClient != null ? kubernetesClient : new KubernetesClientBuilder().build()); } } From 8fde2133d34f2698869d17ebf210621bb7a93783 Mon Sep 17 00:00:00 2001 From: Jochen Mader Date: Mon, 3 Oct 2022 14:38:51 +0200 Subject: [PATCH 2/2] Code formatting --- .../junit/AbstractOperatorExtension.java | 1 - .../ClusterDeployedOperatorExtension.java | 22 +++++++++---------- .../junit/LocallyRunOperatorExtension.java | 4 ++-- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java index 8fc1f3ba0d..8ace4a3a0a 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java @@ -17,7 +17,6 @@ import io.fabric8.kubernetes.api.model.KubernetesResourceList; import io.fabric8.kubernetes.api.model.NamespaceBuilder; import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.KubernetesClientBuilder; import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation; import io.fabric8.kubernetes.client.dsl.Resource; import io.fabric8.kubernetes.client.utils.KubernetesResourceUtil; diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/ClusterDeployedOperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/ClusterDeployedOperatorExtension.java index 899c263417..0b8aa401a4 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/ClusterDeployedOperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/ClusterDeployedOperatorExtension.java @@ -12,14 +12,14 @@ import java.util.concurrent.TimeUnit; import java.util.function.Consumer; -import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.KubernetesClientBuilder; import org.junit.jupiter.api.extension.ExtensionContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.rbac.ClusterRoleBinding; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.KubernetesClientBuilder; import io.javaoperatorsdk.operator.api.config.ConfigurationService; public class ClusterDeployedOperatorExtension extends AbstractOperatorExtension { @@ -31,15 +31,15 @@ public class ClusterDeployedOperatorExtension extends AbstractOperatorExtension private final Duration operatorDeploymentTimeout; private ClusterDeployedOperatorExtension( - ConfigurationService configurationService, - List operatorDeployment, - Duration operatorDeploymentTimeout, - List infrastructure, - Duration infrastructureTimeout, - boolean preserveNamespaceOnError, - boolean waitForNamespaceDeletion, - boolean oneNamespacePerClass, - KubernetesClient kubernetesClient) { + ConfigurationService configurationService, + List operatorDeployment, + Duration operatorDeploymentTimeout, + List infrastructure, + Duration infrastructureTimeout, + boolean preserveNamespaceOnError, + boolean waitForNamespaceDeletion, + boolean oneNamespacePerClass, + KubernetesClient kubernetesClient) { super(configurationService, infrastructure, infrastructureTimeout, oneNamespacePerClass, preserveNamespaceOnError, waitForNamespaceDeletion, diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java index c0adef4594..6c4a4bc5ab 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java @@ -10,14 +10,14 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.KubernetesClientBuilder; import org.junit.jupiter.api.extension.ExtensionContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.client.CustomResource; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.KubernetesClientBuilder; import io.fabric8.kubernetes.client.LocalPortForward; import io.javaoperatorsdk.operator.Operator; import io.javaoperatorsdk.operator.ReconcilerUtils;