From c5c8571d157384bf84b317e1b6dc7c26ee92b685 Mon Sep 17 00:00:00 2001 From: Xu Zhang Date: Thu, 7 Nov 2024 11:35:28 +0800 Subject: [PATCH 1/2] support for unsetting data_persistence_authentication_method --- .../services/redis/redis_cache_resource.go | 14 +++-- .../redis/redis_cache_resource_test.go | 56 +++++++++++++++++++ 2 files changed, 64 insertions(+), 6 deletions(-) diff --git a/internal/services/redis/redis_cache_resource.go b/internal/services/redis/redis_cache_resource.go index b26089b58b9d..27884c175b10 100644 --- a/internal/services/redis/redis_cache_resource.go +++ b/internal/services/redis/redis_cache_resource.go @@ -935,29 +935,31 @@ func expandRedisConfiguration(d *pluginsdk.ResourceData) (*redis.RedisCommonProp skuName := d.Get("sku_name").(string) if v := raw["maxclients"].(int); v > 0 { - output.Maxclients = utils.String(strconv.Itoa(v)) + output.Maxclients = pointer.To(strconv.Itoa(v)) } if d.Get("sku_name").(string) != string(redis.SkuNameBasic) { if v := raw["maxmemory_delta"].(int); v > 0 { - output.MaxmemoryDelta = utils.String(strconv.Itoa(v)) + output.MaxmemoryDelta = pointer.To(strconv.Itoa(v)) } if v := raw["maxmemory_reserved"].(int); v > 0 { - output.MaxmemoryReserved = utils.String(strconv.Itoa(v)) + output.MaxmemoryReserved = pointer.To(strconv.Itoa(v)) } if v := raw["maxfragmentationmemory_reserved"].(int); v > 0 { - output.MaxfragmentationmemoryReserved = utils.String(strconv.Itoa(v)) + output.MaxfragmentationmemoryReserved = pointer.To(strconv.Itoa(v)) } } if v := raw["maxmemory_policy"].(string); v != "" { - output.MaxmemoryPolicy = utils.String(v) + output.MaxmemoryPolicy = pointer.To(v) } if v := raw["data_persistence_authentication_method"].(string); v != "" { - output.PreferredDataPersistenceAuthMethod = utils.String(v) + output.PreferredDataPersistenceAuthMethod = pointer.To(v) + } else { + output.PreferredDataPersistenceAuthMethod = pointer.To("") } // AAD/Entra support diff --git a/internal/services/redis/redis_cache_resource_test.go b/internal/services/redis/redis_cache_resource_test.go index ab800e7765c4..5b7587c79a21 100644 --- a/internal/services/redis/redis_cache_resource_test.go +++ b/internal/services/redis/redis_cache_resource_test.go @@ -55,6 +55,36 @@ func TestAccRedisCache_managedIdentityAuth(t *testing.T) { }) } +func TestAccRedisCache_managedIdentityAuthDisable(t *testing.T) { + data := acceptance.BuildTestData(t, "azurerm_redis_cache", "test") + r := RedisCacheResource{} + + data.ResourceTest(t, r, []acceptance.TestStep{ + { + Config: r.managedIdentityAuth(data, true), + Check: acceptance.ComposeTestCheckFunc( + check.That(data.ResourceName).ExistsInAzure(r), + check.That(data.ResourceName).Key("minimum_tls_version").Exists(), + check.That(data.ResourceName).Key("primary_connection_string").Exists(), + check.That(data.ResourceName).Key("secondary_connection_string").Exists(), + check.That(data.ResourceName).Key("redis_configuration.0.data_persistence_authentication_method").HasValue("ManagedIdentity"), + ), + }, + data.ImportStep(), + { + Config: r.managedIdentityAuthDisable(data, true), + Check: acceptance.ComposeTestCheckFunc( + check.That(data.ResourceName).ExistsInAzure(r), + check.That(data.ResourceName).Key("minimum_tls_version").Exists(), + check.That(data.ResourceName).Key("primary_connection_string").Exists(), + check.That(data.ResourceName).Key("secondary_connection_string").Exists(), + check.That(data.ResourceName).Key("redis_configuration.0.data_persistence_authentication_method").HasValue(""), + ), + }, + data.ImportStep(), + }) +} + func TestAccRedisCache_withoutSSL(t *testing.T) { data := acceptance.BuildTestData(t, "azurerm_redis_cache", "test") r := RedisCacheResource{} @@ -660,6 +690,32 @@ resource "azurerm_redis_cache" "test" { `, data.RandomInteger, data.Locations.Primary, data.RandomInteger, !requireSSL) } +func (RedisCacheResource) managedIdentityAuthDisable(data acceptance.TestData, requireSSL bool) string { + return fmt.Sprintf(` +provider "azurerm" { + features {} +} + +resource "azurerm_resource_group" "test" { + name = "acctestRG-%d" + location = "%s" +} + +resource "azurerm_redis_cache" "test" { + name = "acctestRedis-%d" + location = azurerm_resource_group.test.location + resource_group_name = azurerm_resource_group.test.name + capacity = 1 + family = "C" + sku_name = "Basic" + non_ssl_port_enabled = %t + minimum_tls_version = "1.2" + + redis_configuration {} +} +`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, !requireSSL) +} + func (RedisCacheResource) requiresImport(data acceptance.TestData) string { template := RedisCacheResource{}.basic(data, true) return fmt.Sprintf(` From 648023fb795b6dff669b0b5bc14060480cc0ec43 Mon Sep 17 00:00:00 2001 From: Xu Zhang Date: Fri, 20 Dec 2024 13:51:40 +0800 Subject: [PATCH 2/2] optimize data_persistence_authentication_method settings --- internal/services/redis/redis_cache_resource.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/internal/services/redis/redis_cache_resource.go b/internal/services/redis/redis_cache_resource.go index 27884c175b10..87662f2a7870 100644 --- a/internal/services/redis/redis_cache_resource.go +++ b/internal/services/redis/redis_cache_resource.go @@ -956,11 +956,7 @@ func expandRedisConfiguration(d *pluginsdk.ResourceData) (*redis.RedisCommonProp output.MaxmemoryPolicy = pointer.To(v) } - if v := raw["data_persistence_authentication_method"].(string); v != "" { - output.PreferredDataPersistenceAuthMethod = pointer.To(v) - } else { - output.PreferredDataPersistenceAuthMethod = pointer.To("") - } + output.PreferredDataPersistenceAuthMethod = pointer.To(raw["data_persistence_authentication_method"].(string)) // AAD/Entra support // nolint : staticcheck