From a7aa0363d4f7d5ddb6679e4bb0fe4b1f3c89d0c4 Mon Sep 17 00:00:00 2001
From: lorenz <stu203404@mail.uni-kiel.de>
Date: Thu, 25 Feb 2021 23:44:50 +0100
Subject: [PATCH] Fix RequestPatcher

---
 .../patcher/ResourceLimitPatcher.kt           | 13 ++++-----
 .../patcher/ResourceRequestPatcher.kt         | 29 ++++++++++++++-----
 2 files changed, 26 insertions(+), 16 deletions(-)

diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/patcher/ResourceLimitPatcher.kt b/theodolite-quarkus/src/main/kotlin/theodolite/patcher/ResourceLimitPatcher.kt
index b31733e64..500137182 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/patcher/ResourceLimitPatcher.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/patcher/ResourceLimitPatcher.kt
@@ -16,22 +16,19 @@ class ResourceLimitPatcher(
         if (k8sResource is Deployment) {
             k8sResource.spec.template.spec.containers.filter { it.name == container }.forEach {
                 try {
-                    println("before: " + it.resources.limits.toString())
-                    println("$variableName to : $value")
-                    if (it.resources.limits.isNullOrEmpty()) {
+                    if (it.resources.limits.isEmpty()) {
                         it.resources.limits = mapOf(variableName to Quantity(value as kotlin.String))
                     } else {
-                        val values = Quantity(value as kotlin.String)
-                        it.resources.limits[variableName] = values
+                        val values = mutableMapOf<kotlin.String, Quantity>()
+                        it.resources.limits.forEach { entry -> values.put(entry.key, entry.value) }
+                        values[variableName] = Quantity(value as kotlin.String)
+                        it.resources.limits = values
                     }
                 } catch (e: IllegalStateException) {
                     val resource = ResourceRequirements()
                     resource.limits = mapOf(variableName to Quantity(value as kotlin.String))
                     it.resources = resource
                 }
-
-                println("after " + it.resources.limits.toString())
-
             }
         }
     }
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/patcher/ResourceRequestPatcher.kt b/theodolite-quarkus/src/main/kotlin/theodolite/patcher/ResourceRequestPatcher.kt
index 249a5011c..ffb28db45 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/patcher/ResourceRequestPatcher.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/patcher/ResourceRequestPatcher.kt
@@ -2,20 +2,33 @@ package theodolite.patcher
 
 import io.fabric8.kubernetes.api.model.KubernetesResource
 import io.fabric8.kubernetes.api.model.Quantity
+import io.fabric8.kubernetes.api.model.ResourceRequirements
 import io.fabric8.kubernetes.api.model.apps.Deployment
-import io.fabric8.kubernetes.api.model.apps.StatefulSet
 
-class ResourceRequestPatcher(private val k8sResource: KubernetesResource, private val container: String, private val variableName: String): AbstractPatcher(k8sResource, container, variableName) {
+class ResourceRequestPatcher(
+    private val k8sResource: KubernetesResource,
+    private val container: String,
+    private val variableName: String
+) : AbstractPatcher(k8sResource, container, variableName) {
 
     override fun <String> patch(value: String) {
         if (k8sResource is Deployment) {
             k8sResource.spec.template.spec.containers.filter { it.name == container }.forEach {
-                it.resources.requests.replace(variableName,Quantity(value as kotlin.String))
-            }
-        } else if (k8sResource is StatefulSet) {
-            k8sResource.spec.template.spec.containers.filter { it.name == container }.forEach {
-                it.resources.requests.replace(variableName, Quantity(value as kotlin.String))
+                try {
+                    if (it.resources.requests.isEmpty()) {
+                        it.resources.requests = mapOf(variableName to Quantity(value as kotlin.String))
+                    } else {
+                        val values = mutableMapOf<kotlin.String, Quantity>()
+                        it.resources.requests.forEach { entry -> values.put(entry.key, entry.value) }
+                        values[variableName] = Quantity(value as kotlin.String)
+                        it.resources.requests = values
+                    }
+                } catch (e: IllegalStateException) {
+                    val resource = ResourceRequirements()
+                    resource.requests = mapOf(variableName to Quantity(value as kotlin.String))
+                    it.resources = resource
+                }
             }
         }
     }
-}
\ No newline at end of file
+}
-- 
GitLab