From 451fb22f7de0a305904783c83c86709f3cc00dc6 Mon Sep 17 00:00:00 2001 From: Povilas Versockas Date: Wed, 16 Oct 2024 01:59:00 -0700 Subject: [PATCH] feat: [TKC-2691] add escape / unescape dots for workflow templates (#5938) --- .../model_test_workflow_template_extended.go | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/pkg/api/v1/testkube/model_test_workflow_template_extended.go b/pkg/api/v1/testkube/model_test_workflow_template_extended.go index e2651a3b48..86a7652977 100644 --- a/pkg/api/v1/testkube/model_test_workflow_template_extended.go +++ b/pkg/api/v1/testkube/model_test_workflow_template_extended.go @@ -1,6 +1,10 @@ package testkube -import "strings" +import ( + "strings" + + "github.com/kubeshop/testkube/pkg/utils" +) type TestWorkflowTemplates []TestWorkflowTemplate @@ -33,3 +37,46 @@ func (w TestWorkflowTemplate) GetLabels() map[string]string { func (w TestWorkflowTemplate) GetAnnotations() map[string]string { return w.Annotations } + +func (w *TestWorkflowTemplate) EscapeDots() *TestWorkflowTemplate { + return w.ConvertDots(utils.EscapeDots) +} + +func (w *TestWorkflowTemplate) UnscapeDots() *TestWorkflowTemplate { + return w.ConvertDots(utils.UnescapeDots) +} + +func (w *TestWorkflowTemplate) ConvertDots(fn func(string) string) *TestWorkflowTemplate { + if w == nil { + return w + } + if w.Labels != nil { + w.Labels = convertDotsInMap(w.Labels, fn) + } + if w.Annotations != nil { + w.Annotations = convertDotsInMap(w.Annotations, fn) + } + + if w.Spec.Pod != nil { + w.Spec.Pod.Labels = convertDotsInMap(w.Spec.Pod.Labels, fn) + w.Spec.Pod.Annotations = convertDotsInMap(w.Spec.Pod.Annotations, fn) + w.Spec.Pod.NodeSelector = convertDotsInMap(w.Spec.Pod.NodeSelector, fn) + } + if w.Spec.Job != nil { + w.Spec.Job.Labels = convertDotsInMap(w.Spec.Job.Labels, fn) + w.Spec.Job.Annotations = convertDotsInMap(w.Spec.Job.Annotations, fn) + } + if w.Spec.Execution != nil { + w.Spec.Execution.Tags = convertDotsInMap(w.Spec.Execution.Tags, fn) + } + + for _, ev := range w.Spec.Events { + if ev.Cronjob != nil { + ev.Cronjob.Annotations = convertDotsInMap(ev.Cronjob.Annotations, fn) + ev.Cronjob.Labels = convertDotsInMap(ev.Cronjob.Labels, fn) + } + + } + + return w +}