From 0a3cd77ebb55a3a699309a46ff2416529e2a2061 Mon Sep 17 00:00:00 2001 From: Vladislav Sukhin Date: Tue, 7 Jan 2025 20:47:05 +0300 Subject: [PATCH] fix: rename fields Signed-off-by: Vladislav Sukhin --- api/v1/testkube.yaml | 4 ++-- .../commands/webhooks/common.go | 10 +++++----- .../commands/webhooks/create.go | 2 +- .../commands/webhooks/update.go | 2 +- go.mod | 2 +- go.sum | 4 ++-- .../v1/testkube/model_webhook_config_value.go | 4 ++-- .../model_webhook_create_request_extended.go | 8 ++++---- pkg/api/v1/testkube/model_webhook_extended.go | 8 ++++---- pkg/crd/crd_test.go | 16 +++++++-------- pkg/crd/templates/webhook.tmpl | 16 +++++++-------- pkg/event/kind/webhook/loader.go | 20 +++++++++---------- pkg/mapper/webhooks/mapper.go | 8 ++++---- 13 files changed, 52 insertions(+), 52 deletions(-) diff --git a/api/v1/testkube.yaml b/api/v1/testkube.yaml index 80e30a6c8a4..f9e221844c0 100644 --- a/api/v1/testkube.yaml +++ b/api/v1/testkube.yaml @@ -10727,10 +10727,10 @@ components: type: object description: configuration value properties: - public: + value: description: public value to use in webhook template $ref: "#/components/schemas/BoxedString" - private: + secret: description: private value stored in secret to use in webhook template $ref: "#/components/schemas/SecretRef" diff --git a/cmd/kubectl-testkube/commands/webhooks/common.go b/cmd/kubectl-testkube/commands/webhooks/common.go index 027ba4646bc..6788d95c345 100644 --- a/cmd/kubectl-testkube/commands/webhooks/common.go +++ b/cmd/kubectl-testkube/commands/webhooks/common.go @@ -245,12 +245,12 @@ func getWebhookConfig(configs map[string]string) (map[string]testkube.WebhookCon config := map[string]testkube.WebhookConfigValue{} for key, value := range configs { switch { - case strings.HasPrefix(value, "public="): + case strings.HasPrefix(value, "value="): config[key] = testkube.WebhookConfigValue{ - Public: &testkube.BoxedString{Value: strings.TrimPrefix(value, "public=")}, + Value: &testkube.BoxedString{Value: strings.TrimPrefix(value, "value=")}, } - case strings.HasPrefix(value, "private="): - data := strings.TrimPrefix(value, "private=") + case strings.HasPrefix(value, "secret="): + data := strings.TrimPrefix(value, "secret=") r := csv.NewReader(strings.NewReader(data)) r.Comma = ',' r.LazyQuotes = true @@ -270,7 +270,7 @@ func getWebhookConfig(configs map[string]string) (map[string]testkube.WebhookCon } config[key] = testkube.WebhookConfigValue{ - Private: &testkube.SecretRef{ + Secret: &testkube.SecretRef{ Namespace: records[0][0], Name: records[0][1], Key: records[0][2], diff --git a/cmd/kubectl-testkube/commands/webhooks/create.go b/cmd/kubectl-testkube/commands/webhooks/create.go index 432cce26dd0..2ade17a8fa3 100644 --- a/cmd/kubectl-testkube/commands/webhooks/create.go +++ b/cmd/kubectl-testkube/commands/webhooks/create.go @@ -103,7 +103,7 @@ func NewCreateWebhookCmd() *cobra.Command { cmd.Flags().StringVarP(&payloadTemplate, "payload-template", "", "", "if webhook needs to send a custom notification, then a path to template file should be provided") cmd.Flags().StringToStringVarP(&headers, "header", "", nil, "webhook header value pair (golang template supported): --header Content-Type=application/xml") cmd.Flags().StringVar(&payloadTemplateReference, "payload-template-reference", "", "reference to payload template to use for the webhook") - cmd.Flags().StringToStringVarP(&config, "config", "", nil, "webhook config variable with csv coluums (public=value or private=namespace,secret,key): --config var1=public=value1 or --config var2=private=ns1,secret1,key1") + cmd.Flags().StringToStringVarP(&config, "config", "", nil, "webhook config variable with csv coluums (value=data or secret=namespace,name,key): --config var1=value=data or --config var2=secret=ns1,name1,key1") cmd.Flags().StringToStringVarP(¶meters, "parameter", "", nil, "webhook parameter variable with csv coluums (description,required,example,default,pattern): --parameter var3=descr,true,12345,0,[0-9]*") cmd.Flags().StringVar(&webhookTemplateReference, "webhook-template-reference", "", "reference to webhook to use as template for the webhook") cmd.Flags().BoolVar(&update, "update", false, "update, if webhook already exists") diff --git a/cmd/kubectl-testkube/commands/webhooks/update.go b/cmd/kubectl-testkube/commands/webhooks/update.go index 29ce49fd531..eead9bd7942 100644 --- a/cmd/kubectl-testkube/commands/webhooks/update.go +++ b/cmd/kubectl-testkube/commands/webhooks/update.go @@ -61,7 +61,7 @@ func UpdateWebhookCmd() *cobra.Command { cmd.Flags().StringVarP(&payloadTemplate, "payload-template", "", "", "if webhook needs to send a custom notification, then a path to template file should be provided") cmd.Flags().StringToStringVarP(&headers, "header", "", nil, "webhook header value pair (golang template supported): --header Content-Type=application/xml") cmd.Flags().StringVar(&payloadTemplateReference, "payload-template-reference", "", "reference to payload template to use for the webhook") - cmd.Flags().StringToStringVarP(&config, "config", "", nil, "webhook config variable with csv coluums (public=value or private=namespace,secret,key): --config var1=public=value1 or --config var2=private=ns1,secret1,key1") + cmd.Flags().StringToStringVarP(&config, "config", "", nil, "webhook config variable with csv coluums (value=data or secret=namespace,name,key): --config var1=value=data or --config var2=secret=ns1,name1,key1") cmd.Flags().StringToStringVarP(¶meters, "parameter", "", nil, "webhook parameter variable with csv coluums (description,required,example,default,pattern): --parameter var3=descr,true,12345,0,[0-9]*") cmd.Flags().StringVar(&webhookTemplateReference, "webhook-template-reference", "", "reference to webhook to use as template for the webhook") cmd.Flags().BoolVar(&disable, "disable", false, "disable webhook") diff --git a/go.mod b/go.mod index 3e6becfe1e7..602fa511a73 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( github.com/keygen-sh/jsonapi-go v1.2.1 github.com/keygen-sh/keygen-go/v3 v3.2.0 github.com/kubepug/kubepug v1.7.1 - github.com/kubeshop/testkube-operator v1.17.55-0.20250107155019-60a0512f0adb + github.com/kubeshop/testkube-operator v1.17.55-0.20250107170252-f0f08f7d9cde github.com/minio/minio-go/v7 v7.0.66 github.com/montanaflynn/stats v0.7.1 github.com/moogar0880/problems v0.1.1 diff --git a/go.sum b/go.sum index eca5e5002bb..7395d0ce28c 100644 --- a/go.sum +++ b/go.sum @@ -336,8 +336,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kubepug/kubepug v1.7.1 h1:LKhfSxS8Y5mXs50v+3Lpyec+cogErDLcV7CMUuiaisw= github.com/kubepug/kubepug v1.7.1/go.mod h1:lv+HxD0oTFL7ZWjj0u6HKhMbbTIId3eG7aWIW0gyF8g= -github.com/kubeshop/testkube-operator v1.17.55-0.20250107155019-60a0512f0adb h1:pTuCeBd2MwGGAiqomtMH8PbGuu1lSqXDK/zhcKdprA8= -github.com/kubeshop/testkube-operator v1.17.55-0.20250107155019-60a0512f0adb/go.mod h1:P47tw1nKQFufdsZndyq2HG2MSa0zK/lU0XpRfZtEmIk= +github.com/kubeshop/testkube-operator v1.17.55-0.20250107170252-f0f08f7d9cde h1:L9eP55V2RC0GlfEBcE/CJyNzolHexoKcrvAGyGoLRrc= +github.com/kubeshop/testkube-operator v1.17.55-0.20250107170252-f0f08f7d9cde/go.mod h1:P47tw1nKQFufdsZndyq2HG2MSa0zK/lU0XpRfZtEmIk= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/lithammer/fuzzysearch v1.1.8 h1:/HIuJnjHuXS8bKaiTMeeDlW2/AyIWk2brx1V8LFgLN4= diff --git a/pkg/api/v1/testkube/model_webhook_config_value.go b/pkg/api/v1/testkube/model_webhook_config_value.go index 29759168c86..dfafa81540e 100644 --- a/pkg/api/v1/testkube/model_webhook_config_value.go +++ b/pkg/api/v1/testkube/model_webhook_config_value.go @@ -11,6 +11,6 @@ package testkube // configuration value type WebhookConfigValue struct { - Public *BoxedString `json:"public,omitempty"` - Private *SecretRef `json:"private,omitempty"` + Value *BoxedString `json:"value,omitempty"` + Secret *SecretRef `json:"secret,omitempty"` } diff --git a/pkg/api/v1/testkube/model_webhook_create_request_extended.go b/pkg/api/v1/testkube/model_webhook_create_request_extended.go index 957a908f6da..df3178d2cc4 100644 --- a/pkg/api/v1/testkube/model_webhook_create_request_extended.go +++ b/pkg/api/v1/testkube/model_webhook_create_request_extended.go @@ -7,11 +7,11 @@ func (w *WebhookCreateRequest) QuoteTextFields() { w.PayloadTemplate = fmt.Sprintf("%q", w.PayloadTemplate) } - for key, value := range w.Config { - if value.Public != nil && value.Public.Value != "" { - value.Public.Value = fmt.Sprintf("%q", value.Public.Value) + for key, val := range w.Config { + if val.Value != nil && val.Value.Value != "" { + val.Value.Value = fmt.Sprintf("%q", val.Value.Value) } - w.Config[key] = value + w.Config[key] = val } for key, value := range w.Parameters { diff --git a/pkg/api/v1/testkube/model_webhook_extended.go b/pkg/api/v1/testkube/model_webhook_extended.go index a78a593be41..c0695615ca4 100644 --- a/pkg/api/v1/testkube/model_webhook_extended.go +++ b/pkg/api/v1/testkube/model_webhook_extended.go @@ -51,11 +51,11 @@ func (w *Webhook) QuoteTextFields() { w.PayloadTemplate = fmt.Sprintf("%q", w.PayloadTemplate) } - for key, value := range w.Config { - if value.Public != nil && value.Public.Value != "" { - value.Public.Value = fmt.Sprintf("%q", value.Public.Value) + for key, val := range w.Config { + if val.Value != nil && val.Value.Value != "" { + val.Value.Value = fmt.Sprintf("%q", val.Value.Value) } - w.Config[key] = value + w.Config[key] = val } for key, value := range w.Parameters { diff --git a/pkg/crd/crd_test.go b/pkg/crd/crd_test.go index 6e26efa6665..14de854ed6f 100644 --- a/pkg/crd/crd_test.go +++ b/pkg/crd/crd_test.go @@ -12,7 +12,7 @@ func TestGenerateYAML(t *testing.T) { t.Run("generate single CRD yaml", func(t *testing.T) { // given - expected := "apiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name1\n namespace: namespace1\n labels:\n key1: value1\n annotations:\n key2: value2 \nspec:\n events:\n - start-test\n uri: http://localhost\n selector: app=backend\n payloadObjectField: text\n payloadTemplate: {{ .Id }}\n payloadTemplateReference: ref\n headers:\n Content-Type: appication/xml\n disabled: true\n config:\n var1:\n public: pb\n var2:\n private:\n namespace: ns\n name: secret\n key: pr\n parameters:\n var3:\n description: descr\n required: true\n example: 12345\n default: 0\n pattern: [0-9]*\n webhookTemplateRef:\n name: tmpl\n isTemplate: true\n" + expected := "apiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name1\n namespace: namespace1\n labels:\n key1: value1\n annotations:\n key2: value2 \nspec:\n events:\n - start-test\n uri: http://localhost\n selector: app=backend\n payloadObjectField: text\n payloadTemplate: {{ .Id }}\n payloadTemplateReference: ref\n headers:\n Content-Type: appication/xml\n disabled: true\n config:\n var1:\n value: pb\n var2:\n secret:\n namespace: ns\n name: secret\n key: pr\n parameters:\n var3:\n description: descr\n required: true\n example: 12345\n default: 0\n pattern: [0-9]*\n webhookTemplateRef:\n name: tmpl\n isTemplate: true\n" webhooks := []testkube.Webhook{ { Name: "name1", @@ -28,8 +28,8 @@ func TestGenerateYAML(t *testing.T) { PayloadTemplateReference: "ref", Disabled: true, Config: map[string]testkube.WebhookConfigValue{ - "var1": {Public: &testkube.BoxedString{Value: "pb"}}, - "var2": {Private: &testkube.SecretRef{Namespace: "ns", Name: "secret", Key: "pr"}}}, + "var1": {Value: &testkube.BoxedString{Value: "pb"}}, + "var2": {Secret: &testkube.SecretRef{Namespace: "ns", Name: "secret", Key: "pr"}}}, Parameters: map[string]testkube.WebhookParameterSchema{ "var3": { Description: "descr", @@ -58,7 +58,7 @@ func TestGenerateYAML(t *testing.T) { t.Run("generate multiple CRDs yaml", func(t *testing.T) { // given - expected := "apiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name1\n namespace: namespace1\n labels:\n key1: value1\n annotations:\n key3: value3 \nspec:\n events:\n - start-test\n uri: http://localhost\n selector: app=backend\n payloadObjectField: text\n payloadTemplate: {{ .Id }}\n payloadTemplateReference: ref\n headers:\n Content-Type: appication/xml\n disabled: true\n config:\n var1:\n public: pb\n var2:\n private:\n namespace: ns\n name: secret\n key: pr\n parameters:\n var3:\n description: descr\n required: true\n example: 12345\n default: 0\n pattern: [0-9]*\n webhookTemplateRef:\n name: tmpl\n isTemplate: true\n\n---\napiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name2\n namespace: namespace2\n labels:\n key2: value2\n annotations:\n key4: value4 \nspec:\n events:\n - end-test-success\n uri: http://localhost\n selector: app=backend\n payloadObjectField: text\n payloadTemplate: {{ .Id }}\n payloadTemplateReference: ref\n headers:\n Content-Type: appication/xml\n disabled: true\n config:\n var1:\n public: pb\n var2:\n private:\n namespace: ns\n name: secret\n key: pr\n parameters:\n var3:\n description: descr\n required: true\n example: 12345\n default: 0\n pattern: [0-9]*\n webhookTemplateRef:\n name: tmpl\n isTemplate: true\n" + expected := "apiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name1\n namespace: namespace1\n labels:\n key1: value1\n annotations:\n key3: value3 \nspec:\n events:\n - start-test\n uri: http://localhost\n selector: app=backend\n payloadObjectField: text\n payloadTemplate: {{ .Id }}\n payloadTemplateReference: ref\n headers:\n Content-Type: appication/xml\n disabled: true\n config:\n var1:\n value: pb\n var2:\n secret:\n namespace: ns\n name: secret\n key: pr\n parameters:\n var3:\n description: descr\n required: true\n example: 12345\n default: 0\n pattern: [0-9]*\n webhookTemplateRef:\n name: tmpl\n isTemplate: true\n\n---\napiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name2\n namespace: namespace2\n labels:\n key2: value2\n annotations:\n key4: value4 \nspec:\n events:\n - end-test-success\n uri: http://localhost\n selector: app=backend\n payloadObjectField: text\n payloadTemplate: {{ .Id }}\n payloadTemplateReference: ref\n headers:\n Content-Type: appication/xml\n disabled: true\n config:\n var1:\n value: pb\n var2:\n secret:\n namespace: ns\n name: secret\n key: pr\n parameters:\n var3:\n description: descr\n required: true\n example: 12345\n default: 0\n pattern: [0-9]*\n webhookTemplateRef:\n name: tmpl\n isTemplate: true\n" webhooks := []testkube.Webhook{ { Name: "name1", @@ -74,8 +74,8 @@ func TestGenerateYAML(t *testing.T) { PayloadTemplateReference: "ref", Disabled: true, Config: map[string]testkube.WebhookConfigValue{ - "var1": {Public: &testkube.BoxedString{Value: "pb"}}, - "var2": {Private: &testkube.SecretRef{Namespace: "ns", Name: "secret", Key: "pr"}}}, + "var1": {Value: &testkube.BoxedString{Value: "pb"}}, + "var2": {Secret: &testkube.SecretRef{Namespace: "ns", Name: "secret", Key: "pr"}}}, Parameters: map[string]testkube.WebhookParameterSchema{ "var3": { Description: "descr", @@ -106,8 +106,8 @@ func TestGenerateYAML(t *testing.T) { PayloadTemplateReference: "ref", Disabled: true, Config: map[string]testkube.WebhookConfigValue{ - "var1": {Public: &testkube.BoxedString{Value: "pb"}}, - "var2": {Private: &testkube.SecretRef{Namespace: "ns", Name: "secret", Key: "pr"}}}, + "var1": {Value: &testkube.BoxedString{Value: "pb"}}, + "var2": {Secret: &testkube.SecretRef{Namespace: "ns", Name: "secret", Key: "pr"}}}, Parameters: map[string]testkube.WebhookParameterSchema{ "var3": { Description: "descr", diff --git a/pkg/crd/templates/webhook.tmpl b/pkg/crd/templates/webhook.tmpl index 35b96b2e7c0..87ab9534d8a 100644 --- a/pkg/crd/templates/webhook.tmpl +++ b/pkg/crd/templates/webhook.tmpl @@ -47,16 +47,16 @@ spec: {{- end }} {{- if ne (len .Config) 0 }} config: - {{- range $key, $value := .Config }} + {{- range $key, $val := .Config }} {{ $key }}: - {{- if $value.Public }} - public: {{ $value.Public.Value }} + {{- if $val.Value }} + value: {{ $val.Value.Value }} {{- end }} - {{- if $value.Private }} - private: - namespace: {{ $value.Private.Namespace }} - name: {{ $value.Private.Name }} - key: {{ $value.Private.Key }} + {{- if $val.Secret }} + secret: + namespace: {{ $val.Secret.Namespace }} + name: {{ $val.Secret.Name }} + key: {{ $val.Secret.Key }} {{- end }} {{- end }} {{- end }} diff --git a/pkg/event/kind/webhook/loader.go b/pkg/event/kind/webhook/loader.go index db3dfac73ea..6cb5daef2c0 100644 --- a/pkg/event/kind/webhook/loader.go +++ b/pkg/event/kind/webhook/loader.go @@ -112,28 +112,28 @@ OuterLoop: types := webhooks.MapEventArrayToCRDEvents(webhook.Spec.Events) name := fmt.Sprintf("%s.%s", webhook.ObjectMeta.Namespace, webhook.ObjectMeta.Name) vars := make(map[string]string) - for key, value := range webhook.Spec.Config { + for key, val := range webhook.Spec.Config { data := "" - if value.Public != nil { - data = *value.Public + if val.Value != nil { + data = *val.Value } - if value.Private != nil { + if val.Secret != nil { var ns []string - if value.Private.Namespace != "" { - ns = append(ns, value.Private.Namespace) + if val.Secret.Namespace != "" { + ns = append(ns, val.Secret.Namespace) } - elements, err := r.secretClient.Get(value.Private.Name, ns...) + elements, err := r.secretClient.Get(val.Secret.Name, ns...) if err != nil { - r.log.Errorw("error secret loading", "error", err, "name", value.Private.Name) + r.log.Errorw("error secret loading", "error", err, "name", val.Secret.Name) continue } - if element, ok := elements[value.Private.Key]; ok { + if element, ok := elements[val.Secret.Key]; ok { data = element } else { - r.log.Errorw("error secret key finding loading", "name", value.Private.Name, "key", value.Private.Key) + r.log.Errorw("error secret key finding loading", "name", val.Secret.Name, "key", val.Secret.Key) continue } } diff --git a/pkg/mapper/webhooks/mapper.go b/pkg/mapper/webhooks/mapper.go index 65b7fd3832d..1bb31cff075 100644 --- a/pkg/mapper/webhooks/mapper.go +++ b/pkg/mapper/webhooks/mapper.go @@ -49,8 +49,8 @@ func MapSecretRefCRDToAPI(v executorv1.SecretRef) testkube.SecretRef { // MapConigValueCRDToAPI maps config value to OpenAPI spec func MapConfigValueCRDToAPI(v executorv1.WebhookConfigValue) testkube.WebhookConfigValue { return testkube.WebhookConfigValue{ - Public: MapStringToBoxedString(v.Public), - Private: common.MapPtr(v.Private, MapSecretRefCRDToAPI), + Value: MapStringToBoxedString(v.Value), + Secret: common.MapPtr(v.Secret, MapSecretRefCRDToAPI), } } @@ -133,8 +133,8 @@ func MapSecretRefAPIToCRD(v testkube.SecretRef) executorv1.SecretRef { // MapConigValueAPIToCRD maps config value to CRD spec func MapConfigValueAPIToCRD(v testkube.WebhookConfigValue) executorv1.WebhookConfigValue { return executorv1.WebhookConfigValue{ - Public: MapBoxedStringToString(v.Public), - Private: common.MapPtr(v.Private, MapSecretRefAPIToCRD), + Value: MapBoxedStringToString(v.Value), + Secret: common.MapPtr(v.Secret, MapSecretRefAPIToCRD), } }