Skip to content

Commit 116eaba

Browse files
author
hellertang
authored
fix vpn ssl (#1022)
1 parent c8f6bc2 commit 116eaba

File tree

3 files changed

+54
-37
lines changed

3 files changed

+54
-37
lines changed

tencentcloud/resource_tc_vpn_ssl_client.go

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,13 @@ package tencentcloud
2424
import (
2525
"context"
2626
"log"
27-
"time"
2827

2928
vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312"
3029
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
3130
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit"
3231

3332
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
3433
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
35-
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
3634
)
3735

3836
func resourceTencentCloudVpnSslClient() *schema.Resource {
@@ -103,12 +101,10 @@ func resourceTencentCloudVpnSslClientCreate(d *schema.ResourceData, meta interfa
103101
return err
104102
}
105103

106-
err := vpcService.DescribeTaskResult(ctx, helper.Uint64(*taskId))
104+
err := vpcService.DescribeVpcTaskResult(ctx, helper.String(helper.UInt64ToStr(*taskId)))
107105
if err != nil {
108106
return err
109107
}
110-
// add protect
111-
time.Sleep(3)
112108

113109
d.SetId(*sslClientId)
114110

@@ -155,17 +151,15 @@ func resourceTencentCloudVpnSslClientDelete(d *schema.ResourceData, meta interfa
155151

156152
sslClientId := d.Id()
157153

158-
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
159-
if err := service.DeleteVpnGatewaySslClient(ctx, sslClientId); err != nil {
160-
if sdkErr, ok := err.(*errors.TencentCloudSDKError); ok {
161-
if sdkErr.Code == VPCNotFound {
162-
return nil
163-
}
164-
}
165-
return resource.RetryableError(err)
166-
}
167-
return nil
168-
})
154+
taskId, err := service.DeleteVpnGatewaySslClient(ctx, sslClientId)
155+
if err != nil {
156+
return err
157+
}
158+
159+
err = service.DescribeVpcTaskResult(ctx, helper.String(helper.UInt64ToStr(*taskId)))
160+
if err != nil {
161+
return err
162+
}
169163

170164
return err
171165
}

tencentcloud/resource_tc_vpn_ssl_server.go

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,13 @@ package tencentcloud
3232
import (
3333
"context"
3434
"log"
35-
"time"
3635

3736
vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312"
3837
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
3938
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit"
4039

4140
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
4241
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
43-
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
4442
)
4543

4644
func resourceTencentCloudVpnSslServer() *schema.Resource {
@@ -181,13 +179,11 @@ func resourceTencentCloudVpnSslServerCreate(d *schema.ResourceData, meta interfa
181179
return err
182180
}
183181

184-
err := vpcService.DescribeTaskResult(ctx, helper.Int64Uint64(*taskId))
182+
err := vpcService.DescribeVpcTaskResult(ctx, helper.String(helper.Int64ToStr(*taskId)))
185183
if err != nil {
186184
return err
187185
}
188186

189-
// add protect
190-
time.Sleep(3)
191187
d.SetId(*sslServerId)
192188

193189
return resourceTencentCloudVpnSslServerRead(d, meta)
@@ -250,17 +246,15 @@ func resourceTencentCloudVpnSslServerDelete(d *schema.ResourceData, meta interfa
250246

251247
serverId := d.Id()
252248

253-
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
254-
if err := service.DeleteVpnGatewaySslServer(ctx, serverId); err != nil {
255-
if sdkErr, ok := err.(*errors.TencentCloudSDKError); ok {
256-
if sdkErr.Code == VPCNotFound {
257-
return nil
258-
}
259-
}
260-
return resource.RetryableError(err)
261-
}
262-
return nil
263-
})
249+
taskId, err := service.DeleteVpnGatewaySslServer(ctx, serverId)
250+
if err != nil {
251+
return err
252+
}
264253

265-
return err
254+
err = service.DescribeVpcTaskResult(ctx, helper.String(helper.UInt64ToStr(taskId)))
255+
if err != nil {
256+
return err
257+
}
258+
259+
return nil
266260
}

tencentcloud/service_tencentcloud_vpc.go

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4413,6 +4413,33 @@ func (me *VpcService) DescribeVpnGatewayRoutes(ctx context.Context, vpnGatewayId
44134413
}
44144414
}
44154415

4416+
func (me *VpcService) DescribeVpcTaskResult(ctx context.Context, taskId *string) (err error) {
4417+
4418+
logId := getLogId(ctx)
4419+
request := vpc.NewDescribeVpcTaskResultRequest()
4420+
defer func() {
4421+
if err != nil {
4422+
log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), err.Error())
4423+
}
4424+
}()
4425+
request.TaskId = taskId
4426+
err = resource.Retry(readRetryTimeout, func() *resource.RetryError {
4427+
ratelimit.Check(request.GetAction())
4428+
response, err := me.client.UseVpcClient().DescribeVpcTaskResult(request)
4429+
if err != nil {
4430+
return retryError(err)
4431+
}
4432+
if response.Response.Status != nil && *response.Response.Status == VPN_TASK_STATUS_RUNNING {
4433+
return resource.RetryableError(errors.New("VPN task is running"))
4434+
}
4435+
return nil
4436+
})
4437+
if err != nil {
4438+
return err
4439+
}
4440+
return
4441+
}
4442+
44164443
func (me *VpcService) DescribeTaskResult(ctx context.Context, taskId *uint64) (err error) {
44174444

44184445
logId := getLogId(ctx)
@@ -4520,7 +4547,7 @@ func (me *VpcService) DescribeVpnGwSslServerByFilter(ctx context.Context, filter
45204547
return
45214548
}
45224549

4523-
func (me *VpcService) DeleteVpnGatewaySslServer(ctx context.Context, SslServerId string) (errRet error) {
4550+
func (me *VpcService) DeleteVpnGatewaySslServer(ctx context.Context, SslServerId string) (taskId uint64, errRet error) {
45244551
logId := getLogId(ctx)
45254552
request := vpc.NewDeleteVpnGatewaySslServerRequest()
45264553
defer func() {
@@ -4532,10 +4559,11 @@ func (me *VpcService) DeleteVpnGatewaySslServer(ctx context.Context, SslServerId
45324559

45334560
errRet = resource.Retry(writeRetryTimeout, func() *resource.RetryError {
45344561
ratelimit.Check(request.GetAction())
4535-
_, errRet = me.client.UseVpcClient().DeleteVpnGatewaySslServer(request)
4562+
response, errRet := me.client.UseVpcClient().DeleteVpnGatewaySslServer(request)
45364563
if errRet != nil {
45374564
return retryError(errRet, InternalError)
45384565
}
4566+
taskId = *response.Response.TaskId
45394567
return nil
45404568
})
45414569
return
@@ -4621,7 +4649,7 @@ func (me *VpcService) DescribeVpnGwSslClientByFilter(ctx context.Context, filter
46214649
return
46224650
}
46234651

4624-
func (me *VpcService) DeleteVpnGatewaySslClient(ctx context.Context, SslClientId string) (errRet error) {
4652+
func (me *VpcService) DeleteVpnGatewaySslClient(ctx context.Context, SslClientId string) (taskId *uint64, errRet error) {
46254653
logId := getLogId(ctx)
46264654
request := vpc.NewDeleteVpnGatewaySslClientRequest()
46274655
defer func() {
@@ -4633,10 +4661,11 @@ func (me *VpcService) DeleteVpnGatewaySslClient(ctx context.Context, SslClientId
46334661

46344662
errRet = resource.Retry(writeRetryTimeout, func() *resource.RetryError {
46354663
ratelimit.Check(request.GetAction())
4636-
_, errRet = me.client.UseVpcClient().DeleteVpnGatewaySslClient(request)
4664+
response, errRet := me.client.UseVpcClient().DeleteVpnGatewaySslClient(request)
46374665
if errRet != nil {
46384666
return retryError(errRet, InternalError)
46394667
}
4668+
taskId = response.Response.TaskId
46404669
return nil
46414670
})
46424671
return

0 commit comments

Comments
 (0)