opentofu/provisioners/provisioner.go
James Bardin c39e9e107f add Close methods to the plugin interfaces
Close was previously an optional interface, because it's only applicable
on the client side but the types were shared accross all packages. Since
all plugins will now implement Close, it no longer needs to be optional.
2018-10-16 19:11:09 -07:00

83 lines
2.7 KiB
Go

package provisioners
import (
"github.com/hashicorp/terraform/configs/configschema"
"github.com/hashicorp/terraform/tfdiags"
"github.com/zclconf/go-cty/cty"
)
// Interface is the set of methods required for a resource provisioner plugin.
type Interface interface {
// GetSchema returns the schema for the provisioner configuration.
GetSchema() GetSchemaResponse
// ValidateProvisionerConfig allows the provisioner to validate the
// configuration values.
ValidateProvisionerConfig(ValidateProvisionerConfigRequest) ValidateProvisionerConfigResponse
// ProvisionResource runs the provisioner with provided configuration.
// ProvisionResource blocks until the execution is complete.
// If the returned diagnostics contain any errors, the resource will be
// left in a tainted state.
ProvisionResource(ProvisionResourceRequest) ProvisionResourceResponse
// Stop is called to interrupt the provisioner.
//
// Stop should not block waiting for in-flight actions to complete. It
// should take any action it wants and return immediately acknowledging it
// has received the stop request. Terraform will not make any further API
// calls to the provisioner after Stop is called.
//
// The error returned, if non-nil, is assumed to mean that signaling the
// stop somehow failed and that the user should expect potentially waiting
// a longer period of time.
Stop() error
// Close shuts down the plugin process if applicable.
Close() error
}
type GetSchemaResponse struct {
// Provisioner contains the schema for this provisioner.
Provisioner *configschema.Block
// Diagnostics contains any warnings or errors from the method call.
Diagnostics tfdiags.Diagnostics
}
// UIOutput provides the Output method for resource provisioner
// plugins to write any output to the UI.
//
// Provisioners may call the Output method multiple times while Apply is in
// progress. It is invalid to call Output after Apply returns.
type UIOutput interface {
Output(string)
}
type ValidateProvisionerConfigRequest struct {
// Config is the complete configuration to be used for the provisioner.
Config cty.Value
}
type ValidateProvisionerConfigResponse struct {
// Diagnostics contains any warnings or errors from the method call.
Diagnostics tfdiags.Diagnostics
}
type ProvisionResourceRequest struct {
// Config is the complete provisioner configuration.
Config cty.Value
// Connection contains any information required to access the resource
// instance.
Connection cty.Value
// UIOutput is used to return output during the Apply operation.
UIOutput UIOutput
}
type ProvisionResourceResponse struct {
// Diagnostics contains any warnings or errors from the method call.
Diagnostics tfdiags.Diagnostics
}