Skip to content
Snippets Groups Projects
Commit d8c771f9 authored by Benedikt Wetzel's avatar Benedikt Wetzel Committed by Sören Henning
Browse files

make teardown faster by first sending delete command to all resources and then...

make teardown faster by first sending delete command to all resources and then wait until all pods are deleted
parent 27468d4f
No related branches found
No related tags found
1 merge request!278Make teardown faster
Pipeline #8600 passed
......@@ -27,8 +27,9 @@ class K8sManager(private val client: NamespacedKubernetesClient) {
* Removes different k8s resources using the client.
* @throws IllegalArgumentException if KubernetesResource not supported.
*/
fun remove(resource: HasMetadata) {
fun remove(resource: HasMetadata, blockUntilDeleted: Boolean = true) {
client.resource(resource).delete()
if(blockUntilDeleted) {
when (resource) {
is Deployment -> {
ResourceByLabelHandler(client = client)
......@@ -47,3 +48,4 @@ class K8sManager(private val client: NamespacedKubernetesClient) {
}
}
}
}
......@@ -2,6 +2,8 @@ package rocks.theodolite.kubernetes
import io.fabric8.kubernetes.api.model.HasMetadata
import io.fabric8.kubernetes.api.model.KubernetesResource
import io.fabric8.kubernetes.api.model.apps.Deployment
import io.fabric8.kubernetes.api.model.apps.StatefulSet
import io.fabric8.kubernetes.client.NamespacedKubernetesClient
import io.quarkus.runtime.annotations.RegisterForReflection
import mu.KotlinLogging
......@@ -72,14 +74,25 @@ class KubernetesBenchmarkDeployment(
* - Remove the [KubernetesResource]s.
*/
override fun teardown() {
loadGenResources.forEach { kubernetesManager.remove(it) }
val podCleaner = ResourceByLabelHandler(client)
loadGenResources.forEach { kubernetesManager.remove(it, false) }
loadGenAfterActions.forEach { it.exec(client = client) }
appResources.forEach { kubernetesManager.remove(it) }
appResources.forEach { kubernetesManager.remove(it,false) }
sutAfterActions.forEach { it.exec(client = client) }
if (this.topics.isNotEmpty()) {
kafkaController.removeTopics(this.topics.map { topic -> topic.name })
}
ResourceByLabelHandler(client).removePods(
listOf(loadGenResources, appResources)
.forEach {
if (it is Deployment) {
podCleaner.blockUntilPodsDeleted(it.spec.selector.matchLabels)
} else if (it is StatefulSet) {
podCleaner.blockUntilPodsDeleted(it.spec.selector.matchLabels)
}
}
podCleaner.removePods(
labelName = LAG_EXPORTER_POD_LABEL_NAME,
labelValue = LAG_EXPORTER_POD_LABEL_VALUE
)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment