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  }