From 9ce827d27381d9dce36eaa736551e4208d131d52 Mon Sep 17 00:00:00 2001 From: David Szabo <38033309+daszabo@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:11:19 +0100 Subject: [PATCH] CDPCP-13570 Fixed an issue where tags in requests were populated with the same key (#189) --- resources/datahub/converter.go | 9 ++++++--- resources/datahub/converter_test.go | 14 ++++++++++++++ resources/datalake/converter_gcp.go | 3 ++- resources/datalake/resource_aws_datalake.go | 3 ++- resources/datalake/resource_azure_datalake.go | 3 ++- 5 files changed, 26 insertions(+), 6 deletions(-) diff --git a/resources/datahub/converter.go b/resources/datahub/converter.go index 4f75217c..dc66b53e 100644 --- a/resources/datahub/converter.go +++ b/resources/datahub/converter.go @@ -73,10 +73,11 @@ func fromModelToAwsRequest(model awsDatahubResourceModel, ctx context.Context) * req.Tags = make([]*datahubmodels.DatahubResourceTagRequest, len(model.Tags.Elements())) i := 0 for k, v := range model.Tags.Elements() { + key := k val, diag := v.(basetypes.StringValuable).ToStringValue(ctx) if !diag.HasError() { req.Tags[i] = &datahubmodels.DatahubResourceTagRequest{ - Key: &k, + Key: &key, Value: val.ValueStringPointer(), } } @@ -161,10 +162,11 @@ func fromModelToGcpRequest(model gcpDatahubResourceModel, ctx context.Context) * req.Tags = make([]*datahubmodels.GCPDatahubResourceTagRequest, len(model.Tags.Elements())) i := 0 for k, v := range model.Tags.Elements() { + key := k val, diag := v.(basetypes.StringValuable).ToStringValue(ctx) if !diag.HasError() { req.Tags[i] = &datahubmodels.GCPDatahubResourceTagRequest{ - Key: &k, + Key: &key, Value: val.ValueStringPointer(), } } @@ -242,10 +244,11 @@ func fromModelToAzureRequest(model azureDatahubResourceModel, ctx context.Contex req.Tags = make([]*datahubmodels.DatahubResourceTagRequest, len(model.Tags.Elements())) i := 0 for k, v := range model.Tags.Elements() { + key := k val, diag := v.(basetypes.StringValuable).ToStringValue(ctx) if !diag.HasError() { req.Tags[i] = &datahubmodels.DatahubResourceTagRequest{ - Key: &k, + Key: &key, Value: val.ValueStringPointer(), } } diff --git a/resources/datahub/converter_test.go b/resources/datahub/converter_test.go index afa7e92d..640d5d71 100644 --- a/resources/datahub/converter_test.go +++ b/resources/datahub/converter_test.go @@ -164,6 +164,20 @@ func TestFromModelToRequestClusterDefinition(t *testing.T) { test.CompareStrings(got.ClusterDefinition, input.ClusterDefinition.ValueString(), t) } +func TestFromModelToRequestTags(t *testing.T) { + tags, _ := types.MapValue(types.StringType, map[string]attr.Value{ + "key1": types.StringValue("value1"), + "key2": types.StringValue("value2"), + "key3": types.StringValue("value3"), + }) + input := awsDatahubResourceModel{Tags: tags} + got := fromModelToAwsRequest(input, context.TODO()) + + test.CompareStrings(*got.Tags[0].Value, input.Tags.Elements()["key1"].(types.String).ValueString(), t) + test.CompareStrings(*got.Tags[1].Value, input.Tags.Elements()["key2"].(types.String).ValueString(), t) + test.CompareStrings(*got.Tags[2].Value, input.Tags.Elements()["key3"].(types.String).ValueString(), t) +} + func TestFromModelToGcpRequestBasicFields(t *testing.T) { tags, _ := types.MapValue(types.StringType, map[string]attr.Value{"key": types.StringValue("value")}) image, _ := types.ObjectValue(map[string]attr.Type{ diff --git a/resources/datalake/converter_gcp.go b/resources/datalake/converter_gcp.go index 1691af22..fc0121ed 100644 --- a/resources/datalake/converter_gcp.go +++ b/resources/datalake/converter_gcp.go @@ -66,10 +66,11 @@ func toGcpDatalakeRequest(ctx context.Context, model *gcpDatalakeResourceModel) req.Tags = make([]*datalakemodels.DatalakeResourceGCPTagRequest, len(model.Tags.Elements())) i := 0 for k, v := range model.Tags.Elements() { + key := k val, diag := v.(basetypes.StringValuable).ToStringValue(ctx) if !diag.HasError() { req.Tags[i] = &datalakemodels.DatalakeResourceGCPTagRequest{ - Key: &k, + Key: &key, Value: val.ValueStringPointer(), } } diff --git a/resources/datalake/resource_aws_datalake.go b/resources/datalake/resource_aws_datalake.go index e6ae8417..17c2a9c1 100644 --- a/resources/datalake/resource_aws_datalake.go +++ b/resources/datalake/resource_aws_datalake.go @@ -92,10 +92,11 @@ func toAwsDatalakeRequest(ctx context.Context, model *awsDatalakeResourceModel) req.Tags = make([]*datalakemodels.DatalakeResourceTagRequest, len(model.Tags.Elements())) i := 0 for k, v := range model.Tags.Elements() { + key := k val, diag := v.(basetypes.StringValuable).ToStringValue(ctx) if !diag.HasError() { req.Tags[i] = &datalakemodels.DatalakeResourceTagRequest{ - Key: &k, + Key: &key, Value: val.ValueStringPointer(), } } diff --git a/resources/datalake/resource_azure_datalake.go b/resources/datalake/resource_azure_datalake.go index 342aa2fb..614e2359 100644 --- a/resources/datalake/resource_azure_datalake.go +++ b/resources/datalake/resource_azure_datalake.go @@ -88,10 +88,11 @@ func toAzureDatalakeRequest(ctx context.Context, model *azureDatalakeResourceMod req.Tags = make([]*datalakemodels.DatalakeResourceTagRequest, len(model.Tags.Elements())) i := 0 for k, v := range model.Tags.Elements() { + key := k val, diag := v.(basetypes.StringValuable).ToStringValue(ctx) if !diag.HasError() { req.Tags[i] = &datalakemodels.DatalakeResourceTagRequest{ - Key: &k, + Key: &key, Value: val.ValueStringPointer(), } }