Skip to content

Commit ed7adfc

Browse files
author
mikatong
committed
update
1 parent 68c6dd4 commit ed7adfc

4 files changed

+75
-60
lines changed

tencentcloud/services/mongodb/resource_tc_mongodb_instance.go

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,9 @@ func resourceTencentCloudMongodbInstanceUpdate(d *schema.ResourceData, meta inte
553553
removeNodeList := v.([]interface{})
554554
params["remove_node_list"] = removeNodeList
555555
}
556+
var inMaintenance int
556557
if v, ok := d.GetOkExists("in_maintenance"); ok {
558+
inMaintenance = v.(int)
557559
params["in_maintenance"] = v.(int)
558560
}
559561
dealId, err := mongodbService.UpgradeInstance(ctx, instanceId, memory, volume, params)
@@ -565,26 +567,27 @@ func resourceTencentCloudMongodbInstanceUpdate(d *schema.ResourceData, meta inte
565567
return fmt.Errorf("deal id is empty")
566568
}
567569

568-
errUpdate := resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError {
569-
dealResponseParams, err := mongodbService.DescribeDBInstanceDeal(ctx, dealId)
570-
if err != nil {
571-
if sdkError, ok := err.(*errors.TencentCloudSDKError); ok {
572-
if sdkError.Code == "InvalidParameter" && sdkError.Message == "deal resource not found." {
573-
return resource.RetryableError(err)
570+
if inMaintenance == 0 {
571+
errUpdate := resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError {
572+
dealResponseParams, err := mongodbService.DescribeDBInstanceDeal(ctx, dealId)
573+
if err != nil {
574+
if sdkError, ok := err.(*errors.TencentCloudSDKError); ok {
575+
if sdkError.Code == "InvalidParameter" && sdkError.Message == "deal resource not found." {
576+
return resource.RetryableError(err)
577+
}
574578
}
579+
return resource.NonRetryableError(err)
575580
}
576-
return resource.NonRetryableError(err)
577-
}
578581

579-
if *dealResponseParams.Status != MONGODB_STATUS_DELIVERY_SUCCESS {
580-
return resource.RetryableError(fmt.Errorf("mongodb status is not delivery success"))
582+
if *dealResponseParams.Status != MONGODB_STATUS_DELIVERY_SUCCESS {
583+
return resource.RetryableError(fmt.Errorf("mongodb status is not delivery success"))
584+
}
585+
return nil
586+
})
587+
if errUpdate != nil {
588+
return errUpdate
581589
}
582-
return nil
583-
})
584-
if errUpdate != nil {
585-
return errUpdate
586590
}
587-
588591
}
589592

590593
if d.HasChange("instance_name") {

tencentcloud/services/mongodb/resource_tc_mongodb_readonly_instance.go

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,9 @@ func resourceTencentCloudMongodbReadOnlyInstanceUpdate(d *schema.ResourceData, m
449449
memory := d.Get("memory").(int)
450450
volume := d.Get("volume").(int)
451451
params := make(map[string]interface{})
452+
var inMaintenance int
452453
if v, ok := d.GetOkExists("in_maintenance"); ok {
454+
inMaintenance = v.(int)
453455
params["in_maintenance"] = v.(int)
454456
}
455457
dealId, err := mongodbService.UpgradeInstance(ctx, instanceId, memory, volume, params)
@@ -460,24 +462,26 @@ func resourceTencentCloudMongodbReadOnlyInstanceUpdate(d *schema.ResourceData, m
460462
return fmt.Errorf("deal id is empty")
461463
}
462464

463-
errUpdate := resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError {
464-
dealResponseParams, err := mongodbService.DescribeDBInstanceDeal(ctx, dealId)
465-
if err != nil {
466-
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
467-
if sdkError.Code == "InvalidParameter" && sdkError.Message == "deal resource not found." {
468-
return resource.RetryableError(err)
465+
if inMaintenance == 0 {
466+
errUpdate := resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError {
467+
dealResponseParams, err := mongodbService.DescribeDBInstanceDeal(ctx, dealId)
468+
if err != nil {
469+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
470+
if sdkError.Code == "InvalidParameter" && sdkError.Message == "deal resource not found." {
471+
return resource.RetryableError(err)
472+
}
469473
}
474+
return resource.NonRetryableError(err)
470475
}
471-
return resource.NonRetryableError(err)
472-
}
473476

474-
if *dealResponseParams.Status != MONGODB_STATUS_DELIVERY_SUCCESS {
475-
return resource.RetryableError(fmt.Errorf("mongodb status is not delivery success"))
477+
if *dealResponseParams.Status != MONGODB_STATUS_DELIVERY_SUCCESS {
478+
return resource.RetryableError(fmt.Errorf("mongodb status is not delivery success"))
479+
}
480+
return nil
481+
})
482+
if errUpdate != nil {
483+
return errUpdate
476484
}
477-
return nil
478-
})
479-
if errUpdate != nil {
480-
return errUpdate
481485
}
482486

483487
}

tencentcloud/services/mongodb/resource_tc_mongodb_sharding_instance.go

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,10 @@ func resourceMongodbShardingInstanceUpdate(d *schema.ResourceData, meta interfac
469469
memory := d.Get("memory").(int)
470470
volume := d.Get("volume").(int)
471471
params := make(map[string]interface{})
472+
473+
var inMaintenance int
472474
if v, ok := d.GetOkExists("in_maintenance"); ok {
475+
inMaintenance = v.(int)
473476
params["in_maintenance"] = v.(int)
474477
}
475478
_, err := mongodbService.UpgradeInstance(ctx, instanceId, memory, volume, params)
@@ -478,26 +481,27 @@ func resourceMongodbShardingInstanceUpdate(d *schema.ResourceData, meta interfac
478481
}
479482

480483
// it will take time to wait for memory and volume change even describe request succeeded even the status returned in describe response is running
481-
errUpdate := resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError {
482-
infos, has, e := mongodbService.DescribeInstanceById(ctx, instanceId)
483-
if e != nil {
484-
return resource.NonRetryableError(e)
485-
}
486-
if !has {
487-
return resource.NonRetryableError(fmt.Errorf("[CRITAL]%s updating mongodb sharding instance failed, instance doesn't exist", logId))
488-
}
484+
if inMaintenance == 0 {
485+
errUpdate := resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError {
486+
infos, has, e := mongodbService.DescribeInstanceById(ctx, instanceId)
487+
if e != nil {
488+
return resource.NonRetryableError(e)
489+
}
490+
if !has {
491+
return resource.NonRetryableError(fmt.Errorf("[CRITAL]%s updating mongodb sharding instance failed, instance doesn't exist", logId))
492+
}
489493

490-
memoryDes := *infos.Memory / 1024 / (*infos.ReplicationSetNum)
491-
volumeDes := *infos.Volume / 1024 / (*infos.ReplicationSetNum)
492-
if memory != int(memoryDes) || volume != int(volumeDes) {
493-
return resource.RetryableError(fmt.Errorf("[CRITAL] updating mongodb sharding instance, current memory and volume values: %d, %d, waiting for them becoming new value: %d, %d", memoryDes, volumeDes, d.Get("memory").(int), d.Get("volume").(int)))
494+
memoryDes := *infos.Memory / 1024 / (*infos.ReplicationSetNum)
495+
volumeDes := *infos.Volume / 1024 / (*infos.ReplicationSetNum)
496+
if memory != int(memoryDes) || volume != int(volumeDes) {
497+
return resource.RetryableError(fmt.Errorf("[CRITAL] updating mongodb sharding instance, current memory and volume values: %d, %d, waiting for them becoming new value: %d, %d", memoryDes, volumeDes, d.Get("memory").(int), d.Get("volume").(int)))
498+
}
499+
return nil
500+
})
501+
if errUpdate != nil {
502+
return errUpdate
494503
}
495-
return nil
496-
})
497-
if errUpdate != nil {
498-
return errUpdate
499504
}
500-
501505
}
502506

503507
if d.HasChange("instance_name") {

tencentcloud/services/mongodb/resource_tc_mongodb_standby_instance.go

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,9 @@ func resourceTencentCloudMongodbStandbyInstanceUpdate(d *schema.ResourceData, me
404404
memory := d.Get("memory").(int)
405405
volume := d.Get("volume").(int)
406406
params := make(map[string]interface{})
407+
var inMaintenance int
407408
if v, ok := d.GetOkExists("in_maintenance"); ok {
409+
inMaintenance = v.(int)
408410
params["in_maintenance"] = v.(int)
409411
}
410412
dealId, err := mongodbService.UpgradeInstance(ctx, instanceId, memory, volume, params)
@@ -415,24 +417,26 @@ func resourceTencentCloudMongodbStandbyInstanceUpdate(d *schema.ResourceData, me
415417
return fmt.Errorf("deal id is empty")
416418
}
417419

418-
errUpdate := resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError {
419-
dealResponseParams, err := mongodbService.DescribeDBInstanceDeal(ctx, dealId)
420-
if err != nil {
421-
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
422-
if sdkError.Code == "InvalidParameter" && sdkError.Message == "deal resource not found." {
423-
return resource.RetryableError(err)
420+
if inMaintenance == 0 {
421+
errUpdate := resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError {
422+
dealResponseParams, err := mongodbService.DescribeDBInstanceDeal(ctx, dealId)
423+
if err != nil {
424+
if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
425+
if sdkError.Code == "InvalidParameter" && sdkError.Message == "deal resource not found." {
426+
return resource.RetryableError(err)
427+
}
424428
}
429+
return resource.NonRetryableError(err)
425430
}
426-
return resource.NonRetryableError(err)
427-
}
428431

429-
if *dealResponseParams.Status != MONGODB_STATUS_DELIVERY_SUCCESS {
430-
return resource.RetryableError(fmt.Errorf("mongodb status is not delivery success"))
432+
if *dealResponseParams.Status != MONGODB_STATUS_DELIVERY_SUCCESS {
433+
return resource.RetryableError(fmt.Errorf("mongodb status is not delivery success"))
434+
}
435+
return nil
436+
})
437+
if errUpdate != nil {
438+
return errUpdate
431439
}
432-
return nil
433-
})
434-
if errUpdate != nil {
435-
return errUpdate
436440
}
437441

438442
}

0 commit comments

Comments
 (0)