plugin

package
v1.15.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 8, 2020 License: MPL-2.0 Imports: 21 Imported by: 475

Documentation

Index

Constants

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

	// DefaultProtocolVersion is the protocol version assumed for legacy clients that don't specify
	// a particular version during their handshake. This is the version used when Terraform 0.10
	// and 0.11 launch plugins that were built with support for both versions 4 and 5, and must
	// stay unchanged at 4 until we intentionally build plugins that are not compatible with 0.10 and
	// 0.11.
	DefaultProtocolVersion = 4
)

Variables

View Source
var Handshake = plugin.HandshakeConfig{

	ProtocolVersion: DefaultProtocolVersion,

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

Handshake is the HandshakeConfig used to configure clients and servers.

View Source
var VersionedPlugins = map[int]plugin.PluginSet{
	5: {
		"provider":    &GRPCProviderPlugin{},
		"provisioner": &GRPCProvisionerPlugin{},
	},
}

Functions

func Client

func Client(m discovery.PluginMeta) *plugin.Client

Client returns a plugin client for the plugin described by the given metadata.

func ClientConfig

func ClientConfig(m discovery.PluginMeta) *plugin.ClientConfig

ClientConfig returns a configuration object that can be used to instantiate a client for the plugin described by the given metadata.

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.

Types

type GRPCProvider

type GRPCProvider struct {
	// PluginClient provides a reference to the plugin.Client which controls the plugin process.
	// This allows the GRPCProvider a way to shutdown the plugin process.
	PluginClient *plugin.Client

	// TestServer contains a grpc.Server to close when the GRPCProvider is being
	// used in an end to end test of a provider.
	TestServer *grpc.Server
	// contains filtered or unexported fields
}

GRPCProvider handles the client, or core side of the plugin rpc connection. The GRPCProvider methods are mostly a translation layer between the terraform provioders types and the grpc proto types, directly converting between the two.

func (*GRPCProvider) Close

func (p *GRPCProvider) Close() error

closing the grpc connection is final, and terraform will call it at the end of every phase.

func (*GRPCProvider) Configure

func (*GRPCProvider) GetSchema

func (p *GRPCProvider) GetSchema() (resp providers.GetSchemaResponse)

func (*GRPCProvider) PlanResourceChange

func (*GRPCProvider) ReadDataSource

func (*GRPCProvider) ReadResource

func (*GRPCProvider) Stop

func (p *GRPCProvider) Stop() error

type GRPCProviderFunc

type GRPCProviderFunc func() proto.ProviderServer

type GRPCProviderPlugin

type GRPCProviderPlugin struct {
	plugin.Plugin
	GRPCProvider func() proto.ProviderServer
}

GRPCProviderPlugin implements plugin.GRPCPlugin for the go-plugin package.

func (*GRPCProviderPlugin) GRPCClient

func (p *GRPCProviderPlugin) GRPCClient(ctx context.Context, broker *plugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error)

func (*GRPCProviderPlugin) GRPCServer

func (p *GRPCProviderPlugin) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) error

type GRPCProvisioner

type GRPCProvisioner struct {
	// PluginClient provides a reference to the plugin.Client which controls the plugin process.
	// This allows the GRPCProvider a way to shutdown the plugin process.
	PluginClient *plugin.Client
	// contains filtered or unexported fields
}

provisioners.Interface grpc implementation

func (*GRPCProvisioner) Close

func (p *GRPCProvisioner) Close() error

func (*GRPCProvisioner) GetSchema

func (p *GRPCProvisioner) GetSchema() (resp provisioners.GetSchemaResponse)

func (*GRPCProvisioner) Stop

func (p *GRPCProvisioner) Stop() error

type GRPCProvisionerPlugin

type GRPCProvisionerPlugin struct {
	plugin.Plugin
	GRPCProvisioner func() proto.ProvisionerServer
}

GRPCProvisionerPlugin is the plugin.GRPCPlugin implementation.

func (*GRPCProvisionerPlugin) GRPCClient

func (p *GRPCProvisionerPlugin) GRPCClient(ctx context.Context, broker *plugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error)

func (*GRPCProvisionerPlugin) GRPCServer

func (p *GRPCProvisionerPlugin) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) error

type ProviderFunc

type ProviderFunc func() terraform.ResourceProvider

type ResourceProvider

type ResourceProvider struct {
	Broker *plugin.MuxBroker
	Client *rpc.Client
}

ResourceProvider is an implementation of terraform.ResourceProvider that communicates over RPC.

func (*ResourceProvider) Close

func (p *ResourceProvider) Close() error

func (*ResourceProvider) Configure

func (*ResourceProvider) DataSources

func (p *ResourceProvider) DataSources() []terraform.DataSource

func (*ResourceProvider) GetSchema

func (*ResourceProvider) ImportState

func (p *ResourceProvider) ImportState(
	info *terraform.InstanceInfo,
	id string) ([]*terraform.InstanceState, error)

func (*ResourceProvider) Input

func (*ResourceProvider) ReadDataApply

func (*ResourceProvider) ReadDataDiff

func (*ResourceProvider) Refresh

func (*ResourceProvider) Resources

func (p *ResourceProvider) Resources() []terraform.ResourceType

func (*ResourceProvider) Stop

func (p *ResourceProvider) Stop() error

func (*ResourceProvider) Validate

func (p *ResourceProvider) Validate(c *terraform.ResourceConfig) ([]string, []error)

func (*ResourceProvider) ValidateDataSource

func (p *ResourceProvider) ValidateDataSource(
	t string, c *terraform.ResourceConfig) ([]string, []error)

func (*ResourceProvider) ValidateResource

func (p *ResourceProvider) ValidateResource(
	t string, c *terraform.ResourceConfig) ([]string, []error)

type ResourceProviderApplyArgs

type ResourceProviderApplyArgs struct {
	Info  *terraform.InstanceInfo
	State *terraform.InstanceState
	Diff  *terraform.InstanceDiff
}

type ResourceProviderApplyResponse

type ResourceProviderApplyResponse struct {
	State *terraform.InstanceState
	Error *plugin.BasicError
}

type ResourceProviderConfigureResponse

type ResourceProviderConfigureResponse struct {
	Error *plugin.BasicError
}

type ResourceProviderDiffArgs

type ResourceProviderDiffArgs struct {
	Info   *terraform.InstanceInfo
	State  *terraform.InstanceState
	Config *terraform.ResourceConfig
}

type ResourceProviderDiffResponse

type ResourceProviderDiffResponse struct {
	Diff  *terraform.InstanceDiff
	Error *plugin.BasicError
}

type ResourceProviderGetSchemaArgs

type ResourceProviderGetSchemaArgs struct {
	Req *terraform.ProviderSchemaRequest
}

type ResourceProviderGetSchemaResponse

type ResourceProviderGetSchemaResponse struct {
	Schema *terraform.ProviderSchema
	Error  *plugin.BasicError
}

type ResourceProviderImportStateArgs

type ResourceProviderImportStateArgs struct {
	Info *terraform.InstanceInfo
	Id   string
}

type ResourceProviderImportStateResponse

type ResourceProviderImportStateResponse struct {
	State []*terraform.InstanceState
	Error *plugin.BasicError
}

type ResourceProviderInputArgs

type ResourceProviderInputArgs struct {
	InputId uint32
	Config  *terraform.ResourceConfig
}

type ResourceProviderInputResponse

type ResourceProviderInputResponse struct {
	Config *terraform.ResourceConfig
	Error  *plugin.BasicError
}

type ResourceProviderPlugin

type ResourceProviderPlugin struct {
	ResourceProvider func() terraform.ResourceProvider
}

ResourceProviderPlugin is the plugin.Plugin implementation.

func (*ResourceProviderPlugin) Client

func (p *ResourceProviderPlugin) Client(
	b *plugin.MuxBroker, c *rpc.Client) (interface{}, error)

func (*ResourceProviderPlugin) Server

func (p *ResourceProviderPlugin) Server(b *plugin.MuxBroker) (interface{}, error)

type ResourceProviderReadDataApplyArgs

type ResourceProviderReadDataApplyArgs struct {
	Info *terraform.InstanceInfo
	Diff *terraform.InstanceDiff
}

type ResourceProviderReadDataApplyResponse

type ResourceProviderReadDataApplyResponse struct {
	State *terraform.InstanceState
	Error *plugin.BasicError
}

type ResourceProviderReadDataDiffArgs

type ResourceProviderReadDataDiffArgs struct {
	Info   *terraform.InstanceInfo
	Config *terraform.ResourceConfig
}

type ResourceProviderReadDataDiffResponse

type ResourceProviderReadDataDiffResponse struct {
	Diff  *terraform.InstanceDiff
	Error *plugin.BasicError
}

type ResourceProviderRefreshArgs

type ResourceProviderRefreshArgs struct {
	Info  *terraform.InstanceInfo
	State *terraform.InstanceState
}

type ResourceProviderRefreshResponse

type ResourceProviderRefreshResponse struct {
	State *terraform.InstanceState
	Error *plugin.BasicError
}

type ResourceProviderServer

type ResourceProviderServer struct {
	Broker   *plugin.MuxBroker
	Provider terraform.ResourceProvider
}

ResourceProviderServer is a net/rpc compatible structure for serving a ResourceProvider. This should not be used directly.

func (*ResourceProviderServer) Apply

func (*ResourceProviderServer) Configure

func (*ResourceProviderServer) DataSources

func (s *ResourceProviderServer) DataSources(
	nothing interface{},
	result *[]terraform.DataSource) error

func (*ResourceProviderServer) Diff

func (*ResourceProviderServer) GetSchema

func (*ResourceProviderServer) ImportState

func (*ResourceProviderServer) Input

func (*ResourceProviderServer) ReadDataApply

func (*ResourceProviderServer) ReadDataDiff

func (*ResourceProviderServer) Refresh

func (*ResourceProviderServer) Resources

func (s *ResourceProviderServer) Resources(
	nothing interface{},
	result *[]terraform.ResourceType) error

func (*ResourceProviderServer) Stop

func (s *ResourceProviderServer) Stop(
	_ interface{},
	reply *ResourceProviderStopResponse) error

func (*ResourceProviderServer) Validate

func (*ResourceProviderServer) ValidateDataSource

func (*ResourceProviderServer) ValidateResource

type ResourceProviderStopResponse

type ResourceProviderStopResponse struct {
	Error *plugin.BasicError
}

type ResourceProviderValidateArgs

type ResourceProviderValidateArgs struct {
	Config *terraform.ResourceConfig
}

type ResourceProviderValidateResourceArgs

type ResourceProviderValidateResourceArgs struct {
	Config *terraform.ResourceConfig
	Type   string
}

type ResourceProviderValidateResourceResponse

type ResourceProviderValidateResourceResponse struct {
	Warnings []string
	Errors   []*plugin.BasicError
}

type ResourceProviderValidateResponse

type ResourceProviderValidateResponse struct {
	Warnings []string
	Errors   []*plugin.BasicError
}

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
}

ServeOpts are the configurations to serve a plugin.

type UIInput

type UIInput struct {
	Client *rpc.Client
}

UIInput is an implementation of terraform.UIInput that communicates over RPC.

func (*UIInput) Input

func (i *UIInput) Input(ctx context.Context, opts *terraform.InputOpts) (string, error)

type UIInputInputResponse

type UIInputInputResponse struct {
	Value string
	Error *plugin.BasicError
}

type UIInputServer

type UIInputServer struct {
	UIInput terraform.UIInput
}

UIInputServer is a net/rpc compatible structure for serving a UIInputServer. This should not be used directly.

func (*UIInputServer) Input

func (s *UIInputServer) Input(
	opts *terraform.InputOpts,
	reply *UIInputInputResponse) error

type UIOutput

type UIOutput struct {
	Client *rpc.Client
}

UIOutput is an implementatin of terraform.UIOutput that communicates over RPC.

func (*UIOutput) Output

func (o *UIOutput) Output(v string)

type UIOutputServer

type UIOutputServer struct {
	UIOutput terraform.UIOutput
}

UIOutputServer is the RPC server for serving UIOutput.

func (*UIOutputServer) Output

func (s *UIOutputServer) Output(
	v string,
	reply *interface{}) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL