@@ -1051,7 +1051,7 @@ func resourceTencentCloudMysqlInstanceRead(d *schema.ResourceData, meta interfac
10511051/*
10521052 [master] and [dr] and [ro] all need update
10531053*/
1054- func mysqlAllInstanceRoleUpdate (ctx context.Context , d * schema.ResourceData , meta interface {}) error {
1054+ func mysqlAllInstanceRoleUpdate (ctx context.Context , d * schema.ResourceData , meta interface {}, isReadonly bool ) error {
10551055
10561056 logId := getLogId (ctx )
10571057
@@ -1088,64 +1088,115 @@ func mysqlAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, met
10881088 }
10891089 }
10901090
1091- if d .HasChange ("mem_size" ) || d .HasChange ("cpu" ) || d .HasChange ("volume_size" ) || d .HasChange ("device_type" ) || d .HasChange ("slave_deploy_mode" ) || d .HasChange ("first_slave_zone" ) || d .HasChange ("second_slave_zone" ) || d .HasChange ("slave_sync_mode" ) {
1091+ if isReadonly {
1092+ if d .HasChange ("mem_size" ) || d .HasChange ("cpu" ) || d .HasChange ("volume_size" ) || d .HasChange ("device_type" ) {
10921093
1093- memSize := int64 (d .Get ("mem_size" ).(int ))
1094- cpu := int64 (d .Get ("cpu" ).(int ))
1095- volumeSize := int64 (d .Get ("volume_size" ).(int ))
1096- slaveDeployMode := int64 (d .Get ("slave_deploy_mode" ).(int ))
1097- slaveSyncMode := int64 (d .Get ("slave_sync_mode" ).(int ))
1098- deviceType := ""
1099- firstSlaveZone := ""
1100- secondSlaveZone := ""
1094+ memSize := int64 (d .Get ("mem_size" ).(int ))
1095+ cpu := int64 (d .Get ("cpu" ).(int ))
1096+ volumeSize := int64 (d .Get ("volume_size" ).(int ))
1097+ deviceType := ""
11011098
1102- fastUpgrade := int64 (0 )
1103- if v , ok := d .GetOk ("fast_upgrade" ); ok {
1104- fastUpgrade = int64 (v .(int ))
1105- }
1106- if v , ok := d .GetOk ("device_type" ); ok {
1107- deviceType = v .(string )
1108- }
1099+ fastUpgrade := int64 (0 )
1100+ if v , ok := d .GetOk ("fast_upgrade" ); ok {
1101+ fastUpgrade = int64 (v .(int ))
1102+ }
1103+ if v , ok := d .GetOk ("device_type" ); ok {
1104+ deviceType = v .(string )
1105+ }
11091106
1110- if v , ok := d .GetOk ("first_slave_zone" ); ok {
1111- firstSlaveZone = v .(string )
1112- }
1107+ asyncRequestId , err := mysqlService .UpgradeDBInstance (ctx , d .Id (), memSize , cpu , volumeSize , fastUpgrade , deviceType , - 1 , - 1 , "" , "" )
11131108
1114- if v , ok := d . GetOk ( "second_slave_zone" ); ok {
1115- secondSlaveZone = v .( string )
1116- }
1109+ if err != nil {
1110+ return err
1111+ }
11171112
1118- asyncRequestId , err := mysqlService .UpgradeDBInstance (ctx , d .Id (), memSize , cpu , volumeSize , fastUpgrade , deviceType , slaveDeployMode , slaveSyncMode , firstSlaveZone , secondSlaveZone )
1113+ err = resource .Retry (6 * time .Hour , func () * resource.RetryError {
1114+ taskStatus , message , err := mysqlService .DescribeAsyncRequestInfo (ctx , asyncRequestId )
11191115
1120- if err != nil {
1121- return err
1122- }
1116+ if err != nil {
1117+ if _ , ok := err .(* errors.TencentCloudSDKError ); ! ok {
1118+ return resource .RetryableError (err )
1119+ } else {
1120+ return resource .NonRetryableError (err )
1121+ }
1122+ }
11231123
1124- err = resource .Retry (6 * time .Hour , func () * resource.RetryError {
1125- taskStatus , message , err := mysqlService .DescribeAsyncRequestInfo (ctx , asyncRequestId )
1124+ if taskStatus == MYSQL_TASK_STATUS_SUCCESS {
1125+ return nil
1126+ }
1127+ if taskStatus == MYSQL_TASK_STATUS_INITIAL || taskStatus == MYSQL_TASK_STATUS_RUNNING {
1128+ return resource .RetryableError (fmt .Errorf ("update mysql mem_size/volume_size status is %s" , taskStatus ))
1129+ }
1130+ err = fmt .Errorf ("update mysql mem_size/volume_size task status is %s,we won't wait for it finish ,it show message:%s" ,
1131+ "," , message )
1132+ return resource .NonRetryableError (err )
1133+ })
11261134
11271135 if err != nil {
1128- if _ , ok := err .(* errors.TencentCloudSDKError ); ! ok {
1129- return resource .RetryableError (err )
1130- } else {
1131- return resource .NonRetryableError (err )
1132- }
1136+ log .Printf ("[CRITAL]%s update mysql mem_size/volume_size fail, reason:%s\n " , logId , err .Error ())
1137+ return err
1138+ }
1139+ }
1140+ } else {
1141+ if d .HasChange ("mem_size" ) || d .HasChange ("cpu" ) || d .HasChange ("volume_size" ) || d .HasChange ("device_type" ) || d .HasChange ("slave_deploy_mode" ) || d .HasChange ("first_slave_zone" ) || d .HasChange ("second_slave_zone" ) || d .HasChange ("slave_sync_mode" ) {
1142+
1143+ memSize := int64 (d .Get ("mem_size" ).(int ))
1144+ cpu := int64 (d .Get ("cpu" ).(int ))
1145+ volumeSize := int64 (d .Get ("volume_size" ).(int ))
1146+ slaveDeployMode := int64 (d .Get ("slave_deploy_mode" ).(int ))
1147+ slaveSyncMode := int64 (d .Get ("slave_sync_mode" ).(int ))
1148+ deviceType := ""
1149+ firstSlaveZone := ""
1150+ secondSlaveZone := ""
1151+
1152+ fastUpgrade := int64 (0 )
1153+ if v , ok := d .GetOk ("fast_upgrade" ); ok {
1154+ fastUpgrade = int64 (v .(int ))
1155+ }
1156+ if v , ok := d .GetOk ("device_type" ); ok {
1157+ deviceType = v .(string )
11331158 }
11341159
1135- if taskStatus == MYSQL_TASK_STATUS_SUCCESS {
1136- return nil
1160+ if v , ok := d . GetOk ( "first_slave_zone" ); ok {
1161+ firstSlaveZone = v .( string )
11371162 }
1138- if taskStatus == MYSQL_TASK_STATUS_INITIAL || taskStatus == MYSQL_TASK_STATUS_RUNNING {
1139- return resource .RetryableError (fmt .Errorf ("update mysql mem_size/volume_size status is %s" , taskStatus ))
1163+
1164+ if v , ok := d .GetOk ("second_slave_zone" ); ok {
1165+ secondSlaveZone = v .(string )
11401166 }
1141- err = fmt .Errorf ("update mysql mem_size/volume_size task status is %s,we won't wait for it finish ,it show message:%s" ,
1142- "," , message )
1143- return resource .NonRetryableError (err )
1144- })
11451167
1146- if err != nil {
1147- log .Printf ("[CRITAL]%s update mysql mem_size/volume_size fail, reason:%s\n " , logId , err .Error ())
1148- return err
1168+ asyncRequestId , err := mysqlService .UpgradeDBInstance (ctx , d .Id (), memSize , cpu , volumeSize , fastUpgrade , deviceType , slaveDeployMode , slaveSyncMode , firstSlaveZone , secondSlaveZone )
1169+
1170+ if err != nil {
1171+ return err
1172+ }
1173+
1174+ err = resource .Retry (6 * time .Hour , func () * resource.RetryError {
1175+ taskStatus , message , err := mysqlService .DescribeAsyncRequestInfo (ctx , asyncRequestId )
1176+
1177+ if err != nil {
1178+ if _ , ok := err .(* errors.TencentCloudSDKError ); ! ok {
1179+ return resource .RetryableError (err )
1180+ } else {
1181+ return resource .NonRetryableError (err )
1182+ }
1183+ }
1184+
1185+ if taskStatus == MYSQL_TASK_STATUS_SUCCESS {
1186+ return nil
1187+ }
1188+ if taskStatus == MYSQL_TASK_STATUS_INITIAL || taskStatus == MYSQL_TASK_STATUS_RUNNING {
1189+ return resource .RetryableError (fmt .Errorf ("update mysql mem_size/volume_size status is %s" , taskStatus ))
1190+ }
1191+ err = fmt .Errorf ("update mysql mem_size/volume_size task status is %s,we won't wait for it finish ,it show message:%s" ,
1192+ "," , message )
1193+ return resource .NonRetryableError (err )
1194+ })
1195+
1196+ if err != nil {
1197+ log .Printf ("[CRITAL]%s update mysql mem_size/volume_size fail, reason:%s\n " , logId , err .Error ())
1198+ return err
1199+ }
11491200 }
11501201 }
11511202
@@ -1437,7 +1488,7 @@ func mysqlMasterInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData,
14371488}
14381489
14391490func mysqlUpdateInstancePayByMonth (ctx context.Context , d * schema.ResourceData , meta interface {}) error {
1440- if err := mysqlAllInstanceRoleUpdate (ctx , d , meta ); err != nil {
1491+ if err := mysqlAllInstanceRoleUpdate (ctx , d , meta , false ); err != nil {
14411492 return err
14421493 }
14431494 if err := mysqlMasterInstanceRoleUpdate (ctx , d , meta ); err != nil {
@@ -1460,7 +1511,7 @@ func mysqlUpdateInstancePayByMonth(ctx context.Context, d *schema.ResourceData,
14601511}
14611512
14621513func mysqlUpdateInstancePayByUse (ctx context.Context , d * schema.ResourceData , meta interface {}) error {
1463- if err := mysqlAllInstanceRoleUpdate (ctx , d , meta ); err != nil {
1514+ if err := mysqlAllInstanceRoleUpdate (ctx , d , meta , false ); err != nil {
14641515 return err
14651516 }
14661517 if err := mysqlMasterInstanceRoleUpdate (ctx , d , meta ); err != nil {
0 commit comments