Skip to content

Commit

Permalink
Added support to use protocol version 6 provider server for SDK plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
tanmay-db committed Aug 7, 2024
1 parent 0f6278d commit fa57386
Showing 1 changed file with 45 additions and 13 deletions.
58 changes: 45 additions & 13 deletions main.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,28 @@
package main

import (
"context"
"fmt"
"log"
"os"

"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" {
Expand All @@ -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)
}
}

0 comments on commit fa57386

Please sign in to comment.