mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-30 10:47:14 -06:00
479c6b2466
The "config" package is no longer used and will be removed as part of the 0.12 release cleanup. Since configschema is part of the "new world" of configuration modelling, it makes more sense for it to live as a subdirectory of the newer "configs" package.
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package terraform
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/hashicorp/terraform/configs/configschema"
|
|
)
|
|
|
|
// EvalInitProvisioner is an EvalNode implementation that initializes a provisioner
|
|
// and returns nothing. The provisioner can be retrieved again with the
|
|
// EvalGetProvisioner node.
|
|
type EvalInitProvisioner struct {
|
|
Name string
|
|
}
|
|
|
|
func (n *EvalInitProvisioner) Eval(ctx EvalContext) (interface{}, error) {
|
|
return ctx.InitProvisioner(n.Name)
|
|
}
|
|
|
|
// EvalCloseProvisioner is an EvalNode implementation that closes provisioner
|
|
// connections that aren't needed anymore.
|
|
type EvalCloseProvisioner struct {
|
|
Name string
|
|
}
|
|
|
|
func (n *EvalCloseProvisioner) Eval(ctx EvalContext) (interface{}, error) {
|
|
ctx.CloseProvisioner(n.Name)
|
|
return nil, nil
|
|
}
|
|
|
|
// EvalGetProvisioner is an EvalNode implementation that retrieves an already
|
|
// initialized provisioner instance for the given name.
|
|
type EvalGetProvisioner struct {
|
|
Name string
|
|
Output *ResourceProvisioner
|
|
Schema **configschema.Block
|
|
}
|
|
|
|
func (n *EvalGetProvisioner) Eval(ctx EvalContext) (interface{}, error) {
|
|
result := ctx.Provisioner(n.Name)
|
|
if result == nil {
|
|
return nil, fmt.Errorf("provisioner %s not initialized", n.Name)
|
|
}
|
|
|
|
if n.Output != nil {
|
|
*n.Output = result
|
|
}
|
|
|
|
if n.Schema != nil {
|
|
*n.Schema = ctx.ProvisionerSchema(n.Name)
|
|
}
|
|
|
|
return result, nil
|
|
}
|