package terraform import ( "log" "github.com/hashicorp/terraform/internal/addrs" "github.com/hashicorp/terraform/internal/configs/configschema" "github.com/hashicorp/terraform/internal/dag" ) // ResourceCountTransformer is a GraphTransformer that expands the count // out for a specific resource. // // This assumes that the count is already interpolated. type ResourceCountTransformer struct { Concrete ConcreteResourceInstanceNodeFunc Schema *configschema.Block Addr addrs.ConfigResource InstanceAddrs []addrs.AbsResourceInstance } func (t *ResourceCountTransformer) Transform(g *Graph) error { for _, addr := range t.InstanceAddrs { abstract := NewNodeAbstractResourceInstance(addr) abstract.Schema = t.Schema var node dag.Vertex = abstract if f := t.Concrete; f != nil { node = f(abstract) } log.Printf("[TRACE] ResourceCountTransformer: adding %s as %T", addr, node) g.Add(node) } return nil }