]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blame - vendor/github.com/hashicorp/terraform/terraform/eval_provisioner.go
Upgrade to 0.12
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / terraform / terraform / eval_provisioner.go
CommitLineData
bae9f6d2
JC
1package terraform
2
3import (
4 "fmt"
107c1cdb
ND
5
6 "github.com/hashicorp/terraform/configs/configschema"
7 "github.com/hashicorp/terraform/provisioners"
bae9f6d2
JC
8)
9
10// EvalInitProvisioner is an EvalNode implementation that initializes a provisioner
11// and returns nothing. The provisioner can be retrieved again with the
12// EvalGetProvisioner node.
13type EvalInitProvisioner struct {
14 Name string
15}
16
17func (n *EvalInitProvisioner) Eval(ctx EvalContext) (interface{}, error) {
18 return ctx.InitProvisioner(n.Name)
19}
20
21// EvalCloseProvisioner is an EvalNode implementation that closes provisioner
22// connections that aren't needed anymore.
23type EvalCloseProvisioner struct {
24 Name string
25}
26
27func (n *EvalCloseProvisioner) Eval(ctx EvalContext) (interface{}, error) {
28 ctx.CloseProvisioner(n.Name)
29 return nil, nil
30}
31
32// EvalGetProvisioner is an EvalNode implementation that retrieves an already
33// initialized provisioner instance for the given name.
34type EvalGetProvisioner struct {
35 Name string
107c1cdb
ND
36 Output *provisioners.Interface
37 Schema **configschema.Block
bae9f6d2
JC
38}
39
40func (n *EvalGetProvisioner) Eval(ctx EvalContext) (interface{}, error) {
41 result := ctx.Provisioner(n.Name)
42 if result == nil {
43 return nil, fmt.Errorf("provisioner %s not initialized", n.Name)
44 }
45
46 if n.Output != nil {
47 *n.Output = result
48 }
49
107c1cdb
ND
50 if n.Schema != nil {
51 *n.Schema = ctx.ProvisionerSchema(n.Name)
52 }
53
bae9f6d2
JC
54 return result, nil
55}