Skip to content

Commit c012574

Browse files
gitmknanonymous
andauthored
faet: support instance velevant (#1875)
* faet: support instance velevant * feat: add changelog * fix: modify replicate --------- Co-authored-by: anonymous <anonymous@mail.org>
1 parent 7948b09 commit c012574

12 files changed

+788
-44
lines changed

.changelog/1875.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
```release-note:new-resource
2+
tencentcloud_redis_replicate_attachment
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_redis_backup_operation
7+
```

tencentcloud/basic_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1016,9 +1016,11 @@ variable "cbs_backup_disk_id" {
10161016

10171017
// CRS
10181018
const (
1019-
defaultCrsInstanceId = "crs-jf4ico4v"
1020-
defaultCrsVpcId = "vpc-4owdpnwr"
1021-
defaultCrsSubnetId = "subnet-4o0zd840"
1019+
defaultCrsInstanceId = "crs-jf4ico4v"
1020+
defaultCrsVpcId = "vpc-4owdpnwr"
1021+
defaultCrsSubnetId = "subnet-4o0zd840"
1022+
defaultCrsSecurityGroups = "sg-edmur627"
1023+
defaultCrsGroupId = "crs-rpl-orfiwmn5"
10221024
)
10231025

10241026
// End of CRS

tencentcloud/data_source_tc_mysql_data_backup_overview_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,6 @@ const testAccMysqlDataBackupOverviewDataSource = `
4343
4444
data "tencentcloud_mysql_data_backup_overview" "data_backup_overview" {
4545
product = "mysql"
46-
}
46+
}
4747
4848
`

tencentcloud/provider.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,8 @@ TencentDB for Redis(crs)
690690
tencentcloud_redis_maintenance_window
691691
tencentcloud_redis_replica_readonly
692692
tencentcloud_redis_switch_master
693+
tencentcloud_redis_replicate_attachment
694+
tencentcloud_redis_backup_operation
693695
694696
Serverless Cloud Function(SCF)
695697
Data Source
@@ -2200,6 +2202,8 @@ func Provider() *schema.Provider {
22002202
"tencentcloud_redis_maintenance_window": resourceTencentCloudRedisMaintenanceWindow(),
22012203
"tencentcloud_redis_replica_readonly": resourceTencentCloudRedisReplicaReadonly(),
22022204
"tencentcloud_redis_switch_master": resourceTencentCloudRedisSwitchMaster(),
2205+
"tencentcloud_redis_replicate_attachment": resourceTencentCloudRedisReplicateAttachment(),
2206+
"tencentcloud_redis_backup_operation": resourceTencentCloudRedisBackupOperation(),
22032207
"tencentcloud_as_load_balancer": resourceTencentCloudAsLoadBalancer(),
22042208
"tencentcloud_as_scaling_config": resourceTencentCloudAsScalingConfig(),
22052209
"tencentcloud_as_scaling_group": resourceTencentCloudAsScalingGroup(),
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
/*
2+
Provides a resource to create a redis backup_operation
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_redis_backup_operation" "backup_operation" {
8+
instance_id = "crs-c1nl9rpv"
9+
remark = ""
10+
storage_days = 7
11+
}
12+
```
13+
*/
14+
package tencentcloud
15+
16+
import (
17+
"context"
18+
"fmt"
19+
"log"
20+
21+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
22+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
23+
sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
24+
redis "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis/v20180412"
25+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
26+
)
27+
28+
func resourceTencentCloudRedisBackupOperation() *schema.Resource {
29+
return &schema.Resource{
30+
Create: resourceTencentCloudRedisBackupOperationCreate,
31+
Read: resourceTencentCloudRedisBackupOperationRead,
32+
Delete: resourceTencentCloudRedisBackupOperationDelete,
33+
34+
Schema: map[string]*schema.Schema{
35+
"instance_id": {
36+
Required: true,
37+
ForceNew: true,
38+
Type: schema.TypeString,
39+
Description: "The ID of instance.",
40+
},
41+
42+
"remark": {
43+
Optional: true,
44+
ForceNew: true,
45+
Type: schema.TypeString,
46+
Description: "Notes information for the backup.",
47+
},
48+
49+
"storage_days": {
50+
Optional: true,
51+
ForceNew: true,
52+
Type: schema.TypeInt,
53+
Description: "Number of days to store.0 specifies the default retention time.",
54+
},
55+
},
56+
}
57+
}
58+
59+
func resourceTencentCloudRedisBackupOperationCreate(d *schema.ResourceData, meta interface{}) error {
60+
defer logElapsed("resource.tencentcloud_redis_backup_operation.create")()
61+
defer inconsistentCheck(d, meta)()
62+
63+
logId := getLogId(contextNil)
64+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
65+
66+
var (
67+
request = redis.NewManualBackupInstanceRequest()
68+
response = redis.NewManualBackupInstanceResponse()
69+
instanceId string
70+
)
71+
if v, ok := d.GetOk("instance_id"); ok {
72+
instanceId = v.(string)
73+
request.InstanceId = helper.String(v.(string))
74+
}
75+
76+
if v, ok := d.GetOk("remark"); ok {
77+
request.Remark = helper.String(v.(string))
78+
}
79+
80+
if v, _ := d.GetOk("storage_days"); v != nil {
81+
request.StorageDays = helper.IntInt64(v.(int))
82+
}
83+
84+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
85+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseRedisClient().ManualBackupInstance(request)
86+
if e != nil {
87+
return retryError(e)
88+
} else {
89+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
90+
}
91+
response = result
92+
return nil
93+
})
94+
if err != nil {
95+
log.Printf("[CRITAL]%s operate redis backupOperation failed, reason:%+v", logId, err)
96+
return err
97+
}
98+
99+
taskId := *response.Response.TaskId
100+
d.SetId(instanceId)
101+
102+
service := RedisService{client: meta.(*TencentCloudClient).apiV3Conn}
103+
if taskId > 0 {
104+
err := resource.Retry(6*readRetryTimeout, func() *resource.RetryError {
105+
ok, err := service.DescribeTaskInfo(ctx, instanceId, taskId)
106+
if err != nil {
107+
if _, ok := err.(*sdkErrors.TencentCloudSDKError); !ok {
108+
return resource.RetryableError(err)
109+
} else {
110+
return resource.NonRetryableError(err)
111+
}
112+
}
113+
if ok {
114+
return nil
115+
} else {
116+
return resource.RetryableError(fmt.Errorf("redis backupOperation is processing"))
117+
}
118+
})
119+
120+
if err != nil {
121+
log.Printf("[CRITAL]%s redis backupOperation fail, reason:%s\n", logId, err.Error())
122+
return err
123+
}
124+
}
125+
126+
return resourceTencentCloudRedisBackupOperationRead(d, meta)
127+
}
128+
129+
func resourceTencentCloudRedisBackupOperationRead(d *schema.ResourceData, meta interface{}) error {
130+
defer logElapsed("resource.tencentcloud_redis_backup_operation.read")()
131+
defer inconsistentCheck(d, meta)()
132+
133+
return nil
134+
}
135+
136+
func resourceTencentCloudRedisBackupOperationDelete(d *schema.ResourceData, meta interface{}) error {
137+
defer logElapsed("resource.tencentcloud_redis_backup_operation.delete")()
138+
defer inconsistentCheck(d, meta)()
139+
140+
return nil
141+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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 TestAccTencentCloudRedisBackupOperationResource_basic -v
10+
func TestAccTencentCloudRedisBackupOperationResource_basic(t *testing.T) {
11+
t.Parallel()
12+
resource.Test(t, resource.TestCase{
13+
PreCheck: func() {
14+
testAccPreCheck(t)
15+
},
16+
Providers: testAccProviders,
17+
Steps: []resource.TestStep{
18+
{
19+
Config: testAccRedisBackupOperation,
20+
Check: resource.ComposeTestCheckFunc(
21+
resource.TestCheckResourceAttrSet("tencentcloud_redis_backup_operation.backup_operation", "id"),
22+
),
23+
},
24+
},
25+
})
26+
}
27+
28+
const testAccRedisBackupOperationVar = `
29+
variable "instance_id" {
30+
default = "` + defaultCrsInstanceId + `"
31+
}
32+
`
33+
34+
const testAccRedisBackupOperation = testAccRedisBackupOperationVar + `
35+
36+
resource "tencentcloud_redis_backup_operation" "backup_operation" {
37+
instance_id = var.instance_id
38+
remark = "backup test"
39+
storage_days = 7
40+
}
41+
42+
`

0 commit comments

Comments
 (0)