github.com/kubeshop/testkube@v1.17.23/cmd/kubectl-testkube/commands/context/set.go (about) 1 package context 2 3 import ( 4 "github.com/spf13/cobra" 5 6 "github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common" 7 "github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common/validator" 8 "github.com/kubeshop/testkube/cmd/kubectl-testkube/config" 9 "github.com/kubeshop/testkube/pkg/ui" 10 ) 11 12 func NewSetContextCmd() *cobra.Command { 13 var ( 14 org, env, apiKey string 15 kubeconfig bool 16 namespace string 17 opts common.HelmOptions 18 ) 19 20 cmd := &cobra.Command{ 21 Use: "context <value>", 22 Short: "Set context data for Testkube Pro", 23 Run: func(cmd *cobra.Command, args []string) { 24 25 cfg, err := config.Load() 26 ui.ExitOnError("loading config file", err) 27 common.ProcessMasterFlags(cmd, &opts, &cfg) 28 29 if cmd.Flags().Changed("org") { 30 opts.Master.OrgId = org 31 } 32 33 if cmd.Flags().Changed("env") { 34 opts.Master.EnvId = env 35 } 36 37 if kubeconfig { 38 cfg.ContextType = config.ContextTypeKubeconfig 39 } else { 40 cfg.ContextType = config.ContextTypeCloud 41 } 42 43 switch cfg.ContextType { 44 case config.ContextTypeCloud: 45 if opts.Master.OrgId == "" && opts.Master.EnvId == "" && apiKey == "" && opts.Master.RootDomain == "" { 46 ui.Errf("Please provide at least one of the following flags: --org, --env, --api-key, --root-domain") 47 } 48 49 cfg = common.PopulateCloudConfig(cfg, apiKey, &opts) 50 51 case config.ContextTypeKubeconfig: 52 // kubeconfig special use cases 53 54 default: 55 ui.Errf("Unknown context type: %s", cfg.ContextType) 56 } 57 58 if namespace != "" { 59 cfg.Namespace = namespace 60 } 61 62 err = config.Save(cfg) 63 ui.ExitOnError("saving config file", err) 64 65 if err = validator.ValidateCloudContext(cfg); err != nil { 66 common.UiCloudContextValidationError(err) 67 } 68 69 ui.Success("Your config was updated with new values") 70 ui.NL() 71 common.UiPrintContext(cfg) 72 73 }, 74 } 75 76 cmd.Flags().BoolVarP(&kubeconfig, "kubeconfig", "", false, "reset context mode for CLI to default kubeconfig based") 77 cmd.Flags().StringVarP(&org, "org", "o", "", "Testkube Pro Organization ID") 78 cmd.Flags().MarkDeprecated("org", "use --org-id instead") 79 cmd.Flags().StringVarP(&env, "env", "e", "", "Testkube Pro Environment ID") 80 cmd.Flags().MarkDeprecated("env", "use --env-id instead") 81 cmd.Flags().StringVarP(&namespace, "namespace", "n", "", "Testkube namespace to use for CLI commands") 82 cmd.Flags().StringVarP(&apiKey, "api-key", "k", "", "API Key for Testkube Pro") 83 84 // allow to override default values of all URIs 85 cmd.Flags().String("api-uri-override", "", "api uri override") 86 cmd.Flags().String("ui-uri-override", "", "ui uri override") 87 cmd.Flags().String("agent-uri-override", "", "agnet uri override") 88 cmd.Flags().String("logs-uri-override", "", "logs service uri override") 89 90 common.PopulateMasterFlags(cmd, &opts) 91 return cmd 92 }