49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package terraform
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/hashicorp/terraform/addrs"
|
|
)
|
|
|
|
// NodeOutputOrphan represents an output that is an orphan.
|
|
type NodeOutputOrphan struct {
|
|
Addr addrs.AbsOutputValue
|
|
}
|
|
|
|
var (
|
|
_ GraphNodeSubPath = (*NodeOutputOrphan)(nil)
|
|
_ GraphNodeReferenceable = (*NodeOutputOrphan)(nil)
|
|
_ GraphNodeReferenceOutside = (*NodeOutputOrphan)(nil)
|
|
_ GraphNodeEvalable = (*NodeOutputOrphan)(nil)
|
|
)
|
|
|
|
func (n *NodeOutputOrphan) Name() string {
|
|
return fmt.Sprintf("%s (orphan)", n.Addr.String())
|
|
}
|
|
|
|
// GraphNodeReferenceOutside implementation
|
|
func (n *NodeOutputOrphan) ReferenceOutside() (selfPath, referencePath addrs.ModuleInstance) {
|
|
return referenceOutsideForOutput(n.Addr)
|
|
}
|
|
|
|
// GraphNodeReferenceable
|
|
func (n *NodeOutputOrphan) ReferenceableAddrs() []addrs.Referenceable {
|
|
return referenceableAddrsForOutput(n.Addr)
|
|
}
|
|
|
|
// GraphNodeSubPath
|
|
func (n *NodeOutputOrphan) Path() addrs.ModuleInstance {
|
|
return n.Addr.Module
|
|
}
|
|
|
|
// GraphNodeEvalable
|
|
func (n *NodeOutputOrphan) EvalTree() EvalNode {
|
|
return &EvalOpFilter{
|
|
Ops: []walkOperation{walkRefresh, walkApply, walkDestroy},
|
|
Node: &EvalDeleteOutput{
|
|
Addr: n.Addr.OutputValue,
|
|
},
|
|
}
|
|
}
|