From b728e55861ae6521de20d477b9c5423ea32c95e3 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Wed, 4 May 2016 13:37:35 -0700 Subject: [PATCH] helper/schema: Resource.Data should set latest schema version --- helper/schema/resource.go | 5 +++++ helper/schema/resource_data.go | 2 ++ helper/schema/resource_test.go | 10 ++++++++++ 3 files changed, 17 insertions(+) diff --git a/helper/schema/resource.go b/helper/schema/resource.go index 76d08301d..5e917d144 100644 --- a/helper/schema/resource.go +++ b/helper/schema/resource.go @@ -295,6 +295,11 @@ func (r *Resource) Data(s *terraform.InstanceState) *ResourceData { panic(err) } + // Set the schema version to latest by default + result.meta = map[string]string{ + "schema_version": strconv.Itoa(r.SchemaVersion), + } + return result } diff --git a/helper/schema/resource_data.go b/helper/schema/resource_data.go index 344444e3f..36599aebb 100644 --- a/helper/schema/resource_data.go +++ b/helper/schema/resource_data.go @@ -22,6 +22,7 @@ type ResourceData struct { config *terraform.ResourceConfig state *terraform.InstanceState diff *terraform.InstanceDiff + meta map[string]string // Don't set multiReader *MultiLevelFieldReader @@ -233,6 +234,7 @@ func (d *ResourceData) SetType(t string) { func (d *ResourceData) State() *terraform.InstanceState { var result terraform.InstanceState result.ID = d.Id() + result.Meta = d.meta // If we have no ID, then this resource doesn't exist and we just // return nil. diff --git a/helper/schema/resource_test.go b/helper/schema/resource_test.go index 820c22bd7..6a646d410 100644 --- a/helper/schema/resource_test.go +++ b/helper/schema/resource_test.go @@ -873,6 +873,16 @@ func TestResourceData(t *testing.T) { if v := data.Get("foo"); v != 42 { t.Fatalf("bad: %#v", v) } + + // Set expectations + state.Meta = map[string]string{ + "schema_version": "2", + } + + result := data.State() + if !reflect.DeepEqual(result, state) { + t.Fatalf("bad: %#v", result) + } } func TestResourceData_blank(t *testing.T) {