The tf5to6server
package enables translating a protocol version 5 provider server into a protocol version 6 provider server.
Use this package to:
Protocol version 6 provider servers are compatible with Terraform CLI 1.0 and later. Terraform CLI 1.1.5 and later is required to upgrade terraform-plugin-sdk/v2.
The following provider server implementations are supported:
Upgrading provider servers from protocol version 5 to protocol version 6 has no provider code requirements.
If publishing to the Terraform Registry, set metadata.protocol_versions
to ["6.0"]
in the Terraform Registry manifest file.
Use the tf5to6server.UpgradeServer()
function to wrap a provider server. For most providers, this is either in the provider main()
function of the root directory main.go
file or where tf6muxserver
is implemented in the codebase.
The following example upgrades a terraform-plugin-sdk/v2 provider.
upgradedSdkProvider, err := tf5to6server.UpgradeServer(
context.Background(),
sdkprovider.New(version)().GRPCProvider,
)
The following example uses tf6server
to serve the upgraded provider directly.
err = tf6server.Serve(
"registry.terraform.io/example/example",
func() tfprotov6.ProviderServer {
return upgradedSdkProvider
},
)
The following example uses tf6muxserver
to serve the upgraded provider while it is combined with others.
providers := []func() tfprotov6.ProviderServer{
func() tfprotov6.ProviderServer {
return upgradedSdkProvider
},
// Example terraform-plugin-framework provider
providerserver.NewProtocol6(frameworkprovider.New(version)())
}
muxServer, err := tf6muxserver.NewMuxServer(ctx, providers...)
Refer to the tf6muxserver
documentation for more details about how to serve the combined provider.
You can test the original provider using the same acceptance tests as before. Set the ProtoV6ProviderFactories
field of TestCase
with an instance of the upgraded server, instead of declaring the provider with other TestCase
fields such as ProviderFactories
.
The following example creates a test for a combined provider.
resource.Test(t, resource.TestCase{
// ... other TestCase fields ...
ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error) {
"example": func() (tfprotov6.ProviderServer, error) {
return tf5to6server.UpgradeServer(
context.Background(),
sdkprovider.New("test")().GRPCProvider,
)
},
},
})
Refer to the acceptance tests documentation for more details.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4