From 54c8eb0be97a86dc95660321bad8feba04e115a2 Mon Sep 17 00:00:00 2001 From: Yuping Wei <56525716+yupwei68@users.noreply.github.com> Date: Wed, 24 Jun 2020 11:05:12 +0800 Subject: [PATCH] `azurerm_postgresql_server` - force new if `sku_name` changes tier (#7456) Fix :#7131 === RUN TestAccAzureRMPostgreSQLServer_updateSKU === PAUSE TestAccAzureRMPostgreSQLServer_updateSKU === CONT TestAccAzureRMPostgreSQLServer_updateSKU --- PASS: TestAccAzureRMPostgreSQLServer_updateSKU (632.60s) PASS --- .../postgres/postgresql_server_resource.go | 17 +++++++++++++++++ .../tests/postgresql_server_resource_test.go | 7 +++++++ 2 files changed, 24 insertions(+) diff --git a/azurerm/internal/services/postgres/postgresql_server_resource.go b/azurerm/internal/services/postgres/postgresql_server_resource.go index 8d8a7625f4fab..e67bb4048cdd1 100644 --- a/azurerm/internal/services/postgres/postgresql_server_resource.go +++ b/azurerm/internal/services/postgres/postgresql_server_resource.go @@ -10,6 +10,7 @@ import ( "github.com/Azure/azure-sdk-for-go/services/postgresql/mgmt/2017-12-01/postgresql" "github.com/Azure/go-autorest/autorest/date" "github.com/hashicorp/go-azure-helpers/response" + "github.com/hashicorp/terraform-plugin-sdk/helper/customdiff" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/helper/validation" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure" @@ -348,6 +349,22 @@ func resourceArmPostgreSQLServer() *schema.Resource { "tags": tags.Schema(), }, + + CustomizeDiff: customdiff.All( + customdiff.ForceNewIfChange("sku_name", func(old, new, meta interface{}) bool { + oldTier := strings.Split(old.(string), "_") + newTier := strings.Split(new.(string), "_") + // If the sku tier was not changed, we don't need fornew + if oldTier[0] == newTier[0] { + return false + } + // Basic tier could not be changed to other tiers + if oldTier[0] == "B" || newTier[0] == "B" { + return true + } + return false + }), + ), } } diff --git a/azurerm/internal/services/postgres/tests/postgresql_server_resource_test.go b/azurerm/internal/services/postgres/tests/postgresql_server_resource_test.go index 214a625b1b202..c63e7198f34a9 100644 --- a/azurerm/internal/services/postgres/tests/postgresql_server_resource_test.go +++ b/azurerm/internal/services/postgres/tests/postgresql_server_resource_test.go @@ -311,6 +311,13 @@ func TestAccAzureRMPostgreSQLServer_updateSKU(t *testing.T) { Providers: acceptance.SupportedProviders, CheckDestroy: testCheckAzureRMPostgreSQLServerDestroy, Steps: []resource.TestStep{ + { + Config: testAccAzureRMPostgreSQLServer_sku(data, "10.0", "B_Gen5_2"), + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMPostgreSQLServerExists(data.ResourceName), + ), + }, + data.ImportStep("administrator_login_password"), { Config: testAccAzureRMPostgreSQLServer_sku(data, "10.0", "GP_Gen5_2"), Check: resource.ComposeTestCheckFunc(