github.com/kubeshop/testkube@v1.17.23/cmd/kubectl-testkube/commands/webhooks/update.go (about) 1 package webhooks 2 3 import ( 4 "github.com/spf13/cobra" 5 6 "github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common" 7 "github.com/kubeshop/testkube/pkg/ui" 8 ) 9 10 func UpdateWebhookCmd() *cobra.Command { 11 var ( 12 events []string 13 name, uri string 14 selector string 15 labels map[string]string 16 payloadObjectField string 17 payloadTemplate string 18 headers map[string]string 19 payloadTemplateReference string 20 ) 21 22 cmd := &cobra.Command{ 23 Use: "webhook", 24 Aliases: []string{"webhooks", "wh"}, 25 Short: "Update Webhook", 26 Long: `Update Webhook Custom Resource`, 27 Run: func(cmd *cobra.Command, args []string) { 28 if name == "" { 29 ui.Failf("pass valid name (in '--name' flag)") 30 } 31 32 client, namespace, err := common.GetClient(cmd) 33 ui.ExitOnError("getting client", err) 34 35 webhook, _ := client.GetWebhook(name) 36 if name != webhook.Name { 37 ui.Failf("Webhook with name '%s' not exists in namespace %s", name, namespace) 38 } 39 40 options, err := NewUpdateWebhookOptionsFromFlags(cmd) 41 ui.ExitOnError("getting webhook options", err) 42 43 _, err = client.UpdateWebhook(options) 44 ui.ExitOnError("updating webhook "+name+" in namespace "+namespace, err) 45 46 ui.Success("Webhook updated", name) 47 }, 48 } 49 50 cmd.Flags().StringVarP(&name, "name", "n", "", "unique webhook name - mandatory") 51 cmd.Flags().StringArrayVarP(&events, "events", "e", []string{}, "event types handled by webhook e.g. start-test|end-test") 52 cmd.Flags().StringVarP(&uri, "uri", "u", "", "URI which should be called when given event occurs (golang template supported)") 53 cmd.Flags().StringVarP(&selector, "selector", "", "", "expression to select tests and test suites for webhook events: --selector app=backend") 54 cmd.Flags().StringToStringVarP(&labels, "label", "l", nil, "label key value pair: --label key1=value1") 55 cmd.Flags().StringVarP(&payloadObjectField, "payload-field", "", "", "field to use for notification object payload") 56 cmd.Flags().StringVarP(&payloadTemplate, "payload-template", "", "", "if webhook needs to send a custom notification, then a path to template file should be provided") 57 cmd.Flags().StringToStringVarP(&headers, "header", "", nil, "webhook header value pair (golang template supported): --header Content-Type=application/xml") 58 cmd.Flags().StringVar(&payloadTemplateReference, "payload-template-reference", "", "reference to payload template to use for the webhook") 59 60 return cmd 61 }