From cb52983c84a3c482232786d7115cc3b37ae2cbcf Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Wed, 9 Jul 2014 10:04:14 -0700 Subject: [PATCH] terraform: MergeDiff removes removed attributes in diff --- terraform/state.go | 4 ++++ terraform/state_test.go | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/terraform/state.go b/terraform/state.go index 0d5a171a7..b7daf9ee1 100644 --- a/terraform/state.go +++ b/terraform/state.go @@ -247,6 +247,10 @@ func (s *ResourceState) MergeDiff(d *ResourceDiff) *ResourceState { } if d != nil { for k, diff := range d.Attributes { + if diff.NewRemoved { + delete(result.Attributes, k) + continue + } if diff.NewComputed { result.Attributes[k] = config.UnknownVariableValue continue diff --git a/terraform/state_test.go b/terraform/state_test.go index b6edcae40..8b4944387 100644 --- a/terraform/state_test.go +++ b/terraform/state_test.go @@ -12,7 +12,8 @@ func TestResourceState_MergeDiff(t *testing.T) { rs := ResourceState{ ID: "foo", Attributes: map[string]string{ - "foo": "bar", + "foo": "bar", + "port": "8000", }, } @@ -31,6 +32,9 @@ func TestResourceState_MergeDiff(t *testing.T) { New: "foo", NewComputed: true, }, + "port": &ResourceAttrDiff{ + NewRemoved: true, + }, }, }