]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blob - vendor/github.com/hashicorp/terraform/terraform/eval_provisioner.go
Initial transfer of provider code
[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
7 // EvalInitProvisioner is an EvalNode implementation that initializes a provisioner
8 // and returns nothing. The provisioner can be retrieved again with the
9 // EvalGetProvisioner node.
10 type EvalInitProvisioner struct {
11 Name string
12 }
13
14 func (n *EvalInitProvisioner) Eval(ctx EvalContext) (interface{}, error) {
15 return ctx.InitProvisioner(n.Name)
16 }
17
18 // EvalCloseProvisioner is an EvalNode implementation that closes provisioner
19 // connections that aren't needed anymore.
20 type EvalCloseProvisioner struct {
21 Name string
22 }
23
24 func (n *EvalCloseProvisioner) Eval(ctx EvalContext) (interface{}, error) {
25 ctx.CloseProvisioner(n.Name)
26 return nil, nil
27 }
28
29 // EvalGetProvisioner is an EvalNode implementation that retrieves an already
30 // initialized provisioner instance for the given name.
31 type EvalGetProvisioner struct {
32 Name string
33 Output *ResourceProvisioner
34 }
35
36 func (n *EvalGetProvisioner) Eval(ctx EvalContext) (interface{}, error) {
37 result := ctx.Provisioner(n.Name)
38 if result == nil {
39 return nil, fmt.Errorf("provisioner %s not initialized", n.Name)
40 }
41
42 if n.Output != nil {
43 *n.Output = result
44 }
45
46 return result, nil
47 }