@@ -827,21 +827,19 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
827
827
err = resource .Retry (writeRetryTimeout , func () * resource.RetryError {
828
828
ratelimit .Check ("create" )
829
829
response , runErr := meta .(* TencentCloudClient ).apiV3Conn .UseCvmClient ().RunInstances (request )
830
- if runErr != nil {
830
+ if isExpectError (runErr , CVM_RETRYABLE_ERROR ) {
831
+ return resource .RetryableError (fmt .Errorf ("cvm create error: %s, retrying" , runErr .Error ()))
832
+ } else if isExpectError (runErr , []string {
833
+ "ResourceInsufficient.AvailabilityZoneSoldOut" ,
834
+ "ResourceInsufficient.SpecifiedInstanceType" ,
835
+ "ResourceUnavailable.InstanceType" ,
836
+ "ResourcesSoldOut.SpecifiedInstanceType" ,
837
+ }) {
838
+ // 开机失败,继续尝试下一个实例类型
839
+ return resource .NonRetryableError (cvmResourceInsufficientError )
840
+ } else if runErr != nil {
831
841
log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
832
842
logId , request .GetAction (), request .ToJsonString (), runErr .Error ())
833
- e , ok := runErr .(* sdkErrors.TencentCloudSDKError )
834
- if ok && IsContains (CVM_RETRYABLE_ERROR , e .Code ) {
835
- return resource .RetryableError (fmt .Errorf ("cvm create error: %s, retrying" , e .Error ()))
836
- } else if ok && IsContains ([]string {
837
- "ResourceInsufficient.AvailabilityZoneSoldOut" ,
838
- "ResourceInsufficient.SpecifiedInstanceType" ,
839
- "ResourceUnavailable.InstanceType" ,
840
- "ResourcesSoldOut.SpecifiedInstanceType" ,
841
- }, e .Code ) {
842
- // 开机失败,继续尝试下一个实例类型
843
- return resource .NonRetryableError (cvmResourceInsufficientError )
844
- }
845
843
// 未知错误,直接报错
846
844
return resource .NonRetryableError (runErr )
847
845
}
@@ -1376,7 +1374,8 @@ func resourceTencentCloudInstanceUpdate(d *schema.ResourceData, meta interface{}
1376
1374
d .HasChange ("keep_image_login" ) {
1377
1375
1378
1376
err = cvmService .StopInstance (ctx , instanceId , "KEEP_CHARGING" )
1379
- if err != nil {
1377
+ // continue when instance has been stopped
1378
+ if err != nil && ! isExpectError (err , []string {"UnsupportedOperation.InstanceStateStopped" }) {
1380
1379
return
1381
1380
}
1382
1381
err = resource .Retry (2 * readRetryTimeout , func () * resource.RetryError {
0 commit comments