Skip to content

Commit edf1dac

Browse files
authored
[ST] Change the way how we are deleting KafkaNodePools and Kafka in tests (#12191)
Signed-off-by: Lukas Kral <lukywill16@gmail.com>
1 parent ffc95f9 commit edf1dac

2 files changed

Lines changed: 20 additions & 11 deletions

File tree

systemtest/src/main/java/io/strimzi/systemtest/resources/types/KafkaType.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package io.strimzi.systemtest.resources.types;
66

77
import io.fabric8.kubernetes.api.model.DeletionPropagation;
8+
import io.fabric8.kubernetes.api.model.LabelSelectorBuilder;
89
import io.fabric8.kubernetes.client.dsl.MixedOperation;
910
import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation;
1011
import io.fabric8.kubernetes.client.dsl.Resource;
@@ -13,6 +14,7 @@
1314
import io.strimzi.api.kafka.Crds;
1415
import io.strimzi.api.kafka.model.kafka.Kafka;
1516
import io.strimzi.api.kafka.model.kafka.KafkaList;
17+
import io.strimzi.api.kafka.model.nodepool.KafkaNodePool;
1618
import io.strimzi.operator.common.model.Labels;
1719
import io.strimzi.systemtest.resources.CrdClients;
1820
import io.strimzi.systemtest.resources.ResourceConditions;
@@ -21,6 +23,8 @@
2123
import org.apache.logging.log4j.Logger;
2224
import org.junit.platform.commons.util.Preconditions;
2325

26+
import java.util.List;
27+
import java.util.Map;
2428
import java.util.function.Consumer;
2529
import java.util.function.Predicate;
2630

@@ -84,6 +88,22 @@ public void delete(Kafka kafka) {
8488
.allMatch(result -> true);
8589
}
8690

91+
// Delete KNPs attached to this Kafka cluster first, to prevent issues with hanging PVCs
92+
List<KafkaNodePool> nodePools = CrdClients.kafkaNodePoolClient().inNamespace(namespaceName)
93+
.withLabelSelector(
94+
new LabelSelectorBuilder()
95+
.withMatchLabels(Map.of(Labels.STRIMZI_CLUSTER_LABEL, kafka.getMetadata().getName()))
96+
.build()
97+
)
98+
.list()
99+
.getItems();
100+
101+
if (!nodePools.isEmpty()) {
102+
List<String> nodePoolNames = nodePools.stream().map(nodePool -> nodePool.getMetadata().getName()).toList();
103+
LOGGER.info("Deleting KafkaNodePools - {} - related to Kafka {}/{}", nodePoolNames, namespaceName, clusterName);
104+
KubeResourceManager.get().deleteResourceWithWait(nodePools.toArray(new KafkaNodePool[0]));
105+
}
106+
87107
// get current Kafka
88108
Kafka currentKafka = client.inNamespace(namespaceName)
89109
.withName(kafka.getMetadata().getName()).get();

systemtest/src/test/java/io/strimzi/systemtest/operators/RecoveryST.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,13 @@
1616
import io.skodjob.annotations.TestDoc;
1717
import io.skodjob.testframe.resources.KubeResourceManager;
1818
import io.strimzi.api.kafka.model.kafka.KafkaResources;
19-
import io.strimzi.api.kafka.model.nodepool.KafkaNodePool;
2019
import io.strimzi.systemtest.AbstractST;
2120
import io.strimzi.systemtest.Environment;
2221
import io.strimzi.systemtest.TestConstants;
2322
import io.strimzi.systemtest.annotations.IsolatedTest;
2423
import io.strimzi.systemtest.docs.TestDocsLabels;
2524
import io.strimzi.systemtest.kafkaclients.internalClients.KafkaClients;
2625
import io.strimzi.systemtest.labels.LabelSelectors;
27-
import io.strimzi.systemtest.resources.CrdClients;
2826
import io.strimzi.systemtest.resources.crd.KafkaComponents;
2927
import io.strimzi.systemtest.resources.operator.ClusterOperatorConfigurationBuilder;
3028
import io.strimzi.systemtest.resources.operator.SetupClusterOperator;
@@ -41,7 +39,6 @@
4139
import io.strimzi.systemtest.utils.kubeUtils.objects.ServiceUtils;
4240
import org.apache.logging.log4j.LogManager;
4341
import org.apache.logging.log4j.Logger;
44-
import org.junit.jupiter.api.AfterEach;
4542
import org.junit.jupiter.api.BeforeEach;
4643
import org.junit.jupiter.api.Tag;
4744

@@ -246,12 +243,4 @@ void setup() {
246243
KubeResourceManager.get().createResourceWithWait(KafkaTemplates.kafka(Environment.TEST_SUITE_NAMESPACE, sharedClusterName, KAFKA_REPLICAS).build());
247244
KubeResourceManager.get().createResourceWithWait(KafkaBridgeTemplates.kafkaBridge(Environment.TEST_SUITE_NAMESPACE, sharedClusterName, KafkaResources.plainBootstrapAddress(sharedClusterName), 1).build());
248245
}
249-
250-
@AfterEach
251-
void cleanup() {
252-
// In order to properly delete all resources, we need to delete KafkaNodePools first (as the correct deletion is KafkaNodePools -> Kafka)
253-
// This will ensure everything will be deleted properly
254-
List<KafkaNodePool> nodePools = CrdClients.kafkaNodePoolClient().inNamespace(Environment.TEST_SUITE_NAMESPACE).list().getItems();
255-
KubeResourceManager.get().deleteResourceAsyncWait(nodePools.toArray(new KafkaNodePool[0]));
256-
}
257246
}

0 commit comments

Comments
 (0)