]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blob - 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
1 package terraform
2
3 import (
4 "fmt"
5
6 "github.com/hashicorp/terraform/configs/configschema"
7 "github.com/hashicorp/terraform/provisioners"
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.
13 type EvalInitProvisioner struct {
14 Name string
15 }
16
17 func (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.
23 type EvalCloseProvisioner struct {
24 Name string
25 }
26
27 func (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.
34 type EvalGetProvisioner struct {
35 Name string
36 Output *provisioners.Interface
37 Schema **configschema.Block
38 }
39
40 func (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
50 if n.Schema != nil {
51 *n.Schema = ctx.ProvisionerSchema(n.Name)
52 }
53
54 return result, nil
55 }