Skip to content

Commit 332d052

Browse files
committed
add
1 parent e3318ff commit 332d052

File tree

4 files changed

+140
-96
lines changed

4 files changed

+140
-96
lines changed

tencentcloud/services/vpc/resource_tc_vpc_bandwidth_package.go

Lines changed: 87 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ import (
1717

1818
func ResourceTencentCloudVpcBandwidthPackage() *schema.Resource {
1919
return &schema.Resource{
20-
Read: resourceTencentCloudVpcBandwidthPackageRead,
2120
Create: resourceTencentCloudVpcBandwidthPackageCreate,
21+
Read: resourceTencentCloudVpcBandwidthPackageRead,
2222
Update: resourceTencentCloudVpcBandwidthPackageUpdate,
2323
Delete: resourceTencentCloudVpcBandwidthPackageDelete,
2424
Importer: &schema.ResourceImporter{
@@ -78,12 +78,13 @@ func ResourceTencentCloudVpcBandwidthPackage() *schema.Resource {
7878
}
7979

8080
func resourceTencentCloudVpcBandwidthPackageCreate(d *schema.ResourceData, meta interface{}) error {
81-
defer tccommon.LogElapsed("resource.tencentcloud_bwp_bandwidth_package.create")()
81+
defer tccommon.LogElapsed("resource.tencentcloud_vpc_bandwidth_package.create")()
8282
defer tccommon.InconsistentCheck(d, meta)()
8383

84-
logId := tccommon.GetLogId(tccommon.ContextNil)
85-
8684
var (
85+
logId = tccommon.GetLogId(tccommon.ContextNil)
86+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
87+
service = VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
8788
request = vpc.NewCreateBandwidthPackageRequest()
8889
response *vpc.CreateBandwidthPackageResponse
8990
)
@@ -100,7 +101,7 @@ func resourceTencentCloudVpcBandwidthPackageCreate(d *schema.ResourceData, meta
100101
request.BandwidthPackageName = helper.String(v.(string))
101102
}
102103

103-
if v, ok := d.GetOk("internet_max_bandwidth"); ok {
104+
if v, ok := d.GetOkExists("internet_max_bandwidth"); ok {
104105
request.InternetMaxBandwidth = helper.IntInt64(v.(int))
105106
}
106107

@@ -110,6 +111,7 @@ func resourceTencentCloudVpcBandwidthPackageCreate(d *schema.ResourceData, meta
110111
Key: helper.String(tagKey),
111112
Value: helper.String(tagValue),
112113
}
114+
113115
request.Tags = append(request.Tags, &tag)
114116
}
115117
}
@@ -127,24 +129,29 @@ func resourceTencentCloudVpcBandwidthPackageCreate(d *schema.ResourceData, meta
127129
if e != nil {
128130
return tccommon.RetryError(e)
129131
} else {
130-
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
131-
logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
132+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
132133
}
134+
135+
if result == nil || result.Response == nil {
136+
return resource.NonRetryableError(fmt.Errorf("Create vpc bandwidthPackage failed, Response is nil."))
137+
}
138+
133139
response = result
134140
return nil
135141
})
136142

137143
if err != nil {
138-
log.Printf("[CRITAL]%s create bwp bandwidthPackage failed, reason:%+v", logId, err)
144+
log.Printf("[CRITAL]%s create vpc bandwidthPackage failed, reason:%+v", logId, err)
139145
return err
140146
}
141147

142-
bandwidthPackageId := *response.Response.BandwidthPackageId
148+
if response.Response.BandwidthPackageId == nil {
149+
return fmt.Errorf("BandwidthPackageId is nil.")
150+
}
143151

152+
bandwidthPackageId := *response.Response.BandwidthPackageId
144153
d.SetId(bandwidthPackageId)
145154

146-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
147-
148155
if tags := helper.GetTags(d, "tags"); len(tags) > 0 {
149156
tagService := svctag.NewTagService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
150157
region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region
@@ -154,20 +161,24 @@ func resourceTencentCloudVpcBandwidthPackageCreate(d *schema.ResourceData, meta
154161
}
155162
}
156163

157-
service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
164+
// wait
158165
err = resource.Retry(3*tccommon.ReadRetryTimeout, func() *resource.RetryError {
159166
instance, errRet := service.DescribeVpcBandwidthPackage(ctx, bandwidthPackageId)
160167
if errRet != nil {
161168
return tccommon.RetryError(errRet, tccommon.InternalError)
162169
}
170+
163171
if instance == nil {
164172
return resource.RetryableError(fmt.Errorf("vpc bandwidthPackage instance is being created, retry..."))
165173
}
174+
166175
if *instance.Status == "CREATED" {
167176
return nil
168177
}
178+
169179
return resource.RetryableError(fmt.Errorf("vpc bandwidthPackage instance status is %v, retry...", *instance.Status))
170180
})
181+
171182
if err != nil {
172183
return err
173184
}
@@ -176,27 +187,25 @@ func resourceTencentCloudVpcBandwidthPackageCreate(d *schema.ResourceData, meta
176187
}
177188

178189
func resourceTencentCloudVpcBandwidthPackageRead(d *schema.ResourceData, meta interface{}) error {
179-
defer tccommon.LogElapsed("resource.tencentcloud_bwp_bandwidth_package.read")()
190+
defer tccommon.LogElapsed("resource.tencentcloud_vpc_bandwidth_package.read")()
191+
defer tccommon.LogElapsed("resource.tencentcloud_vpc_bandwidth_package.read")()
180192
defer tccommon.InconsistentCheck(d, meta)()
181193

182-
logId := tccommon.GetLogId(tccommon.ContextNil)
183-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
184-
185-
service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
186-
187-
bandwidthPackageId := d.Id()
194+
var (
195+
logId = tccommon.GetLogId(tccommon.ContextNil)
196+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
197+
service = VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
198+
bandwidthPackageId = d.Id()
199+
)
188200

189201
bandwidthPackage, err := service.DescribeVpcBandwidthPackage(ctx, bandwidthPackageId)
190-
191202
if err != nil {
192203
return err
193204
}
194205

195206
if bandwidthPackage == nil {
196207
d.SetId("")
197-
log.Printf("[WARN]%s resource `tencentcloud_vpc_bandwidth_package` [%s] not found, please check if it has been deleted.",
198-
logId, bandwidthPackageId,
199-
)
208+
log.Printf("[WARN]%s resource `tencentcloud_vpc_bandwidth_package` [%s] not found, please check if it has been deleted.", logId, bandwidthPackageId)
200209
return nil
201210
}
202211

@@ -226,6 +235,7 @@ func resourceTencentCloudVpcBandwidthPackageRead(d *schema.ResourceData, meta in
226235
if err != nil {
227236
return err
228237
}
238+
229239
_ = d.Set("tags", tags)
230240

231241
return nil
@@ -235,14 +245,14 @@ func resourceTencentCloudVpcBandwidthPackageUpdate(d *schema.ResourceData, meta
235245
defer tccommon.LogElapsed("resource.tencentcloud_vpc_bandwidth_package.update")()
236246
defer tccommon.InconsistentCheck(d, meta)()
237247

238-
logId := tccommon.GetLogId(tccommon.ContextNil)
239-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
240-
241-
bandwidthPackageId := d.Id()
248+
var (
249+
logId = tccommon.GetLogId(tccommon.ContextNil)
250+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
251+
bandwidthPackageId = d.Id()
252+
)
242253

243254
immutableArgs := []string{
244255
"network_type",
245-
"internet_max_bandwidth",
246256
"egress",
247257
}
248258

@@ -252,33 +262,56 @@ func resourceTencentCloudVpcBandwidthPackageUpdate(d *schema.ResourceData, meta
252262
}
253263
}
254264

255-
request := vpc.NewModifyBandwidthPackageAttributeRequest()
256-
request.BandwidthPackageId = &bandwidthPackageId
257-
258-
if v, ok := d.GetOk("bandwidth_package_name"); ok {
259-
request.BandwidthPackageName = helper.String(v.(string))
260-
}
265+
if d.HasChange("bandwidth_package_name") || d.HasChange("charge_type") {
266+
request := vpc.NewModifyBandwidthPackageAttributeRequest()
267+
request.BandwidthPackageId = &bandwidthPackageId
268+
if v, ok := d.GetOk("bandwidth_package_name"); ok {
269+
request.BandwidthPackageName = helper.String(v.(string))
270+
}
261271

262-
if d.HasChange("charge_type") {
263272
if v, ok := d.GetOk("charge_type"); ok {
264273
request.ChargeType = helper.String(v.(string))
265274
}
275+
276+
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
277+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().ModifyBandwidthPackageAttribute(request)
278+
if e != nil {
279+
return tccommon.RetryError(e)
280+
} else {
281+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
282+
}
283+
284+
return nil
285+
})
286+
287+
if err != nil {
288+
log.Printf("[CRITAL]%s Modify vpc bandwidthPackage attribute failed, reason:%+v", logId, err)
289+
return err
290+
}
266291
}
267292

268-
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
269-
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().ModifyBandwidthPackageAttribute(request)
270-
if e != nil {
271-
return tccommon.RetryError(e)
272-
} else {
273-
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
274-
logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
293+
if d.HasChange("internet_max_bandwidth") {
294+
request := vpc.NewModifyBandwidthPackageBandwidthRequest()
295+
request.BandwidthPackageId = &bandwidthPackageId
296+
if v, ok := d.GetOkExists("internet_max_bandwidth"); ok {
297+
request.InternetMaxBandwidth = helper.IntInt64(v.(int))
275298
}
276-
return nil
277-
})
278299

279-
if err != nil {
280-
log.Printf("[CRITAL]%s create vpc bandwidthPackage failed, reason:%+v", logId, err)
281-
return err
300+
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
301+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().ModifyBandwidthPackageBandwidth(request)
302+
if e != nil {
303+
return tccommon.RetryError(e)
304+
} else {
305+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
306+
}
307+
308+
return nil
309+
})
310+
311+
if err != nil {
312+
log.Printf("[CRITAL]%s Modify vpc bandwidthPackage bandWidth failed, reason:%+v", logId, err)
313+
return err
314+
}
282315
}
283316

284317
if d.HasChange("tags") {
@@ -296,15 +329,15 @@ func resourceTencentCloudVpcBandwidthPackageUpdate(d *schema.ResourceData, meta
296329
}
297330

298331
func resourceTencentCloudVpcBandwidthPackageDelete(d *schema.ResourceData, meta interface{}) error {
299-
defer tccommon.LogElapsed("resource.tencentcloud_bwp_bandwidth_package.delete")()
332+
defer tccommon.LogElapsed("resource.tencentcloud_vpc_bandwidth_package.delete")()
300333
defer tccommon.InconsistentCheck(d, meta)()
301334

302-
logId := tccommon.GetLogId(tccommon.ContextNil)
303-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
304-
305-
service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
306-
307-
bandwidthPackageId := d.Id()
335+
var (
336+
logId = tccommon.GetLogId(tccommon.ContextNil)
337+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
338+
service = VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
339+
bandwidthPackageId = d.Id()
340+
)
308341

309342
if err := service.DeleteVpcBandwidthPackageById(ctx, bandwidthPackageId); err != nil {
310343
return err
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Provides a resource to create a vpc bandwidth_package
1+
Provides a resource to create a VPC bandwidth package
22

33
Example Usage
44

@@ -7,23 +7,23 @@ resource "tencentcloud_vpc_bandwidth_package" "example" {
77
network_type = "BGP"
88
charge_type = "TOP5_POSTPAID_BY_MONTH"
99
bandwidth_package_name = "tf-example"
10-
tags = {
11-
"createdBy" = "terraform"
10+
tags = {
11+
createdBy = "Terraform"
1212
}
1313
}
1414
```
1515

1616
PrePaid Bandwidth Package
1717

1818
```hcl
19-
resource "tencentcloud_vpc_bandwidth_package" "bandwidth_package" {
19+
resource "tencentcloud_vpc_bandwidth_package" "example" {
2020
network_type = "BGP"
2121
charge_type = "FIXED_PREPAID_BY_MONTH"
22-
bandwidth_package_name = "test-001"
22+
bandwidth_package_name = "tf-example"
2323
time_span = 3
2424
internet_max_bandwidth = 100
25-
tags = {
26-
"createdBy" = "terraform"
25+
tags = {
26+
createdBy = "Terraform"
2727
}
2828
}
2929
````
@@ -38,7 +38,7 @@ resource "tencentcloud_vpc_bandwidth_package" "example" {
3838
internet_max_bandwidth = 400
3939
egress = "center_egress2"
4040
tags = {
41-
"createdBy" = "terraform"
41+
createdBy = "Terraform"
4242
}
4343
}
4444
```
@@ -47,5 +47,5 @@ Import
4747

4848
vpc bandwidth_package can be imported using the id, e.g.
4949
```
50-
$ terraform import tencentcloud_vpc_bandwidth_package.bandwidth_package bandwidthPackage_id
50+
$ terraform import tencentcloud_vpc_bandwidth_package.example bwp-hq8h7qpy
5151
```

0 commit comments

Comments
 (0)