Skip to content

Commit 1777598

Browse files
authored
Merge pull request #513 from cyberHermanwang/master
modify mongodb force_delete
2 parents 5f7c213 + 3fdf2dc commit 1777598

5 files changed

+88
-6
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
## 1.42.1 (Unreleased)
2+
3+
BUG FIXES:
4+
* Resource: `tencentcloud_mongodb_instance` Fix the error of releasing associated resources when destroying mongodb postpaid instance.
5+
* Resource: `tencentcloud_mongodb_sharding_instance` Fix the error of releasing associated resources when destroying mongodb postpaid sharding instance.
6+
* Resource: `tencentcloud_mongodb_standby_instance` Fix the error of releasing associated resources when destroying mongodb postpaid standby instance.
7+
28
## 1.42.0 (September 8, 2020)
39

410
FEATURES:

tencentcloud/resource_tc_mongodb_instance.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,18 @@ func resourceTencentCloudMongodbInstanceDelete(d *schema.ResourceData, meta inte
511511
if err != nil {
512512
return err
513513
}
514-
515-
return nil
514+
err = mongodbService.OfflineIsolatedDBInstance(ctx, instanceId)
515+
if err != nil {
516+
log.Printf("[CRITAL]%s mongodb %s fail, reason:%s", logId, "OfflineIsolatedDBInstance", err.Error())
517+
return err
518+
}
519+
//describe and check not exist
520+
_, has, errRet := mongodbService.DescribeInstanceById(ctx, instanceId)
521+
if errRet != nil {
522+
return errRet
523+
}
524+
if !has {
525+
return nil
526+
}
527+
return fmt.Errorf("[CRITAL]%s mongodb %s fail", logId, "OfflineIsolatedDBInstance")
516528
}

tencentcloud/resource_tc_mongodb_sharding_instance.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,18 @@ func resourceMongodbShardingInstanceDelete(d *schema.ResourceData, meta interfac
506506
if err != nil {
507507
return err
508508
}
509-
510-
return nil
509+
err = mongodbService.OfflineIsolatedDBInstance(ctx, instanceId)
510+
if err != nil {
511+
log.Printf("[CRITAL]%s mongodb %s fail, reason:%s", logId, "OfflineIsolatedDBInstance", err.Error())
512+
return err
513+
}
514+
//describe and check not exist
515+
_, has, errRet := mongodbService.DescribeInstanceById(ctx, instanceId)
516+
if errRet != nil {
517+
return errRet
518+
}
519+
if !has {
520+
return nil
521+
}
522+
return fmt.Errorf("[CRITAL]%s mongodb %s fail", logId, "OfflineIsolatedDBInstance")
511523
}

tencentcloud/resource_tc_mongodb_standby_instance.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,18 @@ func resourceTencentCloudMongodbStandbyInstanceDelete(d *schema.ResourceData, me
556556
if err != nil {
557557
return err
558558
}
559-
560-
return nil
559+
err = mongodbService.OfflineIsolatedDBInstance(ctx, instanceId)
560+
if err != nil {
561+
log.Printf("[CRITAL]%s mongodb %s fail, reason:%s", logId, "OfflineIsolatedDBInstance", err.Error())
562+
return err
563+
}
564+
//describe and check not exist
565+
_, has, errRet := mongodbService.DescribeInstanceById(ctx, instanceId)
566+
if errRet != nil {
567+
return errRet
568+
}
569+
if !has {
570+
return nil
571+
}
572+
return fmt.Errorf("[CRITAL]%s mongodb %s fail", logId, "OfflineIsolatedDBInstance")
561573
}

tencentcloud/service_tencentcloud_mongodb.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,3 +313,43 @@ func (me *MongodbService) DescribeAsyncRequestInfo(ctx context.Context, asyncId
313313

314314
return nil
315315
}
316+
317+
func (me *MongodbService) OfflineIsolatedDBInstance(ctx context.Context, instanceId string) (errRet error) {
318+
logId := getLogId(ctx)
319+
request := mongodb.NewOfflineIsolatedDBInstanceRequest()
320+
request.InstanceId = &instanceId
321+
defer func() {
322+
if errRet != nil {
323+
log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error())
324+
}
325+
}()
326+
var response *mongodb.OfflineIsolatedDBInstanceResponse
327+
var err error
328+
err = resource.Retry(writeRetryTimeout, func() *resource.RetryError {
329+
ratelimit.Check(request.GetAction())
330+
response, err = me.client.UseMongodbClient().OfflineIsolatedDBInstance(request)
331+
if err != nil {
332+
if ee, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
333+
if ee.Code == "InvalidParameterValue.LockFailed" {
334+
return resource.RetryableError(err)
335+
} else {
336+
return resource.NonRetryableError(err)
337+
}
338+
}
339+
log.Printf("[CRITAL]%s api[%s] fail, reason:%s", logId, request.GetAction(), err.Error())
340+
return resource.NonRetryableError(err)
341+
}
342+
return nil
343+
})
344+
if err != nil {
345+
return err
346+
}
347+
if response != nil && response.Response != nil {
348+
if err = me.DescribeAsyncRequestInfo(ctx, *response.Response.AsyncRequestId); err != nil {
349+
return err
350+
}
351+
}
352+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]",
353+
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
354+
return nil
355+
}

0 commit comments

Comments
 (0)