| package provisioners |
| |
| import ( |
| "github.com/hashicorp/terraform/internal/configs/configschema" |
| "github.com/hashicorp/terraform/internal/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 |
| } |