diff --git a/main.go b/main.go index 277d8fefd2..b64453db94 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "context" "fmt" "log" "os" @@ -8,9 +9,20 @@ import ( "github.com/databricks/terraform-provider-databricks/common" "github.com/databricks/terraform-provider-databricks/exporter" "github.com/databricks/terraform-provider-databricks/provider" - "github.com/hashicorp/terraform-plugin-sdk/v2/plugin" + "github.com/hashicorp/terraform-plugin-go/tfprotov6" + "github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server" + "github.com/hashicorp/terraform-plugin-mux/tf5to6server" + "github.com/hashicorp/terraform-plugin-mux/tf6muxserver" ) +const startMessageFormat = `Databricks Terraform Provider + +Version %s + +https://registry.terraform.io/providers/databricks/databricks/latest/docs + +` + func main() { log.SetFlags(0) if len(os.Args) > 1 && os.Args[1] == "version" { @@ -24,20 +36,40 @@ func main() { } return } - var debug bool - if len(os.Args) > 1 && os.Args[1] == "debug" { - debug = true - } - log.Printf(`Databricks Terraform Provider -Version %s + log.Printf(startMessageFormat, common.Version()) -https://registry.terraform.io/providers/databricks/databricks/latest/docs + sdkPluginProvider := provider.DatabricksProvider() + + upgradedSdkPluginProvider, err := tf5to6server.UpgradeServer( + context.Background(), + sdkPluginProvider.GRPCProvider, + ) + if err != nil { + log.Fatal(err) + } -`, common.Version()) - plugin.Serve(&plugin.ServeOpts{ - ProviderFunc: provider.DatabricksProvider, - ProviderAddr: "registry.terraform.io/databricks/databricks", - Debug: debug, + ctx := context.Background() + muxServer, err := tf6muxserver.NewMuxServer(ctx, func() tfprotov6.ProviderServer { + return upgradedSdkPluginProvider }) + + if err != nil { + log.Fatal(err) + } + + var serveOpts []tf6server.ServeOpt + if len(os.Args) > 1 && os.Args[1] == "debug" { // debug mode + serveOpts = append(serveOpts, tf6server.WithManagedDebug()) + } + + err = tf6server.Serve( + "registry.terraform.io/databricks/databricks", + muxServer.ProviderServer, + serveOpts..., + ) + + if err != nil { + log.Fatal(err) + } }