Skip to content

Commit 0cf0afe

Browse files
author
hellertang
authored
add vpngw sweeper and fix cvm sweeper (#887)
1 parent f590eff commit 0cf0afe

File tree

3 files changed

+110
-1
lines changed

3 files changed

+110
-1
lines changed

tencentcloud/resource_tc_instance_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func testSweepCvmInstance(region string) error {
2626
if err != nil {
2727
return fmt.Errorf("getting tencentcloud client error: %s", err.Error())
2828
}
29-
client := sharedClient.(TencentCloudClient)
29+
client := sharedClient.(*TencentCloudClient)
3030

3131
cvmService := CvmService{
3232
client: client.apiV3Conn,

tencentcloud/resource_tc_vpn_gateway_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package tencentcloud
22

33
import (
4+
"context"
45
"fmt"
56
"log"
67
"testing"
@@ -11,6 +12,49 @@ import (
1112
vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312"
1213
)
1314

15+
func init() {
16+
resource.AddTestSweepers("tencentcloud_vpn_gateway", &resource.Sweeper{
17+
Name: "tencentcloud_vpn_gateway",
18+
F: testSweepVpnGateway,
19+
})
20+
}
21+
22+
func testSweepVpnGateway(region string) error {
23+
logId := getLogId(contextNil)
24+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
25+
26+
sharedClient, err := sharedClientForRegion(region)
27+
if err != nil {
28+
return fmt.Errorf("getting tencentcloud client error: %s", err.Error())
29+
}
30+
client := sharedClient.(*TencentCloudClient)
31+
32+
vpcService := VpcService{
33+
client: client.apiV3Conn,
34+
}
35+
36+
instances, err := vpcService.DescribeVpnGwByFilter(ctx, nil)
37+
if err != nil {
38+
return fmt.Errorf("get instance list error: %s", err.Error())
39+
}
40+
41+
for _, v := range instances {
42+
vpnGwId := *v.VpnGatewayId
43+
44+
//if !strings.HasPrefix(instanceName, defaultInsName) {
45+
// continue
46+
//}
47+
48+
instanceId := *v.VpnGatewayId
49+
50+
if err = vpcService.DeleteVpnGateway(ctx, vpnGwId); err != nil {
51+
log.Printf("[ERROR] sweep instance %s error: %s", instanceId, err.Error())
52+
}
53+
}
54+
55+
return nil
56+
}
57+
1458
func TestAccTencentCloudVpnGateway_basic(t *testing.T) {
1559
t.Parallel()
1660
resource.Test(t, resource.TestCase{

tencentcloud/service_tencentcloud_vpc.go

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3537,6 +3537,71 @@ func (me *VpcService) DescribeVpngwById(ctx context.Context, vpngwId string) (ha
35373537
return
35383538
}
35393539

3540+
func (me *VpcService) DescribeVpnGwByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.VpnGateway, errRet error) {
3541+
var (
3542+
logId = getLogId(ctx)
3543+
request = vpc.NewDescribeVpnGatewaysRequest()
3544+
)
3545+
request.Filters = make([]*vpc.FilterObject, 0, len(filters))
3546+
for k, v := range filters {
3547+
filter := vpc.FilterObject{
3548+
Name: helper.String(k),
3549+
Values: []*string{helper.String(v)},
3550+
}
3551+
request.Filters = append(request.Filters, &filter)
3552+
}
3553+
3554+
var offset uint64 = 0
3555+
var pageSize uint64 = 100
3556+
instances = make([]*vpc.VpnGateway, 0)
3557+
3558+
for {
3559+
request.Offset = &offset
3560+
request.Limit = &pageSize
3561+
ratelimit.Check(request.GetAction())
3562+
response, err := me.client.UseVpcClient().DescribeVpnGateways(request)
3563+
if err != nil {
3564+
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n",
3565+
logId, request.GetAction(), request.ToJsonString(), err.Error())
3566+
errRet = err
3567+
return
3568+
}
3569+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
3570+
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
3571+
3572+
if response == nil || len(response.Response.VpnGatewaySet) < 1 {
3573+
break
3574+
}
3575+
instances = append(instances, response.Response.VpnGatewaySet...)
3576+
if len(response.Response.VpnGatewaySet) < int(pageSize) {
3577+
break
3578+
}
3579+
offset += pageSize
3580+
}
3581+
return
3582+
}
3583+
3584+
func (me *VpcService) DeleteVpnGateway(ctx context.Context, vpnGatewayId string) (errRet error) {
3585+
logId := getLogId(ctx)
3586+
request := vpc.NewDeleteVpnGatewayRequest()
3587+
defer func() {
3588+
if errRet != nil {
3589+
log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error())
3590+
}
3591+
}()
3592+
request.VpnGatewayId = &vpnGatewayId
3593+
3594+
errRet = resource.Retry(writeRetryTimeout, func() *resource.RetryError {
3595+
ratelimit.Check(request.GetAction())
3596+
_, errRet = me.client.UseVpcClient().DeleteVpnGateway(request)
3597+
if errRet != nil {
3598+
return retryError(errRet, InternalError)
3599+
}
3600+
return nil
3601+
})
3602+
return
3603+
}
3604+
35403605
func (me *VpcService) CreateAddressTemplate(ctx context.Context, name string, addresses []interface{}) (templateId string, errRet error) {
35413606
logId := getLogId(ctx)
35423607
request := vpc.NewCreateAddressTemplateRequest()

0 commit comments

Comments
 (0)