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) }