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, }, } }