From 7188d5cbfeab6fd40fd05280a7909c680f4b8cee Mon Sep 17 00:00:00 2001 From: James Bardin Date: Tue, 14 Aug 2018 16:39:30 -0400 Subject: [PATCH] add grpc shims to helper/plugin Add shim functions to automatically wrap plugins in the new GRPC implementations. --- helper/plugin/grpc_provider.go | 14 ++++++++++++++ helper/plugin/grpc_provisioner.go | 13 +++++++++++++ 2 files changed, 27 insertions(+) diff --git a/helper/plugin/grpc_provider.go b/helper/plugin/grpc_provider.go index de194843e..fd08b3910 100644 --- a/helper/plugin/grpc_provider.go +++ b/helper/plugin/grpc_provider.go @@ -16,6 +16,20 @@ import ( "github.com/zclconf/go-cty/cty/msgpack" ) +// NewGRPCProviderServerShim wraps a terraform.ResourceProvider in a +// proto.ProviderServer implementation. If the provided provider is not a +// *schema.Provider, this will return nil, +func NewGRPCProviderServerShim(p terraform.ResourceProvider) *GRPCProviderServer { + sp, ok := p.(*schema.Provider) + if !ok { + return nil + } + + return &GRPCProviderServer{ + provider: sp, + } +} + // GRPCProviderServer handles the server, or plugin side of the rpc connection. type GRPCProviderServer struct { provider *schema.Provider diff --git a/helper/plugin/grpc_provisioner.go b/helper/plugin/grpc_provisioner.go index b3f07673e..f9036240b 100644 --- a/helper/plugin/grpc_provisioner.go +++ b/helper/plugin/grpc_provisioner.go @@ -12,6 +12,19 @@ import ( context "golang.org/x/net/context" ) +// NewGRPCProvisionerServerShim wraps a terraform.ResourceProvisioner in a +// proto.ProvisionerServer implementation. If the provided provisioner is not a +// *schema.Provisioner, this will return nil, +func NewGRPCProvisionerServerShim(p terraform.ResourceProvisioner) *GRPCProvisionerServer { + sp, ok := p.(*schema.Provisioner) + if !ok { + return nil + } + return &GRPCProvisionerServer{ + provisioner: sp, + } +} + type GRPCProvisionerServer struct { provisioner *schema.Provisioner }