terraform: flattening multi-level modules works

This commit is contained in:
Mitchell Hashimoto 2015-05-07 13:08:59 -07:00
parent caef7769ae
commit 7c3e355bb0
5 changed files with 48 additions and 0 deletions

View File

@ -136,6 +136,24 @@ func TestBuiltinGraphBuilder_cbdDepNonCbd_errorsWhenVerbose(t *testing.T) {
}
}
func TestBuiltinGraphBuilder_multiLevelModule(t *testing.T) {
b := &BuiltinGraphBuilder{
Root: testModule(t, "graph-builder-multi-level-module"),
Validate: true,
}
g, err := b.Build(RootModulePath)
if err != nil {
t.Fatalf("err: %s", err)
}
actual := strings.TrimSpace(g.String())
expected := strings.TrimSpace(testBuiltinGraphBuilderMultiLevelStr)
if actual != expected {
t.Fatalf("bad: %s", actual)
}
}
/*
TODO: This exposes a really bad bug we need to fix after we merge
the f-ast-branch. This bug still exists in master.
@ -213,3 +231,17 @@ module.consul (expanded)
provider.aws
provider.aws
`
const testBuiltinGraphBuilderMultiLevelStr = `
module.foo.module.bar.output.value
module.foo.module.bar.var.bar
module.foo.module.bar.plan-destroy
module.foo.module.bar.var.bar
module.foo.var.foo
module.foo.plan-destroy
module.foo.var.foo
root
module.foo.module.bar.output.value
module.foo.module.bar.plan-destroy
module.foo.plan-destroy
`

View File

@ -0,0 +1,2 @@
variable "bar" {}
output "value" { value = "${var.bar}" }

View File

@ -0,0 +1,6 @@
module "bar" {
source = "./bar"
bar = "${var.foo}"
}
variable "foo" {}

View File

@ -0,0 +1,4 @@
module "foo" {
source = "./foo"
foo = "bar"
}

View File

@ -53,6 +53,10 @@ func (t *FlattenTransformer) Transform(g *Graph) error {
// Go through the subgraph and flatten all the nodes
for _, sv := range subgraph.Vertices() {
if _, ok := sv.(GraphNodeSubPath); ok {
continue
}
fn, ok := sv.(GraphNodeFlattenable)
if !ok {
return fmt.Errorf(