Skip to content

Commit 6f5500d

Browse files
committed
feat: allow to override test infrastructure kube client separately
Signed-off-by: xstefank <[email protected]>
1 parent 60216a4 commit 6f5500d

File tree

4 files changed

+38
-6
lines changed

4 files changed

+38
-6
lines changed

operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/AbstractOperatorExtension.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public abstract class AbstractOperatorExtension
3838
public static final int DEFAULT_NAMESPACE_DELETE_TIMEOUT = 90;
3939

4040
private final KubernetesClient kubernetesClient;
41+
private final KubernetesClient infrastructureKubernetesClient;
4142
protected final List<HasMetadata> infrastructure;
4243
protected Duration infrastructureTimeout;
4344
protected final boolean oneNamespacePerClass;
@@ -56,10 +57,15 @@ protected AbstractOperatorExtension(
5657
boolean preserveNamespaceOnError,
5758
boolean waitForNamespaceDeletion,
5859
KubernetesClient kubernetesClient,
60+
KubernetesClient infrastructureKubernetesClient,
5961
Function<ExtensionContext, String> namespaceNameSupplier,
6062
Function<ExtensionContext, String> perClassNamespaceNameSupplier) {
6163
this.kubernetesClient =
6264
kubernetesClient != null ? kubernetesClient : new KubernetesClientBuilder().build();
65+
this.infrastructureKubernetesClient =
66+
infrastructureKubernetesClient != null
67+
? infrastructureKubernetesClient
68+
: new KubernetesClientBuilder().build();
6369
this.infrastructure = infrastructure;
6470
this.infrastructureTimeout = infrastructureTimeout;
6571
this.oneNamespacePerClass = oneNamespacePerClass;
@@ -94,6 +100,11 @@ public KubernetesClient getKubernetesClient() {
94100
return kubernetesClient;
95101
}
96102

103+
@Override
104+
public KubernetesClient getInfrastructureKubernetesClient() {
105+
return infrastructureKubernetesClient;
106+
}
107+
97108
public String getNamespace() {
98109
return namespace;
99110
}
@@ -141,16 +152,16 @@ protected void beforeEachImpl(ExtensionContext context) {
141152
protected void before(ExtensionContext context) {
142153
LOGGER.info("Initializing integration test in namespace {}", namespace);
143154

144-
kubernetesClient
155+
infrastructureKubernetesClient
145156
.namespaces()
146157
.resource(
147158
new NamespaceBuilder()
148159
.withMetadata(new ObjectMetaBuilder().withName(namespace).build())
149160
.build())
150161
.serverSideApply();
151162

152-
kubernetesClient.resourceList(infrastructure).serverSideApply();
153-
kubernetesClient
163+
infrastructureKubernetesClient.resourceList(infrastructure).serverSideApply();
164+
infrastructureKubernetesClient
154165
.resourceList(infrastructure)
155166
.waitUntilReady(infrastructureTimeout.toMillis(), TimeUnit.MILLISECONDS);
156167
}
@@ -172,16 +183,19 @@ protected void after(ExtensionContext context) {
172183
if (preserveNamespaceOnError && context.getExecutionException().isPresent()) {
173184
LOGGER.info("Preserving namespace {}", namespace);
174185
} else {
175-
kubernetesClient.resourceList(infrastructure).delete();
186+
infrastructureKubernetesClient.resourceList(infrastructure).delete();
176187
deleteOperator();
177188
LOGGER.info("Deleting namespace {} and stopping operator", namespace);
178-
kubernetesClient.namespaces().withName(namespace).delete();
189+
infrastructureKubernetesClient.namespaces().withName(namespace).delete();
179190
if (waitForNamespaceDeletion) {
180191
LOGGER.info("Waiting for namespace {} to be deleted", namespace);
181192
Awaitility.await("namespace deleted")
182193
.pollInterval(50, TimeUnit.MILLISECONDS)
183194
.atMost(namespaceDeleteTimeout, TimeUnit.SECONDS)
184-
.until(() -> kubernetesClient.namespaces().withName(namespace).get() == null);
195+
.until(
196+
() ->
197+
infrastructureKubernetesClient.namespaces().withName(namespace).get()
198+
== null);
185199
}
186200
}
187201
}

operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/ClusterDeployedOperatorExtension.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ private ClusterDeployedOperatorExtension(
3939
boolean waitForNamespaceDeletion,
4040
boolean oneNamespacePerClass,
4141
KubernetesClient kubernetesClient,
42+
KubernetesClient infrastructureKubernetesClient,
4243
Function<ExtensionContext, String> namespaceNameSupplier,
4344
Function<ExtensionContext, String> perClassNamespaceNameSupplier) {
4445
super(
@@ -48,6 +49,7 @@ private ClusterDeployedOperatorExtension(
4849
preserveNamespaceOnError,
4950
waitForNamespaceDeletion,
5051
kubernetesClient,
52+
infrastructureKubernetesClient,
5153
namespaceNameSupplier,
5254
perClassNamespaceNameSupplier);
5355
this.operatorDeployment = operatorDeployment;
@@ -114,6 +116,7 @@ public static class Builder extends AbstractBuilder<Builder> {
114116
private final List<HasMetadata> operatorDeployment;
115117
private Duration deploymentTimeout;
116118
private KubernetesClient kubernetesClient;
119+
private KubernetesClient infrastructureKubernetesClient;
117120

118121
protected Builder() {
119122
super();
@@ -160,6 +163,9 @@ public ClusterDeployedOperatorExtension build() {
160163
waitForNamespaceDeletion,
161164
oneNamespacePerClass,
162165
kubernetesClient != null ? kubernetesClient : new KubernetesClientBuilder().build(),
166+
infrastructureKubernetesClient != null
167+
? infrastructureKubernetesClient
168+
: new KubernetesClientBuilder().build(),
163169
namespaceNameSupplier,
164170
perClassNamespaceNameSupplier);
165171
}

operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/HasKubernetesClient.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@
44

55
public interface HasKubernetesClient {
66
KubernetesClient getKubernetesClient();
7+
8+
KubernetesClient getInfrastructureKubernetesClient();
79
}

operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ private LocallyRunOperatorExtension(
6666
boolean waitForNamespaceDeletion,
6767
boolean oneNamespacePerClass,
6868
KubernetesClient kubernetesClient,
69+
KubernetesClient infrastructureKubernetesClient,
6970
Consumer<ConfigurationServiceOverrider> configurationServiceOverrider,
7071
Function<ExtensionContext, String> namespaceNameSupplier,
7172
Function<ExtensionContext, String> perClassNamespaceNameSupplier,
@@ -78,6 +79,7 @@ private LocallyRunOperatorExtension(
7879
preserveNamespaceOnError,
7980
waitForNamespaceDeletion,
8081
kubernetesClient,
82+
infrastructureKubernetesClient,
8183
namespaceNameSupplier,
8284
perClassNamespaceNameSupplier);
8385
this.reconcilers = reconcilers;
@@ -365,6 +367,7 @@ public static class Builder extends AbstractBuilder<Builder> {
365367
private final List<String> additionalCRDs = new ArrayList<>();
366368
private Consumer<LocallyRunOperatorExtension> beforeStartHook;
367369
private KubernetesClient kubernetesClient;
370+
private KubernetesClient infrastructureKubernetesClient;
368371

369372
protected Builder() {
370373
super();
@@ -419,6 +422,12 @@ public Builder withKubernetesClient(KubernetesClient kubernetesClient) {
419422
return this;
420423
}
421424

425+
public Builder withInfrastructureKubernetesClient(
426+
KubernetesClient infrastructureKubernetesClient) {
427+
this.infrastructureKubernetesClient = infrastructureKubernetesClient;
428+
return this;
429+
}
430+
422431
public Builder withAdditionalCustomResourceDefinition(
423432
Class<? extends CustomResource> customResource) {
424433
additionalCustomResourceDefinitions.add(customResource);
@@ -452,6 +461,7 @@ public LocallyRunOperatorExtension build() {
452461
waitForNamespaceDeletion,
453462
oneNamespacePerClass,
454463
kubernetesClient,
464+
infrastructureKubernetesClient,
455465
configurationServiceOverrider,
456466
namespaceNameSupplier,
457467
perClassNamespaceNameSupplier,

0 commit comments

Comments
 (0)