View Source
const (
	// The constants below are the names of the plugins that can be dispensed
	// from the plugin server.
	ProviderPluginName = "provider"


View Source
var Handshake = plugin.HandshakeConfig{

	MagicCookieKey:   "TF_PLUGIN_MAGIC_COOKIE",
	MagicCookieValue: "d602bf8f470bc67ca7faa0386276bbdd4330efaf76d1a219cb4d6991ca9872b2",

Handshake is the HandshakeConfig used to configure clients and servers.


func Debug

func Debug(ctx context.Context, providerAddr string, opts *ServeOpts) error

Debug starts a debug server and controls its lifecycle, printing the information needed for Terraform to connect to the provider to stdout. os.Interrupt will be captured and used to stop the server.

func Serve

func Serve(opts *ServeOpts)

Serve serves a plugin. This function never returns and should be the final function called in the main function of the plugin.


type GRPCProviderFunc

type GRPCProviderFunc func() tfprotov5.ProviderServer

type ProviderFunc

type ProviderFunc func() *schema.Provider

type ReattachConfig

type ReattachConfig struct {
	Protocol string
	Pid      int
	Test     bool
	Addr     ReattachConfigAddr

ReattachConfig holds the information Terraform needs to be able to attach itself to a provider process, so it can drive the process.

func DebugServe

func DebugServe(ctx context.Context, opts *ServeOpts) (ReattachConfig, <-chan struct{}, error)

DebugServe starts a plugin server in debug mode; this should only be used when the provider will manage its own lifecycle. It is not recommended for normal usage; Serve is the correct function for that.

type ReattachConfigAddr

type ReattachConfigAddr struct {
	Network string
	String  string

ReattachConfigAddr is a JSON-encoding friendly version of net.Addr.

type ServeOpts

type ServeOpts struct {
	ProviderFunc ProviderFunc

	// Wrapped versions of the above plugins will automatically shimmed and
	// added to the GRPC functions when possible.
	GRPCProviderFunc GRPCProviderFunc

	// Logger is the logger that go-plugin will use.
	Logger hclog.Logger

	// TestConfig should only be set when the provider is being tested; it
	// will opt out of go-plugin's lifecycle management and other features,
	// and will use the supplied configuration options to control the
	// plugin's lifecycle and communicate connection information. See the
	// go-plugin GoDoc for more information.
	TestConfig *plugin.ServeTestConfig

	// Set NoLogOutputOverride to not override the log output with an hclog
	// adapter. This should only be used when running the plugin in
	// acceptance tests.
	NoLogOutputOverride bool

ServeOpts are the configurations to serve a plugin.

Source Files