Skip to content

Commit 94ce5cb

Browse files
tongyimingmikatong
and
mikatong
authored
fix(cbs): [123875626]support burst_performance (#3345)
* support burst_performance * add changelog --------- Co-authored-by: mikatong <[email protected]>
1 parent 6b5c433 commit 94ce5cb

File tree

10 files changed

+88
-7
lines changed

10 files changed

+88
-7
lines changed

.changelog/3345.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_cbs_storage: support burst_performance
3+
```

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ require (
4646
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1107
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1148
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1156
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1159
5050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.1153
5151
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
5252
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.1111

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -967,6 +967,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1154 h1:tc2
967967
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1154/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
968968
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1156 h1:Uz9TqzwTAtRYuV7gB0Fh2E013qPrUJpS6CeNJ7vlfAI=
969969
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1156/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
970+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1159 h1:Jl1XE3cY6Bz0lBexvX8z+u2KmDO3tnFxtwHIalM5YS4=
971+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1159/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
970972
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ=
971973
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY=
972974
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=

tencentcloud/services/cbs/resource_tc_cbs_storage.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,12 @@ func ResourceTencentCloudCbsStorage() *schema.Resource {
131131
Computed: true,
132132
Description: "The quota of backup points of cloud disk.",
133133
},
134+
"burst_performance": {
135+
Type: schema.TypeBool,
136+
Optional: true,
137+
Computed: true,
138+
Description: "Whether to enable performance burst when creating a cloud disk.",
139+
},
134140
// computed
135141
"storage_status": {
136142
Type: schema.TypeString,
@@ -217,6 +223,10 @@ func resourceTencentCloudCbsStorageCreate(d *schema.ResourceData, meta interface
217223
}
218224
}
219225

226+
if v, ok := d.GetOkExists("burst_performance"); ok {
227+
request.BurstPerformance = helper.Bool(v.(bool))
228+
}
229+
220230
storageId := ""
221231
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
222232
response, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCbsClient().CreateDisks(request)
@@ -324,6 +334,7 @@ func resourceTencentCloudCbsStorageRead(d *schema.ResourceData, meta interface{}
324334
_ = d.Set("charge_type", storage.DiskChargeType)
325335
_ = d.Set("prepaid_renew_flag", storage.RenewFlag)
326336
_ = d.Set("throughput_performance", storage.ThroughputPerformance)
337+
_ = d.Set("burst_performance", storage.BurstPerformance)
327338

328339
if storage.KmsKeyId != nil {
329340
_ = d.Set("kms_key_id", storage.KmsKeyId)
@@ -380,9 +391,21 @@ func resourceTencentCloudCbsStorageUpdate(d *schema.ResourceData, meta interface
380391
projectId = d.Get("project_id").(int)
381392
}
382393

394+
var burstPerformanceOperation string
395+
if d.HasChange("burst_performance") {
396+
if v, ok := d.GetOkExists("burst_performance"); ok {
397+
if v.(bool) {
398+
burstPerformanceOperation = "CREATE"
399+
} else {
400+
burstPerformanceOperation = "CANCEL"
401+
}
402+
changed = true
403+
}
404+
}
405+
383406
if changed {
384407
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
385-
e := cbsService.ModifyDiskAttributes(ctx, storageId, storageName, projectId)
408+
e := cbsService.ModifyDiskAttributes(ctx, storageId, storageName, projectId, burstPerformanceOperation)
386409
if e != nil {
387410
return tccommon.RetryError(e)
388411
}

tencentcloud/services/cbs/resource_tc_cbs_storage_test.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,37 @@ func TestAccTencentCloudCbsStorageResource_basic(t *testing.T) {
104104
})
105105
}
106106

107+
func TestAccTencentCloudCbsStorageResource_burstPerformance(t *testing.T) {
108+
109+
resource.Test(t, resource.TestCase{
110+
PreCheck: func() { tcacctest.AccPreCheck(t) },
111+
Providers: tcacctest.AccProviders,
112+
CheckDestroy: testAccCheckCbsStorageDestroy,
113+
Steps: []resource.TestStep{
114+
{
115+
Config: testAccCbsStorage_burstPerformance,
116+
Check: resource.ComposeTestCheckFunc(
117+
testAccCheckStorageExists("tencentcloud_cbs_storage.burst_performance"),
118+
resource.TestCheckResourceAttr("tencentcloud_cbs_storage.burst_performance", "burst_performance", "true"),
119+
),
120+
},
121+
{
122+
Config: testAccCbsStorage_burstPerformanceUpdate,
123+
Check: resource.ComposeTestCheckFunc(
124+
testAccCheckStorageExists("tencentcloud_cbs_storage.burst_performance"),
125+
resource.TestCheckResourceAttr("tencentcloud_cbs_storage.burst_performance", "burst_performance", "false"),
126+
),
127+
},
128+
{
129+
ResourceName: "tencentcloud_cbs_storage.burst_performance",
130+
ImportState: true,
131+
ImportStateVerify: true,
132+
ImportStateVerifyIgnore: []string{"force_delete"},
133+
},
134+
},
135+
})
136+
}
137+
107138
func TestAccTencentCloudCbsStorageResource_full(t *testing.T) {
108139

109140
resource.Test(t, resource.TestCase{
@@ -256,6 +287,24 @@ resource "tencentcloud_cbs_storage" "storage_basic" {
256287
}
257288
`
258289

290+
const testAccCbsStorage_burstPerformance = `
291+
resource "tencentcloud_cbs_storage" "burst_performance" {
292+
storage_type = "CLOUD_HSSD"
293+
storage_name = "burst-performance"
294+
storage_size = 500
295+
availability_zone = "ap-guangzhou-3"
296+
burst_performance = true
297+
}
298+
`
299+
const testAccCbsStorage_burstPerformanceUpdate = `
300+
resource "tencentcloud_cbs_storage" "burst_performance" {
301+
storage_type = "CLOUD_HSSD"
302+
storage_name = "burst-performance"
303+
storage_size = 500
304+
availability_zone = "ap-guangzhou-3"
305+
burst_performance = false
306+
}
307+
`
259308
const testAccCbsStorage_full = `
260309
resource "tencentcloud_cbs_storage" "storage_full" {
261310
storage_type = "CLOUD_PREMIUM"

tencentcloud/services/cbs/service_tencentcloud_cbs.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ func (me *CbsService) DescribeDisksInParallelByFilter(ctx context.Context, param
243243
return
244244
}
245245

246-
func (me *CbsService) ModifyDiskAttributes(ctx context.Context, diskId, diskName string, projectId int) error {
246+
func (me *CbsService) ModifyDiskAttributes(ctx context.Context, diskId, diskName string, projectId int, burstPerformanceOperation string) error {
247247
logId := tccommon.GetLogId(ctx)
248248
request := cbs.NewModifyDiskAttributesRequest()
249249
request.DiskIds = []*string{&diskId}
@@ -253,6 +253,9 @@ func (me *CbsService) ModifyDiskAttributes(ctx context.Context, diskId, diskName
253253
if projectId >= 0 {
254254
request.ProjectId = helper.IntUint64(projectId)
255255
}
256+
if burstPerformanceOperation != "" {
257+
request.BurstPerformanceOperation = helper.String(burstPerformanceOperation)
258+
}
256259
ratelimit.Check(request.GetAction())
257260
response, err := me.client.UseCbsClient().ModifyDiskAttributes(request)
258261
if err != nil {

tencentcloud/services/cvm/resource_tc_instance.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1808,7 +1808,7 @@ func resourceTencentCloudInstanceUpdate(d *schema.ResourceData, meta interface{}
18081808
if d.HasChange(nameKey) {
18091809
name := d.Get(nameKey).(string)
18101810
diskId := d.Get(idKey).(string)
1811-
err := cbsService.ModifyDiskAttributes(ctx, diskId, name, -1)
1811+
err := cbsService.ModifyDiskAttributes(ctx, diskId, name, -1, "")
18121812
if err != nil {
18131813
return fmt.Errorf("an error occurred when modifying data disk name: %s, reason: %s", name, err.Error())
18141814
}
@@ -1880,7 +1880,7 @@ func resourceTencentCloudInstanceUpdate(d *schema.ResourceData, meta interface{}
18801880
if v, ok := d.GetOk("system_disk_id"); ok {
18811881
systemDiskId := v.(string)
18821882
cbsService := svccbs.NewCbsService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
1883-
err := cbsService.ModifyDiskAttributes(ctx, systemDiskId, systemDiskName, -1)
1883+
err := cbsService.ModifyDiskAttributes(ctx, systemDiskId, systemDiskName, -1, "")
18841884
if err != nil {
18851885
return fmt.Errorf("an error occurred when modifying system disk name %s, reason: %s", systemDiskName, err.Error())
18861886
}

vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/modules.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1166,7 +1166,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit/v20190319
11661166
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1148
11671167
## explicit; go 1.14
11681168
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls/v20201016
1169-
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1156
1169+
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1159
11701170
## explicit; go 1.11
11711171
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common
11721172
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors

website/docs/r/cbs_storage.html.markdown

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ The following arguments are supported:
9696
* `storage_name` - (Required, String) Name of CBS. The maximum length can not exceed 60 bytes.
9797
* `storage_size` - (Required, Int) Volume of CBS, and unit is GB.
9898
* `storage_type` - (Required, String, ForceNew) Type of CBS medium. Valid values: CLOUD_BASIC: HDD cloud disk, CLOUD_PREMIUM: Premium Cloud Storage, CLOUD_BSSD: General Purpose SSD, CLOUD_SSD: SSD, CLOUD_HSSD: Enhanced SSD, CLOUD_TSSD: Tremendous SSD.
99+
* `burst_performance` - (Optional, Bool) Whether to enable performance burst when creating a cloud disk.
99100
* `charge_type` - (Optional, String) The charge type of CBS instance. Valid values are `PREPAID`, `POSTPAID_BY_HOUR`, `CDCPAID` and `DEDICATED_CLUSTER_PAID`. The default is `POSTPAID_BY_HOUR`.
100101
* `dedicated_cluster_id` - (Optional, String, ForceNew) Exclusive cluster id.
101102
* `disk_backup_quota` - (Optional, Int) The quota of backup points of cloud disk.

0 commit comments

Comments
 (0)