]>
Commit | Line | Data |
---|---|---|
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 | } |