From 5a1eb8d248757ba4029b62c5e5337a450332022c Mon Sep 17 00:00:00 2001 From: Kagashino Date: Fri, 13 May 2022 15:43:47 +0800 Subject: [PATCH] feat: add vpc route entry enable --- go.mod | 4 +- go.sum | 4 + .../resource_tc_mysql_readonly_instance.go | 3 +- tencentcloud/resource_tc_route_entry.go | 2 +- tencentcloud/resource_tc_route_table_entry.go | 57 ++++++++++++- .../resource_tc_route_table_entry_test.go | 79 ++++++++++++++++++- tencentcloud/service_tencentcloud_vpc.go | 63 ++++++++++++++- .../tencentcloud/common/http/request.go | 2 +- .../tencentcloud/vpc/v20170312/client.go | 4 + vendor/modules.txt | 4 +- .../docs/r/route_table_entry.html.markdown | 1 + 11 files changed, 211 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 12587a6369..b9aca6d2da 100644 --- a/go.mod +++ b/go.mod @@ -31,7 +31,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.283 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.199 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.377 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.397 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.398 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.385 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.359 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu v1.0.335 @@ -57,7 +57,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tdmq v1.0.268 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.381 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.199 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.392 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.398 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199 github.com/tencentyun/cos-go-sdk-v5 v0.7.33 github.com/yangwenmai/ratelimit v0.0.0-20180104140304-44221c2292e1 diff --git a/go.sum b/go.sum index 8e8efd9cd7..f3d20aa8f5 100644 --- a/go.sum +++ b/go.sum @@ -487,6 +487,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.392 h1:Uqcm github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.392/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.397 h1:oYU+ghWYDEXSpU8aogzPYHiuZAI1291BMroSG0WKdAc= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.397/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.398 h1:+VbaPRPCKAplIvwj9oGEOTbZmYiEX9AeqaTCPqLzwS8= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.398/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.385 h1:8bwloRxRwSADSK48KxaUeO9JHmmgniNGJbA7Or/HUEk= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.385/go.mod h1:PMxA0L4o8Fbx/6+ju1cAMAU7x2bV4C6e/LTqVe745yM= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.359 h1:cNKqelPgUxrJkLY0Azd2QHr/UMYOPPnmqs88clt2akk= @@ -542,6 +544,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.199 h1:6Yt74l4 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.199/go.mod h1:Yw6OQ33z3s4k0HVYTNSffB12qOzEJ2Zf1Vj4+5S3sRs= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.392 h1:nx8MQ8yJ3srpfEAlKLQKtOsBCBc30QJ3Q0RsSOGSphQ= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.392/go.mod h1:IAl660UAxdUtp1rHUwbUwxFCVqwk61xAIRbBk6QtTy8= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.398 h1:1JVKMl+yjZbntwAW0A6esjQI1/dXXqjQ9+OLai7ZS2w= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.398/go.mod h1:+TD/TRnb5WrLcE2SL3db7ROOpwED5gBfbC19gaXnGxs= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199 h1:hMBLtiJPnZ9GvA677cTB6ELBR6B68wCR2QY1sNoGQc4= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199/go.mod h1:nnY91/H3j/Gu7V/oCA6Zeg8T5D3q36EUdBh4EjmHwqY= github.com/tencentyun/cos-go-sdk-v5 v0.7.33 h1:5jmJU7U/1nf/7ZPDkrUL8KlF1oDUzTHsdtLNY6x0hq4= diff --git a/tencentcloud/resource_tc_mysql_readonly_instance.go b/tencentcloud/resource_tc_mysql_readonly_instance.go index 4c8d43e899..f94d015942 100644 --- a/tencentcloud/resource_tc_mysql_readonly_instance.go +++ b/tencentcloud/resource_tc_mysql_readonly_instance.go @@ -28,12 +28,13 @@ package tencentcloud import ( "context" "fmt" + "log" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" cdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb/v20170320" sdkError "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" - "log" ) func resourceTencentCloudMysqlReadonlyInstance() *schema.Resource { diff --git a/tencentcloud/resource_tc_route_entry.go b/tencentcloud/resource_tc_route_entry.go index 95ddf26b51..8c956fc03a 100644 --- a/tencentcloud/resource_tc_route_entry.go +++ b/tencentcloud/resource_tc_route_entry.go @@ -147,7 +147,7 @@ func resourceTencentCloudRouteEntryCreate(d *schema.ResourceData, meta interface return fmt.Errorf("The value of next_type is invalid") } - _, err := service.CreateRoutes(ctx, routeTableId, destinationCidrBlock, routeTypeNewMap[nextType], nextHub, "") + _, err := service.CreateRoutes(ctx, routeTableId, destinationCidrBlock, routeTypeNewMap[nextType], nextHub, "", true) if err != nil { return err } diff --git a/tencentcloud/resource_tc_route_table_entry.go b/tencentcloud/resource_tc_route_table_entry.go index 5ba81473c2..5b415882be 100644 --- a/tencentcloud/resource_tc_route_table_entry.go +++ b/tencentcloud/resource_tc_route_table_entry.go @@ -51,6 +51,9 @@ import ( "strconv" "strings" + vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" @@ -60,6 +63,7 @@ func resourceTencentCloudVpcRouteEntry() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudVpcRouteEntryCreate, Read: resourceTencentCloudVpcRouteEntryRead, + Update: resourceTencentCloudVpcRouteEntryUpdate, Delete: resourceTencentCloudVpcRouteEntryDelete, Importer: &schema.ResourceImporter{ State: schema.ImportStatePassthrough, @@ -92,6 +96,12 @@ func resourceTencentCloudVpcRouteEntry() *schema.Resource { ForceNew: true, Description: "ID of next-hop gateway. Note: when `next_type` is EIP, GatewayId should be `0`.", }, + // Name enabled will lead to exist route table diff fail (null -> false cannot diff). + "disabled": { + Type: schema.TypeBool, + Optional: true, + Description: "Whether the entry is disabled, default is `false`.", + }, "description": { Type: schema.TypeString, Optional: true, @@ -116,6 +126,7 @@ func resourceTencentCloudVpcRouteEntryCreate(d *schema.ResourceData, meta interf destinationCidrBlock = "" nextType = "" nextHub = "" + disabled = false ) if temp, ok := d.GetOk("description"); ok { @@ -134,6 +145,10 @@ func resourceTencentCloudVpcRouteEntryCreate(d *schema.ResourceData, meta interf nextHub = temp.(string) } + if temp, ok := d.GetOk("disabled"); ok { + disabled = temp.(bool) + } + if routeTableId == "" || destinationCidrBlock == "" || nextType == "" || nextHub == "" { return fmt.Errorf("some needed fields is empty string") } @@ -142,7 +157,8 @@ func resourceTencentCloudVpcRouteEntryCreate(d *schema.ResourceData, meta interf return fmt.Errorf("if next_type is %s, next_hub can only be \"0\" ", GATE_WAY_TYPE_EIP) } - entryId, err := service.CreateRoutes(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description) + // route cannot disable on create + entryId, err := service.CreateRoutes(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description, true) if err != nil { return err @@ -150,6 +166,16 @@ func resourceTencentCloudVpcRouteEntryCreate(d *schema.ResourceData, meta interf d.SetId(fmt.Sprintf("%d.%s", entryId, routeTableId)) + if disabled { + request := vpc.NewDisableRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteIds = []*uint64{helper.Int64Uint64(entryId)} + err := service.DisableRoutes(ctx, request) + if err != nil { + return err + } + } + return nil } @@ -189,6 +215,8 @@ func resourceTencentCloudVpcRouteEntryRead(d *schema.ResourceData, meta interfac _ = d.Set("destination_cidr_block", v.destinationCidr) _ = d.Set("next_type", v.nextType) _ = d.Set("next_hub", v.nextBub) + + _ = d.Set("disabled", !v.enabled) return nil } } @@ -201,6 +229,33 @@ func resourceTencentCloudVpcRouteEntryRead(d *schema.ResourceData, meta interfac return nil } +func resourceTencentCloudVpcRouteEntryUpdate(d *schema.ResourceData, meta interface{}) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + client := meta.(*TencentCloudClient).apiV3Conn + service := VpcService{client} + + items := strings.Split(d.Id(), ".") + if len(items) != 2 { + return fmt.Errorf("entry id be destroyed, we can not get route table id") + } + + id := items[0] + routeTableId := items[1] + routeEntryId, err := strconv.ParseUint(id, 10, 64) + if err != nil { + return fmt.Errorf("parse route entry id %s fail: %s", id, routeTableId) + } + + if d.HasChange("disabled") { + disabled := d.Get("disabled").(bool) + if err := service.SwitchRouteEnabled(ctx, routeTableId, routeEntryId, !disabled); err != nil { + return err + } + } + return resourceTencentCloudVpcRouteEntryRead(d, meta) +} + func resourceTencentCloudVpcRouteEntryDelete(d *schema.ResourceData, meta interface{}) error { defer logElapsed("resource.tencentcloud_route_table_entry.delete")() diff --git a/tencentcloud/resource_tc_route_table_entry_test.go b/tencentcloud/resource_tc_route_table_entry_test.go index cf3572ec3a..96cb0da3f2 100644 --- a/tencentcloud/resource_tc_route_table_entry_test.go +++ b/tencentcloud/resource_tc_route_table_entry_test.go @@ -3,6 +3,7 @@ package tencentcloud import ( "context" "fmt" + "log" "strconv" "strings" "testing" @@ -16,6 +17,7 @@ func TestAccTencentCloudVpcV3RouteEntryBasic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { + log.Printf("TF: \n%s", testAccVpcRouteEntryConfig) testAccPreCheck(t) }, Providers: testAccProviders, @@ -33,9 +35,22 @@ func TestAccTencentCloudVpcV3RouteEntryBasic(t *testing.T) { ), }, { - ResourceName: "tencentcloud_route_table_entry.foo", - ImportState: true, - ImportStateVerify: true, + Config: testAccVpcRouteEntryUpdate, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("tencentcloud_route_table_entry.foo", "disabled", "true"), + ), + }, + { + Config: testAccVpcRouteEntryUpdate2, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("tencentcloud_route_table_entry.foo", "disabled", "false"), + ), + }, + { + ResourceName: "tencentcloud_route_table_entry.foo", + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"enabled"}, }, }, }) @@ -157,3 +172,61 @@ resource "tencentcloud_route_table_entry" "foo" { description = var.instance_name } ` +const testAccVpcRouteEntryUpdate = defaultVpcVariable + ` +resource "tencentcloud_vpc" "foo" { + name = var.instance_name + cidr_block = var.vpc_cidr +} + +resource "tencentcloud_route_table" "foo" { + name = var.instance_name + vpc_id = tencentcloud_vpc.foo.id +} + +resource "tencentcloud_subnet" "foo" { + name = var.instance_name + vpc_id = tencentcloud_vpc.foo.id + availability_zone = var.availability_zone + cidr_block = var.subnet_cidr + is_multicast = false + route_table_id = tencentcloud_route_table.foo.id +} + +resource "tencentcloud_route_table_entry" "foo" { + route_table_id = tencentcloud_route_table.foo.id + destination_cidr_block = "10.0.0.0/24" + next_type = "EIP" + next_hub = "0" + description = var.instance_name + disabled = true +} +` +const testAccVpcRouteEntryUpdate2 = defaultVpcVariable + ` +resource "tencentcloud_vpc" "foo" { + name = var.instance_name + cidr_block = var.vpc_cidr +} + +resource "tencentcloud_route_table" "foo" { + name = var.instance_name + vpc_id = tencentcloud_vpc.foo.id +} + +resource "tencentcloud_subnet" "foo" { + name = var.instance_name + vpc_id = tencentcloud_vpc.foo.id + availability_zone = var.availability_zone + cidr_block = var.subnet_cidr + is_multicast = false + route_table_id = tencentcloud_route_table.foo.id +} + +resource "tencentcloud_route_table_entry" "foo" { + route_table_id = tencentcloud_route_table.foo.id + destination_cidr_block = "10.0.0.0/24" + next_type = "EIP" + next_hub = "0" + description = var.instance_name + disabled = false +} +` diff --git a/tencentcloud/service_tencentcloud_vpc.go b/tencentcloud/service_tencentcloud_vpc.go index 65c8caf537..5ff0fc08b4 100644 --- a/tencentcloud/service_tencentcloud_vpc.go +++ b/tencentcloud/service_tencentcloud_vpc.go @@ -60,6 +60,7 @@ type VpcRouteEntryBasicInfo struct { nextBub string description string entryType string + enabled bool } // route table basic information @@ -812,6 +813,7 @@ getMoreData: entry.description = *v.RouteDescription entry.routeEntryId = int64(*v.RouteId) entry.entryType = *v.RouteType + entry.enabled = *v.Enabled basicInfo.entryInfos = append(basicInfo.entryInfos, entry) } if hasTableMap[basicInfo.routeTableId] { @@ -985,7 +987,7 @@ func (me *VpcService) DeleteRoutes(ctx context.Context, routeTableId string, ent } func (me *VpcService) CreateRoutes(ctx context.Context, - routeTableId, destinationCidrBlock, nextType, nextHub, description string) (entryId int64, errRet error) { + routeTableId, destinationCidrBlock, nextType, nextHub, description string, enabled bool) (entryId int64, errRet error) { logId := getLogId(ctx) request := vpc.NewCreateRoutesRequest() @@ -1006,6 +1008,7 @@ func (me *VpcService) CreateRoutes(ctx context.Context, route.RouteDescription = &description route.GatewayType = &nextType route.GatewayId = &nextHub + route.Enabled = &enabled request.Routes = []*vpc.Route{&route} ratelimit.Check(request.GetAction()) response, err := me.client.UseVpcClient().CreateRoutes(request) @@ -1051,6 +1054,64 @@ func (me *VpcService) CreateRoutes(ctx context.Context, return } +func (me *VpcService) SwitchRouteEnabled(ctx context.Context, routeTableId string, routeId uint64, enabled bool) error { + if enabled { + request := vpc.NewEnableRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteIds = []*uint64{&routeId} + return me.EnableRoutes(ctx, request) + } else { + request := vpc.NewDisableRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteIds = []*uint64{&routeId} + return me.DisableRoutes(ctx, request) + } +} + +func (me *VpcService) EnableRoutes(ctx context.Context, request *vpc.EnableRoutesRequest) (errRet error) { + logId := getLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().EnableRoutes(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *VpcService) DisableRoutes(ctx context.Context, request *vpc.DisableRoutesRequest) (errRet error) { + logId := getLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DisableRoutes(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} func (me *VpcService) CreateSecurityGroup(ctx context.Context, name, desc string, projectId *int) (id string, err error) { logId := getLogId(ctx) diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go index d3949789c5..fe499085ca 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go @@ -254,7 +254,7 @@ func CompleteCommonParams(request Request, region string) { params["Action"] = request.GetAction() params["Timestamp"] = strconv.FormatInt(time.Now().Unix(), 10) params["Nonce"] = strconv.Itoa(rand.Int()) - params["RequestClient"] = "SDK_GO_1.0.397" + params["RequestClient"] = "SDK_GO_1.0.398" } func ConstructParams(req Request) (err error) { diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312/client.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312/client.go index b25c2a432e..506c1690fd 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312/client.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312/client.go @@ -733,6 +733,7 @@ func NewAssignPrivateIpAddressesResponse() (response *AssignPrivateIpAddressesRe // > // // 可能返回的错误码: +// FAILEDOPERATION_NETDETECTTIMEOUT = "FailedOperation.NetDetectTimeOut" // INVALIDPARAMETERVALUE_DUPLICATEPARA = "InvalidParameterValue.DuplicatePara" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" @@ -764,6 +765,7 @@ func (c *Client) AssignPrivateIpAddresses(request *AssignPrivateIpAddressesReque // > // // 可能返回的错误码: +// FAILEDOPERATION_NETDETECTTIMEOUT = "FailedOperation.NetDetectTimeOut" // INVALIDPARAMETERVALUE_DUPLICATEPARA = "InvalidParameterValue.DuplicatePara" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" @@ -3267,6 +3269,7 @@ func NewCreateNetworkInterfaceResponse() (response *CreateNetworkInterfaceRespon // RESOURCEINSUFFICIENT = "ResourceInsufficient" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION = "UnsupportedOperation" +// UNSUPPORTEDOPERATION_RESOURCEMISMATCH = "UnsupportedOperation.ResourceMismatch" func (c *Client) CreateNetworkInterface(request *CreateNetworkInterfaceRequest) (response *CreateNetworkInterfaceResponse, err error) { return c.CreateNetworkInterfaceWithContext(context.Background(), request) } @@ -3301,6 +3304,7 @@ func (c *Client) CreateNetworkInterface(request *CreateNetworkInterfaceRequest) // RESOURCEINSUFFICIENT = "ResourceInsufficient" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION = "UnsupportedOperation" +// UNSUPPORTEDOPERATION_RESOURCEMISMATCH = "UnsupportedOperation.ResourceMismatch" func (c *Client) CreateNetworkInterfaceWithContext(ctx context.Context, request *CreateNetworkInterfaceRequest) (response *CreateNetworkInterfaceResponse, err error) { if request == nil { request = NewCreateNetworkInterfaceRequest() diff --git a/vendor/modules.txt b/vendor/modules.txt index 840376c60f..573a6ced13 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -555,7 +555,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit/v20190319 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.377 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls/v20201016 -# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.397 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.398 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http @@ -611,7 +611,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tdmq/v20200217 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.199 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod/v20180717 -# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.392 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.398 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss/v20180426 diff --git a/website/docs/r/route_table_entry.html.markdown b/website/docs/r/route_table_entry.html.markdown index f4bba50987..551b799572 100644 --- a/website/docs/r/route_table_entry.html.markdown +++ b/website/docs/r/route_table_entry.html.markdown @@ -54,6 +54,7 @@ The following arguments are supported: * `next_type` - (Required, ForceNew) Type of next-hop. Valid values: `CVM`, `VPN`, `DIRECTCONNECT`, `PEERCONNECTION`, `SSLVPN`, `NAT`, `NORMAL_CVM`, `EIP` and `CCN`. * `route_table_id` - (Required, ForceNew) ID of routing table to which this entry belongs. * `description` - (Optional, ForceNew) Description of the routing table entry. +* `disabled` - (Optional) Whether the entry is disabled, default is `false`. ## Attributes Reference