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
+}