@@ -66,14 +66,6 @@ func resourceRedisCloudActiveActiveDatabase() *schema.Resource {
6666 }
6767 }
6868
69- // Force update when enable_default_user is removed from config
70- // (Computed fields don't trigger updates when removed, but we need to clear API override)
71- if diff .Id () != "" { // Only during updates, not creates
72- if err := forceUpdateWhenEnableDefaultUserRemoved (ctx , diff ); err != nil {
73- return err
74- }
75- }
76-
7769 return nil
7870 },
7971
@@ -280,7 +272,6 @@ func resourceRedisCloudActiveActiveDatabase() *schema.Resource {
280272 Description : "When 'true', enables connecting to the database with the 'default' user. If not specified, the region inherits the value from global_enable_default_user." ,
281273 Type : schema .TypeBool ,
282274 Optional : true ,
283- Computed : true ,
284275 },
285276 "remote_backup" : {
286277 Description : "An object that specifies the backup options for the database in this region" ,
@@ -1274,94 +1265,3 @@ func isEnableDefaultUserInActualPersistedState(d *schema.ResourceData, regionNam
12741265 return found
12751266}
12761267
1277- // forceUpdateWhenEnableDefaultUserRemoved detects when enable_default_user is removed from config
1278- // and forces an update so the API override can be cleared. This is necessary because Computed fields
1279- // don't trigger updates when removed from config - Terraform carries forward the old value.
1280- func forceUpdateWhenEnableDefaultUserRemoved (ctx context.Context , diff * schema.ResourceDiff ) error {
1281- // Get actual config (not the merged diff with Computed fields carried forward)
1282- rawConfig := diff .GetRawConfig ()
1283- if rawConfig .IsNull () || ! rawConfig .IsKnown () {
1284- return nil
1285- }
1286-
1287- // Find regions in CONFIG that don't have enable_default_user
1288- configRegionsWithoutField := make (map [string ]bool )
1289-
1290- if rawConfig .Type ().HasAttribute ("override_region" ) {
1291- overrideRegions := rawConfig .GetAttr ("override_region" )
1292- if ! overrideRegions .IsNull () && overrideRegions .IsKnown () {
1293- iter := overrideRegions .ElementIterator ()
1294- for iter .Next () {
1295- _ , regionVal := iter .Element ()
1296-
1297- if ! regionVal .Type ().HasAttribute ("name" ) {
1298- continue
1299- }
1300-
1301- regionName := regionVal .GetAttr ("name" ).AsString ()
1302-
1303- // Check if enable_default_user is in config for this region
1304- hasField := false
1305- if regionVal .Type ().HasAttribute ("enable_default_user" ) {
1306- fieldAttr := regionVal .GetAttr ("enable_default_user" )
1307- if ! fieldAttr .IsNull () {
1308- hasField = true
1309- }
1310- }
1311-
1312- if ! hasField {
1313- configRegionsWithoutField [regionName ] = true
1314- }
1315- }
1316- }
1317- }
1318-
1319- // Check old state to see which regions HAD the field
1320- oldOverrideRegion , _ := diff .GetChange ("override_region" )
1321- if oldOverrideRegion != nil {
1322- oldSet := oldOverrideRegion .(* schema.Set )
1323- for _ , oldRegion := range oldSet .List () {
1324- oldMap := oldRegion .(map [string ]interface {})
1325- regionName := oldMap ["name" ].(string )
1326-
1327- _ , hadFieldInState := oldMap ["enable_default_user" ]
1328- fieldRemovedFromConfig := configRegionsWithoutField [regionName ]
1329-
1330- if hadFieldInState && fieldRemovedFromConfig {
1331- // Field was in state but removed from config!
1332- log .Printf ("[DEBUG] CustomizeDiff: enable_default_user removed from config for region %s, forcing update" , regionName )
1333-
1334- // Since override_region is not Computed, we can't use SetNewComputed
1335- // Instead, rebuild the set without the removed field and use SetNew to force a diff
1336- newRegionSet := make ([]interface {}, 0 , oldSet .Len ())
1337- for _ , region := range oldSet .List () {
1338- regionMap := region .(map [string ]interface {})
1339- regionName := regionMap ["name" ].(string )
1340-
1341- // Create a new map for this region
1342- newRegionMap := make (map [string ]interface {})
1343- for k , v := range regionMap {
1344- // Copy all fields except enable_default_user if it should be removed
1345- if k == "enable_default_user" && configRegionsWithoutField [regionName ] {
1346- // Skip this field - it was removed from config
1347- continue
1348- }
1349- newRegionMap [k ] = v
1350- }
1351- newRegionSet = append (newRegionSet , newRegionMap )
1352- }
1353-
1354- // Set the new value to force Terraform to detect a change
1355- if err := diff .SetNew ("override_region" , newRegionSet ); err != nil {
1356- return fmt .Errorf ("failed to set new override_region for region %s: %w" , regionName , err )
1357- }
1358-
1359- log .Printf ("[DEBUG] CustomizeDiff: Rebuilt override_region set without enable_default_user for removed regions" )
1360- // Only need to rebuild once for all removals
1361- break
1362- }
1363- }
1364- }
1365-
1366- return nil
1367- }
0 commit comments