Skip to content

Add ability to provide a preconfigured KubernetesClient #1507

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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;
}
Expand Down Expand Up @@ -104,6 +108,7 @@ protected void deleteOperator() {
public static class Builder extends AbstractBuilder<Builder> {
private final List<HasMetadata> operatorDeployment;
private Duration deploymentTimeout;
private KubernetesClient kubernetesClient;

protected Builder() {
super();
Expand Down Expand Up @@ -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,
Expand All @@ -144,7 +154,8 @@ public ClusterDeployedOperatorExtension build() {
infrastructureTimeout,
preserveNamespaceOnError,
waitForNamespaceDeletion,
oneNamespacePerClass);
oneNamespacePerClass,
kubernetesClient != null ? kubernetesClient : new KubernetesClientBuilder().build());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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());
Expand Down Expand Up @@ -194,6 +198,7 @@ public static class Builder extends AbstractBuilder<Builder> {
private final List<ReconcilerSpec> reconcilers;
private final List<PortForwardSpec> portForwards;
private final List<Class<? extends CustomResource>> additionalCustomResourceDefinitions;
private KubernetesClient kubernetesClient;

protected Builder() {
super();
Expand Down Expand Up @@ -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<? extends CustomResource> customResource) {
Expand All @@ -260,7 +269,8 @@ public LocallyRunOperatorExtension build() {
infrastructureTimeout,
preserveNamespaceOnError,
waitForNamespaceDeletion,
oneNamespacePerClass);
oneNamespacePerClass,
kubernetesClient != null ? kubernetesClient : new KubernetesClientBuilder().build());
}
}

Expand Down