From b66c2ba1a0a797946da7e6cb6cdd2e249e41b38a Mon Sep 17 00:00:00 2001
From: lorenz <stu203404@mail.uni-kiel.de>
Date: Sat, 23 Jan 2021 13:37:18 +0100
Subject: [PATCH] Add YAML and SetContanerEnv

---
 .../kotlin/theodolite/DeploymentManager.kt    | 49 ++++++++++++++-----
 .../src/main/kotlin/theodolite/YamlLoader.kt  | 21 ++++++++
 2 files changed, 58 insertions(+), 12 deletions(-)
 create mode 100644 theodolite-quarkus/src/main/kotlin/theodolite/YamlLoader.kt

diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/DeploymentManager.kt b/theodolite-quarkus/src/main/kotlin/theodolite/DeploymentManager.kt
index ea1d53ef6..84507963d 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/DeploymentManager.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/DeploymentManager.kt
@@ -1,8 +1,7 @@
 package theodolite
 
 import com.fasterxml.jackson.annotation.JsonProperty
-import io.fabric8.kubernetes.api.model.Quantity
-import io.fabric8.kubernetes.api.model.Service
+import io.fabric8.kubernetes.api.model.*
 import io.fabric8.kubernetes.api.model.apps.Deployment
 import io.fabric8.kubernetes.client.DefaultKubernetesClient
 import io.fabric8.kubernetes.client.dsl.RollableScalableResource
@@ -24,35 +23,60 @@ class DeploymentManager {
     val inputStream: InputStream = path.byteInputStream()
     val client = DefaultKubernetesClient().inNamespace("default")
 
-    //val deployment = client.apps().deployments().load(absolute + path)
+    val core  = client.configMaps().
 
-    val dp: Service = client.services().load(path+service).get();
+    //val deployment = client.apps().deployments().load(absolute + path)
 
-    val workload : Deployment = client.apps().deployments().load(path+workloadFile).get();
-    val use : Deployment = client.apps().deployments().load(path+usecase).get();
+    val dp: Service = client.services().load(path + service).get();
 
+    val workload: Deployment = client.apps().deployments().load(path + workloadFile).get()
+    val use: Deployment = client.apps().deployments().load(path + usecase).get()
 
+    // TODO CHANGE CONFIGURATION ENVIROMENT VARIABLES (DONE)
+    // TODO ASSEMBLE GOOD SEPERATION
+    // TODO ADD SERVICES
+    // TODO ADD CONFIG MAP
+    // TODO DELETE STUFF
     // TODO MAKE YAML LOADING CATCH EXEPTION
 
-
     fun printFile(){
 
 //
 //        println(workload)
-//        changeWorkloadNumInstances(workload,"5000")
+//        changeEnviromentsInstances(workload,"5000")
 //        println(workload)
 
         println(use)
         changeRessourceLimits(use, MEMORYLIMIT,"5Gi")
         println(use)
-
-
-//        println(path)
+    //        println(path)
 //        val f : File = File(path+theodoliteDeploment);
 //        val fileAsString : String = String(f.readBytes())
 //        println(fileAsString.replace("theodolite","spesb"))
     }
 
+    /**
+     * TODO REFACTOR
+     */
+    fun setContainerEnv (container: Container, map: Map<String,String>){
+        map.forEach{ k,v ->
+
+            container.env
+
+            container.env.filter { x -> x.name == k }.forEach {
+                it.value = v
+            }
+            var c = container.env.filter { x -> x.name == k }
+
+            if(c.isEmpty()){
+                val y = EnvVar(k,v, EnvVarSource())
+                c = listOf(y)
+            }
+
+        }
+
+    }
+
 
     // SERVICE
     fun changeServiceName (service: Service,newName : String){
@@ -63,7 +87,8 @@ class DeploymentManager {
     }
 
     // WORKLOAD GEN
-    fun changeWorkloadNumInstances (dep: Deployment,num: String) {
+    // TODO REFACTOR
+    fun changeEnviromentsInstances (dep: Deployment,num: String) {
 
         dep.spec.template.spec.containers.get(0).env.filter {
             it.name == "NUM_SENSORS"
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/YamlLoader.kt b/theodolite-quarkus/src/main/kotlin/theodolite/YamlLoader.kt
new file mode 100644
index 000000000..a031f805f
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/YamlLoader.kt
@@ -0,0 +1,21 @@
+package theodolite
+
+import io.fabric8.kubernetes.api.model.Service
+import io.fabric8.kubernetes.client.NamespacedKubernetesClient
+
+class YamlLoader(client: NamespacedKubernetesClient) {
+    var client = client
+
+    fun loadService(path: String): Service? {
+
+        var service: Service? = null
+
+        try {
+            service = client.services().load(path).get()
+        }catch (e : Exception){
+        }
+
+        return service
+    }
+}
+
-- 
GitLab