From 38046455eacb0836bc5441fd455baad281d59142 Mon Sep 17 00:00:00 2001 From: Oriol Arbusi Date: Fri, 24 May 2024 17:33:33 +0200 Subject: [PATCH 1/5] correctly handle GCP updates of network peering --- .../resource_network_peering.go | 8 ++-- .../resource_network_peering_test.go | 46 +++++++++++++++++++ 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/internal/service/networkpeering/resource_network_peering.go b/internal/service/networkpeering/resource_network_peering.go index f2612aabff..b4f97d8eb0 100644 --- a/internal/service/networkpeering/resource_network_peering.go +++ b/internal/service/networkpeering/resource_network_peering.go @@ -135,11 +135,13 @@ func Resource() *schema.Resource { Type: schema.TypeString, Optional: true, Computed: true, + ForceNew: true, }, "network_name": { Type: schema.TypeString, Optional: true, Computed: true, + ForceNew: true, }, "atlas_gcp_project_id": { Type: schema.TypeString, @@ -412,11 +414,7 @@ func resourceUpdate(ctx context.Context, d *schema.ResourceData, meta any) diag. // Updating any of the attributes for Azure Network Peering forces a recreation of the network peering. // Need to check if GCP and AWS have the same behavior - switch peer.GetProviderName() { - case "GCP": - peer.SetGcpProjectId(d.Get("gcp_project_id").(string)) - peer.SetNetworkName(d.Get("network_name").(string)) - default: // AWS by default + if peer.GetProviderName() == "AWS" { region, _ := conversion.ValRegion(d.Get("accepter_region_name"), "network_peering") peer.SetAccepterRegionName(region) peer.SetAwsAccountId(d.Get("aws_account_id").(string)) diff --git a/internal/service/networkpeering/resource_network_peering_test.go b/internal/service/networkpeering/resource_network_peering_test.go index 4d5d3cbc7e..fd76b111ca 100644 --- a/internal/service/networkpeering/resource_network_peering_test.go +++ b/internal/service/networkpeering/resource_network_peering_test.go @@ -142,6 +142,52 @@ func TestAccNetworkRSNetworkPeering_basicGCP(t *testing.T) { }) } +func TestAccNetworkRSNetworkPeering_updateBasicGCP(t *testing.T) { + acc.SkipTestForCI(t) // needs GCP configuration + + var ( + projectID = os.Getenv("MONGODB_ATLAS_PROJECT_ID") + providerName = "GCP" + gcpProjectID = os.Getenv("GCP_PROJECT_ID") + networkName = acc.RandomName() + updatedNetworkName = acc.RandomName() + ) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.PreCheck(t); acc.PreCheckPeeringEnvGCP(t) }, + ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, + CheckDestroy: acc.CheckDestroyNetworkPeering, + Steps: []resource.TestStep{ + { + Config: configGCP(projectID, providerName, gcpProjectID, networkName), + Check: resource.ComposeTestCheckFunc( + checkExists(resourceName), + resource.TestCheckResourceAttrSet(resourceName, "project_id"), + resource.TestCheckResourceAttrSet(resourceName, "container_id"), + resource.TestCheckResourceAttrSet(resourceName, "network_name"), + + resource.TestCheckResourceAttr(resourceName, "provider_name", providerName), + resource.TestCheckResourceAttr(resourceName, "gcp_project_id", gcpProjectID), + resource.TestCheckResourceAttr(resourceName, "network_name", networkName), + ), + }, + { + Config: configGCP(projectID, providerName, gcpProjectID, updatedNetworkName), + Check: resource.ComposeTestCheckFunc( + checkExists(resourceName), + resource.TestCheckResourceAttrSet(resourceName, "project_id"), + resource.TestCheckResourceAttrSet(resourceName, "container_id"), + resource.TestCheckResourceAttrSet(resourceName, "network_name"), + + resource.TestCheckResourceAttr(resourceName, "provider_name", providerName), + resource.TestCheckResourceAttr(resourceName, "gcp_project_id", gcpProjectID), + resource.TestCheckResourceAttr(resourceName, "network_name", updatedNetworkName), + ), + }, + }, + }) +} + func TestAccNetworkRSNetworkPeering_AWSDifferentRegionName(t *testing.T) { var ( vpcID = os.Getenv("AWS_VPC_ID") From cc9bc58dab70e1a613aefa360b8e868149349cb6 Mon Sep 17 00:00:00 2001 From: Oriol Arbusi Date: Mon, 27 May 2024 09:47:33 +0200 Subject: [PATCH 2/5] changelog --- .changelog/2306.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/2306.txt diff --git a/.changelog/2306.txt b/.changelog/2306.txt new file mode 100644 index 0000000000..9f6c6c13a6 --- /dev/null +++ b/.changelog/2306.txt @@ -0,0 +1,3 @@ +```release-note:bug +mongodbatlas_network_peering: Correctly handle GCP updates of mongodbatlas_network_peering +``` From b2056ef14b04d10ce80af95ba6147f9fbb9124a9 Mon Sep 17 00:00:00 2001 From: Oriol Arbusi Date: Mon, 27 May 2024 09:49:42 +0200 Subject: [PATCH 3/5] fix changelog --- .changelog/2306.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/2306.txt b/.changelog/2306.txt index 9f6c6c13a6..32b8f917bd 100644 --- a/.changelog/2306.txt +++ b/.changelog/2306.txt @@ -1,3 +1,3 @@ ```release-note:bug -mongodbatlas_network_peering: Correctly handle GCP updates of mongodbatlas_network_peering +resource/mongodbatlas_network_peering: Correctly handle GCP updates of mongodbatlas_network_peering ``` From 5bde3d22c7d20990763193a773c09adae40c4122 Mon Sep 17 00:00:00 2001 From: Oriol Arbusi Date: Mon, 27 May 2024 10:52:08 +0200 Subject: [PATCH 4/5] remove unnecessary comment --- internal/service/networkpeering/resource_network_peering.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/internal/service/networkpeering/resource_network_peering.go b/internal/service/networkpeering/resource_network_peering.go index b4f97d8eb0..f6983da344 100644 --- a/internal/service/networkpeering/resource_network_peering.go +++ b/internal/service/networkpeering/resource_network_peering.go @@ -412,8 +412,6 @@ func resourceUpdate(ctx context.Context, d *schema.ResourceData, meta any) diag. ContainerId: conversion.GetEncodedID(d.Get("container_id").(string), "container_id"), } - // Updating any of the attributes for Azure Network Peering forces a recreation of the network peering. - // Need to check if GCP and AWS have the same behavior if peer.GetProviderName() == "AWS" { region, _ := conversion.ValRegion(d.Get("accepter_region_name"), "network_peering") peer.SetAccepterRegionName(region) From d55f505b3112537c648e9cedf1827b0123c3c51e Mon Sep 17 00:00:00 2001 From: Oriol Date: Tue, 28 May 2024 09:58:52 +0200 Subject: [PATCH 5/5] Update .changelog/2306.txt Co-authored-by: kanchana-mongodb <54281287+kanchana-mongodb@users.noreply.github.com> --- .changelog/2306.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/2306.txt b/.changelog/2306.txt index 32b8f917bd..a0583a3acc 100644 --- a/.changelog/2306.txt +++ b/.changelog/2306.txt @@ -1,3 +1,3 @@ ```release-note:bug -resource/mongodbatlas_network_peering: Correctly handle GCP updates of mongodbatlas_network_peering +resource/mongodbatlas_network_peering: Correctly handles GCP updates of mongodbatlas_network_peering ```