6 "github.com/hashicorp/terraform/configs/configschema"
7 "github.com/hashicorp/terraform/provisioners"
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 {
17 func (n *EvalInitProvisioner) Eval(ctx EvalContext) (interface{}, error) {
18 return ctx.InitProvisioner(n.Name)
21 // EvalCloseProvisioner is an EvalNode implementation that closes provisioner
22 // connections that aren't needed anymore.
23 type EvalCloseProvisioner struct {
27 func (n *EvalCloseProvisioner) Eval(ctx EvalContext) (interface{}, error) {
28 ctx.CloseProvisioner(n.Name)
32 // EvalGetProvisioner is an EvalNode implementation that retrieves an already
33 // initialized provisioner instance for the given name.
34 type EvalGetProvisioner struct {
36 Output *provisioners.Interface
37 Schema **configschema.Block
40 func (n *EvalGetProvisioner) Eval(ctx EvalContext) (interface{}, error) {
41 result := ctx.Provisioner(n.Name)
43 return nil, fmt.Errorf("provisioner %s not initialized", n.Name)
51 *n.Schema = ctx.ProvisionerSchema(n.Name)