Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion tencentcloud/resource_tc_instance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func testSweepCvmInstance(region string) error {
if err != nil {
return fmt.Errorf("getting tencentcloud client error: %s", err.Error())
}
client := sharedClient.(TencentCloudClient)
client := sharedClient.(*TencentCloudClient)

cvmService := CvmService{
client: client.apiV3Conn,
Expand Down
44 changes: 44 additions & 0 deletions tencentcloud/resource_tc_vpn_gateway_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package tencentcloud

import (
"context"
"fmt"
"log"
"testing"
Expand All @@ -11,6 +12,49 @@ import (
vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312"
)

func init() {
resource.AddTestSweepers("tencentcloud_vpn_gateway", &resource.Sweeper{
Name: "tencentcloud_vpn_gateway",
F: testSweepVpnGateway,
})
}

func testSweepVpnGateway(region string) error {
logId := getLogId(contextNil)
ctx := context.WithValue(context.TODO(), logIdKey, logId)

sharedClient, err := sharedClientForRegion(region)
if err != nil {
return fmt.Errorf("getting tencentcloud client error: %s", err.Error())
}
client := sharedClient.(*TencentCloudClient)

vpcService := VpcService{
client: client.apiV3Conn,
}

instances, err := vpcService.DescribeVpnGwByFilter(ctx, nil)
if err != nil {
return fmt.Errorf("get instance list error: %s", err.Error())
}

for _, v := range instances {
vpnGwId := *v.VpnGatewayId

//if !strings.HasPrefix(instanceName, defaultInsName) {
// continue
//}

instanceId := *v.VpnGatewayId

if err = vpcService.DeleteVpnGateway(ctx, vpnGwId); err != nil {
log.Printf("[ERROR] sweep instance %s error: %s", instanceId, err.Error())
}
}

return nil
}

func TestAccTencentCloudVpnGateway_basic(t *testing.T) {
t.Parallel()
resource.Test(t, resource.TestCase{
Expand Down
65 changes: 65 additions & 0 deletions tencentcloud/service_tencentcloud_vpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -3537,6 +3537,71 @@ func (me *VpcService) DescribeVpngwById(ctx context.Context, vpngwId string) (ha
return
}

func (me *VpcService) DescribeVpnGwByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.VpnGateway, errRet error) {
var (
logId = getLogId(ctx)
request = vpc.NewDescribeVpnGatewaysRequest()
)
request.Filters = make([]*vpc.FilterObject, 0, len(filters))
for k, v := range filters {
filter := vpc.FilterObject{
Name: helper.String(k),
Values: []*string{helper.String(v)},
}
request.Filters = append(request.Filters, &filter)
}

var offset uint64 = 0
var pageSize uint64 = 100
instances = make([]*vpc.VpnGateway, 0)

for {
request.Offset = &offset
request.Limit = &pageSize
ratelimit.Check(request.GetAction())
response, err := me.client.UseVpcClient().DescribeVpnGateways(request)
if err != nil {
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n",
logId, request.GetAction(), request.ToJsonString(), err.Error())
errRet = err
return
}
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())

if response == nil || len(response.Response.VpnGatewaySet) < 1 {
break
}
instances = append(instances, response.Response.VpnGatewaySet...)
if len(response.Response.VpnGatewaySet) < int(pageSize) {
break
}
offset += pageSize
}
return
}

func (me *VpcService) DeleteVpnGateway(ctx context.Context, vpnGatewayId string) (errRet error) {
logId := getLogId(ctx)
request := vpc.NewDeleteVpnGatewayRequest()
defer func() {
if errRet != nil {
log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error())
}
}()
request.VpnGatewayId = &vpnGatewayId

errRet = resource.Retry(writeRetryTimeout, func() *resource.RetryError {
ratelimit.Check(request.GetAction())
_, errRet = me.client.UseVpcClient().DeleteVpnGateway(request)
if errRet != nil {
return retryError(errRet, InternalError)
}
return nil
})
return
}

func (me *VpcService) CreateAddressTemplate(ctx context.Context, name string, addresses []interface{}) (templateId string, errRet error) {
logId := getLogId(ctx)
request := vpc.NewCreateAddressTemplateRequest()
Expand Down