From 3557955864f718c209aedcaa791c19c5020684a4 Mon Sep 17 00:00:00 2001
From: lorenz <stu203404@mail.uni-kiel.de>
Date: Mon, 25 Jan 2021 03:01:15 +0100
Subject: [PATCH] Add deploy and delete methods

---
 .../kotlin/theodolite/DeploymentManager.kt    | 42 +++++++++++--------
 1 file changed, 25 insertions(+), 17 deletions(-)

diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/DeploymentManager.kt b/theodolite-quarkus/src/main/kotlin/theodolite/DeploymentManager.kt
index 5c8e4cfff..f64bab95f 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/DeploymentManager.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/DeploymentManager.kt
@@ -43,14 +43,13 @@ class DeploymentManager {
 //        changeRessourceLimits(use, MEMORYLIMIT, "5Gi")
 //        logger.debug(use.toString())
 
-        logger.info(workload.toString())
-        val testMap = mapOf<String, String>("NUM_SENSORS" to "5000")
-        val vars =
-            workload.spec.template.spec.containers.filter { it.name == "workload-generator" }.forEach { it: Container ->
-                setContainerEnv(it, testMap)
-            }
+        deploy(workload)
+        logger.info { "Workload deployed" }
+        Thread.sleep(Duration(java.time.Duration.ofSeconds(30)).duration.toMillis())
+        logger.info { "will delete workload now!" }
+        delete(workload)
+        logger.info { "workld deletet" }
 
-        logger.info(workload.toString())
 
         // logger.debug(config.toString())
 
@@ -65,10 +64,10 @@ class DeploymentManager {
      * @param container - The Container
      * @param map - Map of k=Name,v =Value of EnviromentVariables
      */
-    fun setContainerEnv(container: Container, map: Map<String, String>) {
+    private fun setContainerEnv(container: Container, map: Map<String, String>) {
         map.forEach { k, v ->
             // filter for mathing name and set value
-            val x = container.env.filter { envvar -> envvar.name == k }
+            val x = container.env.filter { envVar -> envVar.name == k }
 
             if (x.isEmpty()) {
                 val newVar = EnvVar(k, v, EnvVarSource())
@@ -82,7 +81,7 @@ class DeploymentManager {
     }
 
     /**
-     * Set the enviroment Variable for a Container
+     * Set the enviroment Variable for a container
      */
     fun setWorkloadEnv(workloadDeployment: Deployment, containerName: String, map: Map<String, String>) {
         workloadDeployment.spec.template.spec.containers.filter { it.name == containerName }
@@ -92,21 +91,30 @@ class DeploymentManager {
     }
 
     /**
-     *  Change the RessourceLimit of the SUT
+     *  Change the RessourceLimit of a container (Usally SUT)
      */
-    fun changeRessourceLimits(dep: Deployment, ressource: String, limit: String) {
-        val vars = dep.spec.template.spec.containers.filter { it.name == "uc-application" }.forEach {
+    fun changeRessourceLimits(deployment: Deployment, ressource: String, containerName: String, limit: String) {
+        val vars = deployment.spec.template.spec.containers.filter { it.name == containerName }.forEach {
             it.resources.limits.replace(ressource, Quantity(limit))
         }
     }
 
     /**
-     * Change the image of the SUT and the Worklaodgenerators
+     * Change the image name of a container (SUT and the Worklaodgenerators)
      */
-    fun changeImage(dep: Deployment, image: String) {
-
-        dep.spec.template.spec.containers.filter { it.name == "uc-application" }.forEach {
+    fun setImageName(deployment: Deployment, containerName: String, image: String) {
+        deployment.spec.template.spec.containers.filter { it.name == containerName }.forEach {
             it.image = image
         }
     }
+
+    //TODO potential add exception handling
+    fun deploy(deployment: Deployment) {
+        client.apps().deployments().create(deployment)
+    }
+
+    //TODO potential add exception handling
+    fun delete(deployment: Deployment) {
+        client.apps().deployments().delete(deployment)
+    }
 }
-- 
GitLab