@@ -17,8 +17,8 @@ import (
17
17
18
18
func ResourceTencentCloudVpcBandwidthPackage () * schema.Resource {
19
19
return & schema.Resource {
20
- Read : resourceTencentCloudVpcBandwidthPackageRead ,
21
20
Create : resourceTencentCloudVpcBandwidthPackageCreate ,
21
+ Read : resourceTencentCloudVpcBandwidthPackageRead ,
22
22
Update : resourceTencentCloudVpcBandwidthPackageUpdate ,
23
23
Delete : resourceTencentCloudVpcBandwidthPackageDelete ,
24
24
Importer : & schema.ResourceImporter {
@@ -78,12 +78,13 @@ func ResourceTencentCloudVpcBandwidthPackage() *schema.Resource {
78
78
}
79
79
80
80
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" )()
82
82
defer tccommon .InconsistentCheck (d , meta )()
83
83
84
- logId := tccommon .GetLogId (tccommon .ContextNil )
85
-
86
84
var (
85
+ logId = tccommon .GetLogId (tccommon .ContextNil )
86
+ ctx = context .WithValue (context .TODO (), tccommon .LogIdKey , logId )
87
+ service = VpcService {client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn ()}
87
88
request = vpc .NewCreateBandwidthPackageRequest ()
88
89
response * vpc.CreateBandwidthPackageResponse
89
90
)
@@ -100,7 +101,7 @@ func resourceTencentCloudVpcBandwidthPackageCreate(d *schema.ResourceData, meta
100
101
request .BandwidthPackageName = helper .String (v .(string ))
101
102
}
102
103
103
- if v , ok := d .GetOk ("internet_max_bandwidth" ); ok {
104
+ if v , ok := d .GetOkExists ("internet_max_bandwidth" ); ok {
104
105
request .InternetMaxBandwidth = helper .IntInt64 (v .(int ))
105
106
}
106
107
@@ -110,6 +111,7 @@ func resourceTencentCloudVpcBandwidthPackageCreate(d *schema.ResourceData, meta
110
111
Key : helper .String (tagKey ),
111
112
Value : helper .String (tagValue ),
112
113
}
114
+
113
115
request .Tags = append (request .Tags , & tag )
114
116
}
115
117
}
@@ -127,24 +129,29 @@ func resourceTencentCloudVpcBandwidthPackageCreate(d *schema.ResourceData, meta
127
129
if e != nil {
128
130
return tccommon .RetryError (e )
129
131
} 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 ())
132
133
}
134
+
135
+ if result == nil || result .Response == nil {
136
+ return resource .NonRetryableError (fmt .Errorf ("Create vpc bandwidthPackage failed, Response is nil." ))
137
+ }
138
+
133
139
response = result
134
140
return nil
135
141
})
136
142
137
143
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 )
139
145
return err
140
146
}
141
147
142
- bandwidthPackageId := * response .Response .BandwidthPackageId
148
+ if response .Response .BandwidthPackageId == nil {
149
+ return fmt .Errorf ("BandwidthPackageId is nil." )
150
+ }
143
151
152
+ bandwidthPackageId := * response .Response .BandwidthPackageId
144
153
d .SetId (bandwidthPackageId )
145
154
146
- ctx := context .WithValue (context .TODO (), tccommon .LogIdKey , logId )
147
-
148
155
if tags := helper .GetTags (d , "tags" ); len (tags ) > 0 {
149
156
tagService := svctag .NewTagService (meta .(tccommon.ProviderMeta ).GetAPIV3Conn ())
150
157
region := meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().Region
@@ -154,20 +161,24 @@ func resourceTencentCloudVpcBandwidthPackageCreate(d *schema.ResourceData, meta
154
161
}
155
162
}
156
163
157
- service := VpcService { client : meta .(tccommon. ProviderMeta ). GetAPIV3Conn ()}
164
+ // wait
158
165
err = resource .Retry (3 * tccommon .ReadRetryTimeout , func () * resource.RetryError {
159
166
instance , errRet := service .DescribeVpcBandwidthPackage (ctx , bandwidthPackageId )
160
167
if errRet != nil {
161
168
return tccommon .RetryError (errRet , tccommon .InternalError )
162
169
}
170
+
163
171
if instance == nil {
164
172
return resource .RetryableError (fmt .Errorf ("vpc bandwidthPackage instance is being created, retry..." ))
165
173
}
174
+
166
175
if * instance .Status == "CREATED" {
167
176
return nil
168
177
}
178
+
169
179
return resource .RetryableError (fmt .Errorf ("vpc bandwidthPackage instance status is %v, retry..." , * instance .Status ))
170
180
})
181
+
171
182
if err != nil {
172
183
return err
173
184
}
@@ -176,27 +187,25 @@ func resourceTencentCloudVpcBandwidthPackageCreate(d *schema.ResourceData, meta
176
187
}
177
188
178
189
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" )()
180
192
defer tccommon .InconsistentCheck (d , meta )()
181
193
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
+ )
188
200
189
201
bandwidthPackage , err := service .DescribeVpcBandwidthPackage (ctx , bandwidthPackageId )
190
-
191
202
if err != nil {
192
203
return err
193
204
}
194
205
195
206
if bandwidthPackage == nil {
196
207
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 )
200
209
return nil
201
210
}
202
211
@@ -226,6 +235,7 @@ func resourceTencentCloudVpcBandwidthPackageRead(d *schema.ResourceData, meta in
226
235
if err != nil {
227
236
return err
228
237
}
238
+
229
239
_ = d .Set ("tags" , tags )
230
240
231
241
return nil
@@ -235,14 +245,14 @@ func resourceTencentCloudVpcBandwidthPackageUpdate(d *schema.ResourceData, meta
235
245
defer tccommon .LogElapsed ("resource.tencentcloud_vpc_bandwidth_package.update" )()
236
246
defer tccommon .InconsistentCheck (d , meta )()
237
247
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
+ )
242
253
243
254
immutableArgs := []string {
244
255
"network_type" ,
245
- "internet_max_bandwidth" ,
246
256
"egress" ,
247
257
}
248
258
@@ -252,33 +262,56 @@ func resourceTencentCloudVpcBandwidthPackageUpdate(d *schema.ResourceData, meta
252
262
}
253
263
}
254
264
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
+ }
261
271
262
- if d .HasChange ("charge_type" ) {
263
272
if v , ok := d .GetOk ("charge_type" ); ok {
264
273
request .ChargeType = helper .String (v .(string ))
265
274
}
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
+ }
266
291
}
267
292
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 ))
275
298
}
276
- return nil
277
- })
278
299
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
+ }
282
315
}
283
316
284
317
if d .HasChange ("tags" ) {
@@ -296,15 +329,15 @@ func resourceTencentCloudVpcBandwidthPackageUpdate(d *schema.ResourceData, meta
296
329
}
297
330
298
331
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" )()
300
333
defer tccommon .InconsistentCheck (d , meta )()
301
334
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
+ )
308
341
309
342
if err := service .DeleteVpcBandwidthPackageById (ctx , bandwidthPackageId ); err != nil {
310
343
return err
0 commit comments