From e5545b64715679d1fac728ea3883cd2286fbfe5f Mon Sep 17 00:00:00 2001 From: Oscar Reyes Date: Fri, 20 Sep 2024 14:24:43 -0600 Subject: [PATCH] chore(cli): Adding version validation to `configure` and `start` (#4027) chore(cli): Adding version validation to and --- cli/cmd/config.go | 7 +------ cli/cmd/configure_cmd.go | 13 +++++++++++-- cli/cmd/start_cmd.go | 8 ++++++++ cli/config/configurator.go | 15 +++++++++++++++ 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/cli/cmd/config.go b/cli/cmd/config.go index 5c7f992534..78e2d42484 100644 --- a/cli/cmd/config.go +++ b/cli/cmd/config.go @@ -146,12 +146,7 @@ func setupVersion() { func validateVersionMismatch() { if !isVersionMatch && os.Getenv("TRACETEST_DEV") == "" { - fmt.Fprintf(os.Stderr, versionText+` -✖️ Error: Version Mismatch -The CLI version and the server version are not compatible. To fix this, you'll need to make sure that both your CLI and server are using compatible versions. -We recommend upgrading both of them to the latest available version. Check out our documentation https://docs.tracetest.io/configuration/upgrade for simple instructions on how to upgrade. -Thank you for using Tracetest! We apologize for any inconvenience caused. -`) + fmt.Fprintf(os.Stderr, versionText+config.ErrVersionMismatch.Error()) ExitCLI(1) } } diff --git a/cli/cmd/configure_cmd.go b/cli/cmd/configure_cmd.go index 10fc8d125d..24cae25e13 100644 --- a/cli/cmd/configure_cmd.go +++ b/cli/cmd/configure_cmd.go @@ -2,6 +2,8 @@ package cmd import ( "context" + "errors" + "fmt" "net/url" agentConfig "github.com/kubeshop/tracetest/agent/config" @@ -28,7 +30,7 @@ var configureCmd = &cobra.Command{ SkipVerify: skipVerify, } - config, err := config.LoadConfig("") + cfg, err := config.LoadConfig("") if err != nil { return "", err } @@ -49,7 +51,14 @@ var configureCmd = &cobra.Command{ flags.OrganizationID = configParams.OrganizationID } - return "", configurator.Start(ctx, &config, flags) + // early exit if the versions are not compatible + err = configurator.Start(ctx, &cfg, flags) + if errors.Is(err, config.ErrVersionMismatch) { + fmt.Println(err.Error()) + ExitCLI(1) + } + + return "", err })), PostRun: teardownCommand, } diff --git a/cli/cmd/start_cmd.go b/cli/cmd/start_cmd.go index d6de2a2d70..e7215fdc10 100644 --- a/cli/cmd/start_cmd.go +++ b/cli/cmd/start_cmd.go @@ -2,6 +2,8 @@ package cmd import ( "context" + "errors" + "fmt" "os" agentConfig "github.com/kubeshop/tracetest/agent/config" @@ -76,7 +78,13 @@ var startCmd = &cobra.Command{ cfg.EnvironmentID = flags.EnvironmentID } + // early exit if the versions are not compatible err = agentRunner.Run(ctx, cliLogger, cliConfig, flags, verbose) + if errors.Is(err, config.ErrVersionMismatch) { + fmt.Println(err.Error()) + ExitCLI(1) + } + return "", err })), PostRun: teardownCommand, diff --git a/cli/config/configurator.go b/cli/config/configurator.go index 8015a8bfdd..510255eaac 100644 --- a/cli/config/configurator.go +++ b/cli/config/configurator.go @@ -2,6 +2,7 @@ package config import ( "context" + "errors" "fmt" "net/http" "os" @@ -18,6 +19,15 @@ import ( type onFinishFn func(context.Context, Config) +var ( + ErrVersionMismatch = errors.New(` + +✖️ Version Mismatch +The CLI version and the server version are not compatible. To fix this, you'll need to make sure that both your CLI and server are using compatible versions. +We recommend upgrading both of them to the latest available version. Check out our documentation https://docs.tracetest.io/configuration/upgrade for simple instructions on how to upgrade. +Thank you for using Tracetest! We apologize for any inconvenience caused`) +) + type Configurator struct { logger *zap.Logger resources *resourcemanager.Registry @@ -106,6 +116,11 @@ func (c Configurator) Start(ctx context.Context, prev *Config, flags agentConfig return nil } + versionText, isMatching := GetVersion(ctx, cfg) + if !isMatching && os.Getenv("TRACETEST_DEV") == "" { + return fmt.Errorf("%s %w", versionText, ErrVersionMismatch) + } + if c.flags.CI { c.logger.Debug("CI environment detected, skipping OAuth") _, err = Save(ctx, cfg)