Skip to content

Commit df6c82c

Browse files
authored
add monnogo resource (#1754)
* add monnogo resource * add changelog * add more datasource * add more datasource
1 parent 9cf46eb commit df6c82c

28 files changed

+2259
-5
lines changed

.changelog/1754.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
```release-note:new-data-source
2+
tencentcloud_mongodb_instance_backups
3+
```
4+
5+
```release-note:new-data-source
6+
tencentcloud_mongodb_instance_connections
7+
```
8+
9+
```release-note:new-data-source
10+
tencentcloud_mongodb_instance_current_op
11+
```
12+
13+
```release-note:new-data-source
14+
tencentcloud_mongodb_instance_params
15+
```
16+
17+
```release-note:new-data-source
18+
tencentcloud_mongodb_instance_slow_log
19+
```

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ require (
3838
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.599
3939
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
4040
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.412
41-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.648
41+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.651
4242
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624
4343
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.589
4444
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.572
@@ -56,7 +56,7 @@ require (
5656
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.644
5757
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.535
5858
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.644
59-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.638
59+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.651
6060
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.616
6161
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.584
6262
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.540

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1842,6 +1842,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.638/go.mod
18421842
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.644/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
18431843
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.648 h1:6vfUm7HHwPZxdQ5FQaG0vNdvb89KSnF/n+TjvM8XxcQ=
18441844
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.648/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
1845+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.651 h1:FgisXqq6LP5PD6o4YJNBMZYd3FmKNdKbJKvT4Gr03wg=
1846+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.651/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
18451847
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624 h1:nEZqsoqt1pEoaP9JjkHQy3/H00suCfzlHW1qOm2nYD8=
18461848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624/go.mod h1:+TXSVyeKwt1IhZRqKPbTREteBcP+K07Q846/ilNzLWA=
18471849
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.589 h1:LZihgirMH0vsaGScYexxwY0fTss9vHaSZs/YOQUVESg=
@@ -1879,6 +1881,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.644 h1:Pg2
18791881
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.644/go.mod h1:Nxt/FMhbwsiXxSxut2ilhYzDmhLmjWYCt4IwquXohYc=
18801882
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.638 h1:hsR/IxB6db8s326qjF63vt2ASwP3NE5YjAqzI9tgA+8=
18811883
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.638/go.mod h1:Rw+wjXNneaoEEelRqBgwQE3HDVL4lz7BHGvsP4hPv2Q=
1884+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.651 h1:Ohb58H6gIlTcd73CF+goUlEdNJ2CYkYUHTYxV/M4UL4=
1885+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.651/go.mod h1:HLqsSgUnwgkE+XecQajekinjz1B7S+1U1J66puH4jpQ=
18821886
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.616 h1:+4NM1Repe514qc4H9qFuDS0IEe0TBmC5snea//YL7Kk=
18831887
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.616/go.mod h1:n7vl5IwlMQS/XzBzj3UEkp1dvQorzuAMq6RYNgl/MjM=
18841888
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.584 h1:FJxYOAolkBhXjQMWoiTek9Ag0bslcKFHyrM7w2Jsxos=
Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
/*
2+
Use this data source to query detailed information of mongodb instance_backups
3+
4+
Example Usage
5+
6+
```hcl
7+
data "tencentcloud_mongodb_instance_backups" "instance_backups" {
8+
instance_id = "cmgo-9d0p6umb"
9+
backup_method = 0
10+
}
11+
```
12+
*/
13+
package tencentcloud
14+
15+
import (
16+
"context"
17+
18+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
19+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
20+
mongodb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb/v20190725"
21+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
22+
)
23+
24+
func dataSourceTencentCloudMongodbInstanceBackups() *schema.Resource {
25+
return &schema.Resource{
26+
Read: dataSourceTencentCloudMongodbInstanceBackupsRead,
27+
Schema: map[string]*schema.Schema{
28+
"instance_id": {
29+
Required: true,
30+
Type: schema.TypeString,
31+
Description: "Instance ID, the format is: cmgo-9d0p6umb.Same as the instance ID displayed in the cloud database console page.",
32+
},
33+
34+
"backup_method": {
35+
Optional: true,
36+
Type: schema.TypeInt,
37+
Description: "Backup mode, currently supported: 0-logic backup, 1-physical backup, 2-all backups.The default is logical backup.",
38+
},
39+
40+
"backup_list": {
41+
Computed: true,
42+
Type: schema.TypeList,
43+
Description: "backup list.",
44+
Elem: &schema.Resource{
45+
Schema: map[string]*schema.Schema{
46+
"instance_id": {
47+
Type: schema.TypeString,
48+
Computed: true,
49+
Description: "Instance ID.",
50+
},
51+
"backup_type": {
52+
Type: schema.TypeInt,
53+
Computed: true,
54+
Description: "Backup mode type.",
55+
},
56+
"backup_name": {
57+
Type: schema.TypeString,
58+
Computed: true,
59+
Description: "Backup mode name.",
60+
},
61+
"backup_desc": {
62+
Type: schema.TypeString,
63+
Computed: true,
64+
Description: "Remark of backup.",
65+
},
66+
"backup_size": {
67+
Type: schema.TypeInt,
68+
Computed: true,
69+
Description: "Size of backup(KN).",
70+
},
71+
"start_time": {
72+
Type: schema.TypeString,
73+
Computed: true,
74+
Description: "start time of backup.",
75+
},
76+
"end_time": {
77+
Type: schema.TypeString,
78+
Computed: true,
79+
Description: "end time of backup.",
80+
},
81+
"status": {
82+
Type: schema.TypeInt,
83+
Computed: true,
84+
Description: "Backup status.",
85+
},
86+
"backup_method": {
87+
Type: schema.TypeInt,
88+
Computed: true,
89+
Description: "Backup method.",
90+
},
91+
},
92+
},
93+
},
94+
95+
"result_output_file": {
96+
Type: schema.TypeString,
97+
Optional: true,
98+
Description: "Used to save results.",
99+
},
100+
},
101+
}
102+
}
103+
104+
func dataSourceTencentCloudMongodbInstanceBackupsRead(d *schema.ResourceData, meta interface{}) error {
105+
defer logElapsed("data_source.tencentcloud_mongodb_instance_backups.read")()
106+
defer inconsistentCheck(d, meta)()
107+
108+
logId := getLogId(contextNil)
109+
110+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
111+
112+
paramMap := make(map[string]interface{})
113+
if v, ok := d.GetOk("instance_id"); ok {
114+
paramMap["instance_id"] = helper.String(v.(string))
115+
}
116+
117+
if v, ok := d.GetOkExists("backup_method"); ok {
118+
paramMap["backup_method"] = helper.IntInt64(v.(int))
119+
}
120+
121+
service := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn}
122+
123+
var backupList []*mongodb.BackupInfo
124+
125+
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
126+
result, e := service.DescribeMongodbInstanceBackupsByFilter(ctx, paramMap)
127+
if e != nil {
128+
return retryError(e)
129+
}
130+
backupList = result
131+
return nil
132+
})
133+
if err != nil {
134+
return err
135+
}
136+
137+
ids := make([]string, 0, len(backupList))
138+
tmpList := make([]map[string]interface{}, 0, len(backupList))
139+
140+
if backupList != nil {
141+
for _, backupInfo := range backupList {
142+
backupInfoMap := map[string]interface{}{}
143+
144+
if backupInfo.InstanceId != nil {
145+
backupInfoMap["instance_id"] = backupInfo.InstanceId
146+
}
147+
148+
if backupInfo.BackupType != nil {
149+
backupInfoMap["backup_type"] = backupInfo.BackupType
150+
}
151+
152+
if backupInfo.BackupName != nil {
153+
backupInfoMap["backup_name"] = backupInfo.BackupName
154+
}
155+
156+
if backupInfo.BackupDesc != nil {
157+
backupInfoMap["backup_desc"] = backupInfo.BackupDesc
158+
}
159+
160+
if backupInfo.BackupSize != nil {
161+
backupInfoMap["backup_size"] = backupInfo.BackupSize
162+
}
163+
164+
if backupInfo.StartTime != nil {
165+
backupInfoMap["start_time"] = backupInfo.StartTime
166+
}
167+
168+
if backupInfo.EndTime != nil {
169+
backupInfoMap["end_time"] = backupInfo.EndTime
170+
}
171+
172+
if backupInfo.Status != nil {
173+
backupInfoMap["status"] = backupInfo.Status
174+
}
175+
176+
if backupInfo.BackupMethod != nil {
177+
backupInfoMap["backup_method"] = backupInfo.BackupMethod
178+
}
179+
180+
ids = append(ids, *backupInfo.InstanceId)
181+
tmpList = append(tmpList, backupInfoMap)
182+
}
183+
184+
_ = d.Set("backup_list", tmpList)
185+
}
186+
187+
d.SetId(helper.DataResourceIdsHash(ids))
188+
output, ok := d.GetOk("result_output_file")
189+
if ok && output.(string) != "" {
190+
if e := writeToFile(output.(string), tmpList); e != nil {
191+
return e
192+
}
193+
}
194+
return nil
195+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
func TestAccTencentCloudMongodbInstanceBackupsDataSource_basic(t *testing.T) {
10+
t.Parallel()
11+
resource.Test(t, resource.TestCase{
12+
PreCheck: func() {
13+
testAccPreCheck(t)
14+
},
15+
Providers: testAccProviders,
16+
Steps: []resource.TestStep{
17+
{
18+
Config: testAccMongodbInstanceBackupsDataSource,
19+
Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_mongodb_instance_backups.instance_backups")),
20+
},
21+
},
22+
})
23+
}
24+
25+
const testAccMongodbInstanceBackupsDataSource = `
26+
27+
data "tencentcloud_mongodb_instance_backups" "instance_backups" {
28+
instance_id = "cmgo-gwqk8669"
29+
backup_method = 0
30+
}
31+
32+
`

0 commit comments

Comments
 (0)