@@ -1181,13 +1181,40 @@ func resourceRedisNodeSetModify(ctx context.Context, service *RedisService, d *s
1181
1181
ZoneId : helper .IntUint64 (zoneId ),
1182
1182
})
1183
1183
}
1184
- err = resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError {
1185
- _ , err := service .UpgradeInstance (ctx , d .Id (), memSize , shardNum , redisReplicaCount + len (adds ), addNodes )
1186
- if err != nil {
1187
- return tccommon .RetryError (err , redis .FAILEDOPERATION_UNKNOWN )
1184
+ if redisReplicaCount + len (adds ) == 0 && len (adds ) == 1 {
1185
+ // Processing the change from a single-AZ instance to a multi-AZ instance
1186
+ request := redis .NewModifyInstanceAvailabilityZonesRequest ()
1187
+ if v , ok := d .GetOkExists ("wait_switch" ); ok {
1188
+ request .SwitchOption = helper .IntInt64 (v .(int ))
1189
+ } else {
1190
+ request .SwitchOption = helper .IntInt64 (2 )
1188
1191
}
1189
- return nil
1190
- })
1192
+ request .InstanceId = & id
1193
+ request .NodeSet = append (request .NodeSet ,
1194
+ & redis.RedisNodeInfo {
1195
+ NodeType : helper .IntInt64 (1 ),
1196
+ ZoneId : helper .IntUint64 (adds [0 ]),
1197
+ },
1198
+ & redis.RedisNodeInfo {
1199
+ NodeType : helper .IntInt64 (0 ),
1200
+ ZoneId : helper .IntUint64 (int (* info .ZoneId )),
1201
+ })
1202
+ err = resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError {
1203
+ _ , err := service .client .UseRedisClient ().ModifyInstanceAvailabilityZones (request )
1204
+ if err != nil {
1205
+ return tccommon .RetryError (err , redis .INTERNALERROR )
1206
+ }
1207
+ return nil
1208
+ })
1209
+ } else {
1210
+ err = resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError {
1211
+ _ , err := service .UpgradeInstance (ctx , d .Id (), memSize , shardNum , redisReplicaCount + len (adds ), addNodes )
1212
+ if err != nil {
1213
+ return tccommon .RetryError (err , redis .FAILEDOPERATION_UNKNOWN )
1214
+ }
1215
+ return nil
1216
+ })
1217
+ }
1191
1218
if err != nil {
1192
1219
return err
1193
1220
}
0 commit comments