@@ -384,20 +384,31 @@ func resourceTencentCloudNatGatewayUpdate(d *schema.ResourceData, meta interface
384384 }
385385
386386 if len (unassignedRequest .PublicIpAddresses ) > 0 {
387+ var response * vpc.DisassociateNatGatewayAddressResponseParams
387388 err := resource .Retry (readRetryTimeout , func () * resource.RetryError {
388- e := vpcService .DisassociateNatGatewayAddress (ctx , unassignedRequest )
389+ result , e := vpcService .DisassociateNatGatewayAddress (ctx , unassignedRequest )
389390 if e != nil {
390391 return retryError (e )
391392 }
393+ if result != nil && result .Response != nil {
394+ response = result .Response
395+ }
392396 return nil
393397 })
394398 if err != nil {
395399 log .Printf ("[CRITAL]%s modify NAT gateway EIP failed, reason:%s\n " , logId , err .Error ())
396400 return err
397401 }
402+
403+ if response != nil && response .RequestId != nil {
404+ err = vpcService .DescribeVpcTaskResult (ctx , response .RequestId )
405+ if err != nil {
406+ return err
407+ }
408+ }
398409 }
399410 }
400- time . Sleep ( 3 * time . Minute )
411+
401412 //Assign new EIP
402413 if len (newEipSet ) > 0 {
403414 assignedRequest := vpc .NewAssociateNatGatewayAddressRequest ()
@@ -421,57 +432,88 @@ func resourceTencentCloudNatGatewayUpdate(d *schema.ResourceData, meta interface
421432 }
422433 }
423434 if len (assignedRequest .PublicIpAddresses ) > 0 {
435+ var response * vpc.AssociateNatGatewayAddressResponseParams
424436 err := resource .Retry (readRetryTimeout , func () * resource.RetryError {
425- _ , e := meta .(* TencentCloudClient ).apiV3Conn .UseVpcClient ().AssociateNatGatewayAddress (assignedRequest )
437+ result , e := meta .(* TencentCloudClient ).apiV3Conn .UseVpcClient ().AssociateNatGatewayAddress (assignedRequest )
426438 if e != nil {
427439 log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
428440 logId , assignedRequest .GetAction (), assignedRequest .ToJsonString (), e .Error ())
429441 return retryError (e )
430442 }
443+ if result != nil && result .Response != nil {
444+ response = result .Response
445+ }
431446 return nil
432447 })
433448 if err != nil {
434449 log .Printf ("[CRITAL]%s modify NAT gateway EIP failed, reason:%s\n " , logId , err .Error ())
435450 return err
436451 }
452+
453+ if response != nil && response .RequestId != nil {
454+ err = vpcService .DescribeVpcTaskResult (ctx , response .RequestId )
455+ if err != nil {
456+ return err
457+ }
458+ }
437459 }
438460 }
439- time . Sleep ( 3 * time . Minute )
461+
440462 if backUpOldIp != "" {
441463 //disassociate one old ip
464+ var response * vpc.DisassociateNatGatewayAddressResponseParams
442465 unassignedRequest := vpc .NewDisassociateNatGatewayAddressRequest ()
443466 unassignedRequest .NatGatewayId = & natGatewayId
444467 unassignedRequest .PublicIpAddresses = []* string {& backUpOldIp }
445468 err := resource .Retry (readRetryTimeout , func () * resource.RetryError {
446- e := vpcService .DisassociateNatGatewayAddress (ctx , unassignedRequest )
469+ result , e := vpcService .DisassociateNatGatewayAddress (ctx , unassignedRequest )
447470 if e != nil {
448471 return retryError (e )
449472 }
473+ if result != nil && result .Response != nil {
474+ response = result .Response
475+ }
450476 return nil
451477 })
452478 if err != nil {
453479 log .Printf ("[CRITAL]%s modify NAT gateway EIP failed, reason:%s\n " , logId , err .Error ())
454480 return err
455481 }
482+ if response != nil && response .RequestId != nil {
483+ err = vpcService .DescribeVpcTaskResult (ctx , response .RequestId )
484+ if err != nil {
485+ return err
486+ }
487+ }
456488 }
457489 if backUpNewIp != "" {
458490 //associate one new ip
491+ var response * vpc.AssociateNatGatewayAddressResponseParams
459492 assignedRequest := vpc .NewAssociateNatGatewayAddressRequest ()
460493 assignedRequest .NatGatewayId = & natGatewayId
461494 assignedRequest .PublicIpAddresses = []* string {& backUpNewIp }
462495 err := resource .Retry (readRetryTimeout , func () * resource.RetryError {
463- _ , e := meta .(* TencentCloudClient ).apiV3Conn .UseVpcClient ().AssociateNatGatewayAddress (assignedRequest )
496+ result , e := meta .(* TencentCloudClient ).apiV3Conn .UseVpcClient ().AssociateNatGatewayAddress (assignedRequest )
464497 if e != nil {
465498 log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
466499 logId , assignedRequest .GetAction (), assignedRequest .ToJsonString (), e .Error ())
467500 return retryError (e )
468501 }
502+ if result != nil && result .Response != nil {
503+ response = result .Response
504+ }
469505 return nil
470506 })
471507 if err != nil {
472508 log .Printf ("[CRITAL]%s modify NAT gateway EIP failed, reason:%s\n " , logId , err .Error ())
473509 return err
474510 }
511+ if response != nil && response .RequestId != nil {
512+ err = vpcService .DescribeVpcTaskResult (ctx , response .RequestId )
513+ if err != nil {
514+ return err
515+ }
516+ }
475517 }
476518 }
477519
@@ -493,7 +535,7 @@ func resourceTencentCloudNatGatewayUpdate(d *schema.ResourceData, meta interface
493535
494536 d .Partial (false )
495537
496- return nil
538+ return resourceTencentCloudNatGatewayRead ( d , meta )
497539}
498540
499541func resourceTencentCloudNatGatewayDelete (d * schema.ResourceData , meta interface {}) error {
0 commit comments