Skip to content

Commit 908f9ce

Browse files
gitmknanonymous
andauthored
feat: support cdb resource (#1830)
* feat: support cdb resource * feat: add changelog --------- Co-authored-by: anonymous <anonymous@mail.org>
1 parent 05ce469 commit 908f9ce

27 files changed

+2334
-1
lines changed

.changelog/1830.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
```release-note:new-resource
2+
tencentcloud_mysql_backup_encryption_status
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_mysql_dr_instance_to_mater
7+
```
8+
9+
```release-note:new-resource
10+
tencentcloud_mysql_instance_encryption_operation
11+
```
12+
13+
```release-note:new-resource
14+
tencentcloud_mysql_password_complexity
15+
```
16+
17+
```release-note:new-resource
18+
tencentcloud_mysql_remote_backup_config
19+
```
20+
21+
```release-note:new-resource
22+
tencentcloud_mysql_restart_db_instances_operation
23+
```

tencentcloud/data_source_tc_mysql_proxy_custom_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
77
)
88

9-
func TestAccTencentCloudMysqlNeedFixProxyCustomDataSource_basic(t *testing.T) {
9+
func TestAccTencentCloudNeedFixMysqlProxyCustomDataSource_basic(t *testing.T) {
1010
t.Parallel()
1111
resource.Test(t, resource.TestCase{
1212
PreCheck: func() {

tencentcloud/provider.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,12 @@ TencentDB for MySQL(cdb)
527527
tencentcloud_mysql_audit_log_file
528528
tencentcloud_mysql_backup_download_restriction
529529
tencentcloud_mysql_renew_db_instance_operation
530+
tencentcloud_mysql_backup_encryption_status
531+
tencentcloud_mysql_dr_instance_to_mater
532+
tencentcloud_mysql_instance_encryption_operation
533+
tencentcloud_mysql_password_complexity
534+
tencentcloud_mysql_remote_backup_config
535+
tencentcloud_mysql_restart_db_instances_operation
530536
531537
Cloud Monitor(Monitor)
532538
Data Source
@@ -1899,6 +1905,14 @@ func Provider() *schema.Provider {
18991905
"tencentcloud_mysql_audit_log_file": resourceTencentCloudMysqlAuditLogFile(),
19001906
"tencentcloud_mysql_backup_download_restriction": resourceTencentCloudMysqlBackupDownloadRestriction(),
19011907
"tencentcloud_mysql_renew_db_instance_operation": resourceTencentCloudMysqlRenewDbInstanceOperation(),
1908+
"tencentcloud_mysql_backup_encryption_status": resourceTencentCloudMysqlBackupEncryptionStatus(),
1909+
"tencentcloud_mysql_db_import_job_operation": resourceTencentCloudMysqlDbImportJobOperation(),
1910+
"tencentcloud_mysql_dr_instance_to_mater": resourceTencentCloudMysqlDrInstanceToMater(),
1911+
"tencentcloud_mysql_instance_encryption_operation": resourceTencentCloudMysqlInstanceEncryptionOperation(),
1912+
"tencentcloud_mysql_isolate_instance": resourceTencentCloudMysqlIsolateInstance(),
1913+
"tencentcloud_mysql_password_complexity": resourceTencentCloudMysqlPasswordComplexity(),
1914+
"tencentcloud_mysql_remote_backup_config": resourceTencentCloudMysqlRemoteBackupConfig(),
1915+
"tencentcloud_mysql_restart_db_instances_operation": resourceTencentCloudMysqlRestartDbInstancesOperation(),
19021916
"tencentcloud_cos_bucket": resourceTencentCloudCosBucket(),
19031917
"tencentcloud_cos_bucket_object": resourceTencentCloudCosBucketObject(),
19041918
"tencentcloud_cfs_file_system": resourceTencentCloudCfsFileSystem(),
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
/*
2+
Provides a resource to create a mysql backup_encryption_status
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_mysql_backup_encryption_status" "backup_encryption_status" {
8+
instance_id = "cdb-c1nl9rpv"
9+
encryption_status = "on"
10+
}
11+
```
12+
13+
Import
14+
15+
mysql backup_encryption_status can be imported using the id, e.g.
16+
17+
```
18+
terraform import tencentcloud_mysql_backup_encryption_status.backup_encryption_status backup_encryption_status_id
19+
```
20+
*/
21+
package tencentcloud
22+
23+
import (
24+
"context"
25+
"log"
26+
27+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
28+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
29+
mysql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb/v20170320"
30+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
31+
)
32+
33+
func resourceTencentCloudMysqlBackupEncryptionStatus() *schema.Resource {
34+
return &schema.Resource{
35+
Create: resourceTencentCloudMysqlBackupEncryptionStatusCreate,
36+
Read: resourceTencentCloudMysqlBackupEncryptionStatusRead,
37+
Update: resourceTencentCloudMysqlBackupEncryptionStatusUpdate,
38+
Delete: resourceTencentCloudMysqlBackupEncryptionStatusDelete,
39+
Importer: &schema.ResourceImporter{
40+
State: schema.ImportStatePassthrough,
41+
},
42+
Schema: map[string]*schema.Schema{
43+
"instance_id": {
44+
Required: true,
45+
Type: schema.TypeString,
46+
Description: "Instance ID, in the format: cdb-XXXX. Same instance ID as displayed in the ApsaraDB for Console page.",
47+
},
48+
49+
"encryption_status": {
50+
Required: true,
51+
Type: schema.TypeString,
52+
Description: "Whether physical backup encryption is enabled for the instance. Possible values are `on`, `off`.",
53+
},
54+
},
55+
}
56+
}
57+
58+
func resourceTencentCloudMysqlBackupEncryptionStatusCreate(d *schema.ResourceData, meta interface{}) error {
59+
defer logElapsed("resource.tencentcloud_mysql_backup_encryption_status.create")()
60+
defer inconsistentCheck(d, meta)()
61+
62+
var instanceId string
63+
if v, ok := d.GetOk("instance_id"); ok {
64+
instanceId = v.(string)
65+
}
66+
67+
d.SetId(instanceId)
68+
69+
return resourceTencentCloudMysqlBackupEncryptionStatusUpdate(d, meta)
70+
}
71+
72+
func resourceTencentCloudMysqlBackupEncryptionStatusRead(d *schema.ResourceData, meta interface{}) error {
73+
defer logElapsed("resource.tencentcloud_mysql_backup_encryption_status.read")()
74+
defer inconsistentCheck(d, meta)()
75+
76+
logId := getLogId(contextNil)
77+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
78+
79+
service := MysqlService{client: meta.(*TencentCloudClient).apiV3Conn}
80+
81+
instanceId := d.Id()
82+
83+
backupEncryptionStatus, err := service.DescribeMysqlBackupEncryptionStatusById(ctx, instanceId)
84+
if err != nil {
85+
return err
86+
}
87+
88+
if backupEncryptionStatus == nil {
89+
d.SetId("")
90+
log.Printf("[WARN]%s resource `MysqlBackupEncryptionStatus` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
91+
return nil
92+
}
93+
94+
_ = d.Set("instance_id", instanceId)
95+
96+
if backupEncryptionStatus.EncryptionStatus != nil {
97+
_ = d.Set("encryption_status", backupEncryptionStatus.EncryptionStatus)
98+
}
99+
100+
return nil
101+
}
102+
103+
func resourceTencentCloudMysqlBackupEncryptionStatusUpdate(d *schema.ResourceData, meta interface{}) error {
104+
defer logElapsed("resource.tencentcloud_mysql_backup_encryption_status.update")()
105+
defer inconsistentCheck(d, meta)()
106+
107+
logId := getLogId(contextNil)
108+
request := mysql.NewModifyBackupEncryptionStatusRequest()
109+
110+
instanceId := d.Id()
111+
112+
request.InstanceId = &instanceId
113+
114+
if v, ok := d.GetOk("encryption_status"); ok {
115+
request.EncryptionStatus = helper.String(v.(string))
116+
}
117+
118+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
119+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseMysqlClient().ModifyBackupEncryptionStatus(request)
120+
if e != nil {
121+
return retryError(e)
122+
} else {
123+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
124+
}
125+
return nil
126+
})
127+
if err != nil {
128+
log.Printf("[CRITAL]%s update mysql backupEncryptionStatus failed, reason:%+v", logId, err)
129+
return err
130+
}
131+
132+
return resourceTencentCloudMysqlBackupEncryptionStatusRead(d, meta)
133+
}
134+
135+
func resourceTencentCloudMysqlBackupEncryptionStatusDelete(d *schema.ResourceData, meta interface{}) error {
136+
defer logElapsed("resource.tencentcloud_mysql_backup_encryption_status.delete")()
137+
defer inconsistentCheck(d, meta)()
138+
139+
return nil
140+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
// go test -i; go test -test.run TestAccTencentCloudMysqlBackupEncryptionStatusResource_basic -v
10+
func TestAccTencentCloudMysqlBackupEncryptionStatusResource_basic(t *testing.T) {
11+
t.Parallel()
12+
13+
resource.Test(t, resource.TestCase{
14+
PreCheck: func() { testAccPreCheck(t) },
15+
Providers: testAccProviders,
16+
Steps: []resource.TestStep{
17+
{
18+
Config: testAccMysqlBackupEncryptionStatus,
19+
Check: resource.ComposeAggregateTestCheckFunc(
20+
resource.TestCheckResourceAttrSet("tencentcloud_mysql_backup_encryption_status.backup_encryption_status", "id"),
21+
resource.TestCheckResourceAttr("tencentcloud_mysql_backup_encryption_status.backup_encryption_status", "encryption_status", "on"),
22+
),
23+
},
24+
{
25+
ResourceName: "tencentcloud_mysql_backup_encryption_status.backup_encryption_status",
26+
ImportState: true,
27+
ImportStateVerify: true,
28+
},
29+
{
30+
Config: testAccMysqlBackupEncryptionStatusUp,
31+
Check: resource.ComposeTestCheckFunc(
32+
resource.TestCheckResourceAttrSet("tencentcloud_mysql_backup_encryption_status.backup_encryption_status", "id"),
33+
resource.TestCheckResourceAttr("tencentcloud_mysql_backup_encryption_status.backup_encryption_status", "encryption_status", "off"),
34+
),
35+
},
36+
},
37+
})
38+
}
39+
40+
const testAccMysqlBackupEncryptionStatusVar = `
41+
variable "instance_id" {
42+
default = "` + defaultDbBrainInstanceId + `"
43+
}
44+
`
45+
46+
const testAccMysqlBackupEncryptionStatus = testAccMysqlBackupEncryptionStatusVar + `
47+
48+
resource "tencentcloud_mysql_backup_encryption_status" "backup_encryption_status" {
49+
instance_id = var.instance_id
50+
encryption_status = "on"
51+
}
52+
53+
`
54+
55+
const testAccMysqlBackupEncryptionStatusUp = testAccMysqlBackupEncryptionStatusVar + `
56+
57+
resource "tencentcloud_mysql_backup_encryption_status" "backup_encryption_status" {
58+
instance_id = var.instance_id
59+
encryption_status = "off"
60+
}
61+
62+
`

0 commit comments

Comments
 (0)