import (
"log"
- "github.com/hashicorp/terraform/config/module"
+ "github.com/hashicorp/terraform/configs"
"github.com/hashicorp/terraform/dag"
)
// aren't changing since there is no downside: the state will be available
// even if the dependent items aren't changing.
type OutputTransformer struct {
- Module *module.Tree
+ Config *configs.Config
}
func (t *OutputTransformer) Transform(g *Graph) error {
- return t.transform(g, t.Module)
+ return t.transform(g, t.Config)
}
-func (t *OutputTransformer) transform(g *Graph, m *module.Tree) error {
- // If no config, no outputs
- if m == nil {
+func (t *OutputTransformer) transform(g *Graph, c *configs.Config) error {
+ // If we have no config then there can be no outputs.
+ if c == nil {
return nil
}
// Transform all the children. We must do this first because
// we can reference module outputs and they must show up in the
// reference map.
- for _, c := range m.Children() {
- if err := t.transform(g, c); err != nil {
+ for _, cc := range c.Children {
+ if err := t.transform(g, cc); err != nil {
return err
}
}
- // If we have no outputs, we're done!
- os := m.Config().Outputs
- if len(os) == 0 {
- return nil
- }
+ // 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()
- // Add all outputs here
- for _, o := range os {
+ for _, o := range c.Module.Outputs {
+ addr := path.OutputValue(o.Name)
node := &NodeApplyableOutput{
- PathValue: normalizeModulePath(m.Path()),
- Config: o,
+ Addr: addr,
+ Config: o,
}
-
- // Add it!
g.Add(node)
}
// create the destroy node for this output
node := &NodeDestroyableOutput{
- PathValue: output.PathValue,
- Config: output.Config,
+ Addr: output.Addr,
+ Config: output.Config,
}
log.Printf("[TRACE] creating %s", node.Name())