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

     1  package common
     2  
     3  import (
     4  	"errors"
     5  	"strings"
     6  
     7  	"github.com/spf13/cobra"
     8  
     9  	"github.com/kubeshop/testkube/cmd/kubectl-testkube/config"
    10  	"github.com/kubeshop/testkube/pkg/api/v1/testkube"
    11  )
    12  
    13  func CreateVariables(cmd *cobra.Command, ignoreSecretVariable bool) (vars map[string]testkube.Variable, err error) {
    14  	basicParams, err := cmd.Flags().GetStringArray("variable")
    15  	if err != nil {
    16  		return vars, err
    17  	}
    18  
    19  	vars = map[string]testkube.Variable{}
    20  
    21  	for _, v := range basicParams {
    22  		values := strings.SplitN(v, "=", 2)
    23  		if len(values) != 2 {
    24  			return vars, errors.New("wrong number of variable params")
    25  		}
    26  
    27  		vars[values[0]] = testkube.NewBasicVariable(values[0], values[1])
    28  	}
    29  
    30  	if !ignoreSecretVariable {
    31  		secretParams, err := cmd.Flags().GetStringArray("secret-variable")
    32  		if err != nil {
    33  			return vars, err
    34  		}
    35  
    36  		for _, v := range secretParams {
    37  			values := strings.SplitN(v, "=", 2)
    38  			if len(values) != 2 {
    39  				return vars, errors.New("wrong number of secret variable params")
    40  			}
    41  
    42  			vars[values[0]] = testkube.NewSecretVariable(values[0], values[1])
    43  		}
    44  	}
    45  
    46  	secretParamReferences, err := cmd.Flags().GetStringToString("secret-variable-reference")
    47  	if err != nil {
    48  		return vars, err
    49  	}
    50  	for k, v := range secretParamReferences {
    51  		values := strings.Split(v, "=")
    52  		if len(values) != 2 {
    53  			return vars, errors.New("wrong number of secret reference params")
    54  		}
    55  
    56  		vars[k] = testkube.NewSecretVariableReference(k, values[0], values[1])
    57  	}
    58  
    59  	return
    60  }
    61  
    62  func PopulateMasterFlags(cmd *cobra.Command, opts *HelmOptions) {
    63  	var (
    64  		apiURIPrefix, uiURIPrefix, agentURIPrefix, cloudRootDomain, proRootDomain string
    65  		insecure                                                                  bool
    66  	)
    67  
    68  	cmd.Flags().BoolVar(&insecure, "cloud-insecure", false, "should client connect in insecure mode (will use http instead of https)")
    69  	cmd.Flags().MarkDeprecated("cloud-insecure", "use --master-insecure instead")
    70  	cmd.Flags().StringVar(&agentURIPrefix, "cloud-agent-prefix", defaultAgentPrefix, "usually don't need to be changed [required for custom cloud mode]")
    71  	cmd.Flags().MarkDeprecated("cloud-agent-prefix", "use --agent-prefix instead")
    72  	cmd.Flags().StringVar(&apiURIPrefix, "cloud-api-prefix", defaultApiPrefix, "usually don't need to be changed [required for custom cloud mode]")
    73  	cmd.Flags().MarkDeprecated("cloud-api-prefix", "use --api-prefix instead")
    74  	cmd.Flags().StringVar(&uiURIPrefix, "cloud-ui-prefix", defaultUiPrefix, "usually don't need to be changed [required for custom cloud mode]")
    75  	cmd.Flags().MarkDeprecated("cloud-ui-prefix", "use --ui-prefix instead")
    76  	cmd.Flags().StringVar(&cloudRootDomain, "cloud-root-domain", defaultRootDomain, "usually don't need to be changed [required for custom cloud mode]")
    77  	cmd.Flags().MarkDeprecated("cloud-root-domain", "use --root-domain instead")
    78  	cmd.Flags().StringVar(&proRootDomain, "pro-root-domain", defaultRootDomain, "usually don't need to be changed [required for custom pro mode]")
    79  	cmd.Flags().MarkDeprecated("pro-root-domain", "use --root-domain instead")
    80  
    81  	cmd.Flags().BoolVar(&opts.Master.Insecure, "master-insecure", false, "should client connect in insecure mode (will use http instead of https)")
    82  	cmd.Flags().StringVar(&opts.Master.AgentUrlPrefix, "agent-prefix", defaultAgentPrefix, "usually don't need to be changed [required for custom cloud mode]")
    83  	cmd.Flags().StringVar(&opts.Master.ApiUrlPrefix, "api-prefix", defaultApiPrefix, "usually don't need to be changed [required for custom cloud mode]")
    84  	cmd.Flags().StringVar(&opts.Master.LogsUrlPrefix, "logs-prefix", defaultLogsPrefix, "usually don't need to be changed [required for custom cloud mode]")
    85  	cmd.Flags().StringVar(&opts.Master.UiUrlPrefix, "ui-prefix", defaultUiPrefix, "usually don't need to be changed [required for custom cloud mode]")
    86  	cmd.Flags().StringVar(&opts.Master.RootDomain, "root-domain", defaultRootDomain, "usually don't need to be changed [required for custom cloud mode]")
    87  
    88  	cmd.Flags().StringVar(&opts.Master.URIs.Agent, "agent-uri", "", "Testkube Cloud agent URI [required for centralized mode]")
    89  	cmd.Flags().StringVar(&opts.Master.URIs.Logs, "logs-uri", "", "Testkube Cloud logs URI [required for centralized mode]")
    90  	cmd.Flags().StringVar(&opts.Master.AgentToken, "agent-token", "", "Testkube Cloud agent key [required for centralized mode]")
    91  	cmd.Flags().StringVar(&opts.Master.OrgId, "org-id", "", "Testkube Cloud organization id [required for centralized mode]")
    92  	cmd.Flags().StringVar(&opts.Master.EnvId, "env-id", "", "Testkube Cloud environment id [required for centralized mode]")
    93  
    94  	cmd.Flags().BoolVar(&opts.Master.Features.LogsV2, "feature-logs-v2", false, "Logs v2 feature flag")
    95  }
    96  
    97  func ProcessMasterFlags(cmd *cobra.Command, opts *HelmOptions, cfg *config.Data) {
    98  	configured := cfg != nil
    99  	if !cmd.Flags().Changed("master-insecure") {
   100  		if cmd.Flags().Changed("cloud-insecure") {
   101  			opts.Master.Insecure = cmd.Flag("cloud-insecure").Value.String() == "true"
   102  		} else if configured && cfg.Master.Insecure {
   103  			opts.Master.Insecure = cfg.Master.Insecure
   104  		}
   105  	}
   106  
   107  	if !cmd.Flags().Changed("agent-prefix") {
   108  		if cmd.Flags().Changed("cloud-agent-prefix") {
   109  			opts.Master.AgentUrlPrefix = cmd.Flag("cloud-agent-prefix").Value.String()
   110  		} else if configured && cfg.Master.AgentUrlPrefix != "" {
   111  			opts.Master.AgentUrlPrefix = cfg.Master.AgentUrlPrefix
   112  		}
   113  	}
   114  
   115  	if !cmd.Flags().Changed("api-prefix") {
   116  		if cmd.Flags().Changed("cloud-api-prefix") {
   117  			opts.Master.ApiUrlPrefix = cmd.Flag("cloud-api-prefix").Value.String()
   118  		} else if configured && cfg.Master.ApiUrlPrefix != "" {
   119  			opts.Master.ApiUrlPrefix = cfg.Master.ApiUrlPrefix
   120  		}
   121  	}
   122  
   123  	if !cmd.Flags().Changed("ui-prefix") {
   124  		if cmd.Flags().Changed("cloud-ui-prefix") {
   125  			opts.Master.UiUrlPrefix = cmd.Flag("cloud-ui-prefix").Value.String()
   126  		} else if configured && cfg.Master.UiUrlPrefix != "" {
   127  			opts.Master.UiUrlPrefix = cfg.Master.UiUrlPrefix
   128  		}
   129  	}
   130  
   131  	if !cmd.Flags().Changed("root-domain") {
   132  		switch {
   133  		case cmd.Flags().Changed("pro-root-domain"):
   134  			opts.Master.RootDomain = cmd.Flag("pro-root-domain").Value.String()
   135  		case cmd.Flags().Changed("cloud-root-domain"):
   136  			opts.Master.RootDomain = cmd.Flag("cloud-root-domain").Value.String()
   137  		case configured && cfg.Master.RootDomain != "":
   138  			opts.Master.RootDomain = cfg.Master.RootDomain
   139  		}
   140  	}
   141  
   142  	if cmd.Flag("insecure") != nil && cmd.Flag("insecure").Value.String() == "true" {
   143  		opts.Master.Insecure = true
   144  	}
   145  
   146  	if cmd.Flag("api-prefix") != nil && cmd.Flags().Changed("api-prefix") {
   147  		opts.Master.ApiUrlPrefix = cmd.Flag("api-prefix").Value.String()
   148  	}
   149  
   150  	if cmd.Flag("ui-prefix") != nil && cmd.Flags().Changed("ui-prefix") {
   151  		opts.Master.ApiUrlPrefix = cmd.Flag("api-prefix").Value.String()
   152  	}
   153  
   154  	if cmd.Flag("logs-prefix") != nil && cmd.Flags().Changed("logs-prefix") {
   155  		opts.Master.ApiUrlPrefix = cmd.Flag("api-prefix").Value.String()
   156  	}
   157  
   158  	uris := NewMasterUris(opts.Master.ApiUrlPrefix,
   159  		opts.Master.UiUrlPrefix,
   160  		opts.Master.AgentUrlPrefix,
   161  		opts.Master.LogsUrlPrefix,
   162  		opts.Master.URIs.Agent,
   163  		opts.Master.URIs.Logs,
   164  		opts.Master.RootDomain,
   165  		opts.Master.Insecure)
   166  
   167  	// override whole URIs usually composed from prefix - host parts
   168  	if cmd.Flag("agent-uri-override") != nil && cmd.Flags().Changed("agent-uri-override") {
   169  		uris.WithAgentURI(cmd.Flag("agent-uri-override").Value.String())
   170  	}
   171  
   172  	if cmd.Flag("logs-uri-override") != nil && cmd.Flags().Changed("logs-uri-override") {
   173  		uris.WithLogsURI(cmd.Flag("logs-uri-override").Value.String())
   174  	}
   175  
   176  	if cmd.Flag("api-uri-override") != nil && cmd.Flags().Changed("api-uri-override") {
   177  		uris.WithApiURI(cmd.Flag("api-uri-override").Value.String())
   178  	}
   179  
   180  	if cmd.Flag("ui-uri-override") != nil && cmd.Flags().Changed("ui-uri-override") {
   181  		uris.WithUiURI(cmd.Flag("ui-uri-override").Value.String())
   182  	}
   183  
   184  	opts.Master.URIs = uris
   185  
   186  }