From db965543dc38bba20f65e71edfb1fc4720759bb4 Mon Sep 17 00:00:00 2001 From: Rene Cannao Date: Tue, 24 Mar 2026 01:03:38 +0000 Subject: [PATCH 1/2] feat: add provider validation to single sandbox deployment --- cmd/single.go | 10 ++++++++++ 1 file changed, 10 insertions(+) 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) From c84d1992353dbe44057ae8634b2b603dfd011fca Mon Sep 17 00:00:00 2001 From: Rene Cannao Date: Tue, 24 Mar 2026 01:04:17 +0000 Subject: [PATCH 2/2] feat: add provider validation to replication and multiple deployments --- cmd/multiple.go | 10 ++++++++++ cmd/replication.go | 10 ++++++++++ 2 files changed, 20 insertions(+) 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) }