From bca10e565e0dc6c8a9bb29b8c02f725ce94cac8a Mon Sep 17 00:00:00 2001 From: Vladimir Lazarenko Date: Thu, 11 Feb 2021 07:57:55 +0100 Subject: [PATCH] azurerm_eventhub_namespace: fix downgrade scenario (#10536) Fixes #10244. In a corner case when we are downgrading from Standard to Basic SKU and namespace had both autoInflate enabled and maximumThroughputUnits set - we need to force throughput units back to 0, otherwise downgrade fails --- .../eventhub/eventhub_namespace_resource.go | 9 ++++++++ .../eventhub_namespace_resource_test.go | 23 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/azurerm/internal/services/eventhub/eventhub_namespace_resource.go b/azurerm/internal/services/eventhub/eventhub_namespace_resource.go index c86a4b773e1f..23e489c3922a 100644 --- a/azurerm/internal/services/eventhub/eventhub_namespace_resource.go +++ b/azurerm/internal/services/eventhub/eventhub_namespace_resource.go @@ -303,6 +303,15 @@ func resourceEventHubNamespaceCreateUpdate(d *schema.ResourceData, meta interfac parameters.EHNamespaceProperties.MaximumThroughputUnits = utils.Int32(int32(v.(int))) } + // @favoretti: if we are downgrading from Standard to Basic SKU and namespace had both autoInflate enabled and + // maximumThroughputUnits set - we need to force throughput units back to 0, otherwise downgrade fails + // + // See: https://github.com/terraform-providers/terraform-provider-azurerm/issues/10244 + // + if parameters.Sku.Tier == eventhub.SkuTierBasic && !autoInflateEnabled { + parameters.EHNamespaceProperties.MaximumThroughputUnits = utils.Int32(0) + } + future, err := client.CreateOrUpdate(ctx, resGroup, name, parameters) if err != nil { return err diff --git a/azurerm/internal/services/eventhub/eventhub_namespace_resource_test.go b/azurerm/internal/services/eventhub/eventhub_namespace_resource_test.go index 07f98e126bfd..25110b65c07e 100644 --- a/azurerm/internal/services/eventhub/eventhub_namespace_resource_test.go +++ b/azurerm/internal/services/eventhub/eventhub_namespace_resource_test.go @@ -389,6 +389,29 @@ func TestAccEventHubNamespace_BasicWithSkuUpdate(t *testing.T) { }) } +func TestAccEventHubNamespace_SkuDowngradeFromAutoInflateWithMaxThroughput(t *testing.T) { + data := acceptance.BuildTestData(t, "azurerm_eventhub_namespace", "test") + r := EventHubNamespaceResource{} + + data.ResourceTest(t, r, []resource.TestStep{ + { + Config: r.maximumThroughputUnits(data), + Check: resource.ComposeTestCheckFunc( + check.That(data.ResourceName).ExistsInAzure(r), + check.That(data.ResourceName).Key("sku").HasValue("Standard"), + check.That(data.ResourceName).Key("capacity").HasValue("2"), + ), + }, + { + Config: r.basic(data), + Check: resource.ComposeTestCheckFunc( + check.That(data.ResourceName).ExistsInAzure(r), + check.That(data.ResourceName).Key("sku").HasValue("Basic"), + ), + }, + }) +} + func TestAccEventHubNamespace_maximumThroughputUnitsUpdate(t *testing.T) { data := acceptance.BuildTestData(t, "azurerm_eventhub_namespace", "test") r := EventHubNamespaceResource{}