github.com/skyscape-cloud-services/terraform@v0.9.2-0.20170609144644-7ece028a1747/terraform/node_resource_plan_destroy.go (about) 1 package terraform 2 3 // NodePlanDestroyableResource represents a resource that is "applyable": 4 // it is ready to be applied and is represented by a diff. 5 type NodePlanDestroyableResource struct { 6 *NodeAbstractResource 7 } 8 9 // GraphNodeDestroyer 10 func (n *NodePlanDestroyableResource) DestroyAddr() *ResourceAddress { 11 return n.Addr 12 } 13 14 // GraphNodeEvalable 15 func (n *NodePlanDestroyableResource) EvalTree() EvalNode { 16 addr := n.NodeAbstractResource.Addr 17 18 // stateId is the ID to put into the state 19 stateId := addr.stateId() 20 21 // Build the instance info. More of this will be populated during eval 22 info := &InstanceInfo{ 23 Id: stateId, 24 Type: addr.Type, 25 } 26 27 // Declare a bunch of variables that are used for state during 28 // evaluation. Most of this are written to by-address below. 29 var diff *InstanceDiff 30 var state *InstanceState 31 32 return &EvalSequence{ 33 Nodes: []EvalNode{ 34 &EvalReadState{ 35 Name: stateId, 36 Output: &state, 37 }, 38 &EvalDiffDestroy{ 39 Info: info, 40 State: &state, 41 Output: &diff, 42 }, 43 &EvalCheckPreventDestroy{ 44 Resource: n.Config, 45 Diff: &diff, 46 }, 47 &EvalWriteDiff{ 48 Name: stateId, 49 Diff: &diff, 50 }, 51 }, 52 } 53 }