mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-27 01:11:10 -06:00
60 lines
1.2 KiB
Go
60 lines
1.2 KiB
Go
|
package terraform
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
)
|
||
|
|
||
|
// NodePlannableResourceOrphan represents a resource that is "applyable":
|
||
|
// it is ready to be applied and is represented by a diff.
|
||
|
type NodePlannableResourceOrphan struct {
|
||
|
*NodeAbstractResource
|
||
|
}
|
||
|
|
||
|
func (n *NodePlannableResourceOrphan) Name() string {
|
||
|
return n.NodeAbstractResource.Name() + " (orphan)"
|
||
|
}
|
||
|
|
||
|
// GraphNodeEvalable
|
||
|
func (n *NodePlannableResourceOrphan) EvalTree() EvalNode {
|
||
|
addr := n.NodeAbstractResource.Addr
|
||
|
|
||
|
// stateId is the ID to put into the state
|
||
|
stateId := addr.stateId()
|
||
|
if addr.Index > -1 {
|
||
|
stateId = fmt.Sprintf("%s.%d", stateId, addr.Index)
|
||
|
}
|
||
|
|
||
|
// Build the instance info. More of this will be populated during eval
|
||
|
info := &InstanceInfo{
|
||
|
Id: stateId,
|
||
|
Type: addr.Type,
|
||
|
}
|
||
|
|
||
|
// Declare a bunch of variables that are used for state during
|
||
|
// evaluation. Most of this are written to by-address below.
|
||
|
var diff *InstanceDiff
|
||
|
var state *InstanceState
|
||
|
|
||
|
return &EvalSequence{
|
||
|
Nodes: []EvalNode{
|
||
|
&EvalReadState{
|
||
|
Name: stateId,
|
||
|
Output: &state,
|
||
|
},
|
||
|
&EvalDiffDestroy{
|
||
|
Info: info,
|
||
|
State: &state,
|
||
|
Output: &diff,
|
||
|
},
|
||
|
&EvalCheckPreventDestroy{
|
||
|
Resource: n.Config,
|
||
|
Diff: &diff,
|
||
|
},
|
||
|
&EvalWriteDiff{
|
||
|
Name: stateId,
|
||
|
Diff: &diff,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
}
|