1package terraform 2 3import ( 4 "log" 5 6 "github.com/hashicorp/terraform/configs" 7 "github.com/hashicorp/terraform/states" 8) 9 10// RemovedModuleTransformer implements GraphTransformer to add nodes indicating 11// when a module was removed from the configuration. 12type RemovedModuleTransformer struct { 13 Config *configs.Config // root node in the config tree 14 State *states.State 15} 16 17func (t *RemovedModuleTransformer) Transform(g *Graph) error { 18 // nothing to remove if there's no state! 19 if t.State == nil { 20 return nil 21 } 22 23 for _, m := range t.State.Modules { 24 cc := t.Config.DescendentForInstance(m.Addr) 25 if cc != nil { 26 continue 27 } 28 29 log.Printf("[DEBUG] %s is no longer in configuration\n", m.Addr) 30 g.Add(&NodeModuleRemoved{Addr: m.Addr}) 31 } 32 return nil 33} 34