import (
"fmt"
+
+ "github.com/hashicorp/terraform/addrs"
)
// NodeOutputOrphan represents an output that is an orphan.
type NodeOutputOrphan struct {
- OutputName string
- PathValue []string
+ Addr addrs.AbsOutputValue
}
+var (
+ _ GraphNodeSubPath = (*NodeOutputOrphan)(nil)
+ _ GraphNodeReferenceable = (*NodeOutputOrphan)(nil)
+ _ GraphNodeReferenceOutside = (*NodeOutputOrphan)(nil)
+ _ GraphNodeEvalable = (*NodeOutputOrphan)(nil)
+)
+
func (n *NodeOutputOrphan) Name() string {
- result := fmt.Sprintf("output.%s (orphan)", n.OutputName)
- if len(n.PathValue) > 1 {
- result = fmt.Sprintf("%s.%s", modulePrefixStr(n.PathValue), result)
- }
+ return fmt.Sprintf("%s (orphan)", n.Addr.String())
+}
- return result
+// GraphNodeReferenceOutside implementation
+func (n *NodeOutputOrphan) ReferenceOutside() (selfPath, referencePath addrs.ModuleInstance) {
+ return referenceOutsideForOutput(n.Addr)
}
// GraphNodeReferenceable
-func (n *NodeOutputOrphan) ReferenceableName() []string {
- return []string{"output." + n.OutputName}
+func (n *NodeOutputOrphan) ReferenceableAddrs() []addrs.Referenceable {
+ return referenceableAddrsForOutput(n.Addr)
}
// GraphNodeSubPath
-func (n *NodeOutputOrphan) Path() []string {
- return n.PathValue
+func (n *NodeOutputOrphan) Path() addrs.ModuleInstance {
+ return n.Addr.Module
}
// GraphNodeEvalable
return &EvalOpFilter{
Ops: []walkOperation{walkRefresh, walkApply, walkDestroy},
Node: &EvalDeleteOutput{
- Name: n.OutputName,
+ Addr: n.Addr.OutputValue,
},
}
}