Skip to content

Commit db3aad8

Browse files
authored
Merge branch 'master' into feat/add_mps_transcode_template
2 parents f7aeba1 + 9166cf2 commit db3aad8

26 files changed

+1233
-146
lines changed

.changelog/1546.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_kubernetes_cluster_endpoint: support creating tke cluster endpoint even if cluster only have serverless node
3+
```
4+
```release-note:enhancement
5+
resource/tencentcloud_kubernetes_cluster: support creating tke cluster endpoint even if cluster only have serverless node
6+
```

.changelog/1548.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_cbs_storage: support disk_backup_quota param
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_cbs_disk_backup
7+
```
8+
9+
```release-note:new-resource
10+
tencentcloud_cbs_snapshot_share_permission
11+
```
12+
13+
```release-note:new-resource
14+
tencentcloud_cbs_disk_backup_rollback_operation
15+
```

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ require (
2727
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/as v1.0.466
2828
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cam v1.0.409
2929
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cat v1.0.520
30-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs v1.0.493
30+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs v1.0.591
3131
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb v1.0.576
3232
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.539
3333
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cfs v1.0.581

go.sum

Lines changed: 4 additions & 79 deletions
Large diffs are not rendered by default.

tencentcloud/basic_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -919,3 +919,14 @@ const (
919919
)
920920

921921
// End of TSF
922+
923+
// CBS
924+
const defaultCbsBackupDiskId = "disk-r69pg9vw"
925+
926+
const CbsBackUp = `
927+
variable "cbs_backup_disk_id" {
928+
default = "` + defaultCbsBackupDiskId + `"
929+
}
930+
`
931+
932+
// End of CBS

tencentcloud/extension_cbs.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,8 @@ var CBS_CHARGE_TYPE = []string{
5050
}
5151

5252
var CBS_PREPAID_PERIOD = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, 36}
53+
54+
const (
55+
SNAPSHOT_SHARE_PERMISSION_SHARE = "SHARE"
56+
SNAPSHOT_SHARE_PERMISSION_CANCEL = "CANCEL"
57+
)

tencentcloud/provider.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,9 @@ Cloud Block Storage(CBS)
200200
tencentcloud_cbs_snapshot
201201
tencentcloud_cbs_snapshot_policy
202202
tencentcloud_cbs_snapshot_policy_attachment
203+
tencentcloud_cbs_snapshot_share_permission
204+
tencentcloud_cbs_disk_backup
205+
tencentcloud_cbs_disk_backup_rollback_operation
203206
204207
Cloud Connect Network(CCN)
205208
Data Source
@@ -1678,6 +1681,9 @@ func Provider() terraform.ResourceProvider {
16781681
"tencentcloud_tsf_lane_rule": resourceTencentCloudTsfLaneRule(),
16791682
"tencentcloud_mps_workflow": resourceTencentCloudMpsWorkflow(),
16801683
"tencentcloud_mps_transcode_template": resourceTencentCloudMpsTranscodeTemplate(),
1684+
"tencentcloud_cbs_disk_backup": resourceTencentCloudCbsDiskBackup(),
1685+
"tencentcloud_cbs_snapshot_share_permission": resourceTencentCloudCbsSnapshotSharePermission(),
1686+
"tencentcloud_cbs_disk_backup_rollback_operation": resourceTencentCloudCbsDiskBackupRollbackOperation(),
16811687
},
16821688

16831689
ConfigureFunc: providerConfigure,
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
/*
2+
Provides a resource to create a cbs disk_backup.
3+
4+
~> **NOTE:** Backup quota must greater than 1.
5+
6+
Example Usage
7+
8+
```hcl
9+
10+
resource "tencentcloud_cbs_disk_backup" "disk_backup" {
11+
disk_id = "disk-xxx"
12+
disk_backup_name = "xxx"
13+
}
14+
15+
```
16+
17+
Import
18+
19+
cbs disk_backup can be imported using the id, e.g.
20+
21+
```
22+
terraform import tencentcloud_cbs_disk_backup.disk_backup disk_backup_id
23+
```
24+
*/
25+
package tencentcloud
26+
27+
import (
28+
"context"
29+
"fmt"
30+
"log"
31+
32+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
33+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
34+
"github.com/pkg/errors"
35+
)
36+
37+
func resourceTencentCloudCbsDiskBackup() *schema.Resource {
38+
return &schema.Resource{
39+
Create: resourceTencentCloudCbsDiskBackupCreate,
40+
Read: resourceTencentCloudCbsDiskBackupRead,
41+
Delete: resourceTencentCloudCbsDiskBackupDelete,
42+
Importer: &schema.ResourceImporter{
43+
State: schema.ImportStatePassthrough,
44+
},
45+
Schema: map[string]*schema.Schema{
46+
"disk_id": {
47+
Required: true,
48+
ForceNew: true,
49+
Type: schema.TypeString,
50+
Description: "ID of the original cloud disk of the backup point, which can be queried through the DescribeDisks API.",
51+
},
52+
53+
"disk_backup_name": {
54+
Optional: true,
55+
ForceNew: true,
56+
Type: schema.TypeString,
57+
Description: "Backup point name.",
58+
},
59+
},
60+
}
61+
}
62+
63+
func resourceTencentCloudCbsDiskBackupCreate(d *schema.ResourceData, meta interface{}) error {
64+
defer logElapsed("resource.tencentcloud_cbs_disk_backup.create")()
65+
defer inconsistentCheck(d, meta)()
66+
67+
logId := getLogId(contextNil)
68+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
69+
70+
var (
71+
diskId string
72+
diskBackupName string
73+
)
74+
if v, ok := d.GetOk("disk_id"); ok {
75+
diskId = v.(string)
76+
}
77+
78+
if v, ok := d.GetOk("disk_backup_name"); ok {
79+
diskBackupName = v.(string)
80+
}
81+
82+
service := CbsService{client: meta.(*TencentCloudClient).apiV3Conn}
83+
diskBackupId, err := service.CreateDiskBackup(ctx, diskId, diskBackupName)
84+
if err != nil {
85+
return nil
86+
}
87+
d.SetId(diskBackupId)
88+
err = resource.Retry(writeRetryTimeout, func() *resource.RetryError {
89+
diskBackup, e := service.DescribeCbsDiskBackupById(ctx, diskBackupId)
90+
if e != nil {
91+
return retryError(e)
92+
}
93+
if *diskBackup.DiskBackupState != "NORMAL" {
94+
return resource.RetryableError(fmt.Errorf("DiskBackupState not ready"))
95+
}
96+
return nil
97+
})
98+
if err != nil {
99+
log.Printf("[CRITAL]%s create cbs DiskBackup failed, reason:%+v", logId, err)
100+
return err
101+
}
102+
103+
return resourceTencentCloudCbsDiskBackupRead(d, meta)
104+
}
105+
106+
func resourceTencentCloudCbsDiskBackupRead(d *schema.ResourceData, meta interface{}) error {
107+
defer logElapsed("resource.tencentcloud_cbs_disk_backup.read")()
108+
defer inconsistentCheck(d, meta)()
109+
110+
logId := getLogId(contextNil)
111+
112+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
113+
114+
service := CbsService{client: meta.(*TencentCloudClient).apiV3Conn}
115+
116+
diskBackupId := d.Id()
117+
118+
DiskBackup, err := service.DescribeCbsDiskBackupById(ctx, diskBackupId)
119+
if err != nil {
120+
return err
121+
}
122+
123+
if DiskBackup == nil {
124+
d.SetId("")
125+
log.Printf("[WARN]%s resource `CbsDiskBackup` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
126+
return nil
127+
}
128+
129+
if DiskBackup.DiskId != nil {
130+
_ = d.Set("disk_id", DiskBackup.DiskId)
131+
}
132+
133+
if DiskBackup.DiskBackupName != nil {
134+
_ = d.Set("disk_backup_name", DiskBackup.DiskBackupName)
135+
}
136+
137+
return nil
138+
}
139+
140+
func resourceTencentCloudCbsDiskBackupDelete(d *schema.ResourceData, meta interface{}) error {
141+
defer logElapsed("resource.tencentcloud_cbs_disk_backup.delete")()
142+
defer inconsistentCheck(d, meta)()
143+
144+
logId := getLogId(contextNil)
145+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
146+
147+
service := CbsService{client: meta.(*TencentCloudClient).apiV3Conn}
148+
diskBackupId := d.Id()
149+
150+
if err := service.DeleteCbsDiskBackupById(ctx, diskBackupId); err != nil {
151+
return err
152+
}
153+
154+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
155+
diskBackup, e := service.DescribeCbsDiskBackupById(ctx, diskBackupId)
156+
if e != nil {
157+
return retryError(e)
158+
}
159+
if diskBackup == nil {
160+
return nil
161+
}
162+
return resource.RetryableError(errors.New("Disk backup still deleting"))
163+
})
164+
if err != nil {
165+
log.Printf("[CRITAL]%s delete cbs DiskBackup failed, reason:%+v", logId, err)
166+
return err
167+
}
168+
169+
return nil
170+
}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
/*
2+
Provides a resource to rollback cbs disk backup.
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_cbs_disk_backup_rollback_operation" "operation" {
8+
disk_backup_id = "dbp-xxx"
9+
disk_id = "disk-xxx"
10+
}
11+
```
12+
*/
13+
package tencentcloud
14+
15+
import (
16+
"context"
17+
"fmt"
18+
"strings"
19+
"time"
20+
21+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
22+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
23+
"github.com/pkg/errors"
24+
)
25+
26+
func resourceTencentCloudCbsDiskBackupRollbackOperation() *schema.Resource {
27+
return &schema.Resource{
28+
Create: resourceTencentCloudCbsDiskBackupRollbackOperationCreate,
29+
Read: resourceTencentCloudCbsDiskBackupRollbackOperationRead,
30+
Delete: resourceTencentCloudCbsDiskBackupRollbackOperationDelete,
31+
32+
Schema: map[string]*schema.Schema{
33+
"disk_backup_id": {
34+
Type: schema.TypeString,
35+
Required: true,
36+
ForceNew: true,
37+
Description: "Cloud disk backup point ID.",
38+
},
39+
"disk_id": {
40+
Type: schema.TypeString,
41+
Required: true,
42+
ForceNew: true,
43+
Description: "Cloud disk backup point original cloud disk ID.",
44+
},
45+
"is_rollback_completed": {
46+
Type: schema.TypeBool,
47+
Computed: true,
48+
Description: "Whether the rollback is completed. `true` meaing rollback completed, `false` meaning still rollbacking.",
49+
},
50+
},
51+
}
52+
}
53+
54+
func resourceTencentCloudCbsDiskBackupRollbackOperationCreate(d *schema.ResourceData, meta interface{}) error {
55+
defer logElapsed("resource.tencentcloud_cbs_disk_backup_rollback_operation.create")()
56+
57+
logId := getLogId(contextNil)
58+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
59+
60+
diskBackupId := d.Get("disk_backup_id").(string)
61+
diskId := d.Get("disk_id").(string)
62+
63+
cbsService := CbsService{
64+
client: meta.(*TencentCloudClient).apiV3Conn,
65+
}
66+
67+
if err := cbsService.ApplyDiskBackup(ctx, diskBackupId, diskId); err != nil {
68+
return err
69+
}
70+
// deal with state sync delay
71+
time.Sleep(time.Second * 1)
72+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
73+
disk, e := cbsService.DescribeDiskById(ctx, diskId)
74+
if e != nil {
75+
return retryError(e)
76+
}
77+
if *disk.Rollbacking {
78+
return resource.RetryableError(errors.New("Disk still rollbacking"))
79+
}
80+
return nil
81+
})
82+
if err != nil {
83+
return err
84+
}
85+
86+
d.SetId(diskBackupId + FILED_SP + diskId)
87+
88+
return resourceTencentCloudCbsDiskBackupRollbackOperationRead(d, meta)
89+
}
90+
91+
func resourceTencentCloudCbsDiskBackupRollbackOperationRead(d *schema.ResourceData, meta interface{}) error {
92+
defer logElapsed("resource.tencentcloud_cbs_disk_backup_rollback_operation.read")()
93+
defer inconsistentCheck(d, meta)()
94+
95+
logId := getLogId(contextNil)
96+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
97+
cbsService := CbsService{
98+
client: meta.(*TencentCloudClient).apiV3Conn,
99+
}
100+
101+
idSplit := strings.Split(d.Id(), FILED_SP)
102+
if len(idSplit) != 2 {
103+
return fmt.Errorf("id is broken,%s", d.Id())
104+
}
105+
diskId := idSplit[1]
106+
107+
disk, err := cbsService.DescribeDiskById(ctx, diskId)
108+
if err != nil {
109+
return err
110+
}
111+
d.Set("is_rollback_completed", !*disk.Rollbacking)
112+
return nil
113+
}
114+
115+
func resourceTencentCloudCbsDiskBackupRollbackOperationDelete(d *schema.ResourceData, meta interface{}) error {
116+
defer logElapsed("resource.tencentcloud_cbs_disk_backup_rollback_operation.delete")()
117+
118+
return nil
119+
}

0 commit comments

Comments
 (0)