Skip to content
Snippets Groups Projects
Commit 5d368035 authored by Benedikt Wetzel's avatar Benedikt Wetzel
Browse files

Use GenericKubernetesResource instead of CustomResource<*,*> and clean up

parent cd7766f7
No related branches found
No related tags found
1 merge request!265Change patcher signatur
Pipeline #7677 passed
Showing
with 4 additions and 46 deletions
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata import io.fabric8.kubernetes.api.model.HasMetadata
import io.fabric8.kubernetes.api.model.KubernetesResource
import io.fabric8.kubernetes.client.utils.Serialization import io.fabric8.kubernetes.client.utils.Serialization
/** /**
...@@ -9,9 +8,6 @@ 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. * 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: * **For example** to patch the load dimension of a load generator, the patcher should be created as follow:
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata import io.fabric8.kubernetes.api.model.HasMetadata
import io.fabric8.kubernetes.api.model.KubernetesResource
/** /**
* The DataVolumeLoadGeneratorReplicaPatcher takes the total load that should be generated * The DataVolumeLoadGeneratorReplicaPatcher takes the total load that should be generated
...@@ -11,7 +10,6 @@ import io.fabric8.kubernetes.api.model.KubernetesResource ...@@ -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 * The number of instances are set for the load generator and the given variable is set to the
* load per instance. * load per instance.
* *
* @property k8sResource Kubernetes resource to be patched.
* @property maxVolume per load generator instance * @property maxVolume per load generator instance
* @property container Container to be patched. * @property container Container to be patched.
* @property variableName Name of the environment variable to be patched. * @property variableName Name of the environment variable to be patched.
......
...@@ -3,14 +3,11 @@ package theodolite.patcher ...@@ -3,14 +3,11 @@ package theodolite.patcher
import io.fabric8.kubernetes.api.model.Container import io.fabric8.kubernetes.api.model.Container
import io.fabric8.kubernetes.api.model.EnvVar import io.fabric8.kubernetes.api.model.EnvVar
import io.fabric8.kubernetes.api.model.HasMetadata 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.Deployment
import io.fabric8.kubernetes.client.utils.Serialization
/** /**
* The EnvVarPatcher allows to modify the value of an environment variable * 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 container Container to be patched.
* @property variableName Name of the environment variable to be patched. * @property variableName Name of the environment variable to be patched.
*/ */
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata 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.Deployment
import io.fabric8.kubernetes.api.model.apps.StatefulSet import io.fabric8.kubernetes.api.model.apps.StatefulSet
import io.fabric8.kubernetes.client.utils.Serialization import io.fabric8.kubernetes.client.utils.Serialization
...@@ -9,7 +8,6 @@ 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. * The Image patcher allows to change the image of a container.
* *
* @param k8sResource Kubernetes resource to be patched.
* @param container Container to be patched. * @param container Container to be patched.
*/ */
class ImagePatcher( class ImagePatcher(
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.ConfigMap 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.HasMetadata
import io.fabric8.kubernetes.api.model.KubernetesResource
import io.fabric8.kubernetes.api.model.Service import io.fabric8.kubernetes.api.model.Service
import io.fabric8.kubernetes.api.model.apps.Deployment import io.fabric8.kubernetes.api.model.apps.Deployment
import io.fabric8.kubernetes.api.model.apps.StatefulSet import io.fabric8.kubernetes.api.model.apps.StatefulSet
import io.fabric8.kubernetes.client.CustomResource
import io.fabric8.kubernetes.client.utils.Serialization
class LabelPatcher( class LabelPatcher(
val variableName: String) : val variableName: String) :
...@@ -40,7 +38,7 @@ class LabelPatcher( ...@@ -40,7 +38,7 @@ class LabelPatcher(
} }
resource.metadata.labels[this.variableName] = value resource.metadata.labels[this.variableName] = value
} }
is CustomResource<*, *> -> { is GenericKubernetesResource -> {
if (resource.metadata.labels == null) { if (resource.metadata.labels == null) {
resource.metadata.labels = mutableMapOf() resource.metadata.labels = mutableMapOf()
} }
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata 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.Deployment
import io.fabric8.kubernetes.api.model.apps.StatefulSet 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. * 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 * @property variableName The matchLabel which should be set
*/ */
class MatchLabelPatcher( class MatchLabelPatcher(
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.ConfigMap 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.HasMetadata
import io.fabric8.kubernetes.api.model.KubernetesResource
import io.fabric8.kubernetes.api.model.Service import io.fabric8.kubernetes.api.model.Service
import io.fabric8.kubernetes.api.model.apps.Deployment import io.fabric8.kubernetes.api.model.apps.Deployment
import io.fabric8.kubernetes.api.model.apps.StatefulSet import io.fabric8.kubernetes.api.model.apps.StatefulSet
import io.fabric8.kubernetes.client.CustomResource
import io.fabric8.kubernetes.client.utils.Serialization
class NamePatcher : AbstractPatcher() { class NamePatcher : AbstractPatcher() {
...@@ -28,7 +26,7 @@ class NamePatcher : AbstractPatcher() { ...@@ -28,7 +26,7 @@ class NamePatcher : AbstractPatcher() {
is io.fabric8.kubernetes.api.model.networking.v1.Ingress -> { is io.fabric8.kubernetes.api.model.networking.v1.Ingress -> {
resource.metadata.name = value resource.metadata.name = value
} }
is CustomResource<*, *> -> { is GenericKubernetesResource -> {
resource.metadata.name = value resource.metadata.name = value
} }
} }
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata 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.Deployment
import io.fabric8.kubernetes.client.utils.Serialization
/** /**
* The Node selector patcher make it possible to set the NodeSelector of a Kubernetes deployment. * 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. * @param variableName The `label-key` of the node for which the `label-value` is to be patched.
*/ */
class NodeSelectorPatcher( class NodeSelectorPatcher(
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata 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.Deployment
import io.fabric8.kubernetes.client.utils.Serialization
import kotlin.math.pow import kotlin.math.pow
class NumNestedGroupsLoadGeneratorReplicaPatcher( class NumNestedGroupsLoadGeneratorReplicaPatcher(
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata 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.Deployment
import io.fabric8.kubernetes.client.utils.Serialization
class NumSensorsLoadGeneratorReplicaPatcher( class NumSensorsLoadGeneratorReplicaPatcher(
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata import io.fabric8.kubernetes.api.model.HasMetadata
import io.fabric8.kubernetes.api.model.KubernetesResource
import io.quarkus.runtime.annotations.RegisterForReflection import io.quarkus.runtime.annotations.RegisterForReflection
/** /**
...@@ -15,7 +14,6 @@ interface Patcher { ...@@ -15,7 +14,6 @@ interface Patcher {
* The patch method modifies a value in the definition of a * The patch method modifies a value in the definition of a
* Kubernetes resource. * Kubernetes resource.
* *
* @param T The type of value
* @param value The value to be used. * @param value The value to be used.
*/ */
fun patch(resources: List<HasMetadata>, value: String) : List<HasMetadata> fun patch(resources: List<HasMetadata>, value: String) : List<HasMetadata>
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata
import io.fabric8.kubernetes.api.model.KubernetesResource
import theodolite.util.InvalidPatcherConfigurationException import theodolite.util.InvalidPatcherConfigurationException
import theodolite.util.PatcherDefinition import theodolite.util.PatcherDefinition
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata 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.Deployment
import io.fabric8.kubernetes.client.utils.Serialization
/** /**
* The Replica [Patcher] modifies the number of replicas for the given Kubernetes deployment. * The Replica [Patcher] modifies the number of replicas for the given Kubernetes deployment.
......
...@@ -3,7 +3,6 @@ package theodolite.patcher ...@@ -3,7 +3,6 @@ package theodolite.patcher
import io.fabric8.kubernetes.api.model.* import io.fabric8.kubernetes.api.model.*
import io.fabric8.kubernetes.api.model.apps.Deployment import io.fabric8.kubernetes.api.model.apps.Deployment
import io.fabric8.kubernetes.api.model.apps.StatefulSet import io.fabric8.kubernetes.api.model.apps.StatefulSet
import io.fabric8.kubernetes.client.utils.Serialization
import theodolite.util.InvalidPatcherConfigurationException import theodolite.util.InvalidPatcherConfigurationException
/** /**
......
...@@ -3,13 +3,11 @@ package theodolite.patcher ...@@ -3,13 +3,11 @@ package theodolite.patcher
import io.fabric8.kubernetes.api.model.* import io.fabric8.kubernetes.api.model.*
import io.fabric8.kubernetes.api.model.apps.Deployment import io.fabric8.kubernetes.api.model.apps.Deployment
import io.fabric8.kubernetes.api.model.apps.StatefulSet import io.fabric8.kubernetes.api.model.apps.StatefulSet
import io.fabric8.kubernetes.client.utils.Serialization
import theodolite.util.InvalidPatcherConfigurationException import theodolite.util.InvalidPatcherConfigurationException
/** /**
* The Resource request [Patcher] set resource limits for deployments and statefulSets. * 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 container Container to be patched.
* @param requestedResource The resource to be requested (e.g. **cpu or memory**) * @param requestedResource The resource to be requested (e.g. **cpu or memory**)
*/ */
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata 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.Deployment
import io.fabric8.kubernetes.client.utils.Serialization
/** /**
* The Scheduler name [Patcher] make it possible to set the scheduler which should * The Scheduler name [Patcher] make it possible to set the scheduler which should
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata 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.Service
import io.fabric8.kubernetes.client.utils.Serialization
class ServiceSelectorPatcher( class ServiceSelectorPatcher(
private var variableName: String private var variableName: String
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata 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.Deployment
import io.fabric8.kubernetes.api.model.apps.StatefulSet 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. * This patcher is able to set the field `spec.template.metadata.labels` for a `Deployment` or `StatefulSet` Kubernetes resource.
......
package theodolite.patcher package theodolite.patcher
import io.fabric8.kubernetes.api.model.HasMetadata 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.Deployment
import io.fabric8.kubernetes.api.model.apps.StatefulSet import io.fabric8.kubernetes.api.model.apps.StatefulSet
import io.fabric8.kubernetes.client.utils.Serialization
class VolumesConfigMapPatcher(private var volumeName: String class VolumesConfigMapPatcher(private var volumeName: String
) : AbstractPatcher() { ) : AbstractPatcher() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment