From 3b44e99de2ec6a87d5b82120eafd6fb952897a1c Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Wed, 6 Nov 2024 14:20:47 +0800 Subject: [PATCH 1/4] add --- go.mod | 4 +- go.sum | 4 + .../services/clb/resource_tc_clb_listener.go | 17 +++ .../tencentcloud/clb/v20180317/client.go | 6 + .../tencentcloud/clb/v20180317/models.go | 134 ++++++++++++++---- .../tencentcloud/common/http/request.go | 2 +- vendor/modules.txt | 4 +- website/docs/r/clb_listener.html.markdown | 1 + 8 files changed, 141 insertions(+), 31 deletions(-) diff --git a/go.mod b/go.mod index a55c78aa7b..5e3dad796d 100644 --- a/go.mod +++ b/go.mod @@ -43,10 +43,10 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/chdfs v1.0.600 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ciam v1.0.695 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.748 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.984 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1034 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.970 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1033 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1034 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.1014 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.692 diff --git a/go.sum b/go.sum index c0807bea7f..9d66017ea3 100644 --- a/go.sum +++ b/go.sum @@ -862,6 +862,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.748 h1:rVvR github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.748/go.mod h1:nvb4W+PgsAe8NFG1ZevZa9ZLfto3aeBcJqxzYCRI9V4= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.984 h1:uvDvC8ip75yBSUiCOIu4dGv10AKkH7M3qnmOShLZZPQ= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.984/go.mod h1:mqn4vGnC39CHBaniEgnGQqSoVXBnIH8F+O1F5KXhbec= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1034 h1:nZBr0eJI2iTLSm26QZXNgk4VT3Fxtt+zgXCiCH6avmo= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1034/go.mod h1:q8fxlV0OQPmG3Zqq4f06m+EOqfU8BvZPnVsPCkCdv6E= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544 h1:ApY6rS7I9otgujOdAFy0+Epno1PNVCQmsOoWQxx724Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544/go.mod h1:c37rIdL3LrJXYwrfp9c8L4MabTqKIZUe1xvnWhN75oc= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033 h1:dIr+MVsZeUBiKZELfJh5HRJdI+BI6lCp5pv/2oXekuk= @@ -949,6 +951,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1031 h1:3ou github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1031/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1033 h1:g263/dapUpOAZJa1Y9x07WgfOl7Yy+FM5Mrf4WyttS8= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1033/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1034 h1:T7ewuO2DD+5R2LRpD2kTRy25aCkVDVdYkmmyUS63i08= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1034/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU= diff --git a/tencentcloud/services/clb/resource_tc_clb_listener.go b/tencentcloud/services/clb/resource_tc_clb_listener.go index 340b142937..5adda1616c 100644 --- a/tencentcloud/services/clb/resource_tc_clb_listener.go +++ b/tencentcloud/services/clb/resource_tc_clb_listener.go @@ -242,6 +242,13 @@ func ResourceTencentCloudClbListener() *schema.Resource { Optional: true, Description: "This parameter is used to specify the end port and is required when creating a port range listener. Only one member can be passed in when inputting the `Ports` parameter, which is used to specify the start port. If you want to try the port range feature, please [submit a ticket](https://console.cloud.tencent.com/workorder/category).", }, + "h2c_switch": { + Type: schema.TypeBool, + ForceNew: true, + Computed: true, + Optional: true, + Description: "Enable H2C switch for intranet HTTP listener.", + }, //computed "listener_id": { Type: schema.TypeString, @@ -350,6 +357,10 @@ func resourceTencentCloudClbListenerCreate(d *schema.ResourceData, meta interfac request.EndPort = helper.IntUint64(v.(int)) } + if v, ok := d.GetOkExists("h2c_switch"); ok { + request.H2cSwitch = helper.Bool(v.(bool)) + } + var response *clb.CreateListenerResponse err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient().CreateListener(request) @@ -518,6 +529,12 @@ func resourceTencentCloudClbListenerRead(d *schema.ResourceData, meta interface{ _ = d.Set("end_port", instance.EndPort) } + if instance.AttrFlags != nil || len(instance.AttrFlags) != 0 { + _ = d.Set("h2c_switch", true) + } else { + _ = d.Set("h2c_switch", false) + } + return nil } diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317/client.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317/client.go index 7a304cff41..e339e8f323 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317/client.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317/client.go @@ -1656,6 +1656,7 @@ func NewDeregisterFunctionTargetsResponse() (response *DeregisterFunctionTargets // // 可能返回的错误码: // FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_RESOURCEINOPERATING = "FailedOperation.ResourceInOperating" // INTERNALERROR = "InternalError" // INVALIDPARAMETER = "InvalidParameter" // INVALIDPARAMETER_FORMATERROR = "InvalidParameter.FormatError" @@ -1696,6 +1697,7 @@ func (c *Client) DeregisterFunctionTargets(request *DeregisterFunctionTargetsReq // // 可能返回的错误码: // FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_RESOURCEINOPERATING = "FailedOperation.ResourceInOperating" // INTERNALERROR = "InternalError" // INVALIDPARAMETER = "InvalidParameter" // INVALIDPARAMETER_FORMATERROR = "InvalidParameter.FormatError" @@ -4422,6 +4424,7 @@ func NewModifyFunctionTargetsResponse() (response *ModifyFunctionTargetsResponse // 可能返回的错误码: // AUTHFAILURE = "AuthFailure" // FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_RESOURCEINOPERATING = "FailedOperation.ResourceInOperating" // INTERNALERROR = "InternalError" // INVALIDPARAMETER = "InvalidParameter" // INVALIDPARAMETER_FORMATERROR = "InvalidParameter.FormatError" @@ -4439,6 +4442,7 @@ func (c *Client) ModifyFunctionTargets(request *ModifyFunctionTargetsRequest) (r // 可能返回的错误码: // AUTHFAILURE = "AuthFailure" // FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_RESOURCEINOPERATING = "FailedOperation.ResourceInOperating" // INTERNALERROR = "InternalError" // INVALIDPARAMETER = "InvalidParameter" // INVALIDPARAMETER_FORMATERROR = "InvalidParameter.FormatError" @@ -5259,6 +5263,7 @@ func NewRegisterFunctionTargetsResponse() (response *RegisterFunctionTargetsResp // // 可能返回的错误码: // FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_RESOURCEINOPERATING = "FailedOperation.ResourceInOperating" // INTERNALERROR = "InternalError" // INVALIDPARAMETER = "InvalidParameter" // INVALIDPARAMETER_FORMATERROR = "InvalidParameter.FormatError" @@ -5302,6 +5307,7 @@ func (c *Client) RegisterFunctionTargets(request *RegisterFunctionTargetsRequest // // 可能返回的错误码: // FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_RESOURCEINOPERATING = "FailedOperation.ResourceInOperating" // INTERNALERROR = "InternalError" // INVALIDPARAMETER = "InvalidParameter" // INVALIDPARAMETER_FORMATERROR = "InvalidParameter.FormatError" diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317/models.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317/models.go index 1ac23d7035..383b9cbca6 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317/models.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317/models.go @@ -769,7 +769,6 @@ type CloneLoadBalancerRequestParams struct { InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"` // 仅适用于公网负载均衡。目前仅广州、上海、南京、济南、杭州、福州、北京、石家庄、武汉、长沙、成都、重庆地域支持静态单线 IP 线路类型,如需体验,请联系商务经理申请。申请通过后,即可选择中国移动(CMCC)、中国联通(CUCC)或中国电信(CTCC)的运营商类型,网络计费模式只能使用按带宽包计费(BANDWIDTH_PACKAGE)。 如果不指定本参数,则默认使用BGP。可通过 DescribeResources 接口查询一个地域所支持的Isp。 - // 示例值:CMCC VipIsp *string `json:"VipIsp,omitnil,omitempty" name:"VipIsp"` // 指定Vip申请负载均衡。 @@ -793,8 +792,7 @@ type CloneLoadBalancerRequestParams struct { // 公网独占集群ID或者CDCId。 ClusterIds []*string `json:"ClusterIds,omitnil,omitempty" name:"ClusterIds"` - // 性能容量型规格。
  • clb.c2.medium(标准型)
  • clb.c3.small(高阶型1)
  • clb.c3.medium(高阶型2)
  • - //
  • clb.c4.small(超强型1)
  • clb.c4.medium(超强型2)
  • clb.c4.large(超强型3)
  • clb.c4.xlarge(超强型4)
  • + // 性能容量型规格。
  • clb.c2.medium(标准型)
  • clb.c3.small(高阶型1)
  • clb.c3.medium(高阶型2)
  • clb.c4.small(超强型1)
  • clb.c4.medium(超强型2)
  • clb.c4.large(超强型3)
  • clb.c4.xlarge(超强型4)
  • SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"` // Stgw独占集群的标签。 @@ -835,7 +833,6 @@ type CloneLoadBalancerRequest struct { InternetAccessible *InternetAccessible `json:"InternetAccessible,omitnil,omitempty" name:"InternetAccessible"` // 仅适用于公网负载均衡。目前仅广州、上海、南京、济南、杭州、福州、北京、石家庄、武汉、长沙、成都、重庆地域支持静态单线 IP 线路类型,如需体验,请联系商务经理申请。申请通过后,即可选择中国移动(CMCC)、中国联通(CUCC)或中国电信(CTCC)的运营商类型,网络计费模式只能使用按带宽包计费(BANDWIDTH_PACKAGE)。 如果不指定本参数,则默认使用BGP。可通过 DescribeResources 接口查询一个地域所支持的Isp。 - // 示例值:CMCC VipIsp *string `json:"VipIsp,omitnil,omitempty" name:"VipIsp"` // 指定Vip申请负载均衡。 @@ -859,8 +856,7 @@ type CloneLoadBalancerRequest struct { // 公网独占集群ID或者CDCId。 ClusterIds []*string `json:"ClusterIds,omitnil,omitempty" name:"ClusterIds"` - // 性能容量型规格。
  • clb.c2.medium(标准型)
  • clb.c3.small(高阶型1)
  • clb.c3.medium(高阶型2)
  • - //
  • clb.c4.small(超强型1)
  • clb.c4.medium(超强型2)
  • clb.c4.large(超强型3)
  • clb.c4.xlarge(超强型4)
  • + // 性能容量型规格。
  • clb.c2.medium(标准型)
  • clb.c3.small(高阶型1)
  • clb.c3.medium(高阶型2)
  • clb.c4.small(超强型1)
  • clb.c4.medium(超强型2)
  • clb.c4.large(超强型3)
  • clb.c4.xlarge(超强型4)
  • SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"` // Stgw独占集群的标签。 @@ -1199,7 +1195,7 @@ type CreateListenerRequestParams struct { // 分别表示按权重轮询、最小连接数, 默认为 WRR。此参数仅适用于TCP/UDP/TCP_SSL/QUIC监听器。 Scheduler *string `json:"Scheduler,omitnil,omitempty" name:"Scheduler"` - // 是否开启SNI特性,此参数仅适用于HTTPS监听器。0表示开启,1表示未开启。 + // 是否开启SNI特性,此参数仅适用于HTTPS监听器。0表示未开启,1表示开启。 SniSwitch *int64 `json:"SniSwitch,omitnil,omitempty" name:"SniSwitch"` // 后端目标类型,NODE表示绑定普通节点,TARGETGROUP表示绑定目标组。此参数仅适用于TCP/UDP监听器。七层监听器应在转发规则中设置。 @@ -1226,11 +1222,20 @@ type CreateListenerRequestParams struct { // 监听器最大新增连接数,当前仅性能容量型实例且仅TCP/UDP/TCP_SSL/QUIC监听器支持,不传或者传-1表示监听器维度不限速。基础网络实例不支持该参数。 MaxCps *int64 `json:"MaxCps,omitnil,omitempty" name:"MaxCps"` - // 空闲连接超时时间,此参数仅适用于TCP监听器,单位:秒。默认值:900,取值范围:共享型实例和独占型实例支持:300~900,性能容量型实例支持:300~2000。如需设置超过2000s,请通过 [工单申请](https://console.cloud.tencent.com/workorder/category),最大可设置到3600s。 + // 空闲连接超时时间,此参数仅适用于TCP监听器,单位:秒。取值范围:共享型实例和独占型实例支持:300-900,性能容量型实例支持:300-2000。如需设置请通过 [工单申请](https://console.cloud.tencent.com/workorder/category)。 IdleConnectTimeout *int64 `json:"IdleConnectTimeout,omitnil,omitempty" name:"IdleConnectTimeout"` // 是否开启SNAT。 SnatEnable *bool `json:"SnatEnable,omitnil,omitempty" name:"SnatEnable"` + + // 全端口段监听器的结束端口 + FullEndPorts []*int64 `json:"FullEndPorts,omitnil,omitempty" name:"FullEndPorts"` + + // 内网http监听器开启h2c开关 + H2cSwitch *bool `json:"H2cSwitch,omitnil,omitempty" name:"H2cSwitch"` + + // TCP_SSL监听器支持关闭SSL后仍然支持混绑,此参数为关闭开关 + SslCloseSwitch *bool `json:"SslCloseSwitch,omitnil,omitempty" name:"SslCloseSwitch"` } type CreateListenerRequest struct { @@ -1261,7 +1266,7 @@ type CreateListenerRequest struct { // 分别表示按权重轮询、最小连接数, 默认为 WRR。此参数仅适用于TCP/UDP/TCP_SSL/QUIC监听器。 Scheduler *string `json:"Scheduler,omitnil,omitempty" name:"Scheduler"` - // 是否开启SNI特性,此参数仅适用于HTTPS监听器。0表示开启,1表示未开启。 + // 是否开启SNI特性,此参数仅适用于HTTPS监听器。0表示未开启,1表示开启。 SniSwitch *int64 `json:"SniSwitch,omitnil,omitempty" name:"SniSwitch"` // 后端目标类型,NODE表示绑定普通节点,TARGETGROUP表示绑定目标组。此参数仅适用于TCP/UDP监听器。七层监听器应在转发规则中设置。 @@ -1288,11 +1293,20 @@ type CreateListenerRequest struct { // 监听器最大新增连接数,当前仅性能容量型实例且仅TCP/UDP/TCP_SSL/QUIC监听器支持,不传或者传-1表示监听器维度不限速。基础网络实例不支持该参数。 MaxCps *int64 `json:"MaxCps,omitnil,omitempty" name:"MaxCps"` - // 空闲连接超时时间,此参数仅适用于TCP监听器,单位:秒。默认值:900,取值范围:共享型实例和独占型实例支持:300~900,性能容量型实例支持:300~2000。如需设置超过2000s,请通过 [工单申请](https://console.cloud.tencent.com/workorder/category),最大可设置到3600s。 + // 空闲连接超时时间,此参数仅适用于TCP监听器,单位:秒。取值范围:共享型实例和独占型实例支持:300-900,性能容量型实例支持:300-2000。如需设置请通过 [工单申请](https://console.cloud.tencent.com/workorder/category)。 IdleConnectTimeout *int64 `json:"IdleConnectTimeout,omitnil,omitempty" name:"IdleConnectTimeout"` // 是否开启SNAT。 SnatEnable *bool `json:"SnatEnable,omitnil,omitempty" name:"SnatEnable"` + + // 全端口段监听器的结束端口 + FullEndPorts []*int64 `json:"FullEndPorts,omitnil,omitempty" name:"FullEndPorts"` + + // 内网http监听器开启h2c开关 + H2cSwitch *bool `json:"H2cSwitch,omitnil,omitempty" name:"H2cSwitch"` + + // TCP_SSL监听器支持关闭SSL后仍然支持混绑,此参数为关闭开关 + SslCloseSwitch *bool `json:"SslCloseSwitch,omitnil,omitempty" name:"SslCloseSwitch"` } func (r *CreateListenerRequest) ToJsonString() string { @@ -1326,6 +1340,9 @@ func (r *CreateListenerRequest) FromJsonString(s string) error { delete(f, "MaxCps") delete(f, "IdleConnectTimeout") delete(f, "SnatEnable") + delete(f, "FullEndPorts") + delete(f, "H2cSwitch") + delete(f, "SslCloseSwitch") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateListenerRequest has unknown keys!", "") } @@ -1373,7 +1390,7 @@ type CreateLoadBalancerRequestParams struct { // 负载均衡后端目标设备所属的网络 ID,如vpc-12345678,可以通过 [DescribeVpcEx](https://cloud.tencent.com/document/product/215/1372) 接口获取。 不填此参数则默认为DefaultVPC。创建内网负载均衡实例时,此参数必填。 VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"` - // 在私有网络内购买内网负载均衡实例的情况下,必须指定子网 ID,内网负载均衡实例的 VIP 将从这个子网中产生。创建内网负载均衡实例时,此参数必填。 + // 在私有网络内购买内网负载均衡实例的情况下,必须指定子网 ID,内网负载均衡实例的 VIP 将从这个子网中产生。创建内网负载均衡实例时,此参数必填,创建公网IPv4负载均衡实例时,不支持指定该参数。 SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"` // 负载均衡实例所属的项目 ID,可以通过 [DescribeProject](https://cloud.tencent.com/document/api/651/78725) 接口获取。不填此参数则视为默认项目。 @@ -1448,6 +1465,12 @@ type CreateLoadBalancerRequestParams struct { // 负载均衡实例的预付费相关属性 LBChargePrepaid *LBChargePrepaid `json:"LBChargePrepaid,omitnil,omitempty" name:"LBChargePrepaid"` + + // 负载均衡实例计费类型,取值:POSTPAID_BY_HOUR,PREPAID,默认是POSTPAID_BY_HOUR。 + LBChargeType *string `json:"LBChargeType,omitnil,omitempty" name:"LBChargeType"` + + // 七层访问日志主题ID + AccessLogTopicId *string `json:"AccessLogTopicId,omitnil,omitempty" name:"AccessLogTopicId"` } type CreateLoadBalancerRequest struct { @@ -1467,7 +1490,7 @@ type CreateLoadBalancerRequest struct { // 负载均衡后端目标设备所属的网络 ID,如vpc-12345678,可以通过 [DescribeVpcEx](https://cloud.tencent.com/document/product/215/1372) 接口获取。 不填此参数则默认为DefaultVPC。创建内网负载均衡实例时,此参数必填。 VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"` - // 在私有网络内购买内网负载均衡实例的情况下,必须指定子网 ID,内网负载均衡实例的 VIP 将从这个子网中产生。创建内网负载均衡实例时,此参数必填。 + // 在私有网络内购买内网负载均衡实例的情况下,必须指定子网 ID,内网负载均衡实例的 VIP 将从这个子网中产生。创建内网负载均衡实例时,此参数必填,创建公网IPv4负载均衡实例时,不支持指定该参数。 SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"` // 负载均衡实例所属的项目 ID,可以通过 [DescribeProject](https://cloud.tencent.com/document/api/651/78725) 接口获取。不填此参数则视为默认项目。 @@ -1542,6 +1565,12 @@ type CreateLoadBalancerRequest struct { // 负载均衡实例的预付费相关属性 LBChargePrepaid *LBChargePrepaid `json:"LBChargePrepaid,omitnil,omitempty" name:"LBChargePrepaid"` + + // 负载均衡实例计费类型,取值:POSTPAID_BY_HOUR,PREPAID,默认是POSTPAID_BY_HOUR。 + LBChargeType *string `json:"LBChargeType,omitnil,omitempty" name:"LBChargeType"` + + // 七层访问日志主题ID + AccessLogTopicId *string `json:"AccessLogTopicId,omitnil,omitempty" name:"AccessLogTopicId"` } func (r *CreateLoadBalancerRequest) ToJsonString() string { @@ -1584,6 +1613,8 @@ func (r *CreateLoadBalancerRequest) FromJsonString(s string) error { delete(f, "DynamicVip") delete(f, "Egress") delete(f, "LBChargePrepaid") + delete(f, "LBChargeType") + delete(f, "AccessLogTopicId") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateLoadBalancerRequest has unknown keys!", "") } @@ -4002,7 +4033,7 @@ type DescribeLoadBalancersDetailRequestParams struct { // 选择返回的Fields列表,系统仅会返回Fileds中填写的字段,可填写的字段详情请参见LoadBalancerDetail。若未在Fileds填写相关字段,则此字段返回null。Fileds中默认添加LoadBalancerId和LoadBalancerName字段。 Fields []*string `json:"Fields,omitnil,omitempty" name:"Fields"` - // 当Fields包含TargetId、TargetAddress、TargetPort、TargetWeight、ListenerId、Protocol、Port、LocationId、Domain、Url等Fields时,必选选择导出目标组的Target或者非目标组Target,值范围NODE、GROUP。 + // 当Fields包含TargetId、TargetAddress、TargetPort、TargetWeight、ListenerId、Protocol、Port、LocationId、Domain、Url等Fields时,必选选择导出目标组的Target或者非目标组Target,取值范围NODE、GROUP。 TargetType *string `json:"TargetType,omitnil,omitempty" name:"TargetType"` // 查询负载均衡详细信息列表条件,详细的过滤条件如下: @@ -4031,7 +4062,7 @@ type DescribeLoadBalancersDetailRequest struct { // 选择返回的Fields列表,系统仅会返回Fileds中填写的字段,可填写的字段详情请参见LoadBalancerDetail。若未在Fileds填写相关字段,则此字段返回null。Fileds中默认添加LoadBalancerId和LoadBalancerName字段。 Fields []*string `json:"Fields,omitnil,omitempty" name:"Fields"` - // 当Fields包含TargetId、TargetAddress、TargetPort、TargetWeight、ListenerId、Protocol、Port、LocationId、Domain、Url等Fields时,必选选择导出目标组的Target或者非目标组Target,值范围NODE、GROUP。 + // 当Fields包含TargetId、TargetAddress、TargetPort、TargetWeight、ListenerId、Protocol、Port、LocationId、Domain、Url等Fields时,必选选择导出目标组的Target或者非目标组Target,取值范围NODE、GROUP。 TargetType *string `json:"TargetType,omitnil,omitempty" name:"TargetType"` // 查询负载均衡详细信息列表条件,详细的过滤条件如下: @@ -5899,7 +5930,7 @@ type LoadBalancer struct { // 注意:此字段可能返回 null,表示取不到有效值。 SnatIps []*SnatIp `json:"SnatIps,omitnil,omitempty" name:"SnatIps"` - // 性能容量型规格。 + // 性能容量型规格。 // 注意:此字段可能返回 null,表示取不到有效值。 SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"` @@ -5954,6 +5985,10 @@ type LoadBalancer struct { // 网络出口 // 注意:此字段可能返回 null,表示取不到有效值。 Egress *string `json:"Egress,omitnil,omitempty" name:"Egress"` + + // 实例类型是否为独占型。1:独占型实例。0:非独占型实例。 + // 注意:此字段可能返回 null,表示取不到有效值。 + Exclusive *uint64 `json:"Exclusive,omitnil,omitempty" name:"Exclusive"` } type LoadBalancerDetail struct { @@ -5964,7 +5999,7 @@ type LoadBalancerDetail struct { LoadBalancerName *string `json:"LoadBalancerName,omitnil,omitempty" name:"LoadBalancerName"` // 负载均衡实例的网络类型: - // Public:公网属性, Private:内网属性。 + // OPEN:公网属性,INTERNAL:内网属性。 // 注意:此字段可能返回 null,表示取不到有效值。 LoadBalancerType *string `json:"LoadBalancerType,omitnil,omitempty" name:"LoadBalancerType"` @@ -6112,6 +6147,19 @@ type LoadBalancerDetail struct { // 网络出口 // 注意:此字段可能返回 null,表示取不到有效值。 Egress *string `json:"Egress,omitnil,omitempty" name:"Egress"` + + // 负载均衡的属性 + // 注意:此字段可能返回 null,表示取不到有效值。 + AttributeFlags []*string `json:"AttributeFlags,omitnil,omitempty" name:"AttributeFlags"` + + // 负载均衡实例的规格类型信息 + // + // 注意:此字段可能返回 null,表示取不到有效值。 + SlaType *string `json:"SlaType,omitnil,omitempty" name:"SlaType"` + + // 0:表示非独占型实例,1:表示独占型态实例。 + // 注意:此字段可能返回 null,表示取不到有效值。 + Exclusive *uint64 `json:"Exclusive,omitnil,omitempty" name:"Exclusive"` } type LoadBalancerHealth struct { @@ -7172,6 +7220,9 @@ type ModifyRuleRequestParams struct { // TRPC调用服务接口,ForwardType为TRPC时必填。目前暂未对外开放。 TrpcFunc *string `json:"TrpcFunc,omitnil,omitempty" name:"TrpcFunc"` + + // OAuth配置信息。 + OAuth *OAuth `json:"OAuth,omitnil,omitempty" name:"OAuth"` } type ModifyRuleRequest struct { @@ -7207,6 +7258,9 @@ type ModifyRuleRequest struct { // TRPC调用服务接口,ForwardType为TRPC时必填。目前暂未对外开放。 TrpcFunc *string `json:"TrpcFunc,omitnil,omitempty" name:"TrpcFunc"` + + // OAuth配置信息。 + OAuth *OAuth `json:"OAuth,omitnil,omitempty" name:"OAuth"` } func (r *ModifyRuleRequest) ToJsonString() string { @@ -7231,6 +7285,7 @@ func (r *ModifyRuleRequest) FromJsonString(s string) error { delete(f, "ForwardType") delete(f, "TrpcCallee") delete(f, "TrpcFunc") + delete(f, "OAuth") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyRuleRequest has unknown keys!", "") } @@ -7649,6 +7704,19 @@ type MultiCertInfo struct { CertList []*CertInfo `json:"CertList,omitnil,omitempty" name:"CertList"` } +type OAuth struct { + // 开启或关闭鉴权。 + // True: 开启; + // False: 关闭 + // 注意:此字段可能返回 null,表示取不到有效值。 + OAuthEnable *bool `json:"OAuthEnable,omitnil,omitempty" name:"OAuthEnable"` + + // IAP全部故障后,拒绝请求还是放行。BYPASS:通过, + // REJECT: 拒绝 + // 注意:此字段可能返回 null,表示取不到有效值。 + OAuthFailureStatus *string `json:"OAuthFailureStatus,omitnil,omitempty" name:"OAuthFailureStatus"` +} + type Price struct { // 描述了实例价格。 // 注意:此字段可能返回 null,表示取不到有效值。 @@ -8293,6 +8361,10 @@ type RuleOutput struct { // 绑定的目标组列表 // 注意:此字段可能返回 null,表示取不到有效值。 TargetGroupList []*BasicTargetGroupInfo `json:"TargetGroupList,omitnil,omitempty" name:"TargetGroupList"` + + // OAuth配置状态信息。 + // 注意:此字段可能返回 null,表示取不到有效值。 + OAuth *OAuth `json:"OAuth,omitnil,omitempty" name:"OAuth"` } type RuleTargets struct { @@ -8330,38 +8402,48 @@ type RulesItems struct { // Predefined struct for user type SetCustomizedConfigForLoadBalancerRequestParams struct { - // 操作类型:'ADD', 'DELETE', 'UPDATE', 'BIND', 'UNBIND' + // 操作类型。 + // - ADD:添加 + // - DELETE:删除 + // - UPDATE:修改 + // - BIND:绑定 + // - UNBIND:解绑 OperationType *string `json:"OperationType,omitnil,omitempty" name:"OperationType"` - // 除了创建个性化配置外,必传此字段,如:pz-1234abcd + // 个性化配置ID。除了创建个性化配置外,必传此字段,如:pz-1234abcd UconfigId *string `json:"UconfigId,omitnil,omitempty" name:"UconfigId"` - // 创建个性化配置或修改个性化配置的内容时,必传此字段 + // 个性化配置内容。创建个性化配置或修改个性化配置的内容时,必传此字段 ConfigContent *string `json:"ConfigContent,omitnil,omitempty" name:"ConfigContent"` - // 创建个性化配置或修改个性化配置的名字时,必传此字段 + // 个性化配置名称。创建个性化配置或修改个性化配置的名字时,必传此字段 ConfigName *string `json:"ConfigName,omitnil,omitempty" name:"ConfigName"` - // 绑定解绑时,必传此字段 + // 负载均衡实例ID。绑定解绑时,必传此字段 LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"` } type SetCustomizedConfigForLoadBalancerRequest struct { *tchttp.BaseRequest - // 操作类型:'ADD', 'DELETE', 'UPDATE', 'BIND', 'UNBIND' + // 操作类型。 + // - ADD:添加 + // - DELETE:删除 + // - UPDATE:修改 + // - BIND:绑定 + // - UNBIND:解绑 OperationType *string `json:"OperationType,omitnil,omitempty" name:"OperationType"` - // 除了创建个性化配置外,必传此字段,如:pz-1234abcd + // 个性化配置ID。除了创建个性化配置外,必传此字段,如:pz-1234abcd UconfigId *string `json:"UconfigId,omitnil,omitempty" name:"UconfigId"` - // 创建个性化配置或修改个性化配置的内容时,必传此字段 + // 个性化配置内容。创建个性化配置或修改个性化配置的内容时,必传此字段 ConfigContent *string `json:"ConfigContent,omitnil,omitempty" name:"ConfigContent"` - // 创建个性化配置或修改个性化配置的名字时,必传此字段 + // 个性化配置名称。创建个性化配置或修改个性化配置的名字时,必传此字段 ConfigName *string `json:"ConfigName,omitnil,omitempty" name:"ConfigName"` - // 绑定解绑时,必传此字段 + // 负载均衡实例ID。绑定解绑时,必传此字段 LoadBalancerIds []*string `json:"LoadBalancerIds,omitnil,omitempty" name:"LoadBalancerIds"` } 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 ee32b86ded..70e82f7099 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.1033" + params["RequestClient"] = "SDK_GO_1.0.1034" if requestClient != "" { params["RequestClient"] += ": " + requestClient } diff --git a/vendor/modules.txt b/vendor/modules.txt index a391b7b94f..7a46990e7b 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1154,7 +1154,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ciam/v20220331 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.748 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka/v20190819 -# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.984 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1034 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033 @@ -1163,7 +1163,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.1033 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1034 ## explicit; go 1.11 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors diff --git a/website/docs/r/clb_listener.html.markdown b/website/docs/r/clb_listener.html.markdown index 3a5e08b918..53cecbb694 100644 --- a/website/docs/r/clb_listener.html.markdown +++ b/website/docs/r/clb_listener.html.markdown @@ -181,6 +181,7 @@ The following arguments are supported: * `certificate_id` - (Optional, String) ID of the server certificate. NOTES: Only supports listeners of `HTTPS` and `TCP_SSL` protocol and must be set when it is available. * `certificate_ssl_mode` - (Optional, String) Type of certificate. Valid values: `UNIDIRECTIONAL`, `MUTUAL`. NOTES: Only supports listeners of `HTTPS` and `TCP_SSL` protocol and must be set when it is available. * `end_port` - (Optional, Int, ForceNew) This parameter is used to specify the end port and is required when creating a port range listener. Only one member can be passed in when inputting the `Ports` parameter, which is used to specify the start port. If you want to try the port range feature, please [submit a ticket](https://console.cloud.tencent.com/workorder/category). +* `h2c_switch` - (Optional, Bool, ForceNew) Enable H2C switch for intranet HTTP listener. * `health_check_context_type` - (Optional, String) Health check protocol. When the value of `health_check_type` of the health check protocol is `CUSTOM`, this field is required, which represents the input format of the health check. Valid values: `HEX`, `TEXT`. * `health_check_health_num` - (Optional, Int) Health threshold of health check, and the default is `3`. If a success result is returned for the health check for 3 consecutive times, the backend CVM is identified as healthy. The value range is 2-10. NOTES: TCP/UDP/TCP_SSL listener allows direct configuration, HTTP/HTTPS listener needs to be configured in tencentcloud_clb_listener_rule. * `health_check_http_code` - (Optional, Int) HTTP health check code of TCP listener, Valid value ranges: [1~31]. When the value of `health_check_type` of the health check protocol is `HTTP`, this field is required. Valid values: `1`, `2`, `4`, `8`, `16`. `1` means http_1xx, `2` means http_2xx, `4` means http_3xx, `8` means http_4xx, `16` means http_5xx.If you want multiple return codes to indicate health, need to add the corresponding values. From f3df402614a25b683bdc1bdcdefcef310b0f4692 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Wed, 6 Nov 2024 14:22:25 +0800 Subject: [PATCH 2/4] add --- .changelog/2939.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/2939.txt diff --git a/.changelog/2939.txt b/.changelog/2939.txt new file mode 100644 index 0000000000..5e35f9bdd8 --- /dev/null +++ b/.changelog/2939.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_clb_listener: support `h2c_switch` params +``` From d7d01f0fd3f5a575546f4da5b806683784072fef Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Wed, 6 Nov 2024 14:23:08 +0800 Subject: [PATCH 3/4] add --- tencentcloud/services/clb/resource_tc_clb_listener.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tencentcloud/services/clb/resource_tc_clb_listener.go b/tencentcloud/services/clb/resource_tc_clb_listener.go index 5adda1616c..ea9d7cf7b6 100644 --- a/tencentcloud/services/clb/resource_tc_clb_listener.go +++ b/tencentcloud/services/clb/resource_tc_clb_listener.go @@ -529,7 +529,7 @@ func resourceTencentCloudClbListenerRead(d *schema.ResourceData, meta interface{ _ = d.Set("end_port", instance.EndPort) } - if instance.AttrFlags != nil || len(instance.AttrFlags) != 0 { + if instance.AttrFlags != nil && len(instance.AttrFlags) != 0 { _ = d.Set("h2c_switch", true) } else { _ = d.Set("h2c_switch", false) From ac4d32ff78400f7d8ff9f971d38e71980f822eff Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Wed, 6 Nov 2024 14:35:23 +0800 Subject: [PATCH 4/4] add --- .../services/clb/resource_tc_clb_listener.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tencentcloud/services/clb/resource_tc_clb_listener.go b/tencentcloud/services/clb/resource_tc_clb_listener.go index ea9d7cf7b6..35ffae403b 100644 --- a/tencentcloud/services/clb/resource_tc_clb_listener.go +++ b/tencentcloud/services/clb/resource_tc_clb_listener.go @@ -529,7 +529,23 @@ func resourceTencentCloudClbListenerRead(d *schema.ResourceData, meta interface{ _ = d.Set("end_port", instance.EndPort) } - if instance.AttrFlags != nil && len(instance.AttrFlags) != 0 { + var clbIns *clb.LoadBalancer + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := clbService.DescribeLoadBalancerById(ctx, clbId) + if e != nil { + return tccommon.RetryError(e) + } + + clbIns = result + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s read CLB instance failed, reason:%+v", logId, err) + return err + } + + if clbIns.AttributeFlags != nil && len(clbIns.AttributeFlags) != 0 { _ = d.Set("h2c_switch", true) } else { _ = d.Set("h2c_switch", false)