package terraform
import (
- "github.com/hashicorp/terraform/config/module"
+ "github.com/hashicorp/terraform/configs"
)
// LocalTransformer is a GraphTransformer that adds all the local values
// from the configuration to the graph.
type LocalTransformer struct {
- Module *module.Tree
+ Config *configs.Config
}
func (t *LocalTransformer) Transform(g *Graph) error {
- return t.transformModule(g, t.Module)
+ return t.transformModule(g, t.Config)
}
-func (t *LocalTransformer) transformModule(g *Graph, m *module.Tree) error {
- if m == nil {
+func (t *LocalTransformer) transformModule(g *Graph, c *configs.Config) error {
+ if c == nil {
// Can't have any locals if there's no config
return nil
}
- for _, local := range m.Config().Locals {
+ // Our addressing system distinguishes between modules and module instances,
+ // but we're not yet ready to make that distinction here (since we don't
+ // support "count"/"for_each" on modules) and so we just do a naive
+ // transform of the module path into a module instance path, assuming that
+ // no keys are in use. This should be removed when "count" and "for_each"
+ // are implemented for modules.
+ path := c.Path.UnkeyedInstanceShim()
+
+ for _, local := range c.Module.Locals {
+ addr := path.LocalValue(local.Name)
node := &NodeLocal{
- PathValue: normalizeModulePath(m.Path()),
- Config: local,
+ Addr: addr,
+ Config: local,
}
-
g.Add(node)
}
// Also populate locals for child modules
- for _, c := range m.Children() {
- if err := t.transformModule(g, c); err != nil {
+ for _, cc := range c.Children {
+ if err := t.transformModule(g, cc); err != nil {
return err
}
}