Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changelog/3610.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/tencentcloud_mongodb_instance_backup_rule: optimiz code and doc
```
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package mongodb

import (
"fmt"
"log"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
Expand Down Expand Up @@ -57,67 +58,109 @@ func resourceTencentCloudMongodbInstanceBackupRuleCreate(d *schema.ResourceData,
defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_backup_rule.create")()
defer tccommon.InconsistentCheck(d, meta)()

logId := tccommon.GetLogId(tccommon.ContextNil)
var (
request = mongodb.NewSetBackupRulesRequest()
instanceId string
)
instanceId := d.Get("instance_id").(string)
request.InstanceId = helper.String(instanceId)

if v, _ := d.GetOk("backup_method"); v != nil {
request.BackupMethod = helper.IntUint64(v.(int))
if v, ok := d.GetOk("instance_id"); ok {
instanceId = v.(string)
}

if v, _ := d.GetOk("backup_time"); v != nil {
request.BackupTime = helper.IntUint64(v.(int))
}
d.SetId(instanceId)
return resourceTencentCloudMongodbInstanceBackupRuleUpdate(d, meta)
}

if v, ok := d.GetOkExists("backup_retention_period"); ok {
request.BackupRetentionPeriod = helper.IntUint64(v.(int))
}
func resourceTencentCloudMongodbInstanceBackupRuleRead(d *schema.ResourceData, meta interface{}) error {
defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_backup_rule.read")()
defer tccommon.InconsistentCheck(d, meta)()

err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().SetBackupRules(request)
var (
logId = tccommon.GetLogId(tccommon.ContextNil)
request = mongodb.NewDescribeBackupRulesRequest()
response = mongodb.NewDescribeBackupRulesResponse()
instanceId = d.Id()
)

request.InstanceId = &instanceId
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
ratelimit.Check(request.GetAction())
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().DescribeBackupRules(request)
if e != nil {
return tccommon.RetryError(e)
} else {
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
}

if result == nil || result.Response == nil {
return resource.NonRetryableError(fmt.Errorf("Describe mongodb backup rules failed, Response is nil"))
}

response = result
return nil
})

if err != nil {
log.Printf("[CRITAL]%s operate mongodb backupRule failed, reason:%+v", logId, err)
log.Printf("[CRITAL]%s describe mongodb backup rules failed, reason:%+v", logId, err)
return err
}

d.SetId(instanceId)
_ = d.Set("instance_id", instanceId)

return resourceTencentCloudMongodbInstanceBackupRuleRead(d, meta)
}
if response.Response.BackupMethod != nil {
_ = d.Set("backup_method", response.Response.BackupMethod)
}

func resourceTencentCloudMongodbInstanceBackupRuleRead(d *schema.ResourceData, meta interface{}) error {
defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_backup_rule.read")()
defer tccommon.InconsistentCheck(d, meta)()
if response.Response.BackupTime != nil {
_ = d.Set("backup_time", response.Response.BackupTime)
}

request := mongodb.NewDescribeBackupRulesRequest()
request.InstanceId = helper.String(d.Id())
ratelimit.Check(request.GetAction())
response, err := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().DescribeBackupRules(request)
if err != nil {
return err
if response.Response.BackupSaveTime != nil {
_ = d.Set("backup_retention_period", response.Response.BackupSaveTime)
}
_ = d.Set("instance_id", d.Id())
_ = d.Set("backup_method", response.Response.BackupMethod)
_ = d.Set("backup_time", response.Response.BackupTime)
_ = d.Set("backup_retention_period", response.Response.BackupSaveTime)

return nil
}

func resourceTencentCloudMongodbInstanceBackupRuleUpdate(d *schema.ResourceData, meta interface{}) error {
defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_transparent_data_encryption.update")()
defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_backup_rule.update")()
defer tccommon.InconsistentCheck(d, meta)()

return resourceTencentCloudMongodbInstanceBackupRuleCreate(d, meta)
var (
logId = tccommon.GetLogId(tccommon.ContextNil)
request = mongodb.NewSetBackupRulesRequest()
instanceId = d.Id()
)

if v, ok := d.GetOkExists("backup_method"); ok {
request.BackupMethod = helper.IntUint64(v.(int))
}

if v, ok := d.GetOkExists("backup_time"); ok {
request.BackupTime = helper.IntUint64(v.(int))
}

if v, ok := d.GetOkExists("backup_retention_period"); ok {
request.BackupRetentionPeriod = helper.IntUint64(v.(int))
}

request.InstanceId = &instanceId
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().SetBackupRules(request)
if e != nil {
return tccommon.RetryError(e)
} else {
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
}

return nil
})

if err != nil {
log.Printf("[CRITAL]%s operate mongodb backupRule failed, reason:%+v", logId, err)
return err
}

return resourceTencentCloudMongodbInstanceBackupRuleRead(d, meta)
}

func resourceTencentCloudMongodbInstanceBackupRuleDelete(d *schema.ResourceData, meta interface{}) error {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ Provides a resource to create mongodb instance backup rule
Example Usage

```hcl
resource "tencentcloud_mongodb_instance_backup" "backup_rule" {
instance_id = "cmgo-xxxxxx"
backup_method = 0
backup_time = 10
resource "tencentcloud_mongodb_instance_backup_rule" "example" {
instance_id = "cmgo-rnht8d3d"
backup_method = 0
backup_time = 10
backup_retention_period = 7
}
```

Expand All @@ -15,5 +16,5 @@ Import
mongodb instance backup rule can be imported using the id, e.g.

```
terraform import tencentcloud_mongodb_instance_backup.backup_rule ${instanceId}
terraform import tencentcloud_mongodb_instance_backup_rule.example cmgo-rnht8d3d
```
11 changes: 6 additions & 5 deletions website/docs/r/mongodb_instance_backup_rule.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@ Provides a resource to create mongodb instance backup rule
## Example Usage

```hcl
resource "tencentcloud_mongodb_instance_backup" "backup_rule" {
instance_id = "cmgo-xxxxxx"
backup_method = 0
backup_time = 10
resource "tencentcloud_mongodb_instance_backup_rule" "example" {
instance_id = "cmgo-rnht8d3d"
backup_method = 0
backup_time = 10
backup_retention_period = 7
}
```

Expand Down Expand Up @@ -46,6 +47,6 @@ In addition to all arguments above, the following attributes are exported:
mongodb instance backup rule can be imported using the id, e.g.

```
terraform import tencentcloud_mongodb_instance_backup.backup_rule ${instanceId}
terraform import tencentcloud_mongodb_instance_backup_rule.example cmgo-rnht8d3d
```

Loading