diff --git a/cmd/multiple.go b/cmd/multiple.go index 211f563..51022c4 100644 --- a/cmd/multiple.go +++ b/cmd/multiple.go @@ -18,6 +18,7 @@ package cmd import ( "github.com/ProxySQL/dbdeployer/common" "github.com/ProxySQL/dbdeployer/globals" + "github.com/ProxySQL/dbdeployer/providers" "github.com/ProxySQL/dbdeployer/sandbox" "github.com/spf13/cobra" ) @@ -28,6 +29,15 @@ func multipleSandbox(cmd *cobra.Command, args []string) { flags := cmd.Flags() sd, err := fillSandboxDefinition(cmd, args, false) common.ErrCheckExitf(err, 1, "error filling sandbox definition") + // Validate version with provider + // TODO: Phase 2b — determine provider from sd.Flavor instead of hardcoding "mysql" + p, provErr := providers.DefaultRegistry.Get("mysql") + if provErr != nil { + common.Exitf(1, "provider error: %s", provErr) + } + if provErr = p.ValidateVersion(sd.Version); provErr != nil { + common.Exitf(1, "version validation failed: %s", provErr) + } nodes, _ := flags.GetInt(globals.NodesLabel) sd.SBType = "multiple" origin := args[0] diff --git a/cmd/replication.go b/cmd/replication.go index ce61c62..2043231 100644 --- a/cmd/replication.go +++ b/cmd/replication.go @@ -18,6 +18,7 @@ package cmd import ( "github.com/ProxySQL/dbdeployer/common" "github.com/ProxySQL/dbdeployer/globals" + "github.com/ProxySQL/dbdeployer/providers" "github.com/ProxySQL/dbdeployer/sandbox" "github.com/spf13/cobra" ) @@ -28,6 +29,15 @@ func replicationSandbox(cmd *cobra.Command, args []string) { common.CheckOrigin(args) sd, err := fillSandboxDefinition(cmd, args, false) common.ErrCheckExitf(err, 1, "error filling sandbox definition : %s", err) + // Validate version with provider + // TODO: Phase 2b — determine provider from sd.Flavor instead of hardcoding "mysql" + p, provErr := providers.DefaultRegistry.Get("mysql") + if provErr != nil { + common.Exitf(1, "provider error: %s", provErr) + } + if provErr = p.ValidateVersion(sd.Version); provErr != nil { + common.Exitf(1, "version validation failed: %s", provErr) + } if sd.Flavor == common.TiDbFlavor { common.Exitf(1, "flavor '%s' is not suitable to create replication sandboxes", common.TiDbFlavor) } diff --git a/cmd/single.go b/cmd/single.go index 7df4cc2..4649216 100644 --- a/cmd/single.go +++ b/cmd/single.go @@ -25,6 +25,7 @@ import ( "github.com/ProxySQL/dbdeployer/common" "github.com/ProxySQL/dbdeployer/defaults" "github.com/ProxySQL/dbdeployer/globals" + "github.com/ProxySQL/dbdeployer/providers" "github.com/ProxySQL/dbdeployer/sandbox" "github.com/pkg/errors" "github.com/spf13/cobra" @@ -445,6 +446,15 @@ func singleSandbox(cmd *cobra.Command, args []string) { if err != nil { common.Exitf(1, "error while filling the sandbox definition: %+v", err) } + // Validate version with provider + // TODO: Phase 2b — determine provider from sd.Flavor instead of hardcoding "mysql" + p, provErr := providers.DefaultRegistry.Get("mysql") + if provErr != nil { + common.Exitf(1, "provider error: %s", provErr) + } + if provErr = p.ValidateVersion(sd.Version); provErr != nil { + common.Exitf(1, "version validation failed: %s", provErr) + } // When deploying a single sandbox, we disable concurrency sd.RunConcurrently = false err = sandbox.CreateStandaloneSandbox(sd)