diff --git a/metadata.go b/metadata.go index e75c4502..e2ebd18a 100644 --- a/metadata.go +++ b/metadata.go @@ -60,11 +60,13 @@ func MetadataUpdate(oldMDMap map[string]interface{}, newMDMap map[string]interfa } // Format metadata from the server data format -> schema data format -func MetadataFormatSchema(md *compute.Metadata) map[string]interface{} { +func MetadataFormatSchema(curMDMap map[string]interface{}, md *compute.Metadata) map[string]interface{} { newMD := make(map[string]interface{}) for _, kv := range md.Items { - newMD[kv.Key] = *kv.Value + if _, ok := curMDMap[kv.Key]; ok { + newMD[kv.Key] = *kv.Value + } } return newMD diff --git a/resource_compute_instance.go b/resource_compute_instance.go index 8ca76648..66e0b5e8 100644 --- a/resource_compute_instance.go +++ b/resource_compute_instance.go @@ -562,7 +562,7 @@ func resourceComputeInstanceRead(d *schema.ResourceData, meta interface{}) error // Synch metadata md := instance.Metadata - _md := MetadataFormatSchema(md) + _md := MetadataFormatSchema(d.Get("metadata").(map[string]interface{}), md) delete(_md, "startup-script") if script, scriptExists := d.GetOk("metadata_startup_script"); scriptExists { diff --git a/resource_compute_project_metadata.go b/resource_compute_project_metadata.go index c2f8a4a5..c549415c 100644 --- a/resource_compute_project_metadata.go +++ b/resource_compute_project_metadata.go @@ -90,7 +90,7 @@ func resourceComputeProjectMetadataRead(d *schema.ResourceData, meta interface{} md := project.CommonInstanceMetadata - if err = d.Set("metadata", MetadataFormatSchema(md)); err != nil { + if err = d.Set("metadata", MetadataFormatSchema(d.Get("metadata").(map[string]interface{}), md)); err != nil { return fmt.Errorf("Error setting metadata: %s", err) } diff --git a/resource_compute_project_metadata_test.go b/resource_compute_project_metadata_test.go index cb0145d8..7be3dfb2 100644 --- a/resource_compute_project_metadata_test.go +++ b/resource_compute_project_metadata_test.go @@ -13,8 +13,6 @@ import ( func TestAccComputeProjectMetadata_basic(t *testing.T) { var project compute.Project - t.Skip("See https://github.com/hashicorp/terraform/issues/4504") - resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, @@ -38,8 +36,6 @@ func TestAccComputeProjectMetadata_basic(t *testing.T) { func TestAccComputeProjectMetadata_modify_1(t *testing.T) { var project compute.Project - t.Skip("See https://github.com/hashicorp/terraform/issues/4504") - resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, @@ -76,8 +72,6 @@ func TestAccComputeProjectMetadata_modify_1(t *testing.T) { func TestAccComputeProjectMetadata_modify_2(t *testing.T) { var project compute.Project - t.Skip("See https://github.com/hashicorp/terraform/issues/4504") - resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders,