From 1a888f45ceff172cacc0f3ad5cf83ece050434da Mon Sep 17 00:00:00 2001 From: arunma Date: Thu, 26 Sep 2024 15:31:33 +0800 Subject: [PATCH 01/13] fix(eip): [119848960]support eip cdc --- go.mod | 4 +- go.sum | 4 + tencentcloud/services/cvm/resource_tc_eip.go | 23 ++- .../cvm/resource_tc_eip_association.go | 10 +- .../cvm/resource_tc_eip_association_test.go | 8 +- .../services/cvm/resource_tc_eip_test.go | 8 +- .../services/vpc/service_tencentcloud_vpc.go | 15 +- .../tencentcloud/common/http/request.go | 2 +- .../tencentcloud/vpc/v20170312/client.go | 10 +- .../tencentcloud/vpc/v20170312/errors.go | 3 + .../tencentcloud/vpc/v20170312/models.go | 170 ++++++++++++++++-- vendor/modules.txt | 4 +- website/docs/r/eip.html.markdown | 1 + 13 files changed, 217 insertions(+), 45 deletions(-) diff --git a/go.mod b/go.mod index 3c619781dc..687e00b279 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.984 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.1010 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1011 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.978 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1011 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 f5e17abfb6..1546b6c9b6 100644 --- a/go.sum +++ b/go.sum @@ -936,6 +936,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1008 h1:BQJ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1008/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1010 h1:HwhKTg+VcQd5M9AyaEZaqKmpKuWxbf5kni23g1KRmOk= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1010/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1011 h1:cjqeXTwKKtGVqrf6luwunUnA77buzmzbk+G42US1Sns= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1011/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= @@ -1054,6 +1056,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.860 h1:vW2NgAH github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.860/go.mod h1:uCkDh/AW/tb8JGq5b2kqLjqZuhCFR+6oTsq1SrrvT44= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.978 h1:EZlxS90zY799+zYB7dmbMqU8XyWT0lesPTPkCtibC54= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.978/go.mod h1:+8DNFolL3rl8vlN1hiY8HhJG0SchGhzLbCN0K0TA0vU= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1011 h1:QRtuN3T5bF0LWVllUB5ZTxe42P2ZFUB2PmyeWCd1ySs= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1011/go.mod h1:7I7JGx2pVizVaXEte38bGHtyD/P1JwbVrBLbtTl2Rrs= 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/cvm/resource_tc_eip.go b/tencentcloud/services/cvm/resource_tc_eip.go index e7ba5bbee4..25badeabc4 100644 --- a/tencentcloud/services/cvm/resource_tc_eip.go +++ b/tencentcloud/services/cvm/resource_tc_eip.go @@ -108,6 +108,12 @@ func ResourceTencentCloudEip() *schema.Resource { Computed: true, Description: "ID of anti DDos package, it must set when `type` is `AntiDDoSEIP`.", }, + "cdc_id": { + Type: schema.TypeString, + Optional: true, + Description: "CDC Unique ID.", + }, + // computed "public_ip": { Type: schema.TypeString, @@ -135,6 +141,7 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err region := client.Region var internetChargeType string + var cdcId string request := vpc.NewAllocateAddressesRequest() if v, ok := d.GetOk("type"); ok { @@ -184,6 +191,10 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err if v, ok := d.GetOk("anti_ddos_package_id"); ok { request.AntiDDoSPackageId = helper.String(v.(string)) } + if v, ok := d.GetOk("cdc_id"); ok { + cdcId = v.(string) + request.DedicatedClusterId = helper.String(v.(string)) + } eipId := "" err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { @@ -218,7 +229,7 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err // wait for status err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet := vpcService.DescribeEipById(ctx, eipId) + eip, errRet := vpcService.DescribeEipById(ctx, eipId, cdcId) if errRet != nil { return tccommon.RetryError(errRet) } @@ -247,9 +258,10 @@ func resourceTencentCloudEipRead(d *schema.ResourceData, meta interface{}) error region := client.Region eipId := d.Id() + cdcId := d.Get("cdc_id").(string) var eip *vpc.Address err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - instance, errRet := vpcService.DescribeEipById(ctx, eipId) + instance, errRet := vpcService.DescribeEipById(ctx, eipId, cdcId) if errRet != nil { return tccommon.RetryError(errRet) } @@ -402,8 +414,9 @@ func resourceTencentCloudEipDelete(d *schema.ResourceData, meta interface{}) err ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) vpcService := svcvpc.NewVpcService(meta.(tccommon.ProviderMeta).GetAPIV3Conn()) eipId := d.Id() + cdcId := d.Get("cdc_id").(string) err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - errRet := vpcService.UnattachEip(ctx, eipId) + errRet := vpcService.UnattachEip(ctx, eipId, cdcId) if errRet != nil { return tccommon.RetryError(errRet, "DesOperation.MutexTaskRunning") } @@ -432,7 +445,7 @@ func resourceTencentCloudEipDelete(d *schema.ResourceData, meta interface{}) err if internetChargeType == "BANDWIDTH_PREPAID_BY_MONTH" { // isolated err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet := vpcService.DescribeEipById(ctx, eipId) + eip, errRet := vpcService.DescribeEipById(ctx, eipId, cdcId) if errRet != nil { return tccommon.RetryError(errRet) } @@ -459,7 +472,7 @@ func resourceTencentCloudEipDelete(d *schema.ResourceData, meta interface{}) err } err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet := vpcService.DescribeEipById(ctx, eipId) + eip, errRet := vpcService.DescribeEipById(ctx, eipId, cdcId) if errRet != nil { return tccommon.RetryError(errRet) } diff --git a/tencentcloud/services/cvm/resource_tc_eip_association.go b/tencentcloud/services/cvm/resource_tc_eip_association.go index 0cee54ffbf..0c1c3b6588 100644 --- a/tencentcloud/services/cvm/resource_tc_eip_association.go +++ b/tencentcloud/services/cvm/resource_tc_eip_association.go @@ -83,7 +83,7 @@ func resourceTencentCloudEipAssociationCreate(d *schema.ResourceData, meta inter eipId := d.Get("eip_id").(string) err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet = vpcService.DescribeEipById(ctx, eipId) + eip, errRet = vpcService.DescribeEipById(ctx, eipId, "") if errRet != nil { return tccommon.RetryError(errRet, tccommon.InternalError) } @@ -120,7 +120,7 @@ func resourceTencentCloudEipAssociationCreate(d *schema.ResourceData, meta inter associationId := fmt.Sprintf("%v::%v", eipId, instanceId) err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet = vpcService.DescribeEipById(ctx, eipId) + eip, errRet = vpcService.DescribeEipById(ctx, eipId, "") if errRet != nil { return tccommon.RetryError(errRet) } @@ -183,7 +183,7 @@ func resourceTencentCloudEipAssociationCreate(d *schema.ResourceData, meta inter id := fmt.Sprintf("%v::%v::%v", eipId, networkId, privateIp) err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet = vpcService.DescribeEipById(ctx, eipId) + eip, errRet = vpcService.DescribeEipById(ctx, eipId, "") if errRet != nil { return tccommon.RetryError(errRet) } @@ -227,7 +227,7 @@ func resourceTencentCloudEipAssociationRead(d *schema.ResourceData, meta interfa } err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet := vpcService.DescribeEipById(ctx, association.EipId) + eip, errRet := vpcService.DescribeEipById(ctx, association.EipId, "") if errRet != nil { return tccommon.RetryError(errRet) } @@ -271,7 +271,7 @@ func resourceTencentCloudEipAssociationDelete(d *schema.ResourceData, meta inter } err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - e := vpcService.UnattachEip(ctx, association.EipId) + e := vpcService.UnattachEip(ctx, association.EipId, "") if e != nil { return tccommon.RetryError(e, "DesOperation.MutexTaskRunning") } diff --git a/tencentcloud/services/cvm/resource_tc_eip_association_test.go b/tencentcloud/services/cvm/resource_tc_eip_association_test.go index af86049fa7..7d0d96fc58 100644 --- a/tencentcloud/services/cvm/resource_tc_eip_association_test.go +++ b/tencentcloud/services/cvm/resource_tc_eip_association_test.go @@ -88,10 +88,10 @@ func testAccCheckEipAssociationDestroy(s *terraform.State) error { return err } - eip, err := vpcService.DescribeEipById(ctx, associationId.EipId) + eip, err := vpcService.DescribeEipById(ctx, associationId.EipId, "") if err != nil { err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, err = vpcService.DescribeEipById(ctx, associationId.EipId) + eip, err = vpcService.DescribeEipById(ctx, associationId.EipId, "") if err != nil { return tccommon.RetryError(err) } @@ -129,10 +129,10 @@ func testAccCheckEipAssociationExists(n string) resource.TestCheckFunc { if err != nil { return err } - eip, err := vpcService.DescribeEipById(ctx, associationId.EipId) + eip, err := vpcService.DescribeEipById(ctx, associationId.EipId, "") if err != nil { err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, err = vpcService.DescribeEipById(ctx, associationId.EipId) + eip, err = vpcService.DescribeEipById(ctx, associationId.EipId, "") if err != nil { return tccommon.RetryError(err) } diff --git a/tencentcloud/services/cvm/resource_tc_eip_test.go b/tencentcloud/services/cvm/resource_tc_eip_test.go index 6204b88f9a..b0ae316fb1 100644 --- a/tencentcloud/services/cvm/resource_tc_eip_test.go +++ b/tencentcloud/services/cvm/resource_tc_eip_test.go @@ -271,10 +271,10 @@ func testAccCheckEipExists(n string) resource.TestCheckFunc { } vpcService := svcvpc.NewVpcService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) - eip, err := vpcService.DescribeEipById(ctx, rs.Primary.ID) + eip, err := vpcService.DescribeEipById(ctx, rs.Primary.ID, "") if err != nil { err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, err = vpcService.DescribeEipById(ctx, rs.Primary.ID) + eip, err = vpcService.DescribeEipById(ctx, rs.Primary.ID, "") if err != nil { return tccommon.RetryError(err) } @@ -300,10 +300,10 @@ func testAccCheckEipDestroy(s *terraform.State) error { continue } - eip, err := vpcService.DescribeEipById(ctx, rs.Primary.ID) + eip, err := vpcService.DescribeEipById(ctx, rs.Primary.ID, "") if err != nil { err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, err = vpcService.DescribeEipById(ctx, rs.Primary.ID) + eip, err = vpcService.DescribeEipById(ctx, rs.Primary.ID, "") if err != nil { return tccommon.RetryError(err) } diff --git a/tencentcloud/services/vpc/service_tencentcloud_vpc.go b/tencentcloud/services/vpc/service_tencentcloud_vpc.go index 5edd5c0e69..f193e5a6e7 100644 --- a/tencentcloud/services/vpc/service_tencentcloud_vpc.go +++ b/tencentcloud/services/vpc/service_tencentcloud_vpc.go @@ -2363,10 +2363,17 @@ func parseRule(str string) (liteRule VpcSecurityGroupLiteRule, err error) { /* EIP */ -func (me *VpcService) DescribeEipById(ctx context.Context, eipId string) (eip *vpc.Address, errRet error) { +func (me *VpcService) DescribeEipById(ctx context.Context, eipId, cdcId string) (eip *vpc.Address, errRet error) { logId := tccommon.GetLogId(ctx) request := vpc.NewDescribeAddressesRequest() request.AddressIds = []*string{&eipId} + if cdcId != "" { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("dedicated-cluster-id"), + Values: []*string{&cdcId}, + }) + } + ratelimit.Check(request.GetAction()) var specArgs connectivity.IacExtInfo @@ -2696,12 +2703,12 @@ func (me *VpcService) DisassociateNatGatewayAddress(ctx context.Context, request return } -func (me *VpcService) UnattachEip(ctx context.Context, eipId string) error { +func (me *VpcService) UnattachEip(ctx context.Context, eipId, cdcId string) error { eipUnattachLocker.Lock() defer eipUnattachLocker.Unlock() logId := tccommon.GetLogId(ctx) - eip, err := me.DescribeEipById(ctx, eipId) + eip, err := me.DescribeEipById(ctx, eipId, cdcId) if err != nil { return err } @@ -2720,7 +2727,7 @@ func (me *VpcService) UnattachEip(ctx context.Context, eipId string) error { } outErr := resource.Retry(tccommon.ReadRetryTimeout*3, func() *resource.RetryError { - eip, err := me.DescribeEipById(ctx, eipId) + eip, err := me.DescribeEipById(ctx, eipId, cdcId) if err != nil { return tccommon.RetryError(err) } 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 e0e41703d0..4abdf2acc4 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.1010" + params["RequestClient"] = "SDK_GO_1.0.1011" 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 569a2d55f3..1d720fa450 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 @@ -531,6 +531,7 @@ func NewAllocateAddressesResponse() (response *AllocateAddressesResponse) { // UNSUPPORTEDOPERATION_ACCOUNTNOTSUPPORTED = "UnsupportedOperation.AccountNotSupported" // UNSUPPORTEDOPERATION_ACTIONNOTFOUND = "UnsupportedOperation.ActionNotFound" // UNSUPPORTEDOPERATION_BANDWIDTHPACKAGEIDNOTSUPPORTED = "UnsupportedOperation.BandwidthPackageIdNotSupported" +// UNSUPPORTEDOPERATION_DELIVERYFAILED = "UnsupportedOperation.DeliveryFailed" // UNSUPPORTEDOPERATION_INSTANCESTATENOTSUPPORTED = "UnsupportedOperation.InstanceStateNotSupported" // UNSUPPORTEDOPERATION_INVALIDACTION = "UnsupportedOperation.InvalidAction" // UNSUPPORTEDOPERATION_NOTSUPPORTEDPURCHASECENTEREGRESSRESOURCE = "UnsupportedOperation.NotSupportedPurchaseCenterEgressResource" @@ -583,6 +584,7 @@ func (c *Client) AllocateAddresses(request *AllocateAddressesRequest) (response // UNSUPPORTEDOPERATION_ACCOUNTNOTSUPPORTED = "UnsupportedOperation.AccountNotSupported" // UNSUPPORTEDOPERATION_ACTIONNOTFOUND = "UnsupportedOperation.ActionNotFound" // UNSUPPORTEDOPERATION_BANDWIDTHPACKAGEIDNOTSUPPORTED = "UnsupportedOperation.BandwidthPackageIdNotSupported" +// UNSUPPORTEDOPERATION_DELIVERYFAILED = "UnsupportedOperation.DeliveryFailed" // UNSUPPORTEDOPERATION_INSTANCESTATENOTSUPPORTED = "UnsupportedOperation.InstanceStateNotSupported" // UNSUPPORTEDOPERATION_INVALIDACTION = "UnsupportedOperation.InvalidAction" // UNSUPPORTEDOPERATION_NOTSUPPORTEDPURCHASECENTEREGRESSRESOURCE = "UnsupportedOperation.NotSupportedPurchaseCenterEgressResource" @@ -1049,11 +1051,11 @@ func NewAssociateAddressResponse() (response *AssociateAddressResponse) { // // * 将 EIP 绑定到实例(CVM)上,其本质是将 EIP 绑定到实例上主网卡的主内网 IP 上。 // -// * 将 EIP 绑定到主网卡的主内网IP上,绑定过程会把其上绑定的普通公网 IP 自动解绑并释放。 +// * 将 EIP 绑定到主网卡的主内网IP时,如主内网IP已绑定普通公网IP,必须先退还才能绑定EIP。 // // * 将 EIP 绑定到指定网卡的内网 IP上(非主网卡的主内网IP),则必须先解绑该 EIP,才能再绑定新的。 // -// * 将 EIP 绑定到内网型CLB实例的功能处于内测阶段,如需使用,请提交内测申请。 +// * 将 EIP 绑定到内网型CLB实例的功能处于内测阶段,如需使用,请提交[内测申请](https://cloud.tencent.com/apply/p/4kxj7picqci)。 // // * 将 EIP 绑定到NAT网关,请使用接口[AssociateNatGatewayAddress](https://cloud.tencent.com/document/product/215/36722) // @@ -1110,11 +1112,11 @@ func (c *Client) AssociateAddress(request *AssociateAddressRequest) (response *A // // * 将 EIP 绑定到实例(CVM)上,其本质是将 EIP 绑定到实例上主网卡的主内网 IP 上。 // -// * 将 EIP 绑定到主网卡的主内网IP上,绑定过程会把其上绑定的普通公网 IP 自动解绑并释放。 +// * 将 EIP 绑定到主网卡的主内网IP时,如主内网IP已绑定普通公网IP,必须先退还才能绑定EIP。 // // * 将 EIP 绑定到指定网卡的内网 IP上(非主网卡的主内网IP),则必须先解绑该 EIP,才能再绑定新的。 // -// * 将 EIP 绑定到内网型CLB实例的功能处于内测阶段,如需使用,请提交内测申请。 +// * 将 EIP 绑定到内网型CLB实例的功能处于内测阶段,如需使用,请提交[内测申请](https://cloud.tencent.com/apply/p/4kxj7picqci)。 // // * 将 EIP 绑定到NAT网关,请使用接口[AssociateNatGatewayAddress](https://cloud.tencent.com/document/product/215/36722) // 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 3b92a86f30..6c1cc48d38 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 @@ -812,6 +812,9 @@ const ( // VPN通道状态为更新中/销毁中/创建中,不支持此操作。 UNSUPPORTEDOPERATION_DELETEVPNCONNINVALIDSTATE = "UnsupportedOperation.DeleteVpnConnInvalidState" + // 发货失败。 + UNSUPPORTEDOPERATION_DELIVERYFAILED = "UnsupportedOperation.DeliveryFailed" + // 专线网关正在更新BGP Community属性。 UNSUPPORTEDOPERATION_DIRECTCONNECTGATEWAYISUPDATINGCOMMUNITY = "UnsupportedOperation.DirectConnectGatewayIsUpdatingCommunity" 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 95b748474e..ff97d21411 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 @@ -471,6 +471,14 @@ type Address struct { // 当前公网IP所关联的带宽包ID,如果该公网IP未使用带宽包计费,则返回为空 // 注意:此字段可能返回 null,表示取不到有效值。 BandwidthPackageId *string `json:"BandwidthPackageId,omitnil,omitempty" name:"BandwidthPackageId"` + + // 传统弹性公网IPv6所属vpc唯一ID + // 注意:此字段可能返回 null,表示取不到有效值。 + UnVpcId *string `json:"UnVpcId,omitnil,omitempty" name:"UnVpcId"` + + // CDC唯一ID + // 注意:此字段可能返回 null,表示取不到有效值。 + DedicatedClusterId *string `json:"DedicatedClusterId,omitnil,omitempty" name:"DedicatedClusterId"` } type AddressChargePrepaid struct { @@ -505,6 +513,10 @@ type AddressTemplate struct { // 带备注的IP地址信息。 AddressExtraSet []*AddressInfo `json:"AddressExtraSet,omitnil,omitempty" name:"AddressExtraSet"` + + // 标签键值对。 + // 注意:此字段可能返回 null,表示取不到有效值。 + TagSet []*Tag `json:"TagSet,omitnil,omitempty" name:"TagSet"` } type AddressTemplateGroup struct { @@ -522,6 +534,10 @@ type AddressTemplateGroup struct { // IP地址模板实例。 AddressTemplateSet []*AddressTemplateItem `json:"AddressTemplateSet,omitnil,omitempty" name:"AddressTemplateSet"` + + // 标签键值对。 + // 注意:此字段可能返回 null,表示取不到有效值。 + TagSet []*Tag `json:"TagSet,omitnil,omitempty" name:"TagSet"` } type AddressTemplateItem struct { @@ -673,6 +689,9 @@ type AllocateAddressesRequestParams struct { // EIP名称,用于申请EIP时用户自定义该EIP的个性化名称,默认值:未命名 AddressName *string `json:"AddressName,omitnil,omitempty" name:"AddressName"` + // CDC唯一ID + DedicatedClusterId *string `json:"DedicatedClusterId,omitnil,omitempty" name:"DedicatedClusterId"` + // 网络出口,当前仅支持精品BGP、静态单线,这2种IP 地址类型的指定出口传入,默认值:center_egress1,其它可选值:center_egress2、center_egress3 Egress *string `json:"Egress,omitnil,omitempty" name:"Egress"` @@ -739,6 +758,9 @@ type AllocateAddressesRequest struct { // EIP名称,用于申请EIP时用户自定义该EIP的个性化名称,默认值:未命名 AddressName *string `json:"AddressName,omitnil,omitempty" name:"AddressName"` + // CDC唯一ID + DedicatedClusterId *string `json:"DedicatedClusterId,omitnil,omitempty" name:"DedicatedClusterId"` + // 网络出口,当前仅支持精品BGP、静态单线,这2种IP 地址类型的指定出口传入,默认值:center_egress1,其它可选值:center_egress2、center_egress3 Egress *string `json:"Egress,omitnil,omitempty" name:"Egress"` @@ -772,6 +794,7 @@ func (r *AllocateAddressesRequest) FromJsonString(s string) error { delete(f, "Tags") delete(f, "BandwidthPackageId") delete(f, "AddressName") + delete(f, "DedicatedClusterId") delete(f, "Egress") delete(f, "AntiDDoSPackageId") delete(f, "ClientToken") @@ -1637,7 +1660,7 @@ func (r *AssociateNetworkAclSubnetsResponse) FromJsonString(s string) error { // Predefined struct for user type AssociateNetworkInterfaceSecurityGroupsRequestParams struct { - // 弹性网卡实例ID。形如:eni-pxir56ns。每次请求的实例的上限为100。 + // 弹性网卡实例ID。形如:eni-pxir56ns。每次请求的实例的上限为100。本接口不支持主网卡绑定安全组。 NetworkInterfaceIds []*string `json:"NetworkInterfaceIds,omitnil,omitempty" name:"NetworkInterfaceIds"` // 安全组实例ID,例如:sg-33ocnj9n,可通过DescribeSecurityGroups获取。每次请求的实例的上限为100。 @@ -1647,7 +1670,7 @@ type AssociateNetworkInterfaceSecurityGroupsRequestParams struct { type AssociateNetworkInterfaceSecurityGroupsRequest struct { *tchttp.BaseRequest - // 弹性网卡实例ID。形如:eni-pxir56ns。每次请求的实例的上限为100。 + // 弹性网卡实例ID。形如:eni-pxir56ns。每次请求的实例的上限为100。本接口不支持主网卡绑定安全组。 NetworkInterfaceIds []*string `json:"NetworkInterfaceIds,omitnil,omitempty" name:"NetworkInterfaceIds"` // 安全组实例ID,例如:sg-33ocnj9n,可通过DescribeSecurityGroups获取。每次请求的实例的上限为100。 @@ -2194,6 +2217,18 @@ type CCN struct { // 是否开启二层云联网通道。 // 注意:此字段可能返回 null,表示取不到有效值。 DirectConnectAccelerateChannelFlag *bool `json:"DirectConnectAccelerateChannelFlag,omitnil,omitempty" name:"DirectConnectAccelerateChannelFlag"` + + // 是否支持ipv6路由表 + // 注意:此字段可能返回 null,表示取不到有效值。 + Ipv6Flag *string `json:"Ipv6Flag,omitnil,omitempty" name:"Ipv6Flag"` + + // 是否支持路由表聚合策略 + // 注意:此字段可能返回 null,表示取不到有效值。 + MrtbAggregatePolicyFlag *bool `json:"MrtbAggregatePolicyFlag,omitnil,omitempty" name:"MrtbAggregatePolicyFlag"` + + // 是否支持策略值 + // 注意:此字段可能返回 null,表示取不到有效值。 + MrtbPolicyValueFlag *bool `json:"MrtbPolicyValueFlag,omitnil,omitempty" name:"MrtbPolicyValueFlag"` } type CcnAttachedInstance struct { @@ -2475,6 +2510,14 @@ type CcnRoute struct { // 下一跳扩展名称(关联实例的扩展名称) InstanceExtraName *string `json:"InstanceExtraName,omitnil,omitempty" name:"InstanceExtraName"` + + // 实例类型 + // 注意:此字段可能返回 null,表示取不到有效值。 + AliasType *string `json:"AliasType,omitnil,omitempty" name:"AliasType"` + + // 实例id + // 注意:此字段可能返回 null,表示取不到有效值。 + AliasInstanceId *string `json:"AliasInstanceId,omitnil,omitempty" name:"AliasInstanceId"` } type CcnRouteBroadcastPolicyRouteCondition struct { @@ -2520,6 +2563,22 @@ type CcnRouteTableBroadcastPolicy struct { // 策略描述 Description *string `json:"Description,omitnil,omitempty" name:"Description"` + + // as-path操作 + // 注意:此字段可能返回 null,表示取不到有效值。 + OperateAsPath *string `json:"OperateAsPath,omitnil,omitempty" name:"OperateAsPath"` + + // as-path操作模式 + // 注意:此字段可能返回 null,表示取不到有效值。 + AsPathOperateMode *string `json:"AsPathOperateMode,omitnil,omitempty" name:"AsPathOperateMode"` + + // community操作 + // 注意:此字段可能返回 null,表示取不到有效值。 + OperateCommunitySet []*string `json:"OperateCommunitySet,omitnil,omitempty" name:"OperateCommunitySet"` + + // community操作模式 + // 注意:此字段可能返回 null,表示取不到有效值。 + CommunityOperateMode *string `json:"CommunityOperateMode,omitnil,omitempty" name:"CommunityOperateMode"` } type CcnRouteTableBroadcastPolicys struct { @@ -2542,6 +2601,14 @@ type CcnRouteTableInputPolicy struct { // 策略描述。 Description *string `json:"Description,omitnil,omitempty" name:"Description"` + + // as-path操作 + // 注意:此字段可能返回 null,表示取不到有效值。 + OperateAsPath *string `json:"OperateAsPath,omitnil,omitempty" name:"OperateAsPath"` + + // as-path操作模式 + // 注意:此字段可能返回 null,表示取不到有效值。 + AsPathOperateMode *string `json:"AsPathOperateMode,omitnil,omitempty" name:"AsPathOperateMode"` } type CcnRouteTableInputPolicys struct { @@ -5769,6 +5836,9 @@ type CreateSecurityGroupWithPoliciesRequestParams struct { // 安全组规则集合。 SecurityGroupPolicySet *SecurityGroupPolicySet `json:"SecurityGroupPolicySet,omitnil,omitempty" name:"SecurityGroupPolicySet"` + + // 指定绑定的标签列表,例如:[{"Key": "city", "Value": "shanghai"}]。 + Tags []*Tag `json:"Tags,omitnil,omitempty" name:"Tags"` } type CreateSecurityGroupWithPoliciesRequest struct { @@ -5785,6 +5855,9 @@ type CreateSecurityGroupWithPoliciesRequest struct { // 安全组规则集合。 SecurityGroupPolicySet *SecurityGroupPolicySet `json:"SecurityGroupPolicySet,omitnil,omitempty" name:"SecurityGroupPolicySet"` + + // 指定绑定的标签列表,例如:[{"Key": "city", "Value": "shanghai"}]。 + Tags []*Tag `json:"Tags,omitnil,omitempty" name:"Tags"` } func (r *CreateSecurityGroupWithPoliciesRequest) ToJsonString() string { @@ -5803,6 +5876,7 @@ func (r *CreateSecurityGroupWithPoliciesRequest) FromJsonString(s string) error delete(f, "GroupDescription") delete(f, "ProjectId") delete(f, "SecurityGroupPolicySet") + delete(f, "Tags") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateSecurityGroupWithPoliciesRequest has unknown keys!", "") } @@ -6307,6 +6381,9 @@ type CreateVpcEndPointRequestParams struct { // 安全组ID。 SecurityGroupId *string `json:"SecurityGroupId,omitnil,omitempty" name:"SecurityGroupId"` + + // 指定绑定的标签列表,例如:[{"Key": "city", "Value": "shanghai"}]。 + Tags []*Tag `json:"Tags,omitnil,omitempty" name:"Tags"` } type CreateVpcEndPointRequest struct { @@ -6329,6 +6406,9 @@ type CreateVpcEndPointRequest struct { // 安全组ID。 SecurityGroupId *string `json:"SecurityGroupId,omitnil,omitempty" name:"SecurityGroupId"` + + // 指定绑定的标签列表,例如:[{"Key": "city", "Value": "shanghai"}]。 + Tags []*Tag `json:"Tags,omitnil,omitempty" name:"Tags"` } func (r *CreateVpcEndPointRequest) ToJsonString() string { @@ -6349,6 +6429,7 @@ func (r *CreateVpcEndPointRequest) FromJsonString(s string) error { delete(f, "EndPointServiceId") delete(f, "EndPointVip") delete(f, "SecurityGroupId") + delete(f, "Tags") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateVpcEndPointRequest has unknown keys!", "") } @@ -7140,6 +7221,9 @@ type CreateVpnGatewaySslClientRequestParams struct { // SSL-VPN-CLIENT实例Name数字。批量创建时使用。不可和SslVpnClientName同时使用。 SslVpnClientNames []*string `json:"SslVpnClientNames,omitnil,omitempty" name:"SslVpnClientNames"` + + // 指定绑定的标签列表 + Tags []*Tag `json:"Tags,omitnil,omitempty" name:"Tags"` } type CreateVpnGatewaySslClientRequest struct { @@ -7153,6 +7237,9 @@ type CreateVpnGatewaySslClientRequest struct { // SSL-VPN-CLIENT实例Name数字。批量创建时使用。不可和SslVpnClientName同时使用。 SslVpnClientNames []*string `json:"SslVpnClientNames,omitnil,omitempty" name:"SslVpnClientNames"` + + // 指定绑定的标签列表 + Tags []*Tag `json:"Tags,omitnil,omitempty" name:"Tags"` } func (r *CreateVpnGatewaySslClientRequest) ToJsonString() string { @@ -7170,6 +7257,7 @@ func (r *CreateVpnGatewaySslClientRequest) FromJsonString(s string) error { delete(f, "SslVpnServerId") delete(f, "SslVpnClientName") delete(f, "SslVpnClientNames") + delete(f, "Tags") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateVpnGatewaySslClientRequest has unknown keys!", "") } @@ -7241,6 +7329,9 @@ type CreateVpnGatewaySslServerRequestParams struct { // SAML-DATA,开启SSO时传。 SamlData *string `json:"SamlData,omitnil,omitempty" name:"SamlData"` + + // 指定绑定的标签列表 + Tags []*Tag `json:"Tags,omitnil,omitempty" name:"Tags"` } type CreateVpnGatewaySslServerRequest struct { @@ -7281,6 +7372,9 @@ type CreateVpnGatewaySslServerRequest struct { // SAML-DATA,开启SSO时传。 SamlData *string `json:"SamlData,omitnil,omitempty" name:"SamlData"` + + // 指定绑定的标签列表 + Tags []*Tag `json:"Tags,omitnil,omitempty" name:"Tags"` } func (r *CreateVpnGatewaySslServerRequest) ToJsonString() string { @@ -7307,6 +7401,7 @@ func (r *CreateVpnGatewaySslServerRequest) FromJsonString(s string) error { delete(f, "SsoEnabled") delete(f, "AccessPolicyEnabled") delete(f, "SamlData") + delete(f, "Tags") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateVpnGatewaySslServerRequest has unknown keys!", "") } @@ -19803,10 +19898,10 @@ type EnableRoutesRequestParams struct { // 路由表唯一ID。 RouteTableId *string `json:"RouteTableId,omitnil,omitempty" name:"RouteTableId"` - // 路由策略ID。不能和RouteItemIds同时使用,但至少输入一个。该参数取值可通过查询路由列表([DescribeRouteTables](https://cloud.tencent.com/document/product/215/15763))获取。 + // 路由策略ID。不能和RouteItemIds同时使用,但至少输入一个。单次处理上限100个。该参数取值可通过查询路由列表([DescribeRouteTables](https://cloud.tencent.com/document/product/215/15763))获取。 RouteIds []*uint64 `json:"RouteIds,omitnil,omitempty" name:"RouteIds"` - // 路由策略唯一ID。不能和RouteIds同时使用,但至少输入一个。该参数取值可通过查询路由列表([DescribeRouteTables](https://cloud.tencent.com/document/product/215/15763))获取。 + // 路由策略唯一ID。不能和RouteIds同时使用,但至少输入一个。单次处理上限100个。该参数取值可通过查询路由列表([DescribeRouteTables](https://cloud.tencent.com/document/product/215/15763))获取。 RouteItemIds []*string `json:"RouteItemIds,omitnil,omitempty" name:"RouteItemIds"` } @@ -19816,10 +19911,10 @@ type EnableRoutesRequest struct { // 路由表唯一ID。 RouteTableId *string `json:"RouteTableId,omitnil,omitempty" name:"RouteTableId"` - // 路由策略ID。不能和RouteItemIds同时使用,但至少输入一个。该参数取值可通过查询路由列表([DescribeRouteTables](https://cloud.tencent.com/document/product/215/15763))获取。 + // 路由策略ID。不能和RouteItemIds同时使用,但至少输入一个。单次处理上限100个。该参数取值可通过查询路由列表([DescribeRouteTables](https://cloud.tencent.com/document/product/215/15763))获取。 RouteIds []*uint64 `json:"RouteIds,omitnil,omitempty" name:"RouteIds"` - // 路由策略唯一ID。不能和RouteIds同时使用,但至少输入一个。该参数取值可通过查询路由列表([DescribeRouteTables](https://cloud.tencent.com/document/product/215/15763))获取。 + // 路由策略唯一ID。不能和RouteIds同时使用,但至少输入一个。单次处理上限100个。该参数取值可通过查询路由列表([DescribeRouteTables](https://cloud.tencent.com/document/product/215/15763))获取。 RouteItemIds []*string `json:"RouteItemIds,omitnil,omitempty" name:"RouteItemIds"` } @@ -20094,6 +20189,10 @@ type EndPoint struct { // 终端节点服务名称。 // 注意:此字段可能返回 null,表示取不到有效值。 ServiceName *string `json:"ServiceName,omitnil,omitempty" name:"ServiceName"` + + // 标签键值对。 + // 注意:此字段可能返回 null,表示取不到有效值。 + TagSet []*Tag `json:"TagSet,omitnil,omitempty" name:"TagSet"` } type EndPointService struct { @@ -20139,6 +20238,10 @@ type EndPointService struct { // 服务IP类型 // 注意:此字段可能返回 null,表示取不到有效值。 BusinessIpType *int64 `json:"BusinessIpType,omitnil,omitempty" name:"BusinessIpType"` + + // 标签键值对。 + // 注意:此字段可能返回 null,表示取不到有效值。 + TagSet []*Tag `json:"TagSet,omitnil,omitempty" name:"TagSet"` } type Filter struct { @@ -20461,6 +20564,10 @@ type HaVip struct { // HAVIP 刷新时间。该参数只作为出参数。以下场景会触发 FlushTime 被刷新:1)子机发出免费 ARP 触发 HAVIP 漂移;2)手动HAVIP解绑网卡; 没有更新时默认值:0000-00-00 00:00:00 // 注意:此字段可能返回 null,表示取不到有效值。 FlushedTime *string `json:"FlushedTime,omitnil,omitempty" name:"FlushedTime"` + + // 标签键值对。 + // 注意:此字段可能返回 null,表示取不到有效值。 + TagSet []*Tag `json:"TagSet,omitnil,omitempty" name:"TagSet"` } // Predefined struct for user @@ -21237,7 +21344,7 @@ type LocalGateway struct { // VPC实例ID VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"` - // 本地网关实例ID + // 本地网关实例ID(计划弃用) UniqLocalGwId *string `json:"UniqLocalGwId,omitnil,omitempty" name:"UniqLocalGwId"` // 本地网关名称 @@ -21248,6 +21355,13 @@ type LocalGateway struct { // 本地网关创建时间 CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"` + + // 标签键值对。 + // 注意:此字段可能返回 null,表示取不到有效值。 + TagSet []*Tag `json:"TagSet,omitnil,omitempty" name:"TagSet"` + + // 本地网关实例ID(计划起用) + LocalGatewayId *string `json:"LocalGatewayId,omitnil,omitempty" name:"LocalGatewayId"` } // Predefined struct for user @@ -25781,6 +25895,10 @@ type NetDetect struct { // 创建时间。 // 注意:此字段可能返回 null,表示取不到有效值。 CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"` + + // 标签键值对。 + // 注意:此字段可能返回 null,表示取不到有效值。 + TagSet []*Tag `json:"TagSet,omitnil,omitempty" name:"TagSet"` } type NetDetectIpState struct { @@ -26307,7 +26425,13 @@ type ProductQuota struct { } type Quota struct { - // 配额名称,取值范围:
  • `TOTAL_EIP_QUOTA`:用户当前地域下EIP的配额数;
  • `DAILY_EIP_APPLY`:用户当前地域下今日申购次数;
  • `DAILY_PUBLIC_IP_ASSIGN`:用户当前地域下,重新分配公网 IP次数。 + // 配额名称,取值范围: + // - `TOTAL_EIP_QUOTA`:用户当前地域下EIP的配额数; + // - `DAILY_EIP_APPLY`:用户当前地域下今日申购次数; + // - `DAILY_PUBLIC_IP_ASSIGN`:用户当前地域下,重新分配公网 IP次数; + // - `TOTAL_EIP6_QUOTA`:用户当前地域下,传统弹性公网IPv6的配额数; + // - `BGP_EIPv6_QUOTA`:用户当前地域下,可申请的 BGP 弹性公网IPv6 的配额数; + // - `SINGLEISP_EIPv6_QUOTA`:用户当前地域下,可申请的静态单线弹性公网IPv6 的配额数; QuotaId *string `json:"QuotaId,omitnil,omitempty" name:"QuotaId"` // 当前数量 @@ -26315,6 +26439,10 @@ type Quota struct { // 配额数量 QuotaLimit *int64 `json:"QuotaLimit,omitnil,omitempty" name:"QuotaLimit"` + + // 配额所属的网络组 + // 注意:此字段可能返回 null,表示取不到有效值。 + QuotaGroup *string `json:"QuotaGroup,omitnil,omitempty" name:"QuotaGroup"` } type ReferredSecurityGroup struct { @@ -27950,7 +28078,7 @@ func (r *ReturnNormalAddressesResponse) FromJsonString(s string) error { } type Route struct { - // 目的网段,取值不能在私有网络网段内,例如:112.20.51.0/24。 + // 创建IPv4目的网段,取值不能在私有网络网段内,例如:112.20.51.0/24。 DestinationCidrBlock *string `json:"DestinationCidrBlock,omitnil,omitempty" name:"DestinationCidrBlock"` // 下一跳类型,目前我们支持的类型有: @@ -27959,10 +28087,12 @@ type Route struct { // DIRECTCONNECT:专线网关; // PEERCONNECTION:对等连接; // HAVIP:高可用虚拟IP; - // NAT:NAT网关; + // NAT:公网NAT网关; // NORMAL_CVM:普通云服务器; // EIP:云服务器的公网IP; - // LOCAL_GATEWAY:本地网关。 + // LOCAL_GATEWAY:CDC本地网关; + // INTRANAT:私网NAT网关; + // USER_CCN;云联网(自定义路由)。 GatewayType *string `json:"GatewayType,omitnil,omitempty" name:"GatewayType"` // 下一跳地址,这里只需要指定不同下一跳类型的网关ID,系统会自动匹配到下一跳地址。 @@ -27991,14 +28121,14 @@ type Route struct { // 路由表实例ID,例如:rtb-azd4dt1c。 RouteTableId *string `json:"RouteTableId,omitnil,omitempty" name:"RouteTableId"` - // 目的IPv6网段,取值不能在私有网络网段内,例如:2402:4e00:1000:810b::/64。 + // 创建IPv6目的网段,取值不能在私有网络网段内,例如:2402:4e00:1000:810b::/64。 // 注意:此字段可能返回 null,表示取不到有效值。 DestinationIpv6CidrBlock *string `json:"DestinationIpv6CidrBlock,omitnil,omitempty" name:"DestinationIpv6CidrBlock"` // 路由唯一策略ID。 RouteItemId *string `json:"RouteItemId,omitnil,omitempty" name:"RouteItemId"` - // 路由策略是否发布到云联网。 + // 路由策略是否发布到云联网。该字段仅做出参使用,作为入参字段时此参数不生效。 // 注意:此字段可能返回 null,表示取不到有效值。 PublishedToVbc *bool `json:"PublishedToVbc,omitnil,omitempty" name:"PublishedToVbc"` @@ -28254,6 +28384,10 @@ type ServiceTemplate struct { // 带备注的协议端口信息。 ServiceExtraSet []*ServicesInfo `json:"ServiceExtraSet,omitnil,omitempty" name:"ServiceExtraSet"` + + // 标签键值对。 + // 注意:此字段可能返回 null,表示取不到有效值。 + TagSet []*Tag `json:"TagSet,omitnil,omitempty" name:"TagSet"` } type ServiceTemplateGroup struct { @@ -28271,6 +28405,10 @@ type ServiceTemplateGroup struct { // 协议端口模板实例信息。 ServiceTemplateSet []*ServiceTemplate `json:"ServiceTemplateSet,omitnil,omitempty" name:"ServiceTemplateSet"` + + // 标签键值对。 + // 注意:此字段可能返回 null,表示取不到有效值。 + TagSet []*Tag `json:"TagSet,omitnil,omitempty" name:"TagSet"` } type ServiceTemplateSpecification struct { @@ -28495,10 +28633,14 @@ type SnapshotPolicy struct { // 创建时间。 // 注意:此字段可能返回 null,表示取不到有效值。 CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"` + + // 标签键值对。 + // 注意:此字段可能返回 null,表示取不到有效值。 + TagSet []*Tag `json:"TagSet,omitnil,omitempty" name:"TagSet"` } type SourceIpTranslationNatRule struct { - // 资源ID,如果ResourceType为USERDEFINED,可以为空 + // 资源ID,如果ResourceType为USERDEFINED,可以为空字符串 ResourceId *string `json:"ResourceId,omitnil,omitempty" name:"ResourceId"` // 资源类型,目前包含SUBNET、NETWORKINTERFACE、USERDEFINED diff --git a/vendor/modules.txt b/vendor/modules.txt index d012c9c4c9..b223358506 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -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.1010 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1011 ## explicit; go 1.11 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors @@ -1337,7 +1337,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.978 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1011 ## 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/eip.html.markdown b/website/docs/r/eip.html.markdown index 22c8e78f2a..a6481fe6b9 100644 --- a/website/docs/r/eip.html.markdown +++ b/website/docs/r/eip.html.markdown @@ -62,6 +62,7 @@ The following arguments are supported: * `applicable_for_clb` - (Optional, Bool, **Deprecated**) It has been deprecated from version 1.27.0. Indicates whether the anycast eip can be associated to a CLB. * `auto_renew_flag` - (Optional, Int) Auto renew flag. 0 - default state (manual renew); 1 - automatic renew; 2 - explicit no automatic renew. NOTES: Only supported prepaid EIP. * `bandwidth_package_id` - (Optional, String) ID of bandwidth package, it will set when `internet_charge_type` is `BANDWIDTH_PACKAGE`. +* `cdc_id` - (Optional, String) CDC Unique ID. * `egress` - (Optional, String) Network egress. It defaults to `center_egress1`. If you want to try the egress feature, please [submit a ticket](https://console.cloud.tencent.com/workorder/category). * `internet_charge_type` - (Optional, String) The charge type of eip. Valid values: `BANDWIDTH_PACKAGE`, `BANDWIDTH_POSTPAID_BY_HOUR`, `BANDWIDTH_PREPAID_BY_MONTH` and `TRAFFIC_POSTPAID_BY_HOUR`. * `internet_max_bandwidth_out` - (Optional, Int) The bandwidth limit of EIP, unit is Mbps. From 5d7dd0bb565af6c3b671b24fe469323c848b4355 Mon Sep 17 00:00:00 2001 From: arunma Date: Thu, 26 Sep 2024 15:44:05 +0800 Subject: [PATCH 02/13] fix(eip): [119848960]support eip cdc --- tencentcloud/services/cvm/resource_tc_eip.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tencentcloud/services/cvm/resource_tc_eip.go b/tencentcloud/services/cvm/resource_tc_eip.go index 25badeabc4..ab497f899f 100644 --- a/tencentcloud/services/cvm/resource_tc_eip.go +++ b/tencentcloud/services/cvm/resource_tc_eip.go @@ -306,6 +306,10 @@ func resourceTencentCloudEipRead(d *schema.ResourceData, meta interface{}) error _ = d.Set("anti_ddos_package_id", eip.AntiDDoSPackageId) } + if eip.DedicatedClusterId != nil { + _ = d.Set("cdc_id", eip.DedicatedClusterId) + } + if bgp != nil { _ = d.Set("bandwidth_package_id", bgp.BandwidthPackageId) } From 12ed9223b779bdfee791fa12ccb17d73df3d7b25 Mon Sep 17 00:00:00 2001 From: arunma Date: Thu, 26 Sep 2024 16:17:21 +0800 Subject: [PATCH 03/13] fix: add eip task retry --- tencentcloud/services/cvm/resource_tc_eip.go | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tencentcloud/services/cvm/resource_tc_eip.go b/tencentcloud/services/cvm/resource_tc_eip.go index ab497f899f..fed4a50766 100644 --- a/tencentcloud/services/cvm/resource_tc_eip.go +++ b/tencentcloud/services/cvm/resource_tc_eip.go @@ -2,8 +2,10 @@ package cvm import ( "context" + "errors" "fmt" "log" + "strconv" tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" svctag "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tag" @@ -197,6 +199,7 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err } eipId := "" + taskId := "" err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := client.UseVpcClient().AllocateAddresses(request) @@ -212,6 +215,7 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err return resource.RetryableError(fmt.Errorf("eip id is nil")) } eipId = *response.Response.AddressSet[0] + taskId = *response.Response.TaskId return nil }) if err != nil { @@ -228,6 +232,27 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err } // wait for status + taskIdUint64, err := strconv.ParseUint(taskId, 10, 64) + if err != nil { + return err + } + taskRequest := vpc.NewDescribeTaskResultRequest() + taskRequest.TaskId = &taskIdUint64 + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(taskRequest.GetAction()) + taskResponse, err := client.UseVpcClient().DescribeTaskResult(taskRequest) + if err != nil { + return tccommon.RetryError(err) + } + if taskResponse.Response.Result != nil && *taskResponse.Response.Result == "RUNNING" { + return resource.RetryableError(errors.New("eip task is running")) + } + return nil + }) + if err != nil { + return err + } + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { eip, errRet := vpcService.DescribeEipById(ctx, eipId, cdcId) if errRet != nil { From e6f98a56e3d3ac794a099a92388e1e8c1adf705f Mon Sep 17 00:00:00 2001 From: arunma Date: Thu, 26 Sep 2024 16:27:00 +0800 Subject: [PATCH 04/13] fix: add eip task retry --- tencentcloud/services/cvm/resource_tc_eip.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tencentcloud/services/cvm/resource_tc_eip.go b/tencentcloud/services/cvm/resource_tc_eip.go index fed4a50766..5113a9e6dd 100644 --- a/tencentcloud/services/cvm/resource_tc_eip.go +++ b/tencentcloud/services/cvm/resource_tc_eip.go @@ -244,9 +244,12 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err if err != nil { return tccommon.RetryError(err) } - if taskResponse.Response.Result != nil && *taskResponse.Response.Result == "RUNNING" { + if taskResponse.Response.Result != nil && *taskResponse.Response.Result == svcvpc.VPN_TASK_STATUS_RUNNING { return resource.RetryableError(errors.New("eip task is running")) } + if taskResponse.Response.Result != nil && *taskResponse.Response.Result == svcvpc.VPN_TASK_STATUS_FAILED { + return resource.NonRetryableError(errors.New("eip task is failed")) + } return nil }) if err != nil { From a2c3bf582d78e56ae47b0d5344a0d139278bf9e7 Mon Sep 17 00:00:00 2001 From: arunma Date: Thu, 26 Sep 2024 16:45:38 +0800 Subject: [PATCH 05/13] fix: add eip task retry --- tencentcloud/services/cvm/resource_tc_eip.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tencentcloud/services/cvm/resource_tc_eip.go b/tencentcloud/services/cvm/resource_tc_eip.go index 5113a9e6dd..28edef303e 100644 --- a/tencentcloud/services/cvm/resource_tc_eip.go +++ b/tencentcloud/services/cvm/resource_tc_eip.go @@ -261,6 +261,9 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err if errRet != nil { return tccommon.RetryError(errRet) } + if eip == nil { + return resource.NonRetryableError(errors.New("eip is nil")) + } if eip != nil && *eip.AddressStatus == svcvpc.EIP_STATUS_CREATING { return resource.RetryableError(fmt.Errorf("eip is still creating")) } From 930693ede77bdce04acead8328e96208ce569597 Mon Sep 17 00:00:00 2001 From: arunma Date: Thu, 26 Sep 2024 17:34:46 +0800 Subject: [PATCH 06/13] fix: modify eip --- tencentcloud/services/vpc/service_tencentcloud_vpc.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tencentcloud/services/vpc/service_tencentcloud_vpc.go b/tencentcloud/services/vpc/service_tencentcloud_vpc.go index f193e5a6e7..2e09f8549a 100644 --- a/tencentcloud/services/vpc/service_tencentcloud_vpc.go +++ b/tencentcloud/services/vpc/service_tencentcloud_vpc.go @@ -2372,6 +2372,10 @@ func (me *VpcService) DescribeEipById(ctx context.Context, eipId, cdcId string) Name: helper.String("dedicated-cluster-id"), Values: []*string{&cdcId}, }) + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("business-type"), + Values: []*string{helper.String("CDC")}, + }) } ratelimit.Check(request.GetAction()) From 4e18f1fce79a668babe9d5be302cc50d5406a8fc Mon Sep 17 00:00:00 2001 From: arunma Date: Thu, 26 Sep 2024 17:58:55 +0800 Subject: [PATCH 07/13] fix: modify eip --- .../cvm/resource_tc_eip_association.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/tencentcloud/services/cvm/resource_tc_eip_association.go b/tencentcloud/services/cvm/resource_tc_eip_association.go index 0c1c3b6588..4506358400 100644 --- a/tencentcloud/services/cvm/resource_tc_eip_association.go +++ b/tencentcloud/services/cvm/resource_tc_eip_association.go @@ -66,6 +66,11 @@ func ResourceTencentCloudEipAssociation() *schema.Resource { }, Description: "Indicates an IP belongs to the `network_interface_id`. This field is conflict with `instance_id`.", }, + "cdc_id": { + Type: schema.TypeString, + Optional: true, + Description: "CDC Unique ID.", + }, }, } } @@ -82,8 +87,9 @@ func resourceTencentCloudEipAssociationCreate(d *schema.ResourceData, meta inter ) eipId := d.Get("eip_id").(string) + cdcId := d.Get("cdc_id").(string) err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet = vpcService.DescribeEipById(ctx, eipId, "") + eip, errRet = vpcService.DescribeEipById(ctx, eipId, cdcId) if errRet != nil { return tccommon.RetryError(errRet, tccommon.InternalError) } @@ -120,7 +126,7 @@ func resourceTencentCloudEipAssociationCreate(d *schema.ResourceData, meta inter associationId := fmt.Sprintf("%v::%v", eipId, instanceId) err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet = vpcService.DescribeEipById(ctx, eipId, "") + eip, errRet = vpcService.DescribeEipById(ctx, eipId, cdcId) if errRet != nil { return tccommon.RetryError(errRet) } @@ -183,7 +189,7 @@ func resourceTencentCloudEipAssociationCreate(d *schema.ResourceData, meta inter id := fmt.Sprintf("%v::%v::%v", eipId, networkId, privateIp) err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet = vpcService.DescribeEipById(ctx, eipId, "") + eip, errRet = vpcService.DescribeEipById(ctx, eipId, cdcId) if errRet != nil { return tccommon.RetryError(errRet) } @@ -226,8 +232,9 @@ func resourceTencentCloudEipAssociationRead(d *schema.ResourceData, meta interfa return err } + cdcId := d.Get("cdc_id").(string) err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet := vpcService.DescribeEipById(ctx, association.EipId, "") + eip, errRet := vpcService.DescribeEipById(ctx, association.EipId, cdcId) if errRet != nil { return tccommon.RetryError(errRet) } @@ -270,8 +277,9 @@ func resourceTencentCloudEipAssociationDelete(d *schema.ResourceData, meta inter return err } + cdcId := d.Get("cdc_id").(string) err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - e := vpcService.UnattachEip(ctx, association.EipId, "") + e := vpcService.UnattachEip(ctx, association.EipId, cdcId) if e != nil { return tccommon.RetryError(e, "DesOperation.MutexTaskRunning") } From b45a77807deb72fb9386fdbf304d0c08119ac11a Mon Sep 17 00:00:00 2001 From: arunma Date: Thu, 26 Sep 2024 18:01:27 +0800 Subject: [PATCH 08/13] fix: modify eip --- tencentcloud/services/cvm/resource_tc_eip_association.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tencentcloud/services/cvm/resource_tc_eip_association.go b/tencentcloud/services/cvm/resource_tc_eip_association.go index 4506358400..467e66c192 100644 --- a/tencentcloud/services/cvm/resource_tc_eip_association.go +++ b/tencentcloud/services/cvm/resource_tc_eip_association.go @@ -69,6 +69,7 @@ func ResourceTencentCloudEipAssociation() *schema.Resource { "cdc_id": { Type: schema.TypeString, Optional: true, + ForceNew: true, Description: "CDC Unique ID.", }, }, @@ -225,6 +226,7 @@ func resourceTencentCloudEipAssociationRead(d *schema.ResourceData, meta interfa ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) vpcService = svcvpc.NewVpcService(meta.(tccommon.ProviderMeta).GetAPIV3Conn()) id = d.Id() + eipAddress *vpc.Address ) association, err := ParseEipAssociationId(id) @@ -242,6 +244,7 @@ func resourceTencentCloudEipAssociationRead(d *schema.ResourceData, meta interfa if eip == nil { d.SetId("") } + eipAddress = eip return nil }) @@ -259,6 +262,9 @@ func resourceTencentCloudEipAssociationRead(d *schema.ResourceData, meta interfa _ = d.Set("network_interface_id", association.NetworkInterfaceId) _ = d.Set("private_ip", association.PrivateIp) + if eipAddress.DedicatedClusterId != nil { + _ = d.Set("cdc_ip", eipAddress.DedicatedClusterId) + } return nil } From 61f56a029794be3b42c0f8f5bd8fada0947db22c Mon Sep 17 00:00:00 2001 From: arunma Date: Thu, 26 Sep 2024 18:08:13 +0800 Subject: [PATCH 09/13] fix: modify eip --- tencentcloud/services/cvm/resource_tc_eip_association.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tencentcloud/services/cvm/resource_tc_eip_association.go b/tencentcloud/services/cvm/resource_tc_eip_association.go index 467e66c192..7521c043be 100644 --- a/tencentcloud/services/cvm/resource_tc_eip_association.go +++ b/tencentcloud/services/cvm/resource_tc_eip_association.go @@ -263,7 +263,7 @@ func resourceTencentCloudEipAssociationRead(d *schema.ResourceData, meta interfa _ = d.Set("network_interface_id", association.NetworkInterfaceId) _ = d.Set("private_ip", association.PrivateIp) if eipAddress.DedicatedClusterId != nil { - _ = d.Set("cdc_ip", eipAddress.DedicatedClusterId) + _ = d.Set("cdc_id", eipAddress.DedicatedClusterId) } return nil } From 82d60c96f2188153ed21f9d1ff19a10c8de8306a Mon Sep 17 00:00:00 2001 From: arunma Date: Thu, 26 Sep 2024 19:15:27 +0800 Subject: [PATCH 10/13] fix: modify eip --- tencentcloud/services/cvm/resource_tc_eip.go | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tencentcloud/services/cvm/resource_tc_eip.go b/tencentcloud/services/cvm/resource_tc_eip.go index 28edef303e..e9af722b7e 100644 --- a/tencentcloud/services/cvm/resource_tc_eip.go +++ b/tencentcloud/services/cvm/resource_tc_eip.go @@ -223,14 +223,6 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err } d.SetId(eipId) - if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - resourceName := tccommon.BuildTagResourceName(svcvpc.VPC_SERVICE_TYPE, svcvpc.EIP_RESOURCE_TYPE, region, eipId) - if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { - log.Printf("[CRITAL]%s set eip tags failed: %+v", logId, err) - return err - } - } - // wait for status taskIdUint64, err := strconv.ParseUint(taskId, 10, 64) if err != nil { From 788ae9d85fabf9be4b7cba17b6bbbf3df652e45c Mon Sep 17 00:00:00 2001 From: arunma Date: Thu, 26 Sep 2024 19:32:30 +0800 Subject: [PATCH 11/13] fix: modify eip --- tencentcloud/services/cvm/resource_tc_eip.go | 13 ++---- .../cvm/resource_tc_eip_association.go | 16 ++------ .../cvm/resource_tc_eip_association_test.go | 8 ++-- .../services/cvm/resource_tc_eip_test.go | 8 ++-- .../services/vpc/service_tencentcloud_vpc.go | 40 ++++++++++++++----- 5 files changed, 46 insertions(+), 39 deletions(-) diff --git a/tencentcloud/services/cvm/resource_tc_eip.go b/tencentcloud/services/cvm/resource_tc_eip.go index e9af722b7e..5969468890 100644 --- a/tencentcloud/services/cvm/resource_tc_eip.go +++ b/tencentcloud/services/cvm/resource_tc_eip.go @@ -139,11 +139,8 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() vpcService := svcvpc.NewVpcService(client) - tagService := svctag.NewTagService(client) - region := client.Region var internetChargeType string - var cdcId string request := vpc.NewAllocateAddressesRequest() if v, ok := d.GetOk("type"); ok { @@ -194,7 +191,6 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err request.AntiDDoSPackageId = helper.String(v.(string)) } if v, ok := d.GetOk("cdc_id"); ok { - cdcId = v.(string) request.DedicatedClusterId = helper.String(v.(string)) } @@ -249,7 +245,7 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err } err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet := vpcService.DescribeEipById(ctx, eipId, cdcId) + eip, errRet := vpcService.DescribeEipById(ctx, eipId) if errRet != nil { return tccommon.RetryError(errRet) } @@ -281,10 +277,9 @@ func resourceTencentCloudEipRead(d *schema.ResourceData, meta interface{}) error region := client.Region eipId := d.Id() - cdcId := d.Get("cdc_id").(string) var eip *vpc.Address err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - instance, errRet := vpcService.DescribeEipById(ctx, eipId, cdcId) + instance, errRet := vpcService.DescribeEipById(ctx, eipId) if errRet != nil { return tccommon.RetryError(errRet) } @@ -472,7 +467,7 @@ func resourceTencentCloudEipDelete(d *schema.ResourceData, meta interface{}) err if internetChargeType == "BANDWIDTH_PREPAID_BY_MONTH" { // isolated err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet := vpcService.DescribeEipById(ctx, eipId, cdcId) + eip, errRet := vpcService.DescribeEipById(ctx, eipId) if errRet != nil { return tccommon.RetryError(errRet) } @@ -499,7 +494,7 @@ func resourceTencentCloudEipDelete(d *schema.ResourceData, meta interface{}) err } err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet := vpcService.DescribeEipById(ctx, eipId, cdcId) + eip, errRet := vpcService.DescribeEipById(ctx, eipId) if errRet != nil { return tccommon.RetryError(errRet) } diff --git a/tencentcloud/services/cvm/resource_tc_eip_association.go b/tencentcloud/services/cvm/resource_tc_eip_association.go index 7521c043be..e88caea2cd 100644 --- a/tencentcloud/services/cvm/resource_tc_eip_association.go +++ b/tencentcloud/services/cvm/resource_tc_eip_association.go @@ -66,12 +66,6 @@ func ResourceTencentCloudEipAssociation() *schema.Resource { }, Description: "Indicates an IP belongs to the `network_interface_id`. This field is conflict with `instance_id`.", }, - "cdc_id": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - Description: "CDC Unique ID.", - }, }, } } @@ -88,9 +82,8 @@ func resourceTencentCloudEipAssociationCreate(d *schema.ResourceData, meta inter ) eipId := d.Get("eip_id").(string) - cdcId := d.Get("cdc_id").(string) err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet = vpcService.DescribeEipById(ctx, eipId, cdcId) + eip, errRet = vpcService.DescribeEipById(ctx, eipId) if errRet != nil { return tccommon.RetryError(errRet, tccommon.InternalError) } @@ -127,7 +120,7 @@ func resourceTencentCloudEipAssociationCreate(d *schema.ResourceData, meta inter associationId := fmt.Sprintf("%v::%v", eipId, instanceId) err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet = vpcService.DescribeEipById(ctx, eipId, cdcId) + eip, errRet = vpcService.DescribeEipById(ctx, eipId) if errRet != nil { return tccommon.RetryError(errRet) } @@ -190,7 +183,7 @@ func resourceTencentCloudEipAssociationCreate(d *schema.ResourceData, meta inter id := fmt.Sprintf("%v::%v::%v", eipId, networkId, privateIp) err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet = vpcService.DescribeEipById(ctx, eipId, cdcId) + eip, errRet = vpcService.DescribeEipById(ctx, eipId) if errRet != nil { return tccommon.RetryError(errRet) } @@ -234,9 +227,8 @@ func resourceTencentCloudEipAssociationRead(d *schema.ResourceData, meta interfa return err } - cdcId := d.Get("cdc_id").(string) err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, errRet := vpcService.DescribeEipById(ctx, association.EipId, cdcId) + eip, errRet := vpcService.DescribeEipById(ctx, association.EipId) if errRet != nil { return tccommon.RetryError(errRet) } diff --git a/tencentcloud/services/cvm/resource_tc_eip_association_test.go b/tencentcloud/services/cvm/resource_tc_eip_association_test.go index 7d0d96fc58..af86049fa7 100644 --- a/tencentcloud/services/cvm/resource_tc_eip_association_test.go +++ b/tencentcloud/services/cvm/resource_tc_eip_association_test.go @@ -88,10 +88,10 @@ func testAccCheckEipAssociationDestroy(s *terraform.State) error { return err } - eip, err := vpcService.DescribeEipById(ctx, associationId.EipId, "") + eip, err := vpcService.DescribeEipById(ctx, associationId.EipId) if err != nil { err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, err = vpcService.DescribeEipById(ctx, associationId.EipId, "") + eip, err = vpcService.DescribeEipById(ctx, associationId.EipId) if err != nil { return tccommon.RetryError(err) } @@ -129,10 +129,10 @@ func testAccCheckEipAssociationExists(n string) resource.TestCheckFunc { if err != nil { return err } - eip, err := vpcService.DescribeEipById(ctx, associationId.EipId, "") + eip, err := vpcService.DescribeEipById(ctx, associationId.EipId) if err != nil { err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, err = vpcService.DescribeEipById(ctx, associationId.EipId, "") + eip, err = vpcService.DescribeEipById(ctx, associationId.EipId) if err != nil { return tccommon.RetryError(err) } diff --git a/tencentcloud/services/cvm/resource_tc_eip_test.go b/tencentcloud/services/cvm/resource_tc_eip_test.go index b0ae316fb1..6204b88f9a 100644 --- a/tencentcloud/services/cvm/resource_tc_eip_test.go +++ b/tencentcloud/services/cvm/resource_tc_eip_test.go @@ -271,10 +271,10 @@ func testAccCheckEipExists(n string) resource.TestCheckFunc { } vpcService := svcvpc.NewVpcService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) - eip, err := vpcService.DescribeEipById(ctx, rs.Primary.ID, "") + eip, err := vpcService.DescribeEipById(ctx, rs.Primary.ID) if err != nil { err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, err = vpcService.DescribeEipById(ctx, rs.Primary.ID, "") + eip, err = vpcService.DescribeEipById(ctx, rs.Primary.ID) if err != nil { return tccommon.RetryError(err) } @@ -300,10 +300,10 @@ func testAccCheckEipDestroy(s *terraform.State) error { continue } - eip, err := vpcService.DescribeEipById(ctx, rs.Primary.ID, "") + eip, err := vpcService.DescribeEipById(ctx, rs.Primary.ID) if err != nil { err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - eip, err = vpcService.DescribeEipById(ctx, rs.Primary.ID, "") + eip, err = vpcService.DescribeEipById(ctx, rs.Primary.ID) if err != nil { return tccommon.RetryError(err) } diff --git a/tencentcloud/services/vpc/service_tencentcloud_vpc.go b/tencentcloud/services/vpc/service_tencentcloud_vpc.go index 2e09f8549a..c2ec73ce8d 100644 --- a/tencentcloud/services/vpc/service_tencentcloud_vpc.go +++ b/tencentcloud/services/vpc/service_tencentcloud_vpc.go @@ -2363,20 +2363,40 @@ func parseRule(str string) (liteRule VpcSecurityGroupLiteRule, err error) { /* EIP */ -func (me *VpcService) DescribeEipById(ctx context.Context, eipId, cdcId string) (eip *vpc.Address, errRet error) { +func (me *VpcService) DescribeEipById(ctx context.Context, eipId string) (eip *vpc.Address, errRet error) { logId := tccommon.GetLogId(ctx) request := vpc.NewDescribeAddressesRequest() request.AddressIds = []*string{&eipId} - if cdcId != "" { - request.Filters = append(request.Filters, &vpc.Filter{ - Name: helper.String("dedicated-cluster-id"), - Values: []*string{&cdcId}, - }) - request.Filters = append(request.Filters, &vpc.Filter{ - Name: helper.String("business-type"), - Values: []*string{helper.String("CDC")}, - }) + ratelimit.Check(request.GetAction()) + + var specArgs connectivity.IacExtInfo + specArgs.InstanceId = eipId + + response, err := me.client.UseVpcClient(specArgs).DescribeAddresses(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 len(response.Response.AddressSet) < 1 { + return me.DescribeEipByIdCdc(ctx, eipId) + } + eip = response.Response.AddressSet[0] + return +} + +func (me *VpcService) DescribeEipByIdCdc(ctx context.Context, eipId string) (eip *vpc.Address, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressesRequest() + request.AddressIds = []*string{&eipId} + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("business-type"), + Values: []*string{helper.String("CDC")}, + }) ratelimit.Check(request.GetAction()) From f734a6dae3b8c8aeef9a407570d7ac60d2b5314b Mon Sep 17 00:00:00 2001 From: arunma Date: Thu, 26 Sep 2024 19:33:33 +0800 Subject: [PATCH 12/13] fix: modify eip --- tencentcloud/services/cvm/resource_tc_eip.go | 3 +-- tencentcloud/services/cvm/resource_tc_eip_association.go | 3 +-- tencentcloud/services/vpc/service_tencentcloud_vpc.go | 6 +++--- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/tencentcloud/services/cvm/resource_tc_eip.go b/tencentcloud/services/cvm/resource_tc_eip.go index 5969468890..c274680abc 100644 --- a/tencentcloud/services/cvm/resource_tc_eip.go +++ b/tencentcloud/services/cvm/resource_tc_eip.go @@ -436,9 +436,8 @@ func resourceTencentCloudEipDelete(d *schema.ResourceData, meta interface{}) err ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) vpcService := svcvpc.NewVpcService(meta.(tccommon.ProviderMeta).GetAPIV3Conn()) eipId := d.Id() - cdcId := d.Get("cdc_id").(string) err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - errRet := vpcService.UnattachEip(ctx, eipId, cdcId) + errRet := vpcService.UnattachEip(ctx, eipId) if errRet != nil { return tccommon.RetryError(errRet, "DesOperation.MutexTaskRunning") } diff --git a/tencentcloud/services/cvm/resource_tc_eip_association.go b/tencentcloud/services/cvm/resource_tc_eip_association.go index e88caea2cd..0f981692ae 100644 --- a/tencentcloud/services/cvm/resource_tc_eip_association.go +++ b/tencentcloud/services/cvm/resource_tc_eip_association.go @@ -275,9 +275,8 @@ func resourceTencentCloudEipAssociationDelete(d *schema.ResourceData, meta inter return err } - cdcId := d.Get("cdc_id").(string) err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - e := vpcService.UnattachEip(ctx, association.EipId, cdcId) + e := vpcService.UnattachEip(ctx, association.EipId) if e != nil { return tccommon.RetryError(e, "DesOperation.MutexTaskRunning") } diff --git a/tencentcloud/services/vpc/service_tencentcloud_vpc.go b/tencentcloud/services/vpc/service_tencentcloud_vpc.go index c2ec73ce8d..84c7f5eccc 100644 --- a/tencentcloud/services/vpc/service_tencentcloud_vpc.go +++ b/tencentcloud/services/vpc/service_tencentcloud_vpc.go @@ -2727,12 +2727,12 @@ func (me *VpcService) DisassociateNatGatewayAddress(ctx context.Context, request return } -func (me *VpcService) UnattachEip(ctx context.Context, eipId, cdcId string) error { +func (me *VpcService) UnattachEip(ctx context.Context, eipId string) error { eipUnattachLocker.Lock() defer eipUnattachLocker.Unlock() logId := tccommon.GetLogId(ctx) - eip, err := me.DescribeEipById(ctx, eipId, cdcId) + eip, err := me.DescribeEipById(ctx, eipId) if err != nil { return err } @@ -2751,7 +2751,7 @@ func (me *VpcService) UnattachEip(ctx context.Context, eipId, cdcId string) erro } outErr := resource.Retry(tccommon.ReadRetryTimeout*3, func() *resource.RetryError { - eip, err := me.DescribeEipById(ctx, eipId, cdcId) + eip, err := me.DescribeEipById(ctx, eipId) if err != nil { return tccommon.RetryError(err) } From 0b79ef45a46c2c4bab631809798eca774d4bd33c Mon Sep 17 00:00:00 2001 From: arunma Date: Thu, 26 Sep 2024 20:00:05 +0800 Subject: [PATCH 13/13] fix: add changelog --- .changelog/2849.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/2849.txt diff --git a/.changelog/2849.txt b/.changelog/2849.txt new file mode 100644 index 0000000000..ffc3e8a766 --- /dev/null +++ b/.changelog/2849.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_eip: support `cdc_id` params +``` \ No newline at end of file