File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 55 "fmt"
66
77 "github.com/hashicorp/terraform/depgraph"
8+ "github.com/hashicorp/terraform/digraph"
89)
910
1011// GraphDot returns the dot formatting of a visual representation of
@@ -141,6 +142,49 @@ func graphDotAddResources(buf *bytes.Buffer, g *depgraph.Graph) {
141142 buf .WriteString (edgeBuf .String ())
142143 buf .WriteString ("\n " )
143144 }
145+
146+ // Handle the meta resources
147+ edgeBuf .Reset ()
148+ for _ , n := range g .Nouns {
149+ _ , ok := n .Meta .(* GraphNodeResourceMeta )
150+ if ! ok {
151+ continue
152+ }
153+
154+ // Determine which edges to add
155+ var edges []digraph.Edge
156+ if hasDiff {
157+ for _ , e := range n .Edges () {
158+ rn , ok := e .Tail ().(* depgraph.Noun ).Meta .(* GraphNodeResource )
159+ if ! ok {
160+ continue
161+ }
162+ if rn .Resource .Diff == nil || rn .Resource .Diff .Empty () {
163+ continue
164+ }
165+ edges = append (edges , e )
166+ }
167+ } else {
168+ edges = n .Edges ()
169+ }
170+
171+ // Do not draw if we have no edges
172+ if len (edges ) == 0 {
173+ continue
174+ }
175+
176+ for _ , e := range edges {
177+ target := e .Tail ()
178+ edgeBuf .WriteString (fmt .Sprintf (
179+ "\t \" %s\" -> \" %s\" ;\n " ,
180+ n ,
181+ target ))
182+ }
183+ }
184+ if edgeBuf .Len () > 0 {
185+ buf .WriteString (edgeBuf .String ())
186+ buf .WriteString ("\n " )
187+ }
144188}
145189
146190func graphDotAddResourceProviders (buf * bytes.Buffer , g * depgraph.Graph ) {
You can’t perform that action at this time.
0 commit comments