@@ -17,8 +17,8 @@ import (
1717
1818func 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
8080func 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
178189func 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
298331func 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
0 commit comments