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, + }, }, }