From 4f8797cef604f2f9f6bc8a4dd870db9390584c64 Mon Sep 17 00:00:00 2001 From: Jan Wozniak Date: Thu, 18 Jan 2024 17:32:44 +0100 Subject: [PATCH] chore: minor refactor to reduce copy/paste code in ScaledObject webhook closes: #5397 Signed-off-by: Jan Wozniak --- CHANGELOG.md | 1 + apis/keda/v1alpha1/scaledobject_webhook.go | 21 ++++++--------------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20086dd289f..cd9f8e243f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -82,6 +82,7 @@ New deprecation(s): ### Other +- **General**: Minor refactor to reduce copy/paste code in ScaledObject webhook ([#5397](https://github.com/kedacore/keda/issues/5397)) - **General**: TODO ([#XXX](https://github.com/kedacore/keda/issues/XXX)) ## v2.13.0 diff --git a/apis/keda/v1alpha1/scaledobject_webhook.go b/apis/keda/v1alpha1/scaledobject_webhook.go index 2c3c919391a..e18b59f1fca 100644 --- a/apis/keda/v1alpha1/scaledobject_webhook.go +++ b/apis/keda/v1alpha1/scaledobject_webhook.go @@ -317,22 +317,13 @@ func verifyCPUMemoryScalers(incomingSo *ScaledObject, action string, dryRun bool continue } - if trigger.Type == cpuString { - // Fail if neither pod's container spec has a CPU limit specified, nor a default CPU limit is + if trigger.Type == cpuString || trigger.Type == memoryString { + // Fail if neither pod's container spec has particular resource limit specified, nor a default limit is // specified in LimitRange in the same namespace as the deployment - if !isWorkloadResourceSet(container.Resources, corev1.ResourceCPU) && - !isContainerResourceLimitSet(context.Background(), incomingSo.Namespace, corev1.ResourceCPU) { - err := fmt.Errorf("the scaledobject has a cpu trigger but the container %s doesn't have the cpu request defined", container.Name) - scaledobjectlog.Error(err, "validation error") - metricscollector.RecordScaledObjectValidatingErrors(incomingSo.Namespace, action, "missing-requests") - return err - } - } else if trigger.Type == memoryString { - // Fail if neither pod's container spec has a memory limit specified, nor a default memory limit is - // specified in LimitRange in the same namespace as the deployment - if !isWorkloadResourceSet(container.Resources, corev1.ResourceMemory) && - !isContainerResourceLimitSet(context.Background(), incomingSo.Namespace, corev1.ResourceMemory) { - err := fmt.Errorf("the scaledobject has a memory trigger but the container %s doesn't have the memory request defined", container.Name) + resourceType := corev1.ResourceName(trigger.Type) + if !isWorkloadResourceSet(container.Resources, resourceType) && + !isContainerResourceLimitSet(context.Background(), incomingSo.Namespace, resourceType) { + err := fmt.Errorf("the scaledobject has a %v trigger but the container %s doesn't have the %v request defined", resourceType, container.Name, resourceType) scaledobjectlog.Error(err, "validation error") metricscollector.RecordScaledObjectValidatingErrors(incomingSo.Namespace, action, "missing-requests") return err