diff --git a/terraform/graph.go b/terraform/graph.go index f375b1f4b..9e766d423 100644 --- a/terraform/graph.go +++ b/terraform/graph.go @@ -557,6 +557,9 @@ func graphAddDiff(g *depgraph.Graph, d *ModuleDiff) error { Target: newN, }) + // Set the CreateBeforeDestroy flag on the old noun + rn.Resource.Flags |= FlagCreateBeforeDestroy + } else { dep := &depgraph.Dependency{ Name: newN.Name, diff --git a/terraform/graph_test.go b/terraform/graph_test.go index 710fb3417..d52b3ea18 100644 --- a/terraform/graph_test.go +++ b/terraform/graph_test.go @@ -704,6 +704,12 @@ func TestGraphAddDiff_createBeforeDestroy(t *testing.T) { t.Fatalf("bad:\n\n%s\n\nexpected:\n\n%s", actual, expected) } + // Verify the flag is set + r := g.Noun("aws_instance.bar") + if r.Meta.(*GraphNodeResource).Resource.Flags&FlagCreateBeforeDestroy == 0 { + t.Fatalf("missing FlagCreateBeforeDestroy") + } + // Verify that our original structure has not been modified diffHash2 := checksumStruct(t, diff) if diffHash != diffHash2 { diff --git a/terraform/resource.go b/terraform/resource.go index 0df27524a..cd1e86bb1 100644 --- a/terraform/resource.go +++ b/terraform/resource.go @@ -47,6 +47,7 @@ const ( FlagTainted FlagOrphan FlagHasTainted + FlagCreateBeforeDestroy ) // InstanceInfo is used to hold information about the instance and/or