github.com/kubeshop/testkube@v1.17.23/cmd/kubectl-testkube/commands/templates/update.go (about)

     1  package templates
     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 UpdateTemplateCmd() *cobra.Command {
    11  	var (
    12  		name         string
    13  		templateType string
    14  		labels       map[string]string
    15  		body         string
    16  	)
    17  
    18  	cmd := &cobra.Command{
    19  		Use:     "template",
    20  		Aliases: []string{"templates", "tp"},
    21  		Short:   "Update Template",
    22  		Long:    `Update Template Custom Resource.`,
    23  		Run: func(cmd *cobra.Command, args []string) {
    24  			if name == "" {
    25  				ui.Failf("pass valid name (in '--name' flag)")
    26  			}
    27  
    28  			client, namespace, err := common.GetClient(cmd)
    29  			ui.ExitOnError("getting client", err)
    30  
    31  			template, _ := client.GetTemplate(name)
    32  			if name != template.Name {
    33  				ui.Failf("Template with name '%s' not exists in namespace %s", name, namespace)
    34  			}
    35  
    36  			options, err := NewUpdateTemplateOptionsFromFlags(cmd)
    37  			ui.ExitOnError("getting template options", err)
    38  
    39  			_, err = client.UpdateTemplate(options)
    40  			ui.ExitOnError("updating template "+name+" in namespace "+namespace, err)
    41  
    42  			ui.Success("Template updated", name)
    43  		},
    44  	}
    45  
    46  	cmd.Flags().StringVarP(&name, "name", "n", "", "unique template name - mandatory")
    47  	cmd.Flags().StringVarP(&templateType, "template-type", "", "", "template type one of job|container|cronjob|scraper|pvc|webhook")
    48  	cmd.Flags().StringToStringVarP(&labels, "label", "l", nil, "label key value pair: --label key1=value1")
    49  	cmd.Flags().StringVarP(&body, "body", "", "", "a path to template file to use as template body")
    50  
    51  	return cmd
    52  }