provider/factory.go (31 lines of code) (raw):

package provider import ( "context" "fmt" "github.com/hashicorp/terraform-plugin-framework/providerserver" "github.com/hashicorp/terraform-plugin-go/tfprotov6" "github.com/hashicorp/terraform-plugin-mux/tf5to6server" "github.com/hashicorp/terraform-plugin-mux/tf6muxserver" ) func ProtoV6ProviderServerFactory(ctx context.Context, version string) (func() tfprotov6.ProviderServer, error) { sdkv2Provider := New(version) frameworkProvider := providerserver.NewProtocol6(NewFrameworkProvider(version)) upgradedSdkProvider, err := tf5to6server.UpgradeServer( context.Background(), sdkv2Provider.GRPCProvider, ) if err != nil { return nil, fmt.Errorf("cannot upgrade the SDKv2 provider to protocol 6: %w", err) } servers := []func() tfprotov6.ProviderServer{ frameworkProvider, func() tfprotov6.ProviderServer { return upgradedSdkProvider }, } muxServer, err := tf6muxserver.NewMuxServer(ctx, servers...) if err != nil { return nil, fmt.Errorf("initialize mux server: %w", err) } return muxServer.ProviderServer, nil }