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..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; @@ -50,9 +49,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..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 @@ -18,6 +18,8 @@ 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 { @@ -36,10 +38,12 @@ private ClusterDeployedOperatorExtension( Duration infrastructureTimeout, boolean preserveNamespaceOnError, boolean waitForNamespaceDeletion, - boolean oneNamespacePerClass) { + 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..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 @@ -16,6 +16,8 @@ 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; @@ -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()); } }