diff --git a/.changelog/2972.txt b/.changelog/2972.txt new file mode 100644 index 0000000000..36f1fcc63c --- /dev/null +++ b/.changelog/2972.txt @@ -0,0 +1,3 @@ +```release-note:new-resource +tencentcloud_reserve_ip_address +``` diff --git a/go.mod b/go.mod index b0a49929c0..feef7ad310 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( 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.1038 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1045 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 @@ -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.1018 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1045 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1037 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 cfad42a86e..6af65eee62 100644 --- a/go.sum +++ b/go.sum @@ -928,10 +928,12 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1034 h1:T7e github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1034/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1036 h1:B3GO+IBOrjrq8sN5bT9e8GMHWguHkyyGdNEos6cp5cE= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1036/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1038 h1:tB3DLzyQXavvGTI+JUvEcuYh0EtTn1rvh9W6xxFHL38= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1038/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1037 h1:cXerqxVAnEhEryXYgeBVFAJR8zjG2AsPWVnLtqJfkmY= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1037/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1038 h1:tB3DLzyQXavvGTI+JUvEcuYh0EtTn1rvh9W6xxFHL38= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1038/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1045 h1:3vvovAezER+/2FycWT4Wplkis3y3OHsRg2mDfcv08MI= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1045/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.1018 h1:+ATJA5XAYJVLRm0IjPhl6UlyXc2eh7FTJ+I42uSz0B4= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1018/go.mod h1:LmBUb+v6kdY+Jr+VRsU28SF8H5ga7Tqh+wpoVYmSofw= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1045 h1:7+rfyxftJ/C85yMQfs7ALj0RHkSlyboMj6gqCVKYa58= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1045/go.mod h1:yn4I7fSwpiM6ltjqksS1JtZZAHkZ35ywN+kLm6AJPzc= 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/waf v1.0.1037 h1:sgHOHqVFcO266dnoh0KJ0CoxrRglRZYKW78iBh41Giw= diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index 5562c4006f..18fa49d29d 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -2164,6 +2164,7 @@ func Provider() *schema.Provider { "tencentcloud_vpc_peer_connect_manager": vpc.ResourceTencentCloudVpcPeerConnectManager(), "tencentcloud_vpc_peer_connect_accept_operation": vpc.ResourceTencentCloudVpcPeerConnectAcceptOperation(), "tencentcloud_vpc_peer_connect_reject_operation": vpc.ResourceTencentCloudVpcPeerConnectRejectOperation(), + "tencentcloud_reserve_ip_address": vpc.ResourceTencentCloudReserveIpAddress(), "tencentcloud_csip_risk_center": csip.ResourceTencentCloudCsipRiskCenter(), "tencentcloud_organization_org_share_unit_member": tco.ResourceTencentCloudOrganizationOrgShareUnitMember(), "tencentcloud_organization_org_share_unit": tco.ResourceTencentCloudOrganizationOrgShareUnit(), diff --git a/tencentcloud/services/vpc/resource_tc_reserve_ip_address.go b/tencentcloud/services/vpc/resource_tc_reserve_ip_address.go new file mode 100644 index 0000000000..7252bc7401 --- /dev/null +++ b/tencentcloud/services/vpc/resource_tc_reserve_ip_address.go @@ -0,0 +1,335 @@ +package vpc + +import ( + "context" + "fmt" + "log" + "strings" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + svctag "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tag" +) + +func ResourceTencentCloudReserveIpAddress() *schema.Resource { + return &schema.Resource{ + Create: resourceTencentCloudReserveIpAddressCreate, + Read: resourceTencentCloudReserveIpAddressRead, + Update: resourceTencentCloudReserveIpAddressUpdate, + Delete: resourceTencentCloudReserveIpAddressDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "vpc_id": { + Type: schema.TypeString, + Required: true, + Description: "VPC unique ID.", + }, + + "ip_address": { + Type: schema.TypeString, + Optional: true, + Computed: true, + Description: "Specify the reserved IP address of the intranet for which the IP application is requested.", + }, + + "subnet_id": { + Type: schema.TypeString, + Optional: true, + Description: "Subnet ID.", + }, + + "name": { + Type: schema.TypeString, + Optional: true, + Description: "The IP name is reserved for the intranet.", + }, + + "description": { + Type: schema.TypeString, + Optional: true, + Description: "The IP description is retained on the intranet.", + }, + + "tags": { + Type: schema.TypeMap, + Optional: true, + Description: "Tags.", + }, + "reserve_ip_id": { + Type: schema.TypeString, + Computed: true, + Description: "Reserve ip ID.", + }, + "resource_id": { + Type: schema.TypeString, + Computed: true, + Description: "The intranet retains the resource instance ID bound to the IPs.", + }, + "ip_type": { + Type: schema.TypeInt, + Computed: true, + Description: "Ip type for product application.", + }, + "state": { + Type: schema.TypeString, + Computed: true, + Description: "Binding status.", + }, + "created_time": { + Type: schema.TypeString, + Computed: true, + Description: "Created time.", + }, + }, + } +} + +func resourceTencentCloudReserveIpAddressCreate(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_reserve_ip_address.create")() + defer tccommon.InconsistentCheck(d, meta)() + + logId := tccommon.GetLogId(tccommon.ContextNil) + + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + + var ( + vpcId string + reserveIpId string + ) + var ( + request = vpc.NewCreateReserveIpAddressesRequest() + response = vpc.NewCreateReserveIpAddressesResponse() + ) + + if v, ok := d.GetOk("vpc_id"); ok { + vpcId = v.(string) + request.VpcId = helper.String(vpcId) + } + + if v, ok := d.GetOk("ip_address"); ok { + ipAddress := v.(string) + request.IpAddresses = append(request.IpAddresses, helper.String(ipAddress)) + } else { + request.IpAddressCount = helper.IntUint64(1) + } + + if v, ok := d.GetOk("subnet_id"); ok { + request.SubnetId = helper.String(v.(string)) + } + + if v, ok := d.GetOk("name"); ok { + request.Name = helper.String(v.(string)) + } + + if v, ok := d.GetOk("description"); ok { + request.Description = helper.String(v.(string)) + } + + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().CreateReserveIpAddressesWithContext(ctx, request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + if len(result.Response.ReserveIpAddressSet) > 0 { + reserveIpId = *result.Response.ReserveIpAddressSet[0].ReserveIpId + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s create reserve ip addresses failed, reason:%+v", logId, err) + return err + } + + _ = response + + if tags := helper.GetTags(d, "tags"); len(tags) > 0 { + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() + tagService := svctag.NewTagService(tcClient) + resourceName := tccommon.BuildTagResourceName("vpc", "rsvip", tcClient.Region, reserveIpId) + if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { + return err + } + } + + d.SetId(strings.Join([]string{vpcId, reserveIpId}, tccommon.FILED_SP)) + + return resourceTencentCloudReserveIpAddressRead(d, meta) +} + +func resourceTencentCloudReserveIpAddressRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_reserve_ip_address.read")() + defer tccommon.InconsistentCheck(d, meta)() + + logId := tccommon.GetLogId(tccommon.ContextNil) + + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) + if len(idSplit) != 2 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + reserveIpId := idSplit[1] + + respData, err := service.DescribeReserveIpAddressesById(ctx, reserveIpId) + if err != nil { + return err + } + + if respData == nil { + d.SetId("") + log.Printf("[WARN]%s resource `reserve_ip_addresses` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) + return nil + } + if len(respData.ReserveIpAddressSet) < 1 { + d.SetId("") + log.Printf("[WARN]%s resource `reserve_ip_addresses` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) + return nil + } + reserveIpAddress := respData.ReserveIpAddressSet[0] + + _ = d.Set("vpc_id", reserveIpAddress.VpcId) + _ = d.Set("ip_address", reserveIpAddress.ReserveIpAddress) + _ = d.Set("name", reserveIpAddress.Name) + _ = d.Set("description", reserveIpAddress.Description) + _ = d.Set("reserve_ip_id", reserveIpAddress.ReserveIpId) + _ = d.Set("resource_id", reserveIpAddress.ResourceId) + _ = d.Set("ip_type", reserveIpAddress.IpType) + _ = d.Set("state", reserveIpAddress.State) + _ = d.Set("created_time", reserveIpAddress.CreatedTime) + + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() + tagService := svctag.NewTagService(meta.(tccommon.ProviderMeta).GetAPIV3Conn()) + tags, err := tagService.DescribeResourceTags(ctx, "vpc", "rsvip", tcClient.Region, reserveIpId) + if err != nil { + return err + } + _ = d.Set("tags", tags) + _ = reserveIpId + return nil +} + +func resourceTencentCloudReserveIpAddressUpdate(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_reserve_ip_address.update")() + defer tccommon.InconsistentCheck(d, meta)() + + logId := tccommon.GetLogId(tccommon.ContextNil) + + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + + immutableArgs := []string{"vpc_id", "ip_addresses", "subnet_id"} + for _, v := range immutableArgs { + if d.HasChange(v) { + return fmt.Errorf("argument `%s` cannot be changed", v) + } + } + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) + if len(idSplit) != 2 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + vpcId := idSplit[0] + reserveIpId := idSplit[1] + + needChange := false + mutableArgs := []string{"name", "description"} + for _, v := range mutableArgs { + if d.HasChange(v) { + needChange = true + break + } + } + + if needChange { + request := vpc.NewModifyReserveIpAddressRequest() + + request.VpcId = helper.String(vpcId) + + request.ReserveIpId = helper.String(reserveIpId) + + if v, ok := d.GetOk("name"); ok { + request.Name = helper.String(v.(string)) + } + + if v, ok := d.GetOk("description"); ok { + request.Description = helper.String(v.(string)) + } + + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().ModifyReserveIpAddressWithContext(ctx, request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s update reserve ip addresses failed, reason:%+v", logId, err) + return err + } + } + + if d.HasChange("tags") { + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() + tagService := svctag.NewTagService(tcClient) + oldTags, newTags := d.GetChange("tags") + replaceTags, deleteTags := svctag.DiffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) + resourceName := tccommon.BuildTagResourceName("vpc", "rsvip", tcClient.Region, reserveIpId) + if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { + return err + } + } + + return resourceTencentCloudReserveIpAddressRead(d, meta) +} + +func resourceTencentCloudReserveIpAddressDelete(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_reserve_ip_address.delete")() + defer tccommon.InconsistentCheck(d, meta)() + + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) + if len(idSplit) != 2 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + vpcId := idSplit[0] + reserveIpId := idSplit[1] + + var ( + request = vpc.NewDeleteReserveIpAddressesRequest() + response = vpc.NewDeleteReserveIpAddressesResponse() + ) + + request.VpcId = helper.String(vpcId) + request.ReserveIpIds = []*string{&reserveIpId} + + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().DeleteReserveIpAddressesWithContext(ctx, request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + response = result + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s delete reserve ip addresses failed, reason:%+v", logId, err) + return err + } + + _ = response + _ = reserveIpId + return nil +} diff --git a/tencentcloud/services/vpc/resource_tc_reserve_ip_address.md b/tencentcloud/services/vpc/resource_tc_reserve_ip_address.md new file mode 100644 index 0000000000..94758a856c --- /dev/null +++ b/tencentcloud/services/vpc/resource_tc_reserve_ip_address.md @@ -0,0 +1,24 @@ +Provides a resource to create a vpc reserve ip addresses + +Example Usage + +```hcl +resource "tencentcloud_reserve_ip_address" "reserve_ip" { + vpc_id = "xxxxxx" + subnet_id = "xxxxxx" + ip_address = "10.0.0.13" + name = "reserve-ip-tf" + description = "description" + tags ={ + "test1" = "test1" + } +} +``` + +Import + +vpc reserve_ip_addresses can be imported using the id, e.g. + +``` +terraform import tencentcloud_reserve_ip_addresses.reserve_ip_addresses ${vpcId}#${reserveIpId} +``` diff --git a/tencentcloud/services/vpc/resource_tc_reserve_ip_address_test.go b/tencentcloud/services/vpc/resource_tc_reserve_ip_address_test.go new file mode 100644 index 0000000000..1e60fa244f --- /dev/null +++ b/tencentcloud/services/vpc/resource_tc_reserve_ip_address_test.go @@ -0,0 +1,155 @@ +package vpc_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" +) + +func TestAccTencentCloudReserveIpAddressesResource_SetIpAddress(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { + tcacctest.AccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-qingyuan") + }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccReserveIpAddress, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_reserve_ip_address.reserve_ip", "id"), + resource.TestCheckResourceAttrSet("tencentcloud_reserve_ip_address.reserve_ip", "vpc_id"), + resource.TestCheckResourceAttrSet("tencentcloud_reserve_ip_address.reserve_ip", "subnet_id"), + resource.TestCheckResourceAttr("tencentcloud_reserve_ip_address.reserve_ip", "ip_address", "10.0.0.13"), + resource.TestCheckResourceAttr("tencentcloud_reserve_ip_address.reserve_ip", "name", "reserve-ip-tf"), + resource.TestCheckResourceAttr("tencentcloud_reserve_ip_address.reserve_ip", "description", "description"), + resource.TestCheckResourceAttr("tencentcloud_reserve_ip_address.reserve_ip", "tags.test1", "test1"), + ), + }, + { + Config: testAccReserveIpAddressUpdate, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_reserve_ip_address.reserve_ip", "id"), + resource.TestCheckResourceAttr("tencentcloud_reserve_ip_address.reserve_ip", "name", "reserve-ip-tf-update"), + resource.TestCheckResourceAttr("tencentcloud_reserve_ip_address.reserve_ip", "description", "description-update"), + resource.TestCheckResourceAttr("tencentcloud_reserve_ip_address.reserve_ip", "tags.test1", "test1"), + resource.TestCheckResourceAttr("tencentcloud_reserve_ip_address.reserve_ip", "tags.test2", "test2"), + ), + }, + { + ResourceName: "tencentcloud_reserve_ip_address.reserve_ip", + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"subnet_id"}, + }}, + }) +} + +func TestAccTencentCloudReserveIpAddressesResource_NotSetIpAddress(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { + tcacctest.AccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-qingyuan") + }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccReserveIpAddressNotSetIpAddress, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_reserve_ip_address.reserve_ip", "id"), + resource.TestCheckResourceAttrSet("tencentcloud_reserve_ip_address.reserve_ip", "vpc_id"), + resource.TestCheckResourceAttrSet("tencentcloud_reserve_ip_address.reserve_ip", "subnet_id"), + resource.TestCheckResourceAttrSet("tencentcloud_reserve_ip_address.reserve_ip", "ip_address"), + resource.TestCheckResourceAttr("tencentcloud_reserve_ip_address.reserve_ip", "name", "reserve-ip-tf"), + resource.TestCheckResourceAttr("tencentcloud_reserve_ip_address.reserve_ip", "description", "description"), + resource.TestCheckResourceAttr("tencentcloud_reserve_ip_address.reserve_ip", "tags.test1", "test1"), + ), + }, + { + ResourceName: "tencentcloud_reserve_ip_address.reserve_ip", + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"subnet_id"}, + }}, + }) +} + +const testAccReserveIpAddress = ` +resource "tencentcloud_vpc" "vpc" { + name = "vpc-reserve-ip" + cidr_block = "10.0.0.0/16" +} + +resource "tencentcloud_subnet" "subnet" { + vpc_id = tencentcloud_vpc.vpc.id + name = "subnet-reserve-ip" + cidr_block = "10.0.0.0/16" + availability_zone = "ap-qingyuan-1" + is_multicast = false +} + +resource "tencentcloud_reserve_ip_address" "reserve_ip" { + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + ip_address = "10.0.0.13" + name = "reserve-ip-tf" + description = "description" + tags ={ + "test1" = "test1" + } +} +` + +const testAccReserveIpAddressUpdate = ` +resource "tencentcloud_vpc" "vpc" { + name = "vpc-reserve-ip" + cidr_block = "10.0.0.0/16" +} + +resource "tencentcloud_subnet" "subnet" { + vpc_id = tencentcloud_vpc.vpc.id + name = "subnet-reserve-ip" + cidr_block = "10.0.0.0/16" + availability_zone = "ap-qingyuan-1" + is_multicast = false +} + +resource "tencentcloud_reserve_ip_address" "reserve_ip" { + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + ip_address = "10.0.0.13" + name = "reserve-ip-tf-update" + description = "description-update" + tags ={ + "test1" = "test1" + "test2" = "test2" + } +} +` + +const testAccReserveIpAddressNotSetIpAddress = ` +resource "tencentcloud_vpc" "vpc" { + name = "vpc-reserve-ip" + cidr_block = "10.0.0.0/16" +} + +resource "tencentcloud_subnet" "subnet" { + vpc_id = tencentcloud_vpc.vpc.id + name = "subnet-reserve-ip" + cidr_block = "10.0.0.0/16" + availability_zone = "ap-qingyuan-1" + is_multicast = false +} + +resource "tencentcloud_reserve_ip_address" "reserve_ip" { + vpc_id = tencentcloud_vpc.vpc.id + subnet_id = tencentcloud_subnet.subnet.id + name = "reserve-ip-tf" + description = "description" + tags ={ + "test1" = "test1" + } +} +` diff --git a/tencentcloud/services/vpc/service_tencentcloud_vpc.go b/tencentcloud/services/vpc/service_tencentcloud_vpc.go index 84c7f5eccc..cfc1045ae7 100644 --- a/tencentcloud/services/vpc/service_tencentcloud_vpc.go +++ b/tencentcloud/services/vpc/service_tencentcloud_vpc.go @@ -8123,3 +8123,27 @@ func (me *VpcService) DeleteVpcPrivateNatGatewayById(ctx context.Context, instan return } + +func (me *VpcService) DescribeReserveIpAddressesById(ctx context.Context, reserveIpId string) (ret *vpc.DescribeReserveIpAddressesResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeReserveIpAddressesRequest() + request.ReserveIpIds = []*string{&reserveIpId} + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeReserveIpAddresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + ret = response.Response + return +} 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 cddb6f6af5..d6f1f8f833 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.1038" + params["RequestClient"] = "SDK_GO_1.0.1045" 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 b34573eb2f..c1253b4c4c 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 @@ -946,7 +946,7 @@ func NewAssignPrivateIpAddressesResponse() (response *AssignPrivateIpAddressesRe // // * 一个弹性网卡支持绑定的IP地址是有限制的,更多资源限制信息详见弹性网卡使用限制。 // -// * 可以指定内网IP地址申请,内网IP地址类型不能为主IP,主IP已存在,不能修改,内网IP必须要弹性网卡所在子网内,而且不能被占用。 +// * 可以指定内网IP地址申请,内网IP地址类型不能为主IP,主IP已存在,不能修改,内网IP必须要在弹性网卡所在子网内,而且不能被占用。 // // * 在弹性网卡上申请一个到多个辅助内网IP,接口会在弹性网卡所在子网网段内返回指定数量的辅助内网IP。 // @@ -983,7 +983,7 @@ func (c *Client) AssignPrivateIpAddresses(request *AssignPrivateIpAddressesReque // // * 一个弹性网卡支持绑定的IP地址是有限制的,更多资源限制信息详见弹性网卡使用限制。 // -// * 可以指定内网IP地址申请,内网IP地址类型不能为主IP,主IP已存在,不能修改,内网IP必须要弹性网卡所在子网内,而且不能被占用。 +// * 可以指定内网IP地址申请,内网IP地址类型不能为主IP,主IP已存在,不能修改,内网IP必须要在弹性网卡所在子网内,而且不能被占用。 // // * 在弹性网卡上申请一个到多个辅助内网IP,接口会在弹性网卡所在子网网段内返回指定数量的辅助内网IP。 // @@ -2259,7 +2259,7 @@ func NewCloneSecurityGroupResponse() (response *CloneSecurityGroupResponse) { } // CloneSecurityGroup -// 本接口(CloneSecurityGroup)用于根据存量的安全组,克隆创建出同样规则配置的安全组。仅克隆安全组及其规则信息,不会克隆安全组标签信息。 +// 本接口(CloneSecurityGroup)用于根据存量的安全组,克隆创建出同样规则配置的安全组。默认仅克隆安全组及其规则信息,可通过入参开启克隆安全组标签信息。 // // 可能返回的错误码: // INVALIDPARAMETERVALUE = "InvalidParameterValue" @@ -2267,12 +2267,13 @@ func NewCloneSecurityGroupResponse() (response *CloneSecurityGroupResponse) { // INVALIDPARAMETERVALUE_TOOLONG = "InvalidParameterValue.TooLong" // LIMITEXCEEDED = "LimitExceeded" // RESOURCENOTFOUND = "ResourceNotFound" +// UNSUPPORTEDOPERATION_REMOTEREGIONSGHASREFERENCEDSG = "UnsupportedOperation.RemoteRegionSgHasReferencedSg" func (c *Client) CloneSecurityGroup(request *CloneSecurityGroupRequest) (response *CloneSecurityGroupResponse, err error) { return c.CloneSecurityGroupWithContext(context.Background(), request) } // CloneSecurityGroup -// 本接口(CloneSecurityGroup)用于根据存量的安全组,克隆创建出同样规则配置的安全组。仅克隆安全组及其规则信息,不会克隆安全组标签信息。 +// 本接口(CloneSecurityGroup)用于根据存量的安全组,克隆创建出同样规则配置的安全组。默认仅克隆安全组及其规则信息,可通过入参开启克隆安全组标签信息。 // // 可能返回的错误码: // INVALIDPARAMETERVALUE = "InvalidParameterValue" @@ -2280,6 +2281,7 @@ func (c *Client) CloneSecurityGroup(request *CloneSecurityGroupRequest) (respons // INVALIDPARAMETERVALUE_TOOLONG = "InvalidParameterValue.TooLong" // LIMITEXCEEDED = "LimitExceeded" // RESOURCENOTFOUND = "ResourceNotFound" +// UNSUPPORTEDOPERATION_REMOTEREGIONSGHASREFERENCEDSG = "UnsupportedOperation.RemoteRegionSgHasReferencedSg" func (c *Client) CloneSecurityGroupWithContext(ctx context.Context, request *CloneSecurityGroupRequest) (response *CloneSecurityGroupResponse, err error) { if request == nil { request = NewCloneSecurityGroupRequest() @@ -2869,6 +2871,7 @@ func NewCreateCcnRouteTablesResponse() (response *CreateCcnRouteTablesResponse) // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // INVALIDPARAMETERVALUE_TOOLONG = "InvalidParameterValue.TooLong" // RESOURCENOTFOUND = "ResourceNotFound" +// UNSUPPORTEDOPERATION_CCNIPV6NOTSUPPORTMULTIPLEROUTETABLE = "UnsupportedOperation.CcnIpv6NotSupportMultipleRouteTable" // UNSUPPORTEDOPERATION_NOTSUPPORTCREATECCNROUTETABLE = "UnsupportedOperation.NotSupportCreateCcnRouteTable" // UNSUPPORTEDOPERATION_ROUTETABLEEXCEEDPERVBCLIMIT = "UnsupportedOperation.RouteTableExceedPerVbcLimit" func (c *Client) CreateCcnRouteTables(request *CreateCcnRouteTablesRequest) (response *CreateCcnRouteTablesResponse, err error) { @@ -2885,6 +2888,7 @@ func (c *Client) CreateCcnRouteTables(request *CreateCcnRouteTablesRequest) (res // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // INVALIDPARAMETERVALUE_TOOLONG = "InvalidParameterValue.TooLong" // RESOURCENOTFOUND = "ResourceNotFound" +// UNSUPPORTEDOPERATION_CCNIPV6NOTSUPPORTMULTIPLEROUTETABLE = "UnsupportedOperation.CcnIpv6NotSupportMultipleRouteTable" // UNSUPPORTEDOPERATION_NOTSUPPORTCREATECCNROUTETABLE = "UnsupportedOperation.NotSupportCreateCcnRouteTable" // UNSUPPORTEDOPERATION_ROUTETABLEEXCEEDPERVBCLIMIT = "UnsupportedOperation.RouteTableExceedPerVbcLimit" func (c *Client) CreateCcnRouteTablesWithContext(ctx context.Context, request *CreateCcnRouteTablesRequest) (response *CreateCcnRouteTablesResponse, err error) { @@ -4572,7 +4576,7 @@ func NewCreateNetworkInterfaceResponse() (response *CreateNetworkInterfaceRespon // // * 创建弹性网卡同时可以绑定已有安全组。 // -// * 创建弹性网卡同时可以绑定标签, 应答里的标签列表代表添加成功的标签。 +// * 创建弹性网卡同时可以绑定标签, 响应里的标签列表代表添加成功的标签。 // // >?本接口为异步接口,可调用 [DescribeVpcTaskResult](https://cloud.tencent.com/document/api/215/59037) 接口查询任务执行结果,待任务执行成功后再进行其他操作。 // @@ -4637,7 +4641,7 @@ func (c *Client) CreateNetworkInterface(request *CreateNetworkInterfaceRequest) // // * 创建弹性网卡同时可以绑定已有安全组。 // -// * 创建弹性网卡同时可以绑定标签, 应答里的标签列表代表添加成功的标签。 +// * 创建弹性网卡同时可以绑定标签, 响应里的标签列表代表添加成功的标签。 // // >?本接口为异步接口,可调用 [DescribeVpcTaskResult](https://cloud.tencent.com/document/api/215/59037) 接口查询任务执行结果,待任务执行成功后再进行其他操作。 // @@ -4999,6 +5003,61 @@ func (c *Client) CreatePrivateNatGatewayTranslationNatRuleWithContext(ctx contex return } +func NewCreateReserveIpAddressesRequest() (request *CreateReserveIpAddressesRequest) { + request = &CreateReserveIpAddressesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("vpc", APIVersion, "CreateReserveIpAddresses") + + + return +} + +func NewCreateReserveIpAddressesResponse() (response *CreateReserveIpAddressesResponse) { + response = &CreateReserveIpAddressesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// CreateReserveIpAddresses +// 创建内网保留IP +// +// 可能返回的错误码: +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNKNOWNPARAMETER_WITHGUESS = "UnknownParameter.WithGuess" +func (c *Client) CreateReserveIpAddresses(request *CreateReserveIpAddressesRequest) (response *CreateReserveIpAddressesResponse, err error) { + return c.CreateReserveIpAddressesWithContext(context.Background(), request) +} + +// CreateReserveIpAddresses +// 创建内网保留IP +// +// 可能返回的错误码: +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNKNOWNPARAMETER_WITHGUESS = "UnknownParameter.WithGuess" +func (c *Client) CreateReserveIpAddressesWithContext(ctx context.Context, request *CreateReserveIpAddressesRequest) (response *CreateReserveIpAddressesResponse, err error) { + if request == nil { + request = NewCreateReserveIpAddressesRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("CreateReserveIpAddresses require credential") + } + + request.SetContext(ctx) + + response = NewCreateReserveIpAddressesResponse() + err = c.Send(request, response) + return +} + func NewCreateRouteTableRequest() (request *CreateRouteTableRequest) { request = &CreateRouteTableRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -8858,6 +8917,67 @@ func (c *Client) DeletePrivateNatGatewayTranslationNatRuleWithContext(ctx contex return } +func NewDeleteReserveIpAddressesRequest() (request *DeleteReserveIpAddressesRequest) { + request = &DeleteReserveIpAddressesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("vpc", APIVersion, "DeleteReserveIpAddresses") + + + return +} + +func NewDeleteReserveIpAddressesResponse() (response *DeleteReserveIpAddressesResponse) { + response = &DeleteReserveIpAddressesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// DeleteReserveIpAddresses +// 删除内网保留IP +// +// 可能返回的错误码: +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_PARAMETERMISMATCH = "InvalidParameterValue.ParameterMismatch" +// INVALIDPARAMETERVALUE_RESOURCENOTFOUND = "InvalidParameterValue.ResourceNotFound" +// MISSINGPARAMETER = "MissingParameter" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNKNOWNPARAMETER_WITHGUESS = "UnknownParameter.WithGuess" +func (c *Client) DeleteReserveIpAddresses(request *DeleteReserveIpAddressesRequest) (response *DeleteReserveIpAddressesResponse, err error) { + return c.DeleteReserveIpAddressesWithContext(context.Background(), request) +} + +// DeleteReserveIpAddresses +// 删除内网保留IP +// +// 可能返回的错误码: +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_PARAMETERMISMATCH = "InvalidParameterValue.ParameterMismatch" +// INVALIDPARAMETERVALUE_RESOURCENOTFOUND = "InvalidParameterValue.ResourceNotFound" +// MISSINGPARAMETER = "MissingParameter" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNKNOWNPARAMETER_WITHGUESS = "UnknownParameter.WithGuess" +func (c *Client) DeleteReserveIpAddressesWithContext(ctx context.Context, request *DeleteReserveIpAddressesRequest) (response *DeleteReserveIpAddressesResponse, err error) { + if request == nil { + request = NewDeleteReserveIpAddressesRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DeleteReserveIpAddresses require credential") + } + + request.SetContext(ctx) + + response = NewDeleteReserveIpAddressesResponse() + err = c.Send(request, response) + return +} + func NewDeleteRouteTableRequest() (request *DeleteRouteTableRequest) { request = &DeleteRouteTableRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -11626,6 +11746,7 @@ func NewDescribeDhcpIpsResponse() (response *DescribeDhcpIpsResponse) { // INVALIDPARAMETER_FILTERVALUESNOTLIST = "InvalidParameter.FilterValuesNotList" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // INVALIDPARAMETERVALUE_TOOLONG = "InvalidParameterValue.TooLong" // RESOURCENOTFOUND = "ResourceNotFound" @@ -11642,6 +11763,7 @@ func (c *Client) DescribeDhcpIps(request *DescribeDhcpIpsRequest) (response *Des // INVALIDPARAMETER_FILTERVALUESNOTLIST = "InvalidParameter.FilterValuesNotList" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // INVALIDPARAMETERVALUE_TOOLONG = "InvalidParameterValue.TooLong" // RESOURCENOTFOUND = "ResourceNotFound" @@ -12909,6 +13031,7 @@ func NewDescribeNetDetectsResponse() (response *DescribeNetDetectsResponse) { // INVALIDPARAMETERVALUE = "InvalidParameterValue" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" func (c *Client) DescribeNetDetects(request *DescribeNetDetectsRequest) (response *DescribeNetDetectsResponse, err error) { @@ -12924,6 +13047,7 @@ func (c *Client) DescribeNetDetects(request *DescribeNetDetectsRequest) (respons // INVALIDPARAMETERVALUE = "InvalidParameterValue" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" func (c *Client) DescribeNetDetectsWithContext(ctx context.Context, request *DescribeNetDetectsRequest) (response *DescribeNetDetectsResponse, err error) { @@ -12970,6 +13094,7 @@ func NewDescribeNetworkAccountTypeResponse() (response *DescribeNetworkAccountTy // INVALIDPARAMETERVALUE = "InvalidParameterValue" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" func (c *Client) DescribeNetworkAccountType(request *DescribeNetworkAccountTypeRequest) (response *DescribeNetworkAccountTypeResponse, err error) { @@ -12985,6 +13110,7 @@ func (c *Client) DescribeNetworkAccountType(request *DescribeNetworkAccountTypeR // INVALIDPARAMETERVALUE = "InvalidParameterValue" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" func (c *Client) DescribeNetworkAccountTypeWithContext(ctx context.Context, request *DescribeNetworkAccountTypeRequest) (response *DescribeNetworkAccountTypeResponse, err error) { @@ -13031,6 +13157,7 @@ func NewDescribeNetworkAclQuintupleEntriesResponse() (response *DescribeNetworkA // INVALIDPARAMETER_FILTERINVALIDKEY = "InvalidParameter.FilterInvalidKey" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION = "UnsupportedOperation" @@ -13048,6 +13175,7 @@ func (c *Client) DescribeNetworkAclQuintupleEntries(request *DescribeNetworkAclQ // INVALIDPARAMETER_FILTERINVALIDKEY = "InvalidParameter.FilterInvalidKey" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION = "UnsupportedOperation" @@ -13096,6 +13224,7 @@ func NewDescribeNetworkAclsResponse() (response *DescribeNetworkAclsResponse) { // INVALIDPARAMETER_FILTERINVALIDKEY = "InvalidParameter.FilterInvalidKey" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION = "UnsupportedOperation" @@ -13113,6 +13242,7 @@ func (c *Client) DescribeNetworkAcls(request *DescribeNetworkAclsRequest) (respo // INVALIDPARAMETER_FILTERINVALIDKEY = "InvalidParameter.FilterInvalidKey" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION = "UnsupportedOperation" @@ -13222,6 +13352,7 @@ func NewDescribeNetworkInterfacesResponse() (response *DescribeNetworkInterfaces // INVALIDPARAMETER_FILTERVALUESNOTLIST = "InvalidParameter.FilterValuesNotList" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // LIMITEXCEEDED_ACTIONLIMITED = "LimitExceeded.ActionLimited" // RESOURCENOTFOUND = "ResourceNotFound" @@ -13241,6 +13372,7 @@ func (c *Client) DescribeNetworkInterfaces(request *DescribeNetworkInterfacesReq // INVALIDPARAMETER_FILTERVALUESNOTLIST = "InvalidParameter.FilterValuesNotList" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // LIMITEXCEEDED_ACTIONLIMITED = "LimitExceeded.ActionLimited" // RESOURCENOTFOUND = "ResourceNotFound" @@ -13704,6 +13836,69 @@ func (c *Client) DescribeProductQuotaWithContext(ctx context.Context, request *D return } +func NewDescribeReserveIpAddressesRequest() (request *DescribeReserveIpAddressesRequest) { + request = &DescribeReserveIpAddressesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("vpc", APIVersion, "DescribeReserveIpAddresses") + + + return +} + +func NewDescribeReserveIpAddressesResponse() (response *DescribeReserveIpAddressesResponse) { + response = &DescribeReserveIpAddressesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// DescribeReserveIpAddresses +// 查询内网保留 IP +// +// 可能返回的错误码: +// INTERNALERROR_MODULEERROR = "InternalError.ModuleError" +// INVALIDPARAMETER_COEXIST = "InvalidParameter.Coexist" +// INVALIDPARAMETER_FILTERINVALIDKEY = "InvalidParameter.FilterInvalidKey" +// INVALIDPARAMETER_FILTERNOTDICT = "InvalidParameter.FilterNotDict" +// INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" +// INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_RESOURCENOTFOUND = "InvalidParameterValue.ResourceNotFound" +// RESOURCENOTFOUND = "ResourceNotFound" +func (c *Client) DescribeReserveIpAddresses(request *DescribeReserveIpAddressesRequest) (response *DescribeReserveIpAddressesResponse, err error) { + return c.DescribeReserveIpAddressesWithContext(context.Background(), request) +} + +// DescribeReserveIpAddresses +// 查询内网保留 IP +// +// 可能返回的错误码: +// INTERNALERROR_MODULEERROR = "InternalError.ModuleError" +// INVALIDPARAMETER_COEXIST = "InvalidParameter.Coexist" +// INVALIDPARAMETER_FILTERINVALIDKEY = "InvalidParameter.FilterInvalidKey" +// INVALIDPARAMETER_FILTERNOTDICT = "InvalidParameter.FilterNotDict" +// INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" +// INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_RESOURCENOTFOUND = "InvalidParameterValue.ResourceNotFound" +// RESOURCENOTFOUND = "ResourceNotFound" +func (c *Client) DescribeReserveIpAddressesWithContext(ctx context.Context, request *DescribeReserveIpAddressesRequest) (response *DescribeReserveIpAddressesResponse, err error) { + if request == nil { + request = NewDescribeReserveIpAddressesRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("DescribeReserveIpAddresses require credential") + } + + request.SetContext(ctx) + + response = NewDescribeReserveIpAddressesResponse() + err = c.Send(request, response) + return +} + func NewDescribeRouteConflictsRequest() (request *DescribeRouteConflictsRequest) { request = &DescribeRouteConflictsRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -13900,6 +14095,7 @@ func NewDescribeRouteTablesResponse() (response *DescribeRouteTablesResponse) { // INVALIDPARAMETER_FILTERNOTDICT = "InvalidParameter.FilterNotDict" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION = "UnsupportedOperation" @@ -13917,6 +14113,7 @@ func (c *Client) DescribeRouteTables(request *DescribeRouteTablesRequest) (respo // INVALIDPARAMETER_FILTERNOTDICT = "InvalidParameter.FilterNotDict" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION = "UnsupportedOperation" @@ -13961,6 +14158,7 @@ func NewDescribeRoutesResponse() (response *DescribeRoutesResponse) { // 可能返回的错误码: // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" func (c *Client) DescribeRoutes(request *DescribeRoutesRequest) (response *DescribeRoutesResponse, err error) { @@ -13973,6 +14171,7 @@ func (c *Client) DescribeRoutes(request *DescribeRoutesRequest) (response *Descr // 可能返回的错误码: // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" func (c *Client) DescribeRoutesWithContext(ctx context.Context, request *DescribeRoutesRequest) (response *DescribeRoutesResponse, err error) { @@ -14573,6 +14772,7 @@ func NewDescribeSnapshotPoliciesResponse() (response *DescribeSnapshotPoliciesRe // // 可能返回的错误码: // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" func (c *Client) DescribeSnapshotPolicies(request *DescribeSnapshotPoliciesRequest) (response *DescribeSnapshotPoliciesResponse, err error) { return c.DescribeSnapshotPoliciesWithContext(context.Background(), request) @@ -14583,6 +14783,7 @@ func (c *Client) DescribeSnapshotPolicies(request *DescribeSnapshotPoliciesReque // // 可能返回的错误码: // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" func (c *Client) DescribeSnapshotPoliciesWithContext(ctx context.Context, request *DescribeSnapshotPoliciesRequest) (response *DescribeSnapshotPoliciesResponse, err error) { if request == nil { @@ -14629,6 +14830,7 @@ func NewDescribeSpecificTrafficPackageUsedDetailsResponse() (response *DescribeS // INVALIDPARAMETERVALUE_TRAFFICPACKAGEID = "InvalidParameterValue.TrafficPackageId" // INVALIDPARAMETERVALUE_TRAFFICPACKAGEIDMALFORMED = "InvalidParameterValue.TrafficPackageIdMalformed" // INVALIDPARAMETERVALUE_TRAFFICPACKAGENOTFOUND = "InvalidParameterValue.TrafficPackageNotFound" +// INVALIDPARAMETERVALUE_TRAFFICPACKAGERESOURCEIDMALFORMED = "InvalidParameterValue.TrafficPackageResourceIdMalformed" func (c *Client) DescribeSpecificTrafficPackageUsedDetails(request *DescribeSpecificTrafficPackageUsedDetailsRequest) (response *DescribeSpecificTrafficPackageUsedDetailsResponse, err error) { return c.DescribeSpecificTrafficPackageUsedDetailsWithContext(context.Background(), request) } @@ -14643,6 +14845,7 @@ func (c *Client) DescribeSpecificTrafficPackageUsedDetails(request *DescribeSpec // INVALIDPARAMETERVALUE_TRAFFICPACKAGEID = "InvalidParameterValue.TrafficPackageId" // INVALIDPARAMETERVALUE_TRAFFICPACKAGEIDMALFORMED = "InvalidParameterValue.TrafficPackageIdMalformed" // INVALIDPARAMETERVALUE_TRAFFICPACKAGENOTFOUND = "InvalidParameterValue.TrafficPackageNotFound" +// INVALIDPARAMETERVALUE_TRAFFICPACKAGERESOURCEIDMALFORMED = "InvalidParameterValue.TrafficPackageResourceIdMalformed" func (c *Client) DescribeSpecificTrafficPackageUsedDetailsWithContext(ctx context.Context, request *DescribeSpecificTrafficPackageUsedDetailsRequest) (response *DescribeSpecificTrafficPackageUsedDetailsResponse, err error) { if request == nil { request = NewDescribeSpecificTrafficPackageUsedDetailsRequest() @@ -15098,6 +15301,7 @@ func NewDescribeVpcEndPointResponse() (response *DescribeVpcEndPointResponse) { // INVALIDPARAMETER_FILTERNOTDICT = "InvalidParameter.FilterNotDict" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" // RESOURCENOTFOUND_SVCNOTEXIST = "ResourceNotFound.SvcNotExist" @@ -15114,6 +15318,7 @@ func (c *Client) DescribeVpcEndPoint(request *DescribeVpcEndPointRequest) (respo // INVALIDPARAMETER_FILTERNOTDICT = "InvalidParameter.FilterNotDict" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" // RESOURCENOTFOUND_SVCNOTEXIST = "ResourceNotFound.SvcNotExist" @@ -15457,6 +15662,18 @@ func NewDescribeVpcLimitsResponse() (response *DescribeVpcLimitsResponse) { // // * appid-max-end-point-service-white-lists (每个开发商每个地域可创建的终端节点服务白名单个数)。 // +// * vpc-max-cmcc-ipv6-cidrs (每个VPC可创建的移动IPv6 CIDR个数)。 +// +// * vpc-max-ctcc-ipv6-cidrs (每个VPC可创建的电信IPv6 CIDR个数)。 +// +// * vpc-max-cucc-ipv6-cidrs (每个VPC可创建的联调IPv6 CIDR个数)。 +// +// * vpc-max-bgp-ipv6-cidrs (每个VPC可创建的默认IPv6 CIDR个数)。 +// +// * vpc-max-custom-ipv6-cidrs (每个VPC可创建的自定义IPv6 CIDR个数)。 +// +// * vpc-max-ula-ipv6-cidrs (每个VPC可创建的ULA IPv6 CIDR个数)。 +// // 可能返回的错误码: // INVALIDPARAMETERVALUE = "InvalidParameterValue" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" @@ -15529,6 +15746,18 @@ func (c *Client) DescribeVpcLimits(request *DescribeVpcLimitsRequest) (response // // * appid-max-end-point-service-white-lists (每个开发商每个地域可创建的终端节点服务白名单个数)。 // +// * vpc-max-cmcc-ipv6-cidrs (每个VPC可创建的移动IPv6 CIDR个数)。 +// +// * vpc-max-ctcc-ipv6-cidrs (每个VPC可创建的电信IPv6 CIDR个数)。 +// +// * vpc-max-cucc-ipv6-cidrs (每个VPC可创建的联调IPv6 CIDR个数)。 +// +// * vpc-max-bgp-ipv6-cidrs (每个VPC可创建的默认IPv6 CIDR个数)。 +// +// * vpc-max-custom-ipv6-cidrs (每个VPC可创建的自定义IPv6 CIDR个数)。 +// +// * vpc-max-ula-ipv6-cidrs (每个VPC可创建的ULA IPv6 CIDR个数)。 +// // 可能返回的错误码: // INVALIDPARAMETERVALUE = "InvalidParameterValue" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" @@ -15820,6 +16049,7 @@ func NewDescribeVpcsResponse() (response *DescribeVpcsResponse) { // INVALIDPARAMETER_FILTERVALUESNOTLIST = "InvalidParameter.FilterValuesNotList" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION = "UnsupportedOperation" @@ -15838,6 +16068,7 @@ func (c *Client) DescribeVpcs(request *DescribeVpcsRequest) (response *DescribeV // INVALIDPARAMETER_FILTERVALUESNOTLIST = "InvalidParameter.FilterValuesNotList" // INVALIDPARAMETERVALUE_LIMITEXCEEDED = "InvalidParameterValue.LimitExceeded" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_NOTUTF8ENCODINGERROR = "InvalidParameterValue.NotUtf8EncodingError" // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION = "UnsupportedOperation" @@ -18894,6 +19125,63 @@ func (c *Client) ModifyAddressesBandwidthWithContext(ctx context.Context, reques return } +func NewModifyAddressesRenewFlagRequest() (request *ModifyAddressesRenewFlagRequest) { + request = &ModifyAddressesRenewFlagRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("vpc", APIVersion, "ModifyAddressesRenewFlag") + + + return +} + +func NewModifyAddressesRenewFlagResponse() (response *ModifyAddressesRenewFlagResponse) { + response = &ModifyAddressesRenewFlagResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// ModifyAddressesRenewFlag +// 调整EIP续费标识 +// +// 可能返回的错误码: +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// INVALIDPARAMETERVALUE_ADDRESSIDMALFORMED = "InvalidParameterValue.AddressIdMalformed" +// INVALIDPARAMETERVALUE_ADDRESSNOTFOUND = "InvalidParameterValue.AddressNotFound" +// INVALIDPARAMETERVALUE_RESOURCENOTSUPPORT = "InvalidParameterValue.ResourceNotSupport" +// UNSUPPORTEDOPERATION_ADDRESSSTATUSNOTPERMIT = "UnsupportedOperation.AddressStatusNotPermit" +func (c *Client) ModifyAddressesRenewFlag(request *ModifyAddressesRenewFlagRequest) (response *ModifyAddressesRenewFlagResponse, err error) { + return c.ModifyAddressesRenewFlagWithContext(context.Background(), request) +} + +// ModifyAddressesRenewFlag +// 调整EIP续费标识 +// +// 可能返回的错误码: +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// INVALIDPARAMETERVALUE_ADDRESSIDMALFORMED = "InvalidParameterValue.AddressIdMalformed" +// INVALIDPARAMETERVALUE_ADDRESSNOTFOUND = "InvalidParameterValue.AddressNotFound" +// INVALIDPARAMETERVALUE_RESOURCENOTSUPPORT = "InvalidParameterValue.ResourceNotSupport" +// UNSUPPORTEDOPERATION_ADDRESSSTATUSNOTPERMIT = "UnsupportedOperation.AddressStatusNotPermit" +func (c *Client) ModifyAddressesRenewFlagWithContext(ctx context.Context, request *ModifyAddressesRenewFlagRequest) (response *ModifyAddressesRenewFlagResponse, err error) { + if request == nil { + request = NewModifyAddressesRenewFlagRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyAddressesRenewFlag require credential") + } + + request.SetContext(ctx) + + response = NewModifyAddressesRenewFlagResponse() + err = c.Send(request, response) + return +} + func NewModifyAssistantCidrRequest() (request *ModifyAssistantCidrRequest) { request = &ModifyAssistantCidrRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -19020,6 +19308,71 @@ func (c *Client) ModifyBandwidthPackageAttributeWithContext(ctx context.Context, return } +func NewModifyBandwidthPackageBandwidthRequest() (request *ModifyBandwidthPackageBandwidthRequest) { + request = &ModifyBandwidthPackageBandwidthRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("vpc", APIVersion, "ModifyBandwidthPackageBandwidth") + + + return +} + +func NewModifyBandwidthPackageBandwidthResponse() (response *ModifyBandwidthPackageBandwidthResponse) { + response = &ModifyBandwidthPackageBandwidthResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// ModifyBandwidthPackageBandwidth +// 接口用于调整[共享带宽包](https://cloud.tencent.com/document/product/684/15245)(BWP)带宽 +// +// 可能返回的错误码: +// FAILEDOPERATION_BALANCEINSUFFICIENT = "FailedOperation.BalanceInsufficient" +// INTERNALSERVERERROR = "InternalServerError" +// INVALIDPARAMETERVALUE_BANDWIDTHPACKAGEIDMALFORMED = "InvalidParameterValue.BandwidthPackageIdMalformed" +// INVALIDPARAMETERVALUE_BANDWIDTHPACKAGENOTFOUND = "InvalidParameterValue.BandwidthPackageNotFound" +// INVALIDPARAMETERVALUE_COMBINATION = "InvalidParameterValue.Combination" +// INVALIDPARAMETERVALUE_INVALIDOLDBANDWIDTH = "InvalidParameterValue.InvalidOldBandwidth" +// INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" +// UNSUPPORTEDOPERATION_BANDWIDTHPACKAGEIDNOTSUPPORTED = "UnsupportedOperation.BandwidthPackageIdNotSupported" +// UNSUPPORTEDOPERATION_INVALIDACTION = "UnsupportedOperation.InvalidAction" +func (c *Client) ModifyBandwidthPackageBandwidth(request *ModifyBandwidthPackageBandwidthRequest) (response *ModifyBandwidthPackageBandwidthResponse, err error) { + return c.ModifyBandwidthPackageBandwidthWithContext(context.Background(), request) +} + +// ModifyBandwidthPackageBandwidth +// 接口用于调整[共享带宽包](https://cloud.tencent.com/document/product/684/15245)(BWP)带宽 +// +// 可能返回的错误码: +// FAILEDOPERATION_BALANCEINSUFFICIENT = "FailedOperation.BalanceInsufficient" +// INTERNALSERVERERROR = "InternalServerError" +// INVALIDPARAMETERVALUE_BANDWIDTHPACKAGEIDMALFORMED = "InvalidParameterValue.BandwidthPackageIdMalformed" +// INVALIDPARAMETERVALUE_BANDWIDTHPACKAGENOTFOUND = "InvalidParameterValue.BandwidthPackageNotFound" +// INVALIDPARAMETERVALUE_COMBINATION = "InvalidParameterValue.Combination" +// INVALIDPARAMETERVALUE_INVALIDOLDBANDWIDTH = "InvalidParameterValue.InvalidOldBandwidth" +// INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" +// UNSUPPORTEDOPERATION_BANDWIDTHPACKAGEIDNOTSUPPORTED = "UnsupportedOperation.BandwidthPackageIdNotSupported" +// UNSUPPORTEDOPERATION_INVALIDACTION = "UnsupportedOperation.InvalidAction" +func (c *Client) ModifyBandwidthPackageBandwidthWithContext(ctx context.Context, request *ModifyBandwidthPackageBandwidthRequest) (response *ModifyBandwidthPackageBandwidthResponse, err error) { + if request == nil { + request = NewModifyBandwidthPackageBandwidthRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyBandwidthPackageBandwidth require credential") + } + + request.SetContext(ctx) + + response = NewModifyBandwidthPackageBandwidthResponse() + err = c.Send(request, response) + return +} + func NewModifyCcnAttachedInstancesAttributeRequest() (request *ModifyCcnAttachedInstancesAttributeRequest) { request = &ModifyCcnAttachedInstancesAttributeRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -21084,6 +21437,61 @@ func (c *Client) ModifyPrivateNatGatewayTranslationNatRuleWithContext(ctx contex return } +func NewModifyReserveIpAddressRequest() (request *ModifyReserveIpAddressRequest) { + request = &ModifyReserveIpAddressRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("vpc", APIVersion, "ModifyReserveIpAddress") + + + return +} + +func NewModifyReserveIpAddressResponse() (response *ModifyReserveIpAddressResponse) { + response = &ModifyReserveIpAddressResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// ModifyReserveIpAddress +// 修改内网保留 IP +// +// 可能返回的错误码: +// INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_RESOURCENOTFOUND = "InvalidParameterValue.ResourceNotFound" +// INVALIDPARAMETERVALUE_TOOLONG = "InvalidParameterValue.TooLong" +// RESOURCENOTFOUND = "ResourceNotFound" +func (c *Client) ModifyReserveIpAddress(request *ModifyReserveIpAddressRequest) (response *ModifyReserveIpAddressResponse, err error) { + return c.ModifyReserveIpAddressWithContext(context.Background(), request) +} + +// ModifyReserveIpAddress +// 修改内网保留 IP +// +// 可能返回的错误码: +// INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" +// INVALIDPARAMETERVALUE_RESOURCENOTFOUND = "InvalidParameterValue.ResourceNotFound" +// INVALIDPARAMETERVALUE_TOOLONG = "InvalidParameterValue.TooLong" +// RESOURCENOTFOUND = "ResourceNotFound" +func (c *Client) ModifyReserveIpAddressWithContext(ctx context.Context, request *ModifyReserveIpAddressRequest) (response *ModifyReserveIpAddressResponse, err error) { + if request == nil { + request = NewModifyReserveIpAddressRequest() + } + + if c.GetCredential() == nil { + return nil, errors.New("ModifyReserveIpAddress require credential") + } + + request.SetContext(ctx) + + response = NewModifyReserveIpAddressResponse() + err = c.Send(request, response) + return +} + func NewModifyRouteTableAttributeRequest() (request *ModifyRouteTableAttributeRequest) { request = &ModifyRouteTableAttributeRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -21167,6 +21575,7 @@ func NewModifyRouteTableSelectionPoliciesResponse() (response *ModifyRouteTableS // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // INVALIDPARAMETERVALUE_TOOLONG = "InvalidParameterValue.TooLong" // RESOURCENOTFOUND = "ResourceNotFound" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" // UNSUPPORTEDOPERATION_CANNOTASSIGNDEFAULTROUTETABLE = "UnsupportedOperation.CanNotAssignDefaultRouteTable" // UNSUPPORTEDOPERATION_CCNROUTETABLENOTEXIST = "UnsupportedOperation.CcnRouteTableNotExist" // UNSUPPORTEDOPERATION_INSTANCENOTEXIST = "UnsupportedOperation.InstanceNotExist" @@ -21188,6 +21597,7 @@ func (c *Client) ModifyRouteTableSelectionPolicies(request *ModifyRouteTableSele // INVALIDPARAMETERVALUE_RANGE = "InvalidParameterValue.Range" // INVALIDPARAMETERVALUE_TOOLONG = "InvalidParameterValue.TooLong" // RESOURCENOTFOUND = "ResourceNotFound" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" // UNSUPPORTEDOPERATION_CANNOTASSIGNDEFAULTROUTETABLE = "UnsupportedOperation.CanNotAssignDefaultRouteTable" // UNSUPPORTEDOPERATION_CCNROUTETABLENOTEXIST = "UnsupportedOperation.CcnRouteTableNotExist" // UNSUPPORTEDOPERATION_INSTANCENOTEXIST = "UnsupportedOperation.InstanceNotExist" @@ -21432,6 +21842,7 @@ func NewModifyServiceTemplateAttributeResponse() (response *ModifyServiceTemplat // // 可能返回的错误码: // INVALIDPARAMETER_COEXIST = "InvalidParameter.Coexist" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" // INVALIDPARAMETERVALUE_DUPLICATE = "InvalidParameterValue.Duplicate" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" // INVALIDPARAMETERVALUE_TOOLONG = "InvalidParameterValue.TooLong" @@ -21451,6 +21862,7 @@ func (c *Client) ModifyServiceTemplateAttribute(request *ModifyServiceTemplateAt // // 可能返回的错误码: // INVALIDPARAMETER_COEXIST = "InvalidParameter.Coexist" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" // INVALIDPARAMETERVALUE_DUPLICATE = "InvalidParameterValue.Duplicate" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" // INVALIDPARAMETERVALUE_TOOLONG = "InvalidParameterValue.TooLong" @@ -21853,8 +22265,6 @@ func NewModifyVpcEndPointServiceAttributeResponse() (response *ModifyVpcEndPoint // ModifyVpcEndPointServiceAttribute // 本接口(ModifyVpcEndPointServiceAttribute)用于修改终端节点服务属性。 // -// -// // 可能返回的错误码: // INTERNALERROR_MODULEERROR = "InternalError.ModuleError" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" @@ -21871,8 +22281,6 @@ func (c *Client) ModifyVpcEndPointServiceAttribute(request *ModifyVpcEndPointSer // ModifyVpcEndPointServiceAttribute // 本接口(ModifyVpcEndPointServiceAttribute)用于修改终端节点服务属性。 // -// -// // 可能返回的错误码: // INTERNALERROR_MODULEERROR = "InternalError.ModuleError" // INVALIDPARAMETERVALUE_MALFORMED = "InvalidParameterValue.Malformed" @@ -22344,6 +22752,7 @@ func NewModifyVpnGatewaySslServerResponse() (response *ModifyVpnGatewaySslServer // 可能返回的错误码: // INVALIDPARAMETERVALUE_CIDRNOTINSSLVPNVPC = "InvalidParameterValue.CidrNotInSslVpnVpc" // INVALIDPARAMETERVALUE_VPCCIDRCONFLICT = "InvalidParameterValue.VpcCidrConflict" +// LIMITEXCEEDED_SSLVPNCLIENTLIMITEXCEEDED = "LimitExceeded.SslVpnClientLimitExceeded" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION = "UnsupportedOperation" func (c *Client) ModifyVpnGatewaySslServer(request *ModifyVpnGatewaySslServerRequest) (response *ModifyVpnGatewaySslServerResponse, err error) { @@ -22356,6 +22765,7 @@ func (c *Client) ModifyVpnGatewaySslServer(request *ModifyVpnGatewaySslServerReq // 可能返回的错误码: // INVALIDPARAMETERVALUE_CIDRNOTINSSLVPNVPC = "InvalidParameterValue.CidrNotInSslVpnVpc" // INVALIDPARAMETERVALUE_VPCCIDRCONFLICT = "InvalidParameterValue.VpcCidrConflict" +// LIMITEXCEEDED_SSLVPNCLIENTLIMITEXCEEDED = "LimitExceeded.SslVpnClientLimitExceeded" // RESOURCENOTFOUND = "ResourceNotFound" // UNSUPPORTEDOPERATION = "UnsupportedOperation" func (c *Client) ModifyVpnGatewaySslServerWithContext(ctx context.Context, request *ModifyVpnGatewaySslServerRequest) (response *ModifyVpnGatewaySslServerResponse, err error) { @@ -23034,7 +23444,7 @@ func NewReplaceCcnRouteTableBroadcastPolicysResponse() (response *ReplaceCcnRout // // // -// - 实例类型: `instance-type`,可选值:私有网络 `VPC`、专线网关 `DIRECTCONNECT`、专线网关 `VPNGW` +// - 实例类型: `instance-type`,可选值:私有网络 `VPC`、专线网关 `DIRECTCONNECT`、VPN网关 `VPNGW` // // - 实例ID: `instance-id`,例如:`dcg-8zljkrft`、`vpc-jdevjrup`,暂不支持 `Edge` 实例 // @@ -23076,7 +23486,9 @@ func NewReplaceCcnRouteTableBroadcastPolicysResponse() (response *ReplaceCcnRout // INVALIDPARAMETERVALUE_PARAMETERMISMATCH = "InvalidParameterValue.ParameterMismatch" // LIMITEXCEEDED_CCNROUTEBROADCASTPOLICY = "LimitExceeded.CcnRouteBroadcastPolicy" // LIMITEXCEEDED_CCNROUTEBROADCASTPOLICYCOND = "LimitExceeded.CcnRouteBroadcastPolicyCond" +// UNSUPPORTEDOPERATION_BROADCASTCONDITIONMUSTBEVPGTYPEORVPGINSTANCE = "UnsupportedOperation.BroadcastConditionMustBeVpgTypeOrVpgInstance" // UNSUPPORTEDOPERATION_CCNNOTENABLEBROADCASTPOLICY = "UnsupportedOperation.CcnNotEnableBroadcastPolicy" +// UNSUPPORTEDOPERATION_CCNNOTENABLECOMMUNITY = "UnsupportedOperation.CcnNotEnableCommunity" func (c *Client) ReplaceCcnRouteTableBroadcastPolicys(request *ReplaceCcnRouteTableBroadcastPolicysRequest) (response *ReplaceCcnRouteTableBroadcastPolicysResponse, err error) { return c.ReplaceCcnRouteTableBroadcastPolicysWithContext(context.Background(), request) } @@ -23092,7 +23504,7 @@ func (c *Client) ReplaceCcnRouteTableBroadcastPolicys(request *ReplaceCcnRouteTa // // // -// - 实例类型: `instance-type`,可选值:私有网络 `VPC`、专线网关 `DIRECTCONNECT`、专线网关 `VPNGW` +// - 实例类型: `instance-type`,可选值:私有网络 `VPC`、专线网关 `DIRECTCONNECT`、VPN网关 `VPNGW` // // - 实例ID: `instance-id`,例如:`dcg-8zljkrft`、`vpc-jdevjrup`,暂不支持 `Edge` 实例 // @@ -23134,7 +23546,9 @@ func (c *Client) ReplaceCcnRouteTableBroadcastPolicys(request *ReplaceCcnRouteTa // INVALIDPARAMETERVALUE_PARAMETERMISMATCH = "InvalidParameterValue.ParameterMismatch" // LIMITEXCEEDED_CCNROUTEBROADCASTPOLICY = "LimitExceeded.CcnRouteBroadcastPolicy" // LIMITEXCEEDED_CCNROUTEBROADCASTPOLICYCOND = "LimitExceeded.CcnRouteBroadcastPolicyCond" +// UNSUPPORTEDOPERATION_BROADCASTCONDITIONMUSTBEVPGTYPEORVPGINSTANCE = "UnsupportedOperation.BroadcastConditionMustBeVpgTypeOrVpgInstance" // UNSUPPORTEDOPERATION_CCNNOTENABLEBROADCASTPOLICY = "UnsupportedOperation.CcnNotEnableBroadcastPolicy" +// UNSUPPORTEDOPERATION_CCNNOTENABLECOMMUNITY = "UnsupportedOperation.CcnNotEnableCommunity" func (c *Client) ReplaceCcnRouteTableBroadcastPolicysWithContext(ctx context.Context, request *ReplaceCcnRouteTableBroadcastPolicysRequest) (response *ReplaceCcnRouteTableBroadcastPolicysResponse, err error) { if request == nil { request = NewReplaceCcnRouteTableBroadcastPolicysRequest() @@ -24637,7 +25051,7 @@ func NewUnassignPrivateIpAddressesResponse() (response *UnassignPrivateIpAddress // UnassignPrivateIpAddresses // 本接口(UnassignPrivateIpAddresses)用于弹性网卡退还内网 IP。 // -// * 退还弹性网卡上的辅助内网IP,接口自动解关联弹性公网 IP。不能退还弹性网卡的主内网IP。 +// * 退还弹性网卡上的辅助内网IP,接口自动解除关联弹性公网 IP。不能退还弹性网卡的主内网IP。 // // // @@ -24660,7 +25074,7 @@ func (c *Client) UnassignPrivateIpAddresses(request *UnassignPrivateIpAddressesR // UnassignPrivateIpAddresses // 本接口(UnassignPrivateIpAddresses)用于弹性网卡退还内网 IP。 // -// * 退还弹性网卡上的辅助内网IP,接口自动解关联弹性公网 IP。不能退还弹性网卡的主内网IP。 +// * 退还弹性网卡上的辅助内网IP,接口自动解除关联弹性公网 IP。不能退还弹性网卡的主内网IP。 // // // 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 803aea957f..debcab4085 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 @@ -275,6 +275,9 @@ const ( // 无效的IPv6地址。 INVALIDPARAMETERVALUE_INVALIDIPV6 = "InvalidParameterValue.InvalidIpv6" + // 旧的带宽值无效。 + INVALIDPARAMETERVALUE_INVALIDOLDBANDWIDTH = "InvalidParameterValue.InvalidOldBandwidth" + // 该Tag不合法。 INVALIDPARAMETERVALUE_INVALIDTAG = "InvalidParameterValue.InvalidTag" @@ -461,6 +464,9 @@ const ( // 指定的流量包不支持此操作 INVALIDPARAMETERVALUE_TRAFFICPACKAGENOTSUPPORTED = "InvalidParameterValue.TrafficPackageNotSupported" + // 指定的流量包资源ID不合法 + INVALIDPARAMETERVALUE_TRAFFICPACKAGERESOURCEIDMALFORMED = "InvalidParameterValue.TrafficPackageResourceIdMalformed" + // 该可用区不可用。 INVALIDPARAMETERVALUE_UNAVAILABLEZONE = "InvalidParameterValue.UnavailableZone" @@ -602,6 +608,9 @@ const ( // 安全组规则数量超过上限。 LIMITEXCEEDED_SECURITYGROUPPOLICYSET = "LimitExceeded.SecurityGroupPolicySet" + // SSL-VPN客户端个数大于SSL-VPN-SERVER客户端地址池能够分配的个数。 + LIMITEXCEEDED_SSLVPNCLIENTLIMITEXCEEDED = "LimitExceeded.SslVpnClientLimitExceeded" + // 子网分配子网段数量达到上限。 LIMITEXCEEDED_SUBNETCIDRBLOCK = "LimitExceeded.SubnetCidrBlock" @@ -749,6 +758,9 @@ const ( // 已绑定EIP。 UNSUPPORTEDOPERATION_BINDEIP = "UnsupportedOperation.BindEIP" + // 添加 community 时,传播条件只支持 vpg 类型或 vpg 实例 + UNSUPPORTEDOPERATION_BROADCASTCONDITIONMUSTBEVPGTYPEORVPGINSTANCE = "UnsupportedOperation.BroadcastConditionMustBeVpgTypeOrVpgInstance" + // 指定VPC CIDR范围不支持私有网络和基础网络设备互通。 UNSUPPORTEDOPERATION_CIDRUNSUPPORTEDCLASSICLINK = "UnsupportedOperation.CIDRUnSupportedClassicLink" @@ -767,12 +779,18 @@ const ( // CCN实例所属账号未通过联通审批。 UNSUPPORTEDOPERATION_CCNINSTANCEACCOUNTNOTAPPROVEDBYUNICOM = "UnsupportedOperation.CcnInstanceAccountNotApprovedByUnicom" + // 云联网开启ipv6不支持创建多路由表 + UNSUPPORTEDOPERATION_CCNIPV6NOTSUPPORTMULTIPLEROUTETABLE = "UnsupportedOperation.CcnIpv6NotSupportMultipleRouteTable" + // 实例未关联CCN。 UNSUPPORTEDOPERATION_CCNNOTATTACHED = "UnsupportedOperation.CcnNotAttached" // 当前云联网未开启路由传播策略。 UNSUPPORTEDOPERATION_CCNNOTENABLEBROADCASTPOLICY = "UnsupportedOperation.CcnNotEnableBroadcastPolicy" + // 添加 community 时,vpg 需要开通传播 community 白名单 + UNSUPPORTEDOPERATION_CCNNOTENABLECOMMUNITY = "UnsupportedOperation.CcnNotEnableCommunity" + // 跨账号场景下不支持自驾云账号实例 关联普通账号云联网。 UNSUPPORTEDOPERATION_CCNORDINARYACCOUNTREFUSEATTACH = "UnsupportedOperation.CcnOrdinaryAccountRefuseAttach" @@ -1052,6 +1070,9 @@ const ( // 记录不存在。 UNSUPPORTEDOPERATION_RECORDNOTEXISTS = "UnsupportedOperation.RecordNotExists" + // 此安全组存在嵌套安全组规则,不支持跨地域克隆。 + UNSUPPORTEDOPERATION_REMOTEREGIONSGHASREFERENCEDSG = "UnsupportedOperation.RemoteRegionSgHasReferencedSg" + // 资源处于不可用状态,禁止操作。 UNSUPPORTEDOPERATION_RESOURCEISINVALIDSTATE = "UnsupportedOperation.ResourceIsInvalidState" 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 01e2d71c6b..0882d87e5e 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 @@ -541,7 +541,7 @@ type AddressTemplateGroup struct { } type AddressTemplateItem struct { - // ipm-xxxxxxxx + // IP地址模板ID AddressTemplateId *string `json:"AddressTemplateId,omitnil,omitempty" name:"AddressTemplateId"` // IP模板名称 @@ -674,6 +674,9 @@ type AllocateAddressesRequestParams struct { // AnycastZone *string `json:"AnycastZone,omitnil,omitempty" name:"AnycastZone"` + // 指定IP地址申请EIP,每个账户每个月只有三次配额 + VipCluster []*string `json:"VipCluster,omitnil,omitempty" name:"VipCluster"` + // [已废弃] AnycastEIP不再区分是否负载均衡。原参数说明如下: // AnycastEIP是否用于绑定负载均衡。 //