From 5d368035d984a8a466337f06547b30e636db1fa9 Mon Sep 17 00:00:00 2001
From: "stu126940@mail.uni-kiel.de" <stu126940@mail.uni-kiel.de>
Date: Mon, 4 Apr 2022 11:28:47 +0200
Subject: [PATCH] Use GenericKubernetesResource instead of CustomResource<*,*>
 and clean up

---
 .../src/main/kotlin/theodolite/patcher/AbstractPatcher.kt   | 4 ----
 .../patcher/DataVolumeLoadGeneratorReplicaPatcher.kt        | 2 --
 .../src/main/kotlin/theodolite/patcher/EnvVarPatcher.kt     | 3 ---
 .../src/main/kotlin/theodolite/patcher/ImagePatcher.kt      | 2 --
 .../src/main/kotlin/theodolite/patcher/LabelPatcher.kt      | 6 ++----
 .../src/main/kotlin/theodolite/patcher/MatchLabelPatcher.kt | 3 ---
 .../src/main/kotlin/theodolite/patcher/NamePatcher.kt       | 6 ++----
 .../main/kotlin/theodolite/patcher/NodeSelectorPatcher.kt   | 3 ---
 .../patcher/NumNestedGroupsLoadGeneratorReplicaPatcher.kt   | 2 --
 .../patcher/NumSensorsLoadGeneratorReplicaPatcher.kt        | 2 --
 theodolite/src/main/kotlin/theodolite/patcher/Patcher.kt    | 2 --
 .../src/main/kotlin/theodolite/patcher/PatcherFactory.kt    | 2 --
 .../src/main/kotlin/theodolite/patcher/ReplicaPatcher.kt    | 2 --
 .../main/kotlin/theodolite/patcher/ResourceLimitPatcher.kt  | 1 -
 .../kotlin/theodolite/patcher/ResourceRequestPatcher.kt     | 2 --
 .../main/kotlin/theodolite/patcher/SchedulerNamePatcher.kt  | 2 --
 .../kotlin/theodolite/patcher/ServiceSelectorPatcher.kt     | 2 --
 .../main/kotlin/theodolite/patcher/TemplateLabelPatcher.kt  | 2 --
 .../kotlin/theodolite/patcher/VolumesConfigMapPatcher.kt    | 2 --
 19 files changed, 4 insertions(+), 46 deletions(-)

diff --git a/theodolite/src/main/kotlin/theodolite/patcher/AbstractPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/AbstractPatcher.kt
index 1d9425410..c3353c7cb 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/AbstractPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/AbstractPatcher.kt
@@ -1,7 +1,6 @@
 package theodolite.patcher
 
 import io.fabric8.kubernetes.api.model.HasMetadata
-import io.fabric8.kubernetes.api.model.KubernetesResource
 import io.fabric8.kubernetes.client.utils.Serialization
 
 /**
@@ -9,9 +8,6 @@ import io.fabric8.kubernetes.client.utils.Serialization
  *
  * An AbstractPatcher is created with up to three parameters.
  *
- * @param k8sResource The Kubernetes resource to be patched.
- * @param container *(optional)* The name of the container to be patched
- * @param variableName *(optional)* The variable name to be patched
  *
  *
  * **For example** to patch the load dimension of a load generator, the patcher should be created as follow:
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/DataVolumeLoadGeneratorReplicaPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/DataVolumeLoadGeneratorReplicaPatcher.kt
index 2eb047467..db019282f 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/DataVolumeLoadGeneratorReplicaPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/DataVolumeLoadGeneratorReplicaPatcher.kt
@@ -1,7 +1,6 @@
 package theodolite.patcher
 
 import io.fabric8.kubernetes.api.model.HasMetadata
-import io.fabric8.kubernetes.api.model.KubernetesResource
 
 /**
  * The DataVolumeLoadGeneratorReplicaPatcher takes the total load that should be generated
@@ -11,7 +10,6 @@ import io.fabric8.kubernetes.api.model.KubernetesResource
  * The number of instances are set for the load generator and the given variable is set to the
  * load per instance.
  *
- * @property k8sResource Kubernetes resource to be patched.
  * @property maxVolume per load generator instance
  * @property container Container to be patched.
  * @property variableName Name of the environment variable to be patched.
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/EnvVarPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/EnvVarPatcher.kt
index d1f8778d7..0f1672fa2 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/EnvVarPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/EnvVarPatcher.kt
@@ -3,14 +3,11 @@ package theodolite.patcher
 import io.fabric8.kubernetes.api.model.Container
 import io.fabric8.kubernetes.api.model.EnvVar
 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.client.utils.Serialization
 
 /**
  * The EnvVarPatcher allows to modify the value of an environment variable
  *
- * @property k8sResource Kubernetes resource to be patched.
  * @property container Container to be patched.
  * @property variableName Name of the environment variable to be patched.
  */
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/ImagePatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/ImagePatcher.kt
index 8997ac2d3..b6417d410 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/ImagePatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/ImagePatcher.kt
@@ -1,7 +1,6 @@
 package theodolite.patcher
 
 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.utils.Serialization
@@ -9,7 +8,6 @@ import io.fabric8.kubernetes.client.utils.Serialization
 /**
  * The Image patcher allows to change the image of a container.
  *
- * @param k8sResource Kubernetes resource to be patched.
  * @param container Container to be patched.
  */
 class ImagePatcher(
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/LabelPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/LabelPatcher.kt
index 2639cadc3..10fa87aed 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/LabelPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/LabelPatcher.kt
@@ -1,13 +1,11 @@
 package theodolite.patcher
 
 import io.fabric8.kubernetes.api.model.ConfigMap
+import io.fabric8.kubernetes.api.model.GenericKubernetesResource
 import io.fabric8.kubernetes.api.model.HasMetadata
-import io.fabric8.kubernetes.api.model.KubernetesResource
 import io.fabric8.kubernetes.api.model.Service
 import io.fabric8.kubernetes.api.model.apps.Deployment
 import io.fabric8.kubernetes.api.model.apps.StatefulSet
-import io.fabric8.kubernetes.client.CustomResource
-import io.fabric8.kubernetes.client.utils.Serialization
 
 class LabelPatcher(
     val variableName: String) :
@@ -40,7 +38,7 @@ class LabelPatcher(
                 }
                 resource.metadata.labels[this.variableName] = value
             }
-            is CustomResource<*, *> -> {
+            is GenericKubernetesResource -> {
                 if (resource.metadata.labels == null) {
                     resource.metadata.labels = mutableMapOf()
                 }
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/MatchLabelPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/MatchLabelPatcher.kt
index 9da00cd9a..a0936c648 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/MatchLabelPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/MatchLabelPatcher.kt
@@ -1,15 +1,12 @@
 package theodolite.patcher
 
 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.utils.Serialization
 
 /**
  * This patcher is able to set the `spec.selector.matchLabels` for a `Deployment` or `StatefulSet` Kubernetes resource.
  *
- * @property k8sResource The Kubernetes manifests to patch
  * @property variableName The matchLabel which should be set
  */
 class MatchLabelPatcher(
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/NamePatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/NamePatcher.kt
index 0eded122f..341029456 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/NamePatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/NamePatcher.kt
@@ -1,13 +1,11 @@
 package theodolite.patcher
 
 import io.fabric8.kubernetes.api.model.ConfigMap
+import io.fabric8.kubernetes.api.model.GenericKubernetesResource
 import io.fabric8.kubernetes.api.model.HasMetadata
-import io.fabric8.kubernetes.api.model.KubernetesResource
 import io.fabric8.kubernetes.api.model.Service
 import io.fabric8.kubernetes.api.model.apps.Deployment
 import io.fabric8.kubernetes.api.model.apps.StatefulSet
-import io.fabric8.kubernetes.client.CustomResource
-import io.fabric8.kubernetes.client.utils.Serialization
 
 class NamePatcher : AbstractPatcher() {
 
@@ -28,7 +26,7 @@ class NamePatcher : AbstractPatcher() {
             is io.fabric8.kubernetes.api.model.networking.v1.Ingress -> {
                 resource.metadata.name = value
             }
-            is CustomResource<*, *> -> {
+            is GenericKubernetesResource -> {
                 resource.metadata.name = value
             }
         }
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/NodeSelectorPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/NodeSelectorPatcher.kt
index 4743ca605..60ff38a07 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/NodeSelectorPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/NodeSelectorPatcher.kt
@@ -1,14 +1,11 @@
 package theodolite.patcher
 
 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.client.utils.Serialization
 
 /**
  * The Node selector patcher make it possible to set the NodeSelector of a Kubernetes deployment.
  *
- * @param k8sResource Kubernetes resource to be patched.
  * @param variableName The `label-key` of the node for which the `label-value` is to be patched.
  */
 class NodeSelectorPatcher(
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/NumNestedGroupsLoadGeneratorReplicaPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/NumNestedGroupsLoadGeneratorReplicaPatcher.kt
index f35bd6a1a..a9ce4664b 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/NumNestedGroupsLoadGeneratorReplicaPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/NumNestedGroupsLoadGeneratorReplicaPatcher.kt
@@ -1,9 +1,7 @@
 package theodolite.patcher
 
 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.client.utils.Serialization
 import kotlin.math.pow
 
 class NumNestedGroupsLoadGeneratorReplicaPatcher(
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/NumSensorsLoadGeneratorReplicaPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/NumSensorsLoadGeneratorReplicaPatcher.kt
index 81a30d619..72a1c39e0 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/NumSensorsLoadGeneratorReplicaPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/NumSensorsLoadGeneratorReplicaPatcher.kt
@@ -1,9 +1,7 @@
 package theodolite.patcher
 
 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.client.utils.Serialization
 
 
 class NumSensorsLoadGeneratorReplicaPatcher(
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/Patcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/Patcher.kt
index bf6b75fdc..72fe6a1f0 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/Patcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/Patcher.kt
@@ -1,7 +1,6 @@
 package theodolite.patcher
 
 import io.fabric8.kubernetes.api.model.HasMetadata
-import io.fabric8.kubernetes.api.model.KubernetesResource
 import io.quarkus.runtime.annotations.RegisterForReflection
 
 /**
@@ -15,7 +14,6 @@ interface Patcher {
      * The patch method modifies a value in the definition of a
      * Kubernetes resource.
      *
-     * @param T The type of value
      * @param value The value to be used.
      */
     fun patch(resources: List<HasMetadata>, value: String) : List<HasMetadata>
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/PatcherFactory.kt b/theodolite/src/main/kotlin/theodolite/patcher/PatcherFactory.kt
index b92249897..85848a484 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/PatcherFactory.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/PatcherFactory.kt
@@ -1,7 +1,5 @@
 package theodolite.patcher
 
-import io.fabric8.kubernetes.api.model.HasMetadata
-import io.fabric8.kubernetes.api.model.KubernetesResource
 import theodolite.util.InvalidPatcherConfigurationException
 import theodolite.util.PatcherDefinition
 
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/ReplicaPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/ReplicaPatcher.kt
index 9b273acee..01c9d5152 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/ReplicaPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/ReplicaPatcher.kt
@@ -1,9 +1,7 @@
 package theodolite.patcher
 
 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.client.utils.Serialization
 
 /**
  * The Replica [Patcher] modifies the number of replicas for the given Kubernetes deployment.
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/ResourceLimitPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/ResourceLimitPatcher.kt
index 774b080d0..c6aa37d3d 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/ResourceLimitPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/ResourceLimitPatcher.kt
@@ -3,7 +3,6 @@ package theodolite.patcher
 import io.fabric8.kubernetes.api.model.*
 import io.fabric8.kubernetes.api.model.apps.Deployment
 import io.fabric8.kubernetes.api.model.apps.StatefulSet
-import io.fabric8.kubernetes.client.utils.Serialization
 import theodolite.util.InvalidPatcherConfigurationException
 
 /**
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/ResourceRequestPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/ResourceRequestPatcher.kt
index d347fa686..e67d614fe 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/ResourceRequestPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/ResourceRequestPatcher.kt
@@ -3,13 +3,11 @@ package theodolite.patcher
 import io.fabric8.kubernetes.api.model.*
 import io.fabric8.kubernetes.api.model.apps.Deployment
 import io.fabric8.kubernetes.api.model.apps.StatefulSet
-import io.fabric8.kubernetes.client.utils.Serialization
 import theodolite.util.InvalidPatcherConfigurationException
 
 /**
  * The Resource request [Patcher] set resource limits for deployments and statefulSets.
  *
- * @param k8sResource Kubernetes resource to be patched.
  * @param container Container to be patched.
  * @param requestedResource The resource to be requested (e.g. **cpu or memory**)
  */
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/SchedulerNamePatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/SchedulerNamePatcher.kt
index 130afd8cf..00a77c4e9 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/SchedulerNamePatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/SchedulerNamePatcher.kt
@@ -1,9 +1,7 @@
 package theodolite.patcher
 
 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.client.utils.Serialization
 
 /**
  * The Scheduler name [Patcher] make it possible to set the scheduler which should
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/ServiceSelectorPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/ServiceSelectorPatcher.kt
index 86e34a043..99d8f07fa 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/ServiceSelectorPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/ServiceSelectorPatcher.kt
@@ -1,9 +1,7 @@
 package theodolite.patcher
 
 import io.fabric8.kubernetes.api.model.HasMetadata
-import io.fabric8.kubernetes.api.model.KubernetesResource
 import io.fabric8.kubernetes.api.model.Service
-import io.fabric8.kubernetes.client.utils.Serialization
 
 class ServiceSelectorPatcher(
     private var variableName: String
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/TemplateLabelPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/TemplateLabelPatcher.kt
index 3b905b07e..2a6ee13fe 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/TemplateLabelPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/TemplateLabelPatcher.kt
@@ -1,10 +1,8 @@
 package theodolite.patcher
 
 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.utils.Serialization
 
 /**
  * This patcher is able to set the field `spec.template.metadata.labels` for a `Deployment` or `StatefulSet` Kubernetes resource.
diff --git a/theodolite/src/main/kotlin/theodolite/patcher/VolumesConfigMapPatcher.kt b/theodolite/src/main/kotlin/theodolite/patcher/VolumesConfigMapPatcher.kt
index dc113499c..73f55a0f6 100644
--- a/theodolite/src/main/kotlin/theodolite/patcher/VolumesConfigMapPatcher.kt
+++ b/theodolite/src/main/kotlin/theodolite/patcher/VolumesConfigMapPatcher.kt
@@ -1,10 +1,8 @@
 package theodolite.patcher
 
 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.utils.Serialization
 
 class VolumesConfigMapPatcher(private var volumeName: String
 ) : AbstractPatcher() {
-- 
GitLab