]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blobdiff - vendor/github.com/hashicorp/terraform/terraform/resource_provisioner.go
Initial transfer of provider code
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / terraform / terraform / resource_provisioner.go
diff --git a/vendor/github.com/hashicorp/terraform/terraform/resource_provisioner.go b/vendor/github.com/hashicorp/terraform/terraform/resource_provisioner.go
new file mode 100644 (file)
index 0000000..361ec1e
--- /dev/null
@@ -0,0 +1,54 @@
+package terraform
+
+// ResourceProvisioner is an interface that must be implemented by any
+// resource provisioner: the thing that initializes resources in
+// a Terraform configuration.
+type ResourceProvisioner interface {
+       // Validate is called once at the beginning with the raw
+       // configuration (no interpolation done) and can return a list of warnings
+       // and/or errors.
+       //
+       // This is called once per resource.
+       //
+       // This should not assume any of the values in the resource configuration
+       // are valid since it is possible they have to be interpolated still.
+       // The primary use case of this call is to check that the required keys
+       // are set and that the general structure is correct.
+       Validate(*ResourceConfig) ([]string, []error)
+
+       // Apply runs the provisioner on a specific resource and returns the new
+       // resource state along with an error. Instead of a diff, the ResourceConfig
+       // is provided since provisioners only run after a resource has been
+       // newly created.
+       Apply(UIOutput, *InstanceState, *ResourceConfig) error
+
+       // Stop is called when the provisioner should halt any in-flight actions.
+       //
+       // This can be used to make a nicer Ctrl-C experience for Terraform.
+       // Even if this isn't implemented to do anything (just returns nil),
+       // Terraform will still cleanly stop after the currently executing
+       // graph node is complete. However, this API can be used to make more
+       // efficient halts.
+       //
+       // Stop doesn't have to and shouldn't 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 core will
+       // automatically not make any further API calls to the provider soon
+       // after Stop is called (technically exactly once the currently executing
+       // graph nodes are complete).
+       //
+       // 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
+}
+
+// ResourceProvisionerCloser is an interface that provisioners that can close
+// connections that aren't needed anymore must implement.
+type ResourceProvisionerCloser interface {
+       Close() error
+}
+
+// ResourceProvisionerFactory is a function type that creates a new instance
+// of a resource provisioner.
+type ResourceProvisionerFactory func() (ResourceProvisioner, error)