From 9a34477519300a31ff6c88018d3f5681bca03a57 Mon Sep 17 00:00:00 2001 From: The Magician Date: Thu, 21 Sep 2023 20:23:33 -0400 Subject: [PATCH] Check if labels field exists in customDiff function (#9043) (#6337) Signed-off-by: Modular Magician --- .changelog/9043.txt | 3 +++ google-beta/tpgresource/annotations.go | 10 ++++++++++ google-beta/tpgresource/labels.go | 14 ++++++++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 .changelog/9043.txt diff --git a/.changelog/9043.txt b/.changelog/9043.txt new file mode 100644 index 0000000000..4144fa5efc --- /dev/null +++ b/.changelog/9043.txt @@ -0,0 +1,3 @@ +```release-note:bug +provider: fixed the bug that labels/annotations field not exists in GA for some resources +``` diff --git a/google-beta/tpgresource/annotations.go b/google-beta/tpgresource/annotations.go index 472ed8d915..fa90bdf1ad 100644 --- a/google-beta/tpgresource/annotations.go +++ b/google-beta/tpgresource/annotations.go @@ -10,6 +10,11 @@ import ( ) func SetAnnotationsDiff(_ context.Context, d *schema.ResourceDiff, meta interface{}) error { + raw := d.Get("annotations") + if raw == nil { + return nil + } + o, n := d.GetChange("annotations") effectiveAnnotations := d.Get("effective_annotations").(map[string]interface{}) @@ -36,6 +41,11 @@ func SetMetadataAnnotationsDiff(_ context.Context, d *schema.ResourceDiff, meta return nil } + raw := d.Get("metadata.0.annotations") + if raw == nil { + return nil + } + o, n := d.GetChange("metadata.0.annotations") effectiveAnnotations := d.Get("metadata.0.effective_annotations").(map[string]interface{}) diff --git a/google-beta/tpgresource/labels.go b/google-beta/tpgresource/labels.go index 4278708acc..745f0bc4e7 100644 --- a/google-beta/tpgresource/labels.go +++ b/google-beta/tpgresource/labels.go @@ -38,7 +38,12 @@ func SetLabelsDiff(_ context.Context, d *schema.ResourceDiff, meta interface{}) terraformLabels[k] = v } - labels := d.Get("labels").(map[string]interface{}) + raw := d.Get("labels") + if raw == nil { + return nil + } + + labels := raw.(map[string]interface{}) for k, v := range labels { terraformLabels[k] = v.(string) } @@ -73,6 +78,11 @@ func SetMetadataLabelsDiff(_ context.Context, d *schema.ResourceDiff, meta inter return nil } + raw := d.Get("metadata.0.labels") + if raw == nil { + return nil + } + config := meta.(*transport_tpg.Config) // Merge provider default labels with the user defined labels in the resource to get terraform managed labels @@ -81,7 +91,7 @@ func SetMetadataLabelsDiff(_ context.Context, d *schema.ResourceDiff, meta inter terraformLabels[k] = v } - labels := d.Get("metadata.0.labels").(map[string]interface{}) + labels := raw.(map[string]interface{}) for k, v := range labels { terraformLabels[k] = v.(string) }