github.com/pulumi/terraform@v1.4.0/pkg/terraform/transform_removed_modules.go (about)

     1  package terraform
     2  
     3  import (
     4  	"log"
     5  
     6  	"github.com/pulumi/terraform/pkg/addrs"
     7  	"github.com/pulumi/terraform/pkg/configs"
     8  	"github.com/pulumi/terraform/pkg/states"
     9  )
    10  
    11  // RemovedModuleTransformer implements GraphTransformer to add nodes indicating
    12  // when a module was removed from the configuration.
    13  type RemovedModuleTransformer struct {
    14  	Config *configs.Config // root node in the config tree
    15  	State  *states.State
    16  }
    17  
    18  func (t *RemovedModuleTransformer) Transform(g *Graph) error {
    19  	// nothing to remove if there's no state!
    20  	if t.State == nil {
    21  		return nil
    22  	}
    23  
    24  	removed := map[string]addrs.Module{}
    25  
    26  	for _, m := range t.State.Modules {
    27  		cc := t.Config.DescendentForInstance(m.Addr)
    28  		if cc != nil {
    29  			continue
    30  		}
    31  		removed[m.Addr.Module().String()] = m.Addr.Module()
    32  		log.Printf("[DEBUG] %s is no longer in configuration\n", m.Addr)
    33  	}
    34  
    35  	// add closers to collect any module instances we're removing
    36  	for _, modAddr := range removed {
    37  		closer := &nodeCloseModule{
    38  			Addr: modAddr,
    39  		}
    40  		g.Add(closer)
    41  	}
    42  
    43  	return nil
    44  }