@@ -2,10 +2,45 @@ package main
22
33import (
44 kubernetes "github.com/gavinbunney/terraform-provider-kubectl/kubernetes"
5+ goplugin "github.com/hashicorp/go-plugin"
6+ "github.com/hashicorp/terraform-plugin-go/tfprotov5"
7+ tf5server "github.com/hashicorp/terraform-plugin-go/tfprotov5/server"
8+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
59 "github.com/hashicorp/terraform-plugin-sdk/v2/plugin"
10+ "google.golang.org/grpc"
611)
712
813func main () {
914 plugin .Serve (& plugin.ServeOpts {
10- ProviderFunc : kubernetes .Provider })
15+ GRPCProviderFunc : func () tfprotov5.ProviderServer {
16+ return schema .NewGRPCProviderServer (kubernetes .Provider ())
17+ },
18+ })
19+
20+ opts := & plugin.ServeOpts {}
21+ grpcProviderFunc := func () tfprotov5.ProviderServer {
22+ return schema .NewGRPCProviderServer (kubernetes .Provider ())
23+ }
24+
25+ // taken from github.com/hashicorp/terraform-plugin-sdk/v2@v2.3.0/plugin/serve.go
26+ // configured to allow larger message sizes than 4mb
27+ goplugin .Serve (& goplugin.ServeConfig {
28+ HandshakeConfig : plugin .Handshake ,
29+ VersionedPlugins : map [int ]goplugin.PluginSet {
30+ 5 : {
31+ plugin .ProviderPluginName : & tf5server.GRPCProviderPlugin {
32+ GRPCProvider : func () tfprotov5.ProviderServer {
33+ return grpcProviderFunc ()
34+ },
35+ },
36+ },
37+ },
38+ GRPCServer : func (opts []grpc.ServerOption ) * grpc.Server {
39+ return grpc .NewServer (append (opts ,
40+ grpc .MaxSendMsgSize (64 << 20 /* 64MB */ ),
41+ grpc .MaxRecvMsgSize (64 << 20 /* 64MB */ ))... )
42+ },
43+ Logger : opts .Logger ,
44+ Test : opts .TestConfig ,
45+ })
1146}
0 commit comments