Skip to content

Commit ef31b07

Browse files
authored
fix(mongdb): [128835244] tencentcloud_mongodb_instance_backup_rule optimiz code and doc (#3610)
* add * add
1 parent 8969592 commit ef31b07

File tree

4 files changed

+91
-43
lines changed

4 files changed

+91
-43
lines changed

.changelog/3610.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_mongodb_instance_backup_rule: optimiz code and doc
3+
```

tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_rule.go

Lines changed: 76 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package mongodb
22

33
import (
4+
"fmt"
45
"log"
56

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

60-
logId := tccommon.GetLogId(tccommon.ContextNil)
6161
var (
62-
request = mongodb.NewSetBackupRulesRequest()
62+
instanceId string
6363
)
64-
instanceId := d.Get("instance_id").(string)
65-
request.InstanceId = helper.String(instanceId)
6664

67-
if v, _ := d.GetOk("backup_method"); v != nil {
68-
request.BackupMethod = helper.IntUint64(v.(int))
65+
if v, ok := d.GetOk("instance_id"); ok {
66+
instanceId = v.(string)
6967
}
7068

71-
if v, _ := d.GetOk("backup_time"); v != nil {
72-
request.BackupTime = helper.IntUint64(v.(int))
73-
}
69+
d.SetId(instanceId)
70+
return resourceTencentCloudMongodbInstanceBackupRuleUpdate(d, meta)
71+
}
7472

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

79-
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
80-
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().SetBackupRules(request)
77+
var (
78+
logId = tccommon.GetLogId(tccommon.ContextNil)
79+
request = mongodb.NewDescribeBackupRulesRequest()
80+
response = mongodb.NewDescribeBackupRulesResponse()
81+
instanceId = d.Id()
82+
)
83+
84+
request.InstanceId = &instanceId
85+
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
86+
ratelimit.Check(request.GetAction())
87+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().DescribeBackupRules(request)
8188
if e != nil {
8289
return tccommon.RetryError(e)
8390
} else {
8491
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
8592
}
93+
94+
if result == nil || result.Response == nil {
95+
return resource.NonRetryableError(fmt.Errorf("Describe mongodb backup rules failed, Response is nil"))
96+
}
97+
98+
response = result
8699
return nil
87100
})
101+
88102
if err != nil {
89-
log.Printf("[CRITAL]%s operate mongodb backupRule failed, reason:%+v", logId, err)
103+
log.Printf("[CRITAL]%s describe mongodb backup rules failed, reason:%+v", logId, err)
90104
return err
91105
}
92106

93-
d.SetId(instanceId)
107+
_ = d.Set("instance_id", instanceId)
94108

95-
return resourceTencentCloudMongodbInstanceBackupRuleRead(d, meta)
96-
}
109+
if response.Response.BackupMethod != nil {
110+
_ = d.Set("backup_method", response.Response.BackupMethod)
111+
}
97112

98-
func resourceTencentCloudMongodbInstanceBackupRuleRead(d *schema.ResourceData, meta interface{}) error {
99-
defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_backup_rule.read")()
100-
defer tccommon.InconsistentCheck(d, meta)()
113+
if response.Response.BackupTime != nil {
114+
_ = d.Set("backup_time", response.Response.BackupTime)
115+
}
101116

102-
request := mongodb.NewDescribeBackupRulesRequest()
103-
request.InstanceId = helper.String(d.Id())
104-
ratelimit.Check(request.GetAction())
105-
response, err := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().DescribeBackupRules(request)
106-
if err != nil {
107-
return err
117+
if response.Response.BackupSaveTime != nil {
118+
_ = d.Set("backup_retention_period", response.Response.BackupSaveTime)
108119
}
109-
_ = d.Set("instance_id", d.Id())
110-
_ = d.Set("backup_method", response.Response.BackupMethod)
111-
_ = d.Set("backup_time", response.Response.BackupTime)
112-
_ = d.Set("backup_retention_period", response.Response.BackupSaveTime)
120+
113121
return nil
114122
}
115123

116124
func resourceTencentCloudMongodbInstanceBackupRuleUpdate(d *schema.ResourceData, meta interface{}) error {
117-
defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_transparent_data_encryption.update")()
125+
defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_backup_rule.update")()
118126
defer tccommon.InconsistentCheck(d, meta)()
119127

120-
return resourceTencentCloudMongodbInstanceBackupRuleCreate(d, meta)
128+
var (
129+
logId = tccommon.GetLogId(tccommon.ContextNil)
130+
request = mongodb.NewSetBackupRulesRequest()
131+
instanceId = d.Id()
132+
)
133+
134+
if v, ok := d.GetOkExists("backup_method"); ok {
135+
request.BackupMethod = helper.IntUint64(v.(int))
136+
}
137+
138+
if v, ok := d.GetOkExists("backup_time"); ok {
139+
request.BackupTime = helper.IntUint64(v.(int))
140+
}
141+
142+
if v, ok := d.GetOkExists("backup_retention_period"); ok {
143+
request.BackupRetentionPeriod = helper.IntUint64(v.(int))
144+
}
145+
146+
request.InstanceId = &instanceId
147+
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
148+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().SetBackupRules(request)
149+
if e != nil {
150+
return tccommon.RetryError(e)
151+
} else {
152+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
153+
}
154+
155+
return nil
156+
})
157+
158+
if err != nil {
159+
log.Printf("[CRITAL]%s operate mongodb backupRule failed, reason:%+v", logId, err)
160+
return err
161+
}
162+
163+
return resourceTencentCloudMongodbInstanceBackupRuleRead(d, meta)
121164
}
122165

123166
func resourceTencentCloudMongodbInstanceBackupRuleDelete(d *schema.ResourceData, meta interface{}) error {

tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_rule.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ Provides a resource to create mongodb instance backup rule
33
Example Usage
44

55
```hcl
6-
resource "tencentcloud_mongodb_instance_backup" "backup_rule" {
7-
instance_id = "cmgo-xxxxxx"
8-
backup_method = 0
9-
backup_time = 10
6+
resource "tencentcloud_mongodb_instance_backup_rule" "example" {
7+
instance_id = "cmgo-rnht8d3d"
8+
backup_method = 0
9+
backup_time = 10
10+
backup_retention_period = 7
1011
}
1112
```
1213

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

1718
```
18-
terraform import tencentcloud_mongodb_instance_backup.backup_rule ${instanceId}
19+
terraform import tencentcloud_mongodb_instance_backup_rule.example cmgo-rnht8d3d
1920
```

website/docs/r/mongodb_instance_backup_rule.html.markdown

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@ Provides a resource to create mongodb instance backup rule
1414
## Example Usage
1515

1616
```hcl
17-
resource "tencentcloud_mongodb_instance_backup" "backup_rule" {
18-
instance_id = "cmgo-xxxxxx"
19-
backup_method = 0
20-
backup_time = 10
17+
resource "tencentcloud_mongodb_instance_backup_rule" "example" {
18+
instance_id = "cmgo-rnht8d3d"
19+
backup_method = 0
20+
backup_time = 10
21+
backup_retention_period = 7
2122
}
2223
```
2324

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

4849
```
49-
terraform import tencentcloud_mongodb_instance_backup.backup_rule ${instanceId}
50+
terraform import tencentcloud_mongodb_instance_backup_rule.example cmgo-rnht8d3d
5051
```
5152

0 commit comments

Comments
 (0)