@@ -34,6 +34,7 @@ func (t *TaintedTransformer) Transform(g *Graph) error {
3434 g .ConnectFrom (k , g .Add (& graphNodeTaintedResource {
3535 Index : i ,
3636 ResourceName : k ,
37+ ResourceType : rs .Type ,
3738 }))
3839 }
3940 }
@@ -47,6 +48,7 @@ func (t *TaintedTransformer) Transform(g *Graph) error {
4748type graphNodeTaintedResource struct {
4849 Index int
4950 ResourceName string
51+ ResourceType string
5052}
5153
5254func (n * graphNodeTaintedResource ) DependentOn () []string {
@@ -60,3 +62,35 @@ func (n *graphNodeTaintedResource) Name() string {
6062func (n * graphNodeTaintedResource ) ProvidedBy () []string {
6163 return []string {resourceProvider (n .ResourceName )}
6264}
65+
66+ // GraphNodeEvalable impl.
67+ func (n * graphNodeTaintedResource ) EvalTree () EvalNode {
68+ seq := & EvalSequence {Nodes : make ([]EvalNode , 0 , 5 )}
69+
70+ // Build instance info
71+ info := & InstanceInfo {Id : n .ResourceName , Type : n .ResourceType }
72+ seq .Nodes = append (seq .Nodes , & EvalInstanceInfo {Info : info })
73+
74+ // Refresh the resource
75+ seq .Nodes = append (seq .Nodes , & EvalOpFilter {
76+ Ops : []walkOperation {walkRefresh },
77+ Node : & EvalWriteState {
78+ Name : n .ResourceName ,
79+ ResourceType : n .ResourceType ,
80+ Dependencies : n .DependentOn (),
81+ Tainted : true ,
82+ TaintedIndex : n .Index ,
83+ State : & EvalRefresh {
84+ Info : info ,
85+ Provider : & EvalGetProvider {Name : n .ProvidedBy ()[0 ]},
86+ State : & EvalReadState {
87+ Name : n .ResourceName ,
88+ Tainted : true ,
89+ TaintedIndex : n .Index ,
90+ },
91+ },
92+ },
93+ })
94+
95+ return seq
96+ }
0 commit comments