diff --git a/.changelog/2746.txt b/.changelog/2746.txt new file mode 100644 index 0000000000..2adfe4a68b --- /dev/null +++ b/.changelog/2746.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_ccn: support route_ecmp_flag and route_overlap_flag +``` diff --git a/go.mod b/go.mod index f4151f94df..562c30c6e8 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.961 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.970 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.970 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.971 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.960 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.692 @@ -96,7 +96,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tse v1.0.857 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tsf v1.0.674 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.860 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.964 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.971 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.833 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199 diff --git a/go.sum b/go.sum index 6e2cad99cb..1c4514e560 100644 --- a/go.sum +++ b/go.sum @@ -956,20 +956,20 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.955 h1:kr5K github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.955/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.958 h1:WoN2lhvQVTFnY4woYvpQKRzdHeEiB+m9lsHC3TOFdXQ= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.958/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.960 h1:hde8uWA3624nGUvC8QPf9njcyBZ7A9weqscRrqyM1Rk= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.960/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.963 h1:lUVCMP5eiSHc2HGfSVc07Tytn4p6DklJkKldObRvJrU= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.963/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.964 h1:ET3EulYQvWrdD5FNwOP+196w5Vbniy/uRGucM5ILExQ= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.964/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.959 h1:GZUqSDQkttkhH2hxWNj5apDo1/YhQwML0Q68wW60LSA= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.959/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.960 h1:hde8uWA3624nGUvC8QPf9njcyBZ7A9weqscRrqyM1Rk= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.960/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.961 h1:UqinjIsO+Y48BQYSxrD6aHQe8SD+Wsbvj+jU9V9VvWM= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.961/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.963 h1:lUVCMP5eiSHc2HGfSVc07Tytn4p6DklJkKldObRvJrU= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.963/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.964 h1:ET3EulYQvWrdD5FNwOP+196w5Vbniy/uRGucM5ILExQ= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.964/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.970 h1:IsF+IWWOfzhbyxP1jFYU3w4kZXWfDH4QaNLXgIy3Sgg= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.970/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.971 h1:T5zEH1QM1XX+hJoAe4krnSjrnsTgHv1KfGC4Sos0Y4M= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.971/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860/go.mod h1:NZo1WplQcC314kMlCRUoy8NQju2BnolIJj7NAWgsuhY= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624 h1:nEZqsoqt1pEoaP9JjkHQy3/H00suCfzlHW1qOm2nYD8= @@ -1116,6 +1116,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.963 h1:6Hl5u9j github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.963/go.mod h1:I/v4TeM6kXoYesJ67MpDqJMRLDEypA4c0QjZBYwaka8= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.964 h1:+HsB7iMFYfDAYD0Xoj1tBsqLT1R6h/94DiooYJnorr8= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.964/go.mod h1:ohfNiTUrMTR50FAUe4wALZVYa1404YQvYB57pvVVADM= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.971 h1:eQsRAk1n6z4du93ebKe1XyQpTELY0YIJ4Y7jvMLdNNg= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.971/go.mod h1:QpI0wEhuqhVI3jZbakGNzsJlt7YJdB8rqY9b/SI+NMM= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.833 h1:avaBlZ+Qqv7bfMg/u0jlRsbEBbE18CfqKWbfGc84PLg= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.833/go.mod h1:fUWG217b//46Oa3VXxC5mgeYeewVAbF+lc81uET89EM= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792 h1:NLgKNOIHWa38AmW7dyfI9Jlcp2Kr9VRD94f48pPNmxM= diff --git a/tencentcloud/services/ccn/resource_tc_ccn.go b/tencentcloud/services/ccn/resource_tc_ccn.go index 8d4ac38383..dcbf38cb23 100644 --- a/tencentcloud/services/ccn/resource_tc_ccn.go +++ b/tencentcloud/services/ccn/resource_tc_ccn.go @@ -3,8 +3,11 @@ package ccn import ( "context" "fmt" + "log" "strings" + vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" svctag "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tag" @@ -67,6 +70,18 @@ func ResourceTencentCloudCcn() *schema.Resource { "`INTER_REGION_LIMIT` is the inter-regional speed limit. " + "The default is `OUTER_REGION_LIMIT`.", }, + "route_ecmp_flag": { + Type: schema.TypeBool, + Optional: true, + Default: false, + Description: "Whether to enable the equivalent routing function. `true`: enabled, `false`: disabled.", + }, + "route_overlap_flag": { + Type: schema.TypeBool, + Optional: true, + Default: false, + Description: "Whether to enable the routing overlap function. `true`: enabled, `false`: disabled.", + }, "tags": { Type: schema.TypeMap, Optional: true, @@ -142,6 +157,39 @@ func resourceTencentCloudCcnCreate(d *schema.ResourceData, meta interface{}) err } } + // set ECMP/Overlap + request := vpc.NewModifyCcnAttributeRequest() + request.CcnId = &info.ccnId + if temp, ok := d.GetOkExists("route_ecmp_flag"); ok { + request.RouteECMPFlag = helper.Bool(temp.(bool)) + } + + if temp, ok := d.GetOkExists("route_overlap_flag"); ok { + request.RouteOverlapFlag = helper.Bool(temp.(bool)) + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().ModifyCcnAttribute(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + if result == nil { + e = fmt.Errorf("update ModifyCcnAttribute failed") + return resource.NonRetryableError(e) + } + + _ = result + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s update ModifyCcnAttribute failed, reason:%s\n", logId, err.Error()) + return err + } + return resourceTencentCloudCcnRead(d, meta) } @@ -174,6 +222,8 @@ func resourceTencentCloudCcnRead(d *schema.ResourceData, meta interface{}) error _ = d.Set("create_time", info.createTime) _ = d.Set("charge_type", info.chargeType) _ = d.Set("bandwidth_limit_type", info.bandWithLimitType) + _ = d.Set("route_ecmp_flag", info.ecmpFlag) + _ = d.Set("route_overlap_flag", info.overlapFlag) return nil }) @@ -197,26 +247,42 @@ func resourceTencentCloudCcnUpdate(d *schema.ResourceData, meta interface{}) err defer tccommon.LogElapsed("resource.tencentcloud_ccn.update")() var ( - logId = tccommon.GetLogId(tccommon.ContextNil) - ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service = VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - name string - description string - change bool + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + change bool ) + request := vpc.NewModifyCcnAttributeRequest() + request.CcnId = helper.String(d.Id()) + if d.HasChange("name") { - name = d.Get("name").(string) + if temp, ok := d.GetOk("name"); ok { + request.CcnName = helper.String(temp.(string)) + } + change = true } if d.HasChange("description") { if temp, ok := d.GetOk("description"); ok { - description = temp.(string) + request.CcnName = helper.String(temp.(string)) } - if description == "" { - return fmt.Errorf("can not set description='' ") + change = true + } + + if d.HasChange("route_ecmp_flag") { + if temp, ok := d.GetOkExists("route_ecmp_flag"); ok { + request.RouteECMPFlag = helper.Bool(temp.(bool)) + } + + change = true + } + + if d.HasChange("route_overlap_flag") { + if temp, ok := d.GetOkExists("route_overlap_flag"); ok { + request.RouteOverlapFlag = helper.Bool(temp.(bool)) } change = true @@ -224,7 +290,25 @@ func resourceTencentCloudCcnUpdate(d *schema.ResourceData, meta interface{}) err d.Partial(true) if change { - if err := service.ModifyCcnAttribute(ctx, d.Id(), name, description); err != nil { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().ModifyCcnAttribute(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + if result == nil { + e = fmt.Errorf("update ModifyCcnAttribute failed") + return resource.NonRetryableError(e) + } + + _ = result + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s update ModifyCcnAttribute failed, reason:%s\n", logId, err.Error()) return err } } diff --git a/tencentcloud/services/ccn/resource_tc_ccn.md b/tencentcloud/services/ccn/resource_tc_ccn.md index 0bc252167b..13a65c5b51 100644 --- a/tencentcloud/services/ccn/resource_tc_ccn.md +++ b/tencentcloud/services/ccn/resource_tc_ccn.md @@ -11,6 +11,8 @@ resource "tencentcloud_ccn" "example" { qos = "AG" charge_type = "PREPAID" bandwidth_limit_type = "INTER_REGION_LIMIT" + route_ecmp_flag = true + route_overlap_flag = true tags = { createBy = "terraform" } @@ -26,6 +28,8 @@ resource "tencentcloud_ccn" "example" { qos = "AG" charge_type = "POSTPAID" bandwidth_limit_type = "OUTER_REGION_LIMIT" + route_ecmp_flag = false + route_overlap_flag = false tags = { createBy = "terraform" } diff --git a/tencentcloud/services/ccn/service_tencentcloud_ccn.go b/tencentcloud/services/ccn/service_tencentcloud_ccn.go index 6bbbc45bc2..72892e5915 100644 --- a/tencentcloud/services/ccn/service_tencentcloud_ccn.go +++ b/tencentcloud/services/ccn/service_tencentcloud_ccn.go @@ -28,6 +28,8 @@ type CcnBasicInfo struct { bandWithLimitType string instanceCount int64 createTime string + ecmpFlag bool + overlapFlag bool } type CcnInstanceBind struct { @@ -205,6 +207,8 @@ getMoreData: basicInfo.state = *item.State basicInfo.chargeType = *item.InstanceChargeType basicInfo.bandWithLimitType = *item.BandwidthLimitType + basicInfo.ecmpFlag = *item.RouteECMPFlag + basicInfo.overlapFlag = *item.RouteOverlapFlag if has[basicInfo.ccnId] { errRet = fmt.Errorf("get repeated ccn_id[%s] when doing DescribeCcns", basicInfo.ccnId) @@ -354,7 +358,7 @@ func (me *VpcService) DeleteCcn(ctx context.Context, ccnId string) (errRet error return } -func (me *VpcService) ModifyCcnAttribute(ctx context.Context, ccnId, name, description string) (errRet error) { +func (me *VpcService) ModifyCcnAttribute(ctx context.Context, ccnId, name, description string, ecmpFlag, overlapFlag bool) (errRet error) { logId := tccommon.GetLogId(ctx) request := vpc.NewModifyCcnAttributeRequest() @@ -363,9 +367,14 @@ func (me *VpcService) ModifyCcnAttribute(ctx context.Context, ccnId, name, descr if name != "" { request.CcnName = &name } + if description != "" { request.CcnDescription = &description } + + request.RouteECMPFlag = &ecmpFlag + request.RouteOverlapFlag = &overlapFlag + ratelimit.Check(request.GetAction()) response, err := me.client.UseVpcClient().ModifyCcnAttribute(request) 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 5d9d3b9fdf..6f638426d3 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 @@ -265,7 +265,7 @@ func CompleteCommonParams(request Request, region string, requestClient 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.970" + params["RequestClient"] = "SDK_GO_1.0.971" if requestClient != "" { params["RequestClient"] += ": " + requestClient } 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 c6085da4da..89de3dab48 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 @@ -3111,6 +3111,7 @@ func NewCreateDefaultVpcResponse() (response *CreateDefaultVpcResponse) { // INVALIDPARAMETERVALUE_EMPTY = "InvalidParameterValue.Empty" // INVALIDPARAMETERVALUE_SUBNETOVERLAP = "InvalidParameterValue.SubnetOverlap" // LIMITEXCEEDED = "LimitExceeded" +// LIMITEXCEEDED_DEFAULTVPCLIMITEXCEEDED = "LimitExceeded.DefaultVpcLimitExceeded" // RESOURCEINSUFFICIENT_CIDRBLOCK = "ResourceInsufficient.CidrBlock" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION_RECORDEXISTS = "UnsupportedOperation.RecordExists" @@ -3141,6 +3142,7 @@ func (c *Client) CreateDefaultVpc(request *CreateDefaultVpcRequest) (response *C // INVALIDPARAMETERVALUE_EMPTY = "InvalidParameterValue.Empty" // INVALIDPARAMETERVALUE_SUBNETOVERLAP = "InvalidParameterValue.SubnetOverlap" // LIMITEXCEEDED = "LimitExceeded" +// LIMITEXCEEDED_DEFAULTVPCLIMITEXCEEDED = "LimitExceeded.DefaultVpcLimitExceeded" // RESOURCEINSUFFICIENT_CIDRBLOCK = "ResourceInsufficient.CidrBlock" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION_RECORDEXISTS = "UnsupportedOperation.RecordExists" diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312/errors.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312/errors.go index 332768fe72..3b92a86f30 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312/errors.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312/errors.go @@ -563,6 +563,9 @@ const ( // 超过每日更换IP配额。 LIMITEXCEEDED_DAILYCHANGEADDRESSQUOTA = "LimitExceeded.DailyChangeAddressQuota" + // 默认VPC数量已达到上限。 + LIMITEXCEEDED_DEFAULTVPCLIMITEXCEEDED = "LimitExceeded.DefaultVpcLimitExceeded" + // 实例绑定的弹性IP超过配额。 LIMITEXCEEDED_INSTANCEADDRESSQUOTA = "LimitExceeded.InstanceAddressQuota" diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312/models.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312/models.go index 5190bcc3a9..b414784cd3 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312/models.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312/models.go @@ -2167,6 +2167,26 @@ type CCN struct { // 是否开启云联网路由传播策略。`False` 未开启,`True` 开启。 // 注意:此字段可能返回 null,表示取不到有效值。 RouteBroadcastPolicyFlag *bool `json:"RouteBroadcastPolicyFlag,omitnil,omitempty" name:"RouteBroadcastPolicyFlag"` + + // 是否开启等价路由功能。`False` 未开启,`True` 开启。 + // 注意:此字段可能返回 null,表示取不到有效值。 + RouteECMPFlag *bool `json:"RouteECMPFlag,omitnil,omitempty" name:"RouteECMPFlag"` + + // 是否开启路由重叠功能。`False` 未开启,`True` 开启。 + // 注意:此字段可能返回 null,表示取不到有效值。 + RouteOverlapFlag *bool `json:"RouteOverlapFlag,omitnil,omitempty" name:"RouteOverlapFlag"` + + // 是否开启QOS。 + // 注意:此字段可能返回 null,表示取不到有效值。 + TrafficMarkingPolicyFlag *bool `json:"TrafficMarkingPolicyFlag,omitnil,omitempty" name:"TrafficMarkingPolicyFlag"` + + // 是否开启路由表选择策略。 + // 注意:此字段可能返回 null,表示取不到有效值。 + RouteSelectPolicyFlag *bool `json:"RouteSelectPolicyFlag,omitnil,omitempty" name:"RouteSelectPolicyFlag"` + + // 是否开启二层云联网通道。 + // 注意:此字段可能返回 null,表示取不到有效值。 + DirectConnectAccelerateChannelFlag *bool `json:"DirectConnectAccelerateChannelFlag,omitnil,omitempty" name:"DirectConnectAccelerateChannelFlag"` } type CcnAttachedInstance struct { @@ -2352,6 +2372,10 @@ type CcnInstance struct { // 实例关联的路由表ID。 // 注意:此字段可能返回 null,表示取不到有效值。 RouteTableId *string `json:"RouteTableId,omitnil,omitempty" name:"RouteTableId"` + + // 实例付费方式 + // 注意:此字段可能返回 null,表示取不到有效值。 + OrderType *string `json:"OrderType,omitnil,omitempty" name:"OrderType"` } type CcnInstanceInfo struct { @@ -4181,17 +4205,20 @@ type CreateHaVipRequestParams struct { // `HAVIP`所在私有网络`ID`。 VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"` - // `HAVIP`所在子网`ID`。 - SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"` - // `HAVIP`名称。 HaVipName *string `json:"HaVipName,omitnil,omitempty" name:"HaVipName"` + // `HAVIP`所在子网`ID`。 + SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"` + // 指定虚拟IP地址,必须在`VPC`网段内且未被占用。不指定则自动分配。 Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"` // `HAVIP`所在弹性网卡`ID`。 NetworkInterfaceId *string `json:"NetworkInterfaceId,omitnil,omitempty" name:"NetworkInterfaceId"` + + // 是否开启`HAVIP`漂移时子机或网卡范围的校验。默认不开启。 + CheckAssociate *bool `json:"CheckAssociate,omitnil,omitempty" name:"CheckAssociate"` } type CreateHaVipRequest struct { @@ -4200,17 +4227,20 @@ type CreateHaVipRequest struct { // `HAVIP`所在私有网络`ID`。 VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"` - // `HAVIP`所在子网`ID`。 - SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"` - // `HAVIP`名称。 HaVipName *string `json:"HaVipName,omitnil,omitempty" name:"HaVipName"` + // `HAVIP`所在子网`ID`。 + SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"` + // 指定虚拟IP地址,必须在`VPC`网段内且未被占用。不指定则自动分配。 Vip *string `json:"Vip,omitnil,omitempty" name:"Vip"` // `HAVIP`所在弹性网卡`ID`。 NetworkInterfaceId *string `json:"NetworkInterfaceId,omitnil,omitempty" name:"NetworkInterfaceId"` + + // 是否开启`HAVIP`漂移时子机或网卡范围的校验。默认不开启。 + CheckAssociate *bool `json:"CheckAssociate,omitnil,omitempty" name:"CheckAssociate"` } func (r *CreateHaVipRequest) ToJsonString() string { @@ -4226,10 +4256,11 @@ func (r *CreateHaVipRequest) FromJsonString(s string) error { return err } delete(f, "VpcId") - delete(f, "SubnetId") delete(f, "HaVipName") + delete(f, "SubnetId") delete(f, "Vip") delete(f, "NetworkInterfaceId") + delete(f, "CheckAssociate") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateHaVipRequest has unknown keys!", "") } @@ -7367,6 +7398,14 @@ type CrossBorderCompliance struct { // 审批单创建时间。 CreatedTime *string `json:"CreatedTime,omitnil,omitempty" name:"CreatedTime"` + + // 法定代表人身份证号。 + // 注意:此字段可能返回 null,表示取不到有效值。 + LegalPersonId *string `json:"LegalPersonId,omitnil,omitempty" name:"LegalPersonId"` + + // 法定代表人身份证。 + // 注意:此字段可能返回 null,表示取不到有效值。 + LegalPersonIdCard *string `json:"LegalPersonIdCard,omitnil,omitempty" name:"LegalPersonIdCard"` } type CrossBorderFlowMonitorData struct { @@ -12776,13 +12815,7 @@ type DescribeHaVipsRequestParams struct { // `HAVIP`唯一`ID`,形如:`havip-9o233uri`。 HaVipIds []*string `json:"HaVipIds,omitnil,omitempty" name:"HaVipIds"` - // 过滤条件,参数不支持同时指定`HaVipIds`和`Filters`。 - //
  • havip-id - String - `HAVIP`唯一`ID`,形如:`havip-9o233uri`。
  • - //
  • havip-name - String - `HAVIP`名称。
  • - //
  • vpc-id - String - `HAVIP`所在私有网络`ID`。
  • - //
  • subnet-id - String - `HAVIP`所在子网`ID`。
  • - //
  • vip - String - `HAVIP`的地址`VIP`。
  • - //
  • address-ip - String - `HAVIP`绑定的弹性公网`IP`。
  • + // 过滤条件,参数不支持同时指定`HaVipIds`和`Filters`。
  • havip-id - String - `HAVIP`唯一`ID`,形如:`havip-9o233uri`。
  • havip-name - String - `HAVIP`名称。
  • vpc-id - String - `HAVIP`所在私有网络`ID`。
  • subnet-id - String - `HAVIP`所在子网`ID`。
  • vip - String - `HAVIP`的地址`VIP`。
  • address-ip - String - `HAVIP`绑定的弹性公网`IP`。
  • havip-association.instance-id - String - `HAVIP`绑定的子机或网卡。
  • havip-association.instance-type - String - `HAVIP`绑定的类型,取值:CVM, ENI。
  • check-associate - Bool - 是否开启HaVip飘移时校验绑定的子机或网卡。
  • cdc-id - String - CDC实例ID。
  • Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"` // 偏移量,默认为0。 @@ -12798,13 +12831,7 @@ type DescribeHaVipsRequest struct { // `HAVIP`唯一`ID`,形如:`havip-9o233uri`。 HaVipIds []*string `json:"HaVipIds,omitnil,omitempty" name:"HaVipIds"` - // 过滤条件,参数不支持同时指定`HaVipIds`和`Filters`。 - //
  • havip-id - String - `HAVIP`唯一`ID`,形如:`havip-9o233uri`。
  • - //
  • havip-name - String - `HAVIP`名称。
  • - //
  • vpc-id - String - `HAVIP`所在私有网络`ID`。
  • - //
  • subnet-id - String - `HAVIP`所在子网`ID`。
  • - //
  • vip - String - `HAVIP`的地址`VIP`。
  • - //
  • address-ip - String - `HAVIP`绑定的弹性公网`IP`。
  • + // 过滤条件,参数不支持同时指定`HaVipIds`和`Filters`。
  • havip-id - String - `HAVIP`唯一`ID`,形如:`havip-9o233uri`。
  • havip-name - String - `HAVIP`名称。
  • vpc-id - String - `HAVIP`所在私有网络`ID`。
  • subnet-id - String - `HAVIP`所在子网`ID`。
  • vip - String - `HAVIP`的地址`VIP`。
  • address-ip - String - `HAVIP`绑定的弹性公网`IP`。
  • havip-association.instance-id - String - `HAVIP`绑定的子机或网卡。
  • havip-association.instance-type - String - `HAVIP`绑定的类型,取值:CVM, ENI。
  • check-associate - Bool - 是否开启HaVip飘移时校验绑定的子机或网卡。
  • cdc-id - String - CDC实例ID。
  • Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"` // 偏移量,默认为0。 @@ -20413,6 +20440,18 @@ type HaVip struct { // 使用havip的业务标识。 Business *string `json:"Business,omitnil,omitempty" name:"Business"` + + // `HAVIP`的飘移范围。 + // 注意:此字段可能返回 null,表示取不到有效值。 + HaVipAssociationSet []*HaVipAssociation `json:"HaVipAssociationSet,omitnil,omitempty" name:"HaVipAssociationSet"` + + // 是否开启`HAVIP`的飘移范围校验。 + // 注意:此字段可能返回 null,表示取不到有效值。 + CheckAssociate *bool `json:"CheckAssociate,omitnil,omitempty" name:"CheckAssociate"` + + // HAVIP 刷新时间。该参数只作为出参数。以下场景会触发 FlushTime 被刷新:1)子机发出免费 ARP 触发 HAVIP 漂移;2)手动HAVIP解绑网卡; 没有更新时默认值:0000-00-00 00:00:00 + // 注意:此字段可能返回 null,表示取不到有效值。 + FlushedTime *string `json:"FlushedTime,omitnil,omitempty" name:"FlushedTime"` } // Predefined struct for user @@ -20476,6 +20515,20 @@ func (r *HaVipAssociateAddressIpResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } +type HaVipAssociation struct { + // HaVip实例唯一ID。 + // 注意:此字段可能返回 null,表示取不到有效值。 + HaVipId *string `json:"HaVipId,omitnil,omitempty" name:"HaVipId"` + + // HaVip绑定的子机或网卡唯一ID。 + // 注意:此字段可能返回 null,表示取不到有效值。 + InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"` + + // HaVip绑定的类型。取值:CVM, ENI。 + // 注意:此字段可能返回 null,表示取不到有效值。 + InstanceType *string `json:"InstanceType,omitnil,omitempty" name:"InstanceType"` +} + // Predefined struct for user type HaVipDisassociateAddressIpRequestParams struct { // `HAVIP`唯一`ID`,形如:`havip-9o233uri`。必须是已绑定`EIP`的`HAVIP`。 @@ -20918,7 +20971,7 @@ type InstanceBind struct { InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"` // 实例所在地域。 - InstanceRegion []*string `json:"InstanceRegion,omitnil,omitempty" name:"InstanceRegion"` + InstanceRegion *string `json:"InstanceRegion,omitnil,omitempty" name:"InstanceRegion"` // 实例所属的账户uin。 InstanceUin *string `json:"InstanceUin,omitnil,omitempty" name:"InstanceUin"` @@ -25136,6 +25189,9 @@ type ModifyVpnGatewayAttributeRequestParams struct { // BGP ASN。ASN取值范围为1- 4294967295,默认值64551,其中139341、45090和58835不可用。 BgpAsn *uint64 `json:"BgpAsn,omitnil,omitempty" name:"BgpAsn"` + + // 服务端最大连接数个数。 + MaxConnection *uint64 `json:"MaxConnection,omitnil,omitempty" name:"MaxConnection"` } type ModifyVpnGatewayAttributeRequest struct { @@ -25152,6 +25208,9 @@ type ModifyVpnGatewayAttributeRequest struct { // BGP ASN。ASN取值范围为1- 4294967295,默认值64551,其中139341、45090和58835不可用。 BgpAsn *uint64 `json:"BgpAsn,omitnil,omitempty" name:"BgpAsn"` + + // 服务端最大连接数个数。 + MaxConnection *uint64 `json:"MaxConnection,omitnil,omitempty" name:"MaxConnection"` } func (r *ModifyVpnGatewayAttributeRequest) ToJsonString() string { @@ -25170,6 +25229,7 @@ func (r *ModifyVpnGatewayAttributeRequest) FromJsonString(s string) error { delete(f, "VpnGatewayName") delete(f, "InstanceChargeType") delete(f, "BgpAsn") + delete(f, "MaxConnection") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyVpnGatewayAttributeRequest has unknown keys!", "") } @@ -25774,7 +25834,7 @@ type NetworkAclEntry struct { // 协议, 取值: TCP,UDP, ICMP, ALL。 Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"` - // 端口(all, 单个port, range)。当Protocol为ALL或ICMP时,不能指定Port。 + // 端口(all, 单个port, range)。当Protocol为ALL或ICMP时,不能指定Port。使用-指定端口范围,如:10-20。 Port *string `json:"Port,omitnil,omitempty" name:"Port"` // 网段或IP(互斥)。增量创建ACL规则时,CidrBlock和Ipv6CidrBlock至少提供一个。 diff --git a/vendor/modules.txt b/vendor/modules.txt index 7a3c7d2f5b..235d20644a 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1160,7 +1160,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit/v20190319 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.970 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls/v20201016 -# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.970 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.971 ## explicit; go 1.11 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors @@ -1328,7 +1328,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tsf/v20180326 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.860 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod/v20180717 -# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.964 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.971 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.833 diff --git a/website/docs/r/ccn.html.markdown b/website/docs/r/ccn.html.markdown index 4c92629365..1f9114f768 100644 --- a/website/docs/r/ccn.html.markdown +++ b/website/docs/r/ccn.html.markdown @@ -22,6 +22,8 @@ resource "tencentcloud_ccn" "example" { qos = "AG" charge_type = "PREPAID" bandwidth_limit_type = "INTER_REGION_LIMIT" + route_ecmp_flag = true + route_overlap_flag = true tags = { createBy = "terraform" } @@ -37,6 +39,8 @@ resource "tencentcloud_ccn" "example" { qos = "AG" charge_type = "POSTPAID" bandwidth_limit_type = "OUTER_REGION_LIMIT" + route_ecmp_flag = false + route_overlap_flag = false tags = { createBy = "terraform" } @@ -64,6 +68,8 @@ The following arguments are supported: * `charge_type` - (Optional, String, ForceNew) Billing mode. Valid values: `PREPAID`, `POSTPAID`. `PREPAID` means prepaid, which means annual and monthly subscription, `POSTPAID` means post-payment, which means billing by volume. The default is `POSTPAID`. The prepaid model only supports inter-regional speed limit, and the post-paid model supports inter-regional speed limit and regional export speed limit. * `description` - (Optional, String) Description of CCN, and maximum length does not exceed 100 bytes. * `qos` - (Optional, String, ForceNew) Service quality of CCN. Valid values: `PT`, `AU`, `AG`. The default is `AU`. +* `route_ecmp_flag` - (Optional, Bool) Whether to enable the equivalent routing function. `true`: enabled, `false`: disabled. +* `route_overlap_flag` - (Optional, Bool) Whether to enable the routing overlap function. `true`: enabled, `false`: disabled. * `tags` - (Optional, Map) Instance tag. ## Attributes Reference