diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/DataVolumeLoadGeneratorReplicaPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/DataVolumeLoadGeneratorReplicaPatcher.kt index 2979d06268d4b363ba2c4de35242bd45fa52f423..fce3de2b97e7f3fe23d8aae425af9843c650daa0 100644 --- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/DataVolumeLoadGeneratorReplicaPatcher.kt +++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/DataVolumeLoadGeneratorReplicaPatcher.kt @@ -16,22 +16,22 @@ import io.fabric8.kubernetes.api.model.HasMetadata */ class DataVolumeLoadGeneratorReplicaPatcher( private val maxVolume: Int, - private val container: String, - private val variableName: String -) : Patcher { + val container: String, + val variableName: String +) : AbstractPatcher() { - override fun patch(resources: List<HasMetadata>, value: String) : List<HasMetadata> { - return resources.flatMap { patchSingeResource(it, value)} - } + private val envVarPatcher = EnvVarPatcher(container, variableName) + private val replicaPatcher = ReplicaPatcher() - private fun patchSingeResource(k8sResource: HasMetadata, value: String): List<HasMetadata> { + override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata { // calculate number of load generator instances and load per instance val load = Integer.parseInt(value) val loadGenInstances = (load + maxVolume - 1) / maxVolume val loadPerInstance = load / loadGenInstances // Patch instance values and load value of generators - val resourceList = ReplicaPatcher().patch(listOf(k8sResource), loadGenInstances.toString()) - return EnvVarPatcher(this.container, this.variableName).patch(resourceList, loadPerInstance.toString()) + return this.envVarPatcher.patchSingleResource( + replicaPatcher.patchSingleResource(resource, loadGenInstances.toString()), + loadPerInstance.toString()) } } diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ImagePatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ImagePatcher.kt index 7f54416501bc742499a958566a179b7fad320318..c847f99d26959c06f9828103679395de93f961a5 100644 --- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ImagePatcher.kt +++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ImagePatcher.kt @@ -10,15 +10,7 @@ import io.fabric8.kubernetes.client.utils.Serialization * * @param container Container to be patched. */ -class ImagePatcher( - private val container: String) : - AbstractPatcher() { - - override fun patch(resources: List<HasMetadata>, value: String) : List<HasMetadata> { - return resources - .map { Serialization.clone(it) } - .map { patchSingleResource(it, value as kotlin.String) } - } +class ImagePatcher(private val container: String) : AbstractPatcher() { override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata { if (resource is Deployment) { diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NodeSelectorPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NodeSelectorPatcher.kt index c3b5ba1a07afa41dd604f2335baf6b58e362f293..0ffda7d55a20fc5f71133af5cbdc27eee7779f9e 100644 --- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NodeSelectorPatcher.kt +++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NodeSelectorPatcher.kt @@ -8,10 +8,7 @@ import io.fabric8.kubernetes.api.model.apps.Deployment * * @param variableName The `label-key` of the node for which the `label-value` is to be patched. */ -class NodeSelectorPatcher( - private val variableName: String) : - AbstractPatcher() { - +class NodeSelectorPatcher(private val variableName: String) : AbstractPatcher() { override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata { if (resource is Deployment) { diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/PatchHandler.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/PatchHandler.kt index 92b1e52ba7492181b5f3b06080efe01aae6cf66b..9740952d8a7a4aa016ff3928f344098c65c85088 100644 --- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/PatchHandler.kt +++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/PatchHandler.kt @@ -5,7 +5,7 @@ class PatchHandler { companion object { private fun getResourcesToPatch(resources: Map<String, List<HasMetadata>>, patcherDefinition: PatcherDefinition): List<HasMetadata> { return resources[patcherDefinition.resource] - ?: throw InvalidPatcherConfigurationException("Could not find resource ${patcherDefinition.resource}") + ?: throw InvalidPatcherConfigurationException("Could not find resource ${patcherDefinition.resource}.") } fun patchResource( diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/SchedulerNamePatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/SchedulerNamePatcher.kt index c5ac16cdfe25f6b2fd2e4d0a2fb27000f885ffe7..3c6f4be19b74647602a710589a7aea2f016a3d26 100644 --- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/SchedulerNamePatcher.kt +++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/SchedulerNamePatcher.kt @@ -6,7 +6,6 @@ import io.fabric8.kubernetes.api.model.apps.Deployment /** * The Scheduler name [Patcher] make it possible to set the scheduler which should * be used to deploy the given deployment. - * @param k8sResource Kubernetes resource to be patched. */ class SchedulerNamePatcher : AbstractPatcher() { diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ServiceSelectorPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ServiceSelectorPatcher.kt index b38ae4108748f85e7ac60f3ee3aa8c5d28281432..58ccdea2480ada723aefdd8f10efb06c3c91db91 100644 --- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ServiceSelectorPatcher.kt +++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ServiceSelectorPatcher.kt @@ -3,9 +3,7 @@ package rocks.theodolite.kubernetes.patcher import io.fabric8.kubernetes.api.model.HasMetadata import io.fabric8.kubernetes.api.model.Service -class ServiceSelectorPatcher( - private var variableName: String - ) : AbstractPatcher() { +class ServiceSelectorPatcher(private var variableName: String) : AbstractPatcher() { override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata { if (resource is Service) { diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/TemplateLabelPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/TemplateLabelPatcher.kt index e1c1bc3a15b8a9035bcaaa513f040aff9982e7ab..04cbb8e2b5177424f91ddd530b8e8b12d49210f9 100644 --- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/TemplateLabelPatcher.kt +++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/TemplateLabelPatcher.kt @@ -9,9 +9,7 @@ import io.fabric8.kubernetes.api.model.apps.StatefulSet * * @property variableName The label which should be set */ -class TemplateLabelPatcher( - val variableName: String) : - AbstractPatcher() { +class TemplateLabelPatcher(val variableName: String) : AbstractPatcher() { override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata { when (resource) { diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/VolumesConfigMapPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/VolumesConfigMapPatcher.kt index 54a459a19b35e74839de647761e8ac22f839ca2d..5dfa2cc176eda9c365a3b83aae8ead310ebd65ef 100644 --- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/VolumesConfigMapPatcher.kt +++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/VolumesConfigMapPatcher.kt @@ -4,8 +4,7 @@ import io.fabric8.kubernetes.api.model.HasMetadata import io.fabric8.kubernetes.api.model.apps.Deployment import io.fabric8.kubernetes.api.model.apps.StatefulSet -class VolumesConfigMapPatcher(private var volumeName: String -) : AbstractPatcher() { +class VolumesConfigMapPatcher(private var volumeName: String) : AbstractPatcher() { override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata { if (resource is Deployment) {