From 17003ae6849a5db3759ccf20a82397e72d05050c Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Mon, 13 May 2024 10:09:53 +0800 Subject: [PATCH 01/20] refactor: regenerate datasource cvm_instance_vnc_url --- .../data_source_tc_cvm_instance_vnc_url.go | 49 +++++++++++-------- ...ource_tc_cvm_instance_vnc_url_extension.go | 18 +++++++ ...cloud_sweeper_test.go => resource_test.go} | 0 .../services/cvm/service_tencentcloud_cvm.go | 35 +++++++++++++ 4 files changed, 82 insertions(+), 20 deletions(-) create mode 100644 tencentcloud/services/cvm/data_source_tc_cvm_instance_vnc_url_extension.go rename tencentcloud/services/cvm/{tencentcloud_sweeper_test.go => resource_test.go} (100%) diff --git a/tencentcloud/services/cvm/data_source_tc_cvm_instance_vnc_url.go b/tencentcloud/services/cvm/data_source_tc_cvm_instance_vnc_url.go index 9e4954611c..00a9f2310d 100644 --- a/tencentcloud/services/cvm/data_source_tc_cvm_instance_vnc_url.go +++ b/tencentcloud/services/cvm/data_source_tc_cvm_instance_vnc_url.go @@ -1,14 +1,14 @@ +// Code generated by iacg; DO NOT EDIT. package cvm import ( - "fmt" - - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "context" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -17,14 +17,14 @@ func DataSourceTencentCloudCvmInstanceVncUrl() *schema.Resource { Read: dataSourceTencentCloudCvmInstanceVncUrlRead, Schema: map[string]*schema.Schema{ "instance_id": { - Required: true, Type: schema.TypeString, + Required: true, Description: "Instance ID. To obtain the instance IDs, you can call `DescribeInstances` and look for `InstanceId` in the response.", }, "instance_vnc_url": { - Computed: true, Type: schema.TypeString, + Computed: true, Description: "Instance VNC URL.", }, @@ -41,38 +41,47 @@ func dataSourceTencentCloudCvmInstanceVncUrlRead(d *schema.ResourceData, meta in defer tccommon.LogElapsed("data_source.tencentcloud_cvm_instance_vnc_url.read")() defer tccommon.InconsistentCheck(d, meta)() - var response *cvm.DescribeInstanceVncUrlResponse - request := cvm.NewDescribeInstanceVncUrlRequest() - instanceId := d.Get("instance_id").(string) - request.InstanceId = helper.String(instanceId) - err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + logId := tccommon.GetLogId(nil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().DescribeInstanceVncUrl(request) + service := CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + + var ( + instanceId string + ) + if v, ok := d.GetOk("instance_id"); ok { + instanceId = v.(string) + } + paramMap := make(map[string]interface{}) + if v, ok := d.GetOk("instance_id"); ok { + paramMap["InstanceId"] = helper.String(v.(string)) + } + + var respData *cvm.DescribeInstanceVncUrlResponseParams + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := service.DescribeCvmInstanceVncUrlByFilter(ctx, paramMap) if e != nil { return tccommon.RetryError(e) } - response = result + respData = result return nil }) if err != nil { return err } - if response == nil || response.Response == nil { - d.SetId("") - return fmt.Errorf("Response is nil") - + if respData.InstanceVncUrl != nil { + _ = d.Set("instance_vnc_url", respData.InstanceVncUrl) } + d.SetId(instanceId) - _ = d.Set("instance_vnc_url", *response.Response.InstanceVncUrl) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := tccommon.WriteToFile(output.(string), map[string]interface{}{ - "instance_vnc_url": *response.Response.InstanceVncUrl, - }); e != nil { + if e := tccommon.WriteToFile(output.(string), dataSourceTencentCloudCvmInstanceVncUrlReadOutputContent(ctx)); e != nil { return e } } + return nil } diff --git a/tencentcloud/services/cvm/data_source_tc_cvm_instance_vnc_url_extension.go b/tencentcloud/services/cvm/data_source_tc_cvm_instance_vnc_url_extension.go new file mode 100644 index 0000000000..e6285f813f --- /dev/null +++ b/tencentcloud/services/cvm/data_source_tc_cvm_instance_vnc_url_extension.go @@ -0,0 +1,18 @@ +package cvm + +import ( + "context" + "fmt" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" +) + +func dataSourceTencentCloudCvmInstanceVncUrlReadOutputContent(ctx context.Context) interface{} { + d := tccommon.ResourceDataFromContext(ctx) + if d == nil { + return fmt.Errorf("resource data can not be nil") + } + return map[string]interface{}{ + "instance_vnc_url": d.Get("instance_vnc_url"), + } +} diff --git a/tencentcloud/services/cvm/tencentcloud_sweeper_test.go b/tencentcloud/services/cvm/resource_test.go similarity index 100% rename from tencentcloud/services/cvm/tencentcloud_sweeper_test.go rename to tencentcloud/services/cvm/resource_test.go diff --git a/tencentcloud/services/cvm/service_tencentcloud_cvm.go b/tencentcloud/services/cvm/service_tencentcloud_cvm.go index 071d5d8f1f..80f8497dd1 100644 --- a/tencentcloud/services/cvm/service_tencentcloud_cvm.go +++ b/tencentcloud/services/cvm/service_tencentcloud_cvm.go @@ -1776,3 +1776,38 @@ func (me *CvmService) ModifyImageSharePermission(ctx context.Context, imageId, p } return } + +func (me *CvmService) DescribeCvmInstanceVncUrlByFilter(ctx context.Context, param map[string]interface{}) (ret *cvm.DescribeInstanceVncUrlResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = cvm.NewDescribeInstanceVncUrlRequest() + ) + + 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()) + } + }() + + for k, v := range param { + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseCvmClient().DescribeInstanceVncUrl(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()) + + if response == nil || response.Response == nil { + return + } + + ret = response.Response + return +} From a1463e5337ff61515e4939c28cf3418b129ed206 Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Mon, 13 May 2024 10:21:32 +0800 Subject: [PATCH 02/20] refactor: regenerate datasource eip_address_quota --- .../cvm/data_source_tc_eip_address_quota.go | 59 ++++++++++--------- ...a_source_tc_eip_address_quota_extension.go | 1 + .../services/cvm/service_tencentcloud_cvm.go | 31 ++++++++++ 3 files changed, 62 insertions(+), 29 deletions(-) create mode 100644 tencentcloud/services/cvm/data_source_tc_eip_address_quota_extension.go diff --git a/tencentcloud/services/cvm/data_source_tc_eip_address_quota.go b/tencentcloud/services/cvm/data_source_tc_eip_address_quota.go index 1533b2abe7..c7c0035970 100644 --- a/tencentcloud/services/cvm/data_source_tc_eip_address_quota.go +++ b/tencentcloud/services/cvm/data_source_tc_eip_address_quota.go @@ -1,15 +1,14 @@ +// Code generated by iacg; DO NOT EDIT. package cvm import ( "context" - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - svcvpc "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/vpc" - "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" ) @@ -18,8 +17,8 @@ func DataSourceTencentCloudEipAddressQuota() *schema.Resource { Read: dataSourceTencentCloudEipAddressQuotaRead, Schema: map[string]*schema.Schema{ "quota_set": { - Computed: true, Type: schema.TypeList, + Computed: true, Description: "The specified account EIP quota information.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -52,61 +51,63 @@ func DataSourceTencentCloudEipAddressQuota() *schema.Resource { } func dataSourceTencentCloudEipAddressQuotaRead(d *schema.ResourceData, meta interface{}) error { - defer tccommon.LogElapsed("data_source.tencentcloud_vpc_address_quota.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_eip_address_quota.read")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) + logId := tccommon.GetLogId(nil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - - service := svcvpc.NewVpcService(meta.(tccommon.ProviderMeta).GetAPIV3Conn()) - - var quotaSet []*vpc.Quota + service := CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + paramMap := make(map[string]interface{}) + var respData []*vpc.Quota err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - result, e := service.DescribeEipAddressQuota(ctx) + result, e := service.DescribeEipAddressQuotaByFilter(ctx, paramMap) if e != nil { return tccommon.RetryError(e) } - quotaSet = result + respData = result return nil }) if err != nil { return err } - ids := make([]string, 0, len(quotaSet)) - tmpList := make([]map[string]interface{}, 0, len(quotaSet)) - - if quotaSet != nil { - for _, quota := range quotaSet { - quotaMap := map[string]interface{}{} + ids := make([]string, 0, len(respData)) + quotaSetList := make([]map[string]interface{}, 0, len(respData)) + if respData != nil { + for _, quotaSet := range respData { + quotaSetMap := map[string]interface{}{} - if quota.QuotaId != nil { - quotaMap["quota_id"] = quota.QuotaId + var quotaId string + if quotaSet.QuotaId != nil { + quotaSetMap["quota_id"] = quotaSet.QuotaId + quotaId = *quotaSet.QuotaId } - if quota.QuotaCurrent != nil { - quotaMap["quota_current"] = quota.QuotaCurrent + if quotaSet.QuotaCurrent != nil { + quotaSetMap["quota_current"] = quotaSet.QuotaCurrent } - if quota.QuotaLimit != nil { - quotaMap["quota_limit"] = quota.QuotaLimit + if quotaSet.QuotaLimit != nil { + quotaSetMap["quota_limit"] = quotaSet.QuotaLimit } - ids = append(ids, *quota.QuotaId) - tmpList = append(tmpList, quotaMap) + ids = append(ids, quotaId) + quotaSetList = append(quotaSetList, quotaSetMap) } - _ = d.Set("quota_set", tmpList) + _ = d.Set("quota_set", quotaSetList) } d.SetId(helper.DataResourceIdsHash(ids)) + output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), quotaSetList); e != nil { return e } } + return nil } diff --git a/tencentcloud/services/cvm/data_source_tc_eip_address_quota_extension.go b/tencentcloud/services/cvm/data_source_tc_eip_address_quota_extension.go new file mode 100644 index 0000000000..b417cc5d9f --- /dev/null +++ b/tencentcloud/services/cvm/data_source_tc_eip_address_quota_extension.go @@ -0,0 +1 @@ +package cvm diff --git a/tencentcloud/services/cvm/service_tencentcloud_cvm.go b/tencentcloud/services/cvm/service_tencentcloud_cvm.go index 80f8497dd1..d7ed3b09fd 100644 --- a/tencentcloud/services/cvm/service_tencentcloud_cvm.go +++ b/tencentcloud/services/cvm/service_tencentcloud_cvm.go @@ -9,6 +9,8 @@ import ( "sync" "time" + vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" @@ -1811,3 +1813,32 @@ func (me *CvmService) DescribeCvmInstanceVncUrlByFilter(ctx context.Context, par ret = response.Response return } + +func (me *CvmService) DescribeEipAddressQuotaByFilter(ctx context.Context, param map[string]interface{}) (ret []*vpc.Quota, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeAddressQuotaRequest() + ) + + 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().DescribeAddressQuota(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()) + + if len(response.Response.QuotaSet) < 1 { + return + } + + ret = response.Response.QuotaSet + return +} From cae1a25ce54770f4b89fa13846eda6ce97e8cd2c Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Mon, 13 May 2024 10:27:35 +0800 Subject: [PATCH 03/20] refactor: regenerate datasource eip_network_account_type --- ...data_source_tc_eip_network_account_type.go | 35 +++++++++++-------- ...e_tc_eip_network_account_type_extension.go | 16 +++++++++ .../services/cvm/service_tencentcloud_cvm.go | 29 +++++++++++++++ 3 files changed, 65 insertions(+), 15 deletions(-) create mode 100644 tencentcloud/services/cvm/data_source_tc_eip_network_account_type_extension.go diff --git a/tencentcloud/services/cvm/data_source_tc_eip_network_account_type.go b/tencentcloud/services/cvm/data_source_tc_eip_network_account_type.go index 88551782c7..5dd73f70f2 100644 --- a/tencentcloud/services/cvm/data_source_tc_eip_network_account_type.go +++ b/tencentcloud/services/cvm/data_source_tc_eip_network_account_type.go @@ -1,13 +1,14 @@ +// Code generated by iacg; DO NOT EDIT. package cvm import ( "context" - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - svcvpc "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/vpc" - "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" ) func DataSourceTencentCloudEipNetworkAccountType() *schema.Resource { @@ -15,8 +16,8 @@ func DataSourceTencentCloudEipNetworkAccountType() *schema.Resource { Read: dataSourceTencentCloudEipNetworkAccountTypeRead, Schema: map[string]*schema.Schema{ "network_account_type": { - Computed: true, Type: schema.TypeString, + Computed: true, Description: "The network type of the user account, STANDARD is a standard user, LEGACY is a traditional user.", }, @@ -33,35 +34,39 @@ func dataSourceTencentCloudEipNetworkAccountTypeRead(d *schema.ResourceData, met defer tccommon.LogElapsed("data_source.tencentcloud_eip_network_account_type.read")() defer tccommon.InconsistentCheck(d, meta)() - var networkAccountType *string - logId := tccommon.GetLogId(tccommon.ContextNil) - - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + logId := tccommon.GetLogId(nil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - service := svcvpc.NewVpcService(meta.(tccommon.ProviderMeta).GetAPIV3Conn()) + service := CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + paramMap := make(map[string]interface{}) + var respData *vpc.DescribeNetworkAccountTypeResponseParams err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - result, e := service.DescribeEipNetworkAccountType(ctx) + result, e := service.DescribeEipNetworkAccountTypeByFilter(ctx, paramMap) if e != nil { return tccommon.RetryError(e) } - networkAccountType = result + respData = result return nil }) if err != nil { return err } - if networkAccountType != nil { - _ = d.Set("network_account_type", networkAccountType) + var networkAccountType string + if respData.NetworkAccountType != nil { + _ = d.Set("network_account_type", respData.NetworkAccountType) + networkAccountType = *respData.NetworkAccountType } - d.SetId(*networkAccountType) + d.SetId(networkAccountType) + output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := tccommon.WriteToFile(output.(string), *networkAccountType); e != nil { + if e := tccommon.WriteToFile(output.(string), dataSourceTencentCloudEipNetworkAccountTypeReadOutputContent(ctx)); e != nil { return e } } + return nil } diff --git a/tencentcloud/services/cvm/data_source_tc_eip_network_account_type_extension.go b/tencentcloud/services/cvm/data_source_tc_eip_network_account_type_extension.go new file mode 100644 index 0000000000..1a43a2863e --- /dev/null +++ b/tencentcloud/services/cvm/data_source_tc_eip_network_account_type_extension.go @@ -0,0 +1,16 @@ +package cvm + +import ( + "context" + "fmt" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" +) + +func dataSourceTencentCloudEipNetworkAccountTypeReadOutputContent(ctx context.Context) interface{} { + d := tccommon.ResourceDataFromContext(ctx) + if d == nil { + return fmt.Errorf("resource data can not be nil") + } + return d.Get("network_account_type") +} diff --git a/tencentcloud/services/cvm/service_tencentcloud_cvm.go b/tencentcloud/services/cvm/service_tencentcloud_cvm.go index d7ed3b09fd..013554cfb8 100644 --- a/tencentcloud/services/cvm/service_tencentcloud_cvm.go +++ b/tencentcloud/services/cvm/service_tencentcloud_cvm.go @@ -1842,3 +1842,32 @@ func (me *CvmService) DescribeEipAddressQuotaByFilter(ctx context.Context, param ret = response.Response.QuotaSet return } + +func (me *CvmService) DescribeEipNetworkAccountTypeByFilter(ctx context.Context, param map[string]interface{}) (ret *vpc.DescribeNetworkAccountTypeResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetworkAccountTypeRequest() + ) + + 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().DescribeNetworkAccountType(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()) + + if response == nil || response.Response == nil { + return + } + + ret = response.Response + return +} From ba462188cf710c45ce5126c867fe89629f68f4a1 Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Mon, 13 May 2024 15:37:54 +0800 Subject: [PATCH 04/20] refactor: regenerate datasource cvm_instances_modification --- ...ta_source_tc_cvm_instances_modification.go | 180 +++++++++++------- ...tc_cvm_instances_modification_extension.go | 1 + .../services/cvm/service_tencentcloud_cvm.go | 38 ++++ 3 files changed, 151 insertions(+), 68 deletions(-) create mode 100644 tencentcloud/services/cvm/data_source_tc_cvm_instances_modification_extension.go diff --git a/tencentcloud/services/cvm/data_source_tc_cvm_instances_modification.go b/tencentcloud/services/cvm/data_source_tc_cvm_instances_modification.go index c8cff821c4..098101ea6b 100644 --- a/tencentcloud/services/cvm/data_source_tc_cvm_instances_modification.go +++ b/tencentcloud/services/cvm/data_source_tc_cvm_instances_modification.go @@ -1,33 +1,33 @@ +// Code generated by iacg; DO NOT EDIT. package cvm import ( - "log" - - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "context" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) func DataSourceTencentCloudCvmInstancesModification() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudCvmInstancesModificationRead, - Schema: map[string]*schema.Schema{ "instance_ids": { - Optional: true, - Type: schema.TypeSet, + Type: schema.TypeSet, + Optional: true, + Description: "One or more instance ID to be queried. It can be obtained from the InstanceId in the returned value of API DescribeInstances. The maximum number of instances in batch for each request is 20.", Elem: &schema.Schema{ Type: schema.TypeString, }, - Description: "One or more instance ID to be queried. It can be obtained from the InstanceId in the returned value of API DescribeInstances. The maximum number of instances in batch for each request is 20.", }, + "filters": { - Optional: true, Type: schema.TypeList, + Optional: true, Description: "The upper limit of Filters for each request is 10 and the upper limit for Filter.Values is 2.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -37,26 +37,20 @@ func DataSourceTencentCloudCvmInstancesModification() *schema.Resource { Description: "Fields to be filtered.", }, "values": { - Type: schema.TypeSet, + Type: schema.TypeSet, + Required: true, + Description: "Value of the field.", Elem: &schema.Schema{ Type: schema.TypeString, }, - Required: true, - Description: "Value of the field.", }, }, }, }, - "result_output_file": { - Type: schema.TypeString, - Optional: true, - Description: "Used to save results.", - }, - "instance_type_config_status_list": { - Computed: true, Type: schema.TypeList, + Computed: true, Description: "The list of model configurations that can be adjusted by the instance.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -117,85 +111,135 @@ func DataSourceTencentCloudCvmInstancesModification() *schema.Resource { }, }, }, + + "result_output_file": { + Type: schema.TypeString, + Optional: true, + Description: "Used to save results.", + }, }, } } func dataSourceTencentCloudCvmInstancesModificationRead(d *schema.ResourceData, meta interface{}) error { defer tccommon.LogElapsed("data_source.tencentcloud_cvm_instances_modification.read")() - logId := tccommon.GetLogId(tccommon.ContextNil) + defer tccommon.InconsistentCheck(d, meta)() + + logId := tccommon.GetLogId(nil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + + service := CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - var ( - request = cvm.NewDescribeInstancesModificationRequest() - response = cvm.NewDescribeInstancesModificationResponse() - ) + paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_ids"); ok { - request.InstanceIds = helper.InterfacesStringsPoint(v.(*schema.Set).List()) + instanceIdsList := []*string{} + instanceIdsSet := v.(*schema.Set).List() + for i := range instanceIdsSet { + instanceIds := instanceIdsSet[i].(string) + instanceIdsList = append(instanceIdsList, helper.String(instanceIds)) + } + paramMap["InstanceIds"] = instanceIdsList } if v, ok := d.GetOk("filters"); ok { - filters := make([]*cvm.Filter, 0) - for _, item := range v.(*schema.Set).List() { - filter := item.(map[string]interface{}) - name := filter["name"].(string) - filters = append(filters, &cvm.Filter{ - Name: &name, - Values: helper.StringsStringsPoint(filter["values"].([]string)), - }) + filtersSet := v.([]interface{}) + tmpSet := make([]*cvm.Filter, 0, len(filtersSet)) + for _, item := range filtersSet { + filtersMap := item.(map[string]interface{}) + filter := cvm.Filter{} + if v, ok := filtersMap["name"]; ok { + filter.Name = helper.String(v.(string)) + } + if v, ok := filtersMap["values"]; ok { + valuesSet := v.(*schema.Set).List() + for i := range valuesSet { + values := valuesSet[i].(string) + filter.Values = append(filter.Values, helper.String(values)) + } + } + tmpSet = append(tmpSet, &filter) } - request.Filters = filters + paramMap["Filters"] = tmpSet } - instanceTypeConfigStatusList := make([]map[string]interface{}, 0) - - var innerErr error + var respData []*cvm.InstanceTypeConfigStatus err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - response, innerErr = meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().DescribeInstancesModification(request) - if innerErr != nil { - return tccommon.RetryError(innerErr) + result, e := service.DescribeCvmInstancesModificationByFilter(ctx, paramMap) + if e != nil { + return tccommon.RetryError(e) } + respData = result return nil }) if err != nil { return err } - ids := make([]string, 0) - for _, instanceTypeConfigStatusSetItem := range response.Response.InstanceTypeConfigStatusSet { - instanceTypeConfigStatus := make(map[string]interface{}) - instanceTypeConfigStatus["status"] = instanceTypeConfigStatusSetItem.Status - instanceTypeConfigStatus["message"] = instanceTypeConfigStatusSetItem.Message - - instanceTypeConfigMaps := make([]map[string]interface{}, 0) - instanceTypeConfigMap := make(map[string]interface{}) - instanceTypeConfig := instanceTypeConfigStatusSetItem.InstanceTypeConfig - instanceTypeConfigMap["zone"] = instanceTypeConfig.Zone - ids = append(ids, *instanceTypeConfig.InstanceType) - instanceTypeConfigMap["instance_type"] = instanceTypeConfig.InstanceType - instanceTypeConfigMap["instance_family"] = instanceTypeConfig.InstanceFamily - instanceTypeConfigMap["gpu"] = instanceTypeConfig.GPU - instanceTypeConfigMap["cpu"] = instanceTypeConfig.CPU - instanceTypeConfigMap["memory"] = instanceTypeConfig.Memory - instanceTypeConfigMap["fpga"] = instanceTypeConfig.FPGA - instanceTypeConfigMaps = append(instanceTypeConfigMaps, instanceTypeConfigMap) - instanceTypeConfigStatus["instance_type_config"] = instanceTypeConfigMaps - - instanceTypeConfigStatusList = append(instanceTypeConfigStatusList, instanceTypeConfigStatus) + var ids []string + instanceTypeConfigStatusSetList := make([]map[string]interface{}, 0, len(respData)) + if respData != nil { + for _, instanceTypeConfigStatusSet := range respData { + instanceTypeConfigStatusSetMap := map[string]interface{}{} + + var instanceType string + if instanceTypeConfigStatusSet.Status != nil { + instanceTypeConfigStatusSetMap["status"] = instanceTypeConfigStatusSet.Status + } + + if instanceTypeConfigStatusSet.Message != nil { + instanceTypeConfigStatusSetMap["message"] = instanceTypeConfigStatusSet.Message + } + + instanceTypeConfigMap := map[string]interface{}{} + + if instanceTypeConfigStatusSet.InstanceTypeConfig != nil { + if instanceTypeConfigStatusSet.InstanceTypeConfig.Zone != nil { + instanceTypeConfigMap["zone"] = instanceTypeConfigStatusSet.InstanceTypeConfig.Zone + } + + if instanceTypeConfigStatusSet.InstanceTypeConfig.InstanceType != nil { + instanceTypeConfigMap["instance_type"] = instanceTypeConfigStatusSet.InstanceTypeConfig.InstanceType + instanceType = *instanceTypeConfigStatusSet.InstanceTypeConfig.InstanceType + } + + if instanceTypeConfigStatusSet.InstanceTypeConfig.InstanceFamily != nil { + instanceTypeConfigMap["instance_family"] = instanceTypeConfigStatusSet.InstanceTypeConfig.InstanceFamily + } + + if instanceTypeConfigStatusSet.InstanceTypeConfig.GPU != nil { + instanceTypeConfigMap["gpu"] = instanceTypeConfigStatusSet.InstanceTypeConfig.GPU + } + + if instanceTypeConfigStatusSet.InstanceTypeConfig.CPU != nil { + instanceTypeConfigMap["cpu"] = instanceTypeConfigStatusSet.InstanceTypeConfig.CPU + } + + if instanceTypeConfigStatusSet.InstanceTypeConfig.Memory != nil { + instanceTypeConfigMap["memory"] = instanceTypeConfigStatusSet.InstanceTypeConfig.Memory + } + + if instanceTypeConfigStatusSet.InstanceTypeConfig.FPGA != nil { + instanceTypeConfigMap["fpga"] = instanceTypeConfigStatusSet.InstanceTypeConfig.FPGA + } + + instanceTypeConfigStatusSetMap["instance_type_config"] = []interface{}{instanceTypeConfigMap} + } + + ids = append(ids, instanceType) + instanceTypeConfigStatusSetList = append(instanceTypeConfigStatusSetList, instanceTypeConfigStatusSetMap) + } + + _ = d.Set("instance_type_config_status_list", instanceTypeConfigStatusSetList) } d.SetId(helper.DataResourceIdsHash(ids)) - err = d.Set("instance_type_config_status_list", instanceTypeConfigStatusList) - if err != nil { - log.Printf("[CRITAL]%s provider set instance list fail, reason:%s\n ", logId, err.Error()) - return err - } output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if err := tccommon.WriteToFile(output.(string), instanceTypeConfigStatusList); err != nil { - return err + if e := tccommon.WriteToFile(output.(string), instanceTypeConfigStatusSetList); e != nil { + return e } } - return nil + return nil } diff --git a/tencentcloud/services/cvm/data_source_tc_cvm_instances_modification_extension.go b/tencentcloud/services/cvm/data_source_tc_cvm_instances_modification_extension.go new file mode 100644 index 0000000000..b417cc5d9f --- /dev/null +++ b/tencentcloud/services/cvm/data_source_tc_cvm_instances_modification_extension.go @@ -0,0 +1 @@ +package cvm diff --git a/tencentcloud/services/cvm/service_tencentcloud_cvm.go b/tencentcloud/services/cvm/service_tencentcloud_cvm.go index 013554cfb8..2b46349583 100644 --- a/tencentcloud/services/cvm/service_tencentcloud_cvm.go +++ b/tencentcloud/services/cvm/service_tencentcloud_cvm.go @@ -1871,3 +1871,41 @@ func (me *CvmService) DescribeEipNetworkAccountTypeByFilter(ctx context.Context, ret = response.Response return } + +func (me *CvmService) DescribeCvmInstancesModificationByFilter(ctx context.Context, param map[string]interface{}) (ret []*cvm.InstanceTypeConfigStatus, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = cvm.NewDescribeInstancesModificationRequest() + ) + + 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()) + } + }() + + for k, v := range param { + if k == "InstanceIds" { + request.InstanceIds = v.([]*string) + } + if k == "Filters" { + request.Filters = v.([]*cvm.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseCvmClient().DescribeInstancesModification(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()) + + if len(response.Response.InstanceTypeConfigStatusSet) < 1 { + return + } + + ret = response.Response.InstanceTypeConfigStatusSet + return +} From 7767f9fc785e16769b955308bb435d887cb179df Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Mon, 13 May 2024 15:54:33 +0800 Subject: [PATCH 05/20] refactor: regenerate datasource eip_address_quota --- tencentcloud/services/cvm/data_source_tc_eip_address_quota.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tencentcloud/services/cvm/data_source_tc_eip_address_quota.go b/tencentcloud/services/cvm/data_source_tc_eip_address_quota.go index c7c0035970..ef8d23cacc 100644 --- a/tencentcloud/services/cvm/data_source_tc_eip_address_quota.go +++ b/tencentcloud/services/cvm/data_source_tc_eip_address_quota.go @@ -73,7 +73,7 @@ func dataSourceTencentCloudEipAddressQuotaRead(d *schema.ResourceData, meta inte return err } - ids := make([]string, 0, len(respData)) + var ids []string quotaSetList := make([]map[string]interface{}, 0, len(respData)) if respData != nil { for _, quotaSet := range respData { From 7cce515b8823062606555cebba5bc77156cf5279 Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Mon, 13 May 2024 16:32:00 +0800 Subject: [PATCH 06/20] refactor: regenerate resource cvm_launch_template_default_version --- ..._tc_cvm_launch_template_default_version.go | 83 +++++++++++-------- ...unch_template_default_version_extension.go | 1 + .../services/cvm/service_tencentcloud_cvm.go | 53 ++++++++++++ 3 files changed, 103 insertions(+), 34 deletions(-) create mode 100644 tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version_extension.go diff --git a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version.go b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version.go index a63ecaa7be..bc57e513da 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version.go @@ -1,13 +1,16 @@ +// Code generated by iacg; DO NOT EDIT. package cvm import ( "context" "log" - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) func ResourceTencentCloudCvmLaunchTemplateDefaultVersion() *schema.Resource { @@ -21,15 +24,15 @@ func ResourceTencentCloudCvmLaunchTemplateDefaultVersion() *schema.Resource { }, Schema: map[string]*schema.Schema{ "launch_template_id": { + Type: schema.TypeString, Required: true, ForceNew: true, - Type: schema.TypeString, Description: "Instance launch template ID.", }, "default_version": { - Required: true, Type: schema.TypeInt, + Required: true, Description: "The number of the version that you want to set as the default version.", }, }, @@ -40,25 +43,16 @@ func resourceTencentCloudCvmLaunchTemplateDefaultVersionCreate(d *schema.Resourc defer tccommon.LogElapsed("resource.tencentcloud_cvm_launch_template_default_version.create")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - launchTemplateId := d.Get("launch_template_id").(string) - defaultVersion := d.Get("default_version").(int) - err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - e := service.ModifyLaunchTemplateDefaultVersion(ctx, launchTemplateId, defaultVersion) - if e != nil { - return tccommon.RetryError(e) - } - return nil - }) - if err != nil { - return err + var ( + launchTemplateId string + ) + if v, ok := d.GetOk("launch_template_id"); ok { + launchTemplateId = v.(string) } d.SetId(launchTemplateId) - return resourceTencentCloudCvmLaunchTemplateDefaultVersionRead(d, meta) + return resourceTencentCloudCvmLaunchTemplateDefaultVersionUpdate(d, meta) } func resourceTencentCloudCvmLaunchTemplateDefaultVersionRead(d *schema.ResourceData, meta interface{}) error { @@ -66,29 +60,28 @@ func resourceTencentCloudCvmLaunchTemplateDefaultVersionRead(d *schema.ResourceD defer tccommon.InconsistentCheck(d, meta)() logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) service := CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} launchTemplateId := d.Id() - launchTemplateVersions, err := service.DescribeLaunchTemplateVersions(ctx, launchTemplateId) + + _ = d.Set("launch_template_id", launchTemplateId) + + respData, err := service.DescribeCvmLaunchTemplateDefaultVersionById(ctx, launchTemplateId) if err != nil { return err } - if len(launchTemplateVersions) == 0 { + if respData == nil { d.SetId("") - log.Printf("[WARN]%s resource `CvmLaunchTemplateDefaultVersion` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) + log.Printf("[WARN]%s resource `cvm_launch_template_default_version` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) return nil } - - for _, launchTemplateVersion := range launchTemplateVersions { - if *launchTemplateVersion.IsDefaultVersion { - _ = d.Set("default_version", launchTemplateVersion.LaunchTemplateVersion) - break - } + if respData.LaunchTemplateVersion != nil { + _ = d.Set("launch_template_version", respData.LaunchTemplateVersion) } - _ = d.Set("launch_template_id", d.Id()) return nil } @@ -98,18 +91,40 @@ func resourceTencentCloudCvmLaunchTemplateDefaultVersionUpdate(d *schema.Resourc defer tccommon.InconsistentCheck(d, meta)() logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - if d.HasChange("default_version") { + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + + launchTemplateId := d.Id() + + needChange := false + mutableArgs := []string{"default_version"} + for _, v := range mutableArgs { + if d.HasChange(v) { + needChange = true + break + } + } + + if needChange { + request := cvm.NewModifyLaunchTemplateDefaultVersionRequest() + + request.LaunchTemplateId = &launchTemplateId + + if v, ok := d.GetOkExists("default_version"); ok { + request.DefaultVersion = helper.IntInt64(v.(int)) + } + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - e := service.ModifyLaunchTemplateDefaultVersion(ctx, d.Id(), d.Get("default_version").(int)) + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().ModifyLaunchTemplateDefaultVersionWithContext(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 cvm launch template default version failed, reason:%+v", logId, err) return err } } diff --git a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version_extension.go b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version_extension.go new file mode 100644 index 0000000000..b417cc5d9f --- /dev/null +++ b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version_extension.go @@ -0,0 +1 @@ +package cvm diff --git a/tencentcloud/services/cvm/service_tencentcloud_cvm.go b/tencentcloud/services/cvm/service_tencentcloud_cvm.go index 2b46349583..cb4a611739 100644 --- a/tencentcloud/services/cvm/service_tencentcloud_cvm.go +++ b/tencentcloud/services/cvm/service_tencentcloud_cvm.go @@ -1909,3 +1909,56 @@ func (me *CvmService) DescribeCvmInstancesModificationByFilter(ctx context.Conte ret = response.Response.InstanceTypeConfigStatusSet return } + +func (me *CvmService) DescribeCvmLaunchTemplateDefaultVersionById(ctx context.Context, launchTemplateId string) (ret *cvm.LaunchTemplateVersionInfo, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := cvm.NewDescribeLaunchTemplateVersionsRequest() + request.LaunchTemplateId = &launchTemplateId + + 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()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + var instances []*cvm.LaunchTemplateVersionInfo + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseCvmClient().DescribeLaunchTemplateVersions(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()) + + if response == nil || len(response.Response.LaunchTemplateVersionSet) < 1 { + break + } + instances = append(instances, response.Response.LaunchTemplateVersionSet...) + if len(response.Response.LaunchTemplateVersionSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + + for _, info := range instances { + if info.IsDefaultVersion != nil && *info.IsDefaultVersion == true { + ret = info + break + } + } + return +} From 5d33f9347926828708a11c1f60c21581e4645e62 Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Mon, 13 May 2024 16:37:55 +0800 Subject: [PATCH 07/20] refactor: regenerate resource cvm_program_fpga_image --- .../cvm/resource_tc_cvm_program_fpga_image.go | 48 ++++++++++++------- ...rce_tc_cvm_program_fpga_image_extension.go | 1 + 2 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 tencentcloud/services/cvm/resource_tc_cvm_program_fpga_image_extension.go diff --git a/tencentcloud/services/cvm/resource_tc_cvm_program_fpga_image.go b/tencentcloud/services/cvm/resource_tc_cvm_program_fpga_image.go index 006cee2ac6..3b99e9401b 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_program_fpga_image.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_program_fpga_image.go @@ -1,14 +1,15 @@ +// Code generated by iacg; DO NOT EDIT. package cvm import ( + "context" "log" - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -22,33 +23,33 @@ func ResourceTencentCloudCvmProgramFpgaImage() *schema.Resource { }, Schema: map[string]*schema.Schema{ "instance_id": { + Type: schema.TypeString, Required: true, ForceNew: true, - Type: schema.TypeString, Description: "The ID information of the instance.", }, "fpga_url": { + Type: schema.TypeString, Required: true, ForceNew: true, - Type: schema.TypeString, Description: "COS URL address of the FPGA image file.", }, "dbd_fs": { - Optional: true, - ForceNew: true, - Type: schema.TypeSet, + Type: schema.TypeSet, + Optional: true, + ForceNew: true, + Description: "The DBDF number of the FPGA card on the instance, if left blank, the FPGA image will be burned to all FPGA cards owned by the instance by default.", Elem: &schema.Schema{ Type: schema.TypeString, }, - Description: "The DBDF number of the FPGA card on the instance, if left blank, the FPGA image will be burned to all FPGA cards owned by the instance by default.", }, "dry_run": { + Type: schema.TypeBool, Optional: true, ForceNew: true, - Type: schema.TypeBool, Description: "Trial run, will not perform the actual burning action, the default is False.", }, }, @@ -61,11 +62,23 @@ func resourceTencentCloudCvmProgramFpgaImageCreate(d *schema.ResourceData, meta logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + + var ( + instanceId string + ) var ( - request = cvm.NewProgramFpgaImageRequest() + request = cvm.NewProgramFpgaImageRequest() + response = cvm.NewProgramFpgaImageResponse() ) - instanceId := d.Get("instance_id").(string) - request.InstanceId = helper.String(instanceId) + + if v, ok := d.GetOk("instance_id"); ok { + instanceId = v.(string) + } + + if v, ok := d.GetOk("instance_id"); ok { + request.InstanceId = helper.String(v.(string)) + } if v, ok := d.GetOk("fpga_url"); ok { request.FPGAUrl = helper.String(v.(string)) @@ -75,28 +88,31 @@ func resourceTencentCloudCvmProgramFpgaImageCreate(d *schema.ResourceData, meta dBDFsSet := v.(*schema.Set).List() for i := range dBDFsSet { dBDFs := dBDFsSet[i].(string) - request.DBDFs = append(request.DBDFs, &dBDFs) + request.DBDFs = append(request.DBDFs, helper.String(dBDFs)) } } - if v, _ := d.GetOk("dry_run"); v != nil { + if v, ok := d.GetOkExists("dry_run"); ok { request.DryRun = helper.Bool(v.(bool)) } err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().ProgramFpgaImage(request) + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().ProgramFpgaImageWithContext(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 operate cvm programFpgaImage failed, reason:%+v", logId, err) + log.Printf("[CRITAL]%s create cvm program fpga image failed, reason:%+v", logId, err) return err } + _ = response + d.SetId(instanceId) return resourceTencentCloudCvmProgramFpgaImageRead(d, meta) diff --git a/tencentcloud/services/cvm/resource_tc_cvm_program_fpga_image_extension.go b/tencentcloud/services/cvm/resource_tc_cvm_program_fpga_image_extension.go new file mode 100644 index 0000000000..b417cc5d9f --- /dev/null +++ b/tencentcloud/services/cvm/resource_tc_cvm_program_fpga_image_extension.go @@ -0,0 +1 @@ +package cvm From 0da9a268a9c0513027ae516b8f04fd7011f21237 Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Mon, 13 May 2024 16:43:43 +0800 Subject: [PATCH 08/20] refactor: regenerate resource cvm_renew_host --- .../cvm/resource_tc_cvm_renew_host.go | 44 ++++++++++++++----- .../resource_tc_cvm_renew_host_extension.go | 1 + 2 files changed, 33 insertions(+), 12 deletions(-) create mode 100644 tencentcloud/services/cvm/resource_tc_cvm_renew_host_extension.go diff --git a/tencentcloud/services/cvm/resource_tc_cvm_renew_host.go b/tencentcloud/services/cvm/resource_tc_cvm_renew_host.go index 2ab672b4c9..0bcfc80560 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_renew_host.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_renew_host.go @@ -1,14 +1,15 @@ +// Code generated by iacg; DO NOT EDIT. package cvm import ( + "context" "log" - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -19,16 +20,16 @@ func ResourceTencentCloudCvmRenewHost() *schema.Resource { Delete: resourceTencentCloudCvmRenewHostDelete, Schema: map[string]*schema.Schema{ "host_id": { + Type: schema.TypeString, Required: true, ForceNew: true, - Type: schema.TypeString, Description: "CDH instance ID.", }, "host_charge_prepaid": { + Type: schema.TypeList, Required: true, ForceNew: true, - Type: schema.TypeList, MaxItems: 1, Description: "Prepaid mode, that is, yearly and monthly subscription related parameter settings. Through this parameter, you can specify attributes such as the purchase duration of the Subscription instance and whether to set automatic renewal. If the payment mode of the specified instance is prepaid, this parameter must be passed.", Elem: &schema.Resource{ @@ -56,37 +57,56 @@ func resourceTencentCloudCvmRenewHostCreate(d *schema.ResourceData, meta interfa logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + var ( - request = cvm.NewRenewHostsRequest() + hostId string ) - hostId := d.Get("host_id").(string) - request.HostIds = []*string{&hostId} + var ( + request = cvm.NewRenewHostsRequest() + response = cvm.NewRenewHostsResponse() + ) + + if v, ok := d.GetOk("host_id"); ok { + hostId = v.(string) + } - if dMap, ok := helper.InterfacesHeadMap(d, "host_charge_prepaid"); ok { + if v, ok := d.GetOk("host_id"); ok { + hostIdsSet := v.(*schema.Set).List() + for i := range hostIdsSet { + hostIds := hostIdsSet[i].(string) + request.HostIds = append(request.HostIds, helper.String(hostIds)) + } + } + + if hostChargePrepaidMap, ok := helper.InterfacesHeadMap(d, "host_charge_prepaid"); ok { chargePrepaid := cvm.ChargePrepaid{} - if v, ok := dMap["period"]; ok { + if v, ok := hostChargePrepaidMap["period"]; ok { chargePrepaid.Period = helper.IntUint64(v.(int)) } - if v, ok := dMap["renew_flag"]; ok { + if v, ok := hostChargePrepaidMap["renew_flag"]; ok { chargePrepaid.RenewFlag = helper.String(v.(string)) } request.HostChargePrepaid = &chargePrepaid } err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().RenewHosts(request) + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().RenewHostsWithContext(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 operate cvm renewHost failed, reason:%+v", logId, err) + log.Printf("[CRITAL]%s create cvm renew host failed, reason:%+v", logId, err) return err } + _ = response + d.SetId(hostId) return resourceTencentCloudCvmRenewHostRead(d, meta) diff --git a/tencentcloud/services/cvm/resource_tc_cvm_renew_host_extension.go b/tencentcloud/services/cvm/resource_tc_cvm_renew_host_extension.go new file mode 100644 index 0000000000..b417cc5d9f --- /dev/null +++ b/tencentcloud/services/cvm/resource_tc_cvm_renew_host_extension.go @@ -0,0 +1 @@ +package cvm From 3a19de8bb52a8d60e804ee9ea84b01d48522d23e Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Mon, 13 May 2024 16:55:34 +0800 Subject: [PATCH 09/20] refactor: regenerate resource cvm_reboot_instance --- .../cvm/resource_tc_cvm_reboot_instance.go | 49 +++++++++++++------ ...source_tc_cvm_reboot_instance_extension.go | 1 + 2 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 tencentcloud/services/cvm/resource_tc_cvm_reboot_instance_extension.go diff --git a/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance.go b/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance.go index ff6da860f8..3dd0d36e76 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance.go @@ -1,14 +1,15 @@ +// Code generated by iacg; DO NOT EDIT. package cvm import ( + "context" "log" - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -17,28 +18,27 @@ func ResourceTencentCloudCvmRebootInstance() *schema.Resource { Create: resourceTencentCloudCvmRebootInstanceCreate, Read: resourceTencentCloudCvmRebootInstanceRead, Delete: resourceTencentCloudCvmRebootInstanceDelete, - Schema: map[string]*schema.Schema{ "instance_id": { + Type: schema.TypeString, Required: true, ForceNew: true, - Type: schema.TypeString, Description: "Instance ID.", }, "force_reboot": { + Type: schema.TypeBool, Optional: true, ForceNew: true, - Type: schema.TypeBool, ConflictsWith: []string{"stop_type"}, - Deprecated: "It has been deprecated from version 1.81.21. Please use `stop_type` instead.", Description: "This parameter has been disused. We recommend using StopType instead. Note that ForceReboot and StopType parameters cannot be specified at the same time. Whether to forcibly restart an instance after a normal restart fails. Valid values are `TRUE` and `FALSE`. Default value: FALSE.", + Deprecated: "It has been deprecated from version 1.81.21. Please use `stop_type` instead.", }, "stop_type": { + Type: schema.TypeString, Optional: true, ForceNew: true, - Type: schema.TypeString, ConflictsWith: []string{"force_reboot"}, Description: "Shutdown type. Valid values: `SOFT`: soft shutdown; `HARD`: hard shutdown; `SOFT_FIRST`: perform a soft shutdown first, and perform a hard shutdown if the soft shutdown fails. Default value: SOFT.", }, @@ -52,34 +52,53 @@ func resourceTencentCloudCvmRebootInstanceCreate(d *schema.ResourceData, meta in logId := tccommon.GetLogId(tccommon.ContextNil) - request := cvm.NewRebootInstancesRequest() - instanceId := d.Get("instance_id").(string) - request.InstanceIds = []*string{&instanceId} + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - if v, _ := d.GetOk("force_reboot"); v != nil { - if _, ok := d.GetOk("stop_type"); !ok { - request.ForceReboot = helper.Bool(v.(bool)) + var ( + instanceId string + ) + var ( + request = cvm.NewRebootInstancesRequest() + response = cvm.NewRebootInstancesResponse() + ) + + if v, ok := d.GetOk("instance_id"); ok { + instanceId = v.(string) + } + + if v, ok := d.GetOk("instance_id"); ok { + instanceIdsSet := v.(*schema.Set).List() + for i := range instanceIdsSet { + instanceIds := instanceIdsSet[i].(string) + request.InstanceIds = append(request.InstanceIds, helper.String(instanceIds)) } } + if v, ok := d.GetOkExists("force_reboot"); ok { + request.ForceReboot = helper.Bool(v.(bool)) + } + if v, ok := d.GetOk("stop_type"); ok { request.StopType = helper.String(v.(string)) } err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().RebootInstances(request) + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().RebootInstancesWithContext(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 operate cvm rebootInstance failed, reason:%+v", logId, err) + log.Printf("[CRITAL]%s create cvm reboot instance failed, reason:%+v", logId, err) return err } + _ = response + d.SetId(instanceId) return resourceTencentCloudCvmRebootInstanceRead(d, meta) diff --git a/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance_extension.go b/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance_extension.go new file mode 100644 index 0000000000..b417cc5d9f --- /dev/null +++ b/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance_extension.go @@ -0,0 +1 @@ +package cvm From dffc08f4a0057f297b736d5a39888f2a396b6bbf Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Mon, 13 May 2024 18:24:06 +0800 Subject: [PATCH 10/20] refactor: regenerate cvm_modify_instance_disk_type --- ...source_tc_cvm_modify_instance_disk_type.go | 111 ++++++++---------- ...cvm_modify_instance_disk_type_extension.go | 1 + 2 files changed, 51 insertions(+), 61 deletions(-) create mode 100644 tencentcloud/services/cvm/resource_tc_cvm_modify_instance_disk_type_extension.go diff --git a/tencentcloud/services/cvm/resource_tc_cvm_modify_instance_disk_type.go b/tencentcloud/services/cvm/resource_tc_cvm_modify_instance_disk_type.go index 293b3f8f2c..67a2a6b6fe 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_modify_instance_disk_type.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_modify_instance_disk_type.go @@ -1,14 +1,15 @@ +// Code generated by iacg; DO NOT EDIT. package cvm import ( + "context" "log" - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -22,16 +23,16 @@ func ResourceTencentCloudCvmModifyInstanceDiskType() *schema.Resource { }, Schema: map[string]*schema.Schema{ "instance_id": { + Type: schema.TypeString, Required: true, ForceNew: true, - Type: schema.TypeString, Description: "Instance ID. To obtain the instance IDs, you can call DescribeInstances and look for InstanceId in the response.", }, "data_disks": { + Type: schema.TypeList, Optional: true, ForceNew: true, - Type: schema.TypeList, Description: "For instance data disk configuration information, you only need to specify the media type of the target cloud disk to be converted, and specify the value of DiskType. Currently, only one data disk conversion is supported. The CdcId parameter is only supported for instances of the CDHPAID type.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -41,20 +42,9 @@ func ResourceTencentCloudCvmModifyInstanceDiskType() *schema.Resource { Description: "Data disk size (in GB). The minimum adjustment increment is 10 GB. The value range varies by data disk type. The default value is 0, indicating that no data disk is purchased. For more information, see the product documentation.", }, "disk_type": { - Type: schema.TypeString, - Optional: true, - Description: "Data disk type. Valid values:\n" + - "- LOCAL_BASIC: local hard disk;\n" + - "- LOCAL_SSD: local SSD hard disk;\n" + - "- LOCAL_NVME: local NVME hard disk, which is strongly related to InstanceType and cannot be specified;\n" + - "- LOCAL_PRO: local HDD hard disk, which is strongly related to InstanceType and cannot be specified;\n" + - "- CLOUD_BASIC: ordinary cloud disk;\n" + - "- CLOUD_PREMIUM: high-performance cloud disk;\n" + - "- CLOUD_SSD:SSD cloud disk;\n" + - "- CLOUD_HSSD: enhanced SSD cloud disk;\n" + - "- CLOUD_TSSD: extremely fast SSD cloud disk;\n" + - "- CLOUD_BSSD: general-purpose SSD cloud disk;\n" + - "Default value: LOCAL_BASIC.", + Type: schema.TypeString, + Optional: true, + Description: "Data disk type. Valid values:\n- LOCAL_BASIC: local hard disk;\n- LOCAL_SSD: local SSD hard disk;\n- LOCAL_NVME: local NVME hard disk, which is strongly related to InstanceType and cannot be specified;\n- LOCAL_PRO: local HDD hard disk, which is strongly related to InstanceType and cannot be specified;\n- CLOUD_BASIC: ordinary cloud disk;\n- CLOUD_PREMIUM: high-performance cloud disk;\n- CLOUD_SSD:SSD cloud disk;\n- CLOUD_HSSD: enhanced SSD cloud disk;\n- CLOUD_TSSD: extremely fast SSD cloud disk;\n- CLOUD_BSSD: general-purpose SSD cloud disk;\nDefault value: LOCAL_BASIC.\n", }, "disk_id": { Type: schema.TypeString, @@ -62,12 +52,9 @@ func ResourceTencentCloudCvmModifyInstanceDiskType() *schema.Resource { Description: "Data disk ID. Note that it's not available for LOCAL_BASIC and LOCAL_SSD disks.", }, "delete_with_instance": { - Type: schema.TypeBool, - Optional: true, - Description: "Whether to terminate the data disk when its CVM is terminated. Valid values:\n" + - "- TRUE: terminate the data disk when its CVM is terminated. This value only supports pay-as-you-go cloud disks billed on an hourly basis.\n" + - "- FALSE: retain the data disk when its CVM is terminated.\n" + - "Default value: TRUE.", + Type: schema.TypeBool, + Optional: true, + Description: "Whether to terminate the data disk when its CVM is terminated. Valid values:\n- TRUE: terminate the data disk when its CVM is terminated. This value only supports pay-as-you-go cloud disks billed on an hourly basis.\n- FALSE: retain the data disk when its CVM is terminated.\nDefault value: TRUE.\n", }, "snapshot_id": { Type: schema.TypeString, @@ -75,12 +62,9 @@ func ResourceTencentCloudCvmModifyInstanceDiskType() *schema.Resource { Description: "Data disk snapshot ID. The size of the selected data disk snapshot must be smaller than that of the data disk.", }, "encrypt": { - Type: schema.TypeBool, - Optional: true, - Description: "Specifies whether the data disk is encrypted. Valid values:\n" + - "- TRUE: encrypted\n" + - "- FALSE: not encrypted\n" + - "Default value: FALSE.", + Type: schema.TypeBool, + Optional: true, + Description: "Specifies whether the data disk is encrypted. Valid values:\n- TRUE: encrypted\n- FALSE: not encrypted\nDefault value: FALSE.\n", }, "kms_key_id": { Type: schema.TypeString, @@ -102,24 +86,17 @@ func ResourceTencentCloudCvmModifyInstanceDiskType() *schema.Resource { }, "system_disk": { + Type: schema.TypeList, Optional: true, ForceNew: true, - Type: schema.TypeList, MaxItems: 1, Description: "For instance system disk configuration information, you only need to specify the nature type of the target cloud disk to be converted, and specify the value of DiskType. Only CDHPAID type instances are supported to specify Cd.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "disk_type": { - Type: schema.TypeString, - Optional: true, - Description: "System disk type. Valid values:" + - "- LOCAL_BASIC: local disk\n" + - "- LOCAL_SSD: local SSD disk\n" + - "- CLOUD_BASIC: ordinary cloud disk\n" + - "- CLOUD_SSD: SSD cloud disk\n" + - "- CLOUD_PREMIUM: Premium cloud storage\n" + - "- CLOUD_BSSD: Balanced SSD\n" + - "The disk currently in stock will be used by default.", + Type: schema.TypeString, + Optional: true, + Description: "System disk type. Valid values:\n- LOCAL_BASIC: local disk\n- LOCAL_SSD: local SSD disk\n- CLOUD_BASIC: ordinary cloud disk\n- CLOUD_SSD: SSD cloud disk\n- CLOUD_PREMIUM: Premium cloud storage\n- CLOUD_BSSD: Balanced SSD\nThe disk currently in stock will be used by default.\n", }, "disk_id": { Type: schema.TypeString, @@ -149,81 +126,93 @@ func resourceTencentCloudCvmModifyInstanceDiskTypeCreate(d *schema.ResourceData, logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + var ( - request = cvm.NewModifyInstanceDiskTypeRequest() instanceId string ) + var ( + request = cvm.NewModifyInstanceDiskTypeRequest() + response = cvm.NewModifyInstanceDiskTypeResponse() + ) + if v, ok := d.GetOk("instance_id"); ok { - instanceId := v.(string) - request.InstanceId = helper.String(instanceId) + instanceId = v.(string) + } + + if v, ok := d.GetOk("instance_id"); ok { + request.InstanceId = helper.String(v.(string)) } if v, ok := d.GetOk("data_disks"); ok { for _, item := range v.([]interface{}) { - dMap := item.(map[string]interface{}) + dataDisksMap := item.(map[string]interface{}) dataDisk := cvm.DataDisk{} - if v, ok := dMap["disk_size"]; ok { + if v, ok := dataDisksMap["disk_size"]; ok { dataDisk.DiskSize = helper.IntInt64(v.(int)) } - if v, ok := dMap["disk_type"]; ok { + if v, ok := dataDisksMap["disk_type"]; ok { dataDisk.DiskType = helper.String(v.(string)) } - if v, ok := dMap["disk_id"]; ok { + if v, ok := dataDisksMap["disk_id"]; ok { dataDisk.DiskId = helper.String(v.(string)) } - if v, ok := dMap["delete_with_instance"]; ok { + if v, ok := dataDisksMap["delete_with_instance"]; ok { dataDisk.DeleteWithInstance = helper.Bool(v.(bool)) } - if v, ok := dMap["snapshot_id"]; ok { + if v, ok := dataDisksMap["snapshot_id"]; ok { dataDisk.SnapshotId = helper.String(v.(string)) } - if v, ok := dMap["encrypt"]; ok { + if v, ok := dataDisksMap["encrypt"]; ok { dataDisk.Encrypt = helper.Bool(v.(bool)) } - if v, ok := dMap["kms_key_id"]; ok { + if v, ok := dataDisksMap["kms_key_id"]; ok { dataDisk.KmsKeyId = helper.String(v.(string)) } - if v, ok := dMap["throughput_performance"]; ok { + if v, ok := dataDisksMap["throughput_performance"]; ok { dataDisk.ThroughputPerformance = helper.IntInt64(v.(int)) } - if v, ok := dMap["cdc_id"]; ok { + if v, ok := dataDisksMap["cdc_id"]; ok { dataDisk.CdcId = helper.String(v.(string)) } request.DataDisks = append(request.DataDisks, &dataDisk) } } - if dMap, ok := helper.InterfacesHeadMap(d, "system_disk"); ok { + if systemDiskMap, ok := helper.InterfacesHeadMap(d, "system_disk"); ok { systemDisk := cvm.SystemDisk{} - if v, ok := dMap["disk_type"]; ok { + if v, ok := systemDiskMap["disk_type"]; ok { systemDisk.DiskType = helper.String(v.(string)) } - if v, ok := dMap["disk_id"]; ok { + if v, ok := systemDiskMap["disk_id"]; ok { systemDisk.DiskId = helper.String(v.(string)) } - if v, ok := dMap["disk_size"]; ok { + if v, ok := systemDiskMap["disk_size"]; ok { systemDisk.DiskSize = helper.IntInt64(v.(int)) } - if v, ok := dMap["cdc_id"]; ok { + if v, ok := systemDiskMap["cdc_id"]; ok { systemDisk.CdcId = helper.String(v.(string)) } request.SystemDisk = &systemDisk } err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().ModifyInstanceDiskType(request) + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().ModifyInstanceDiskTypeWithContext(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 operate cvm modifyInstanceDiskType failed, reason:%+v", logId, err) + log.Printf("[CRITAL]%s create cvm modify instance disk type failed, reason:%+v", logId, err) return err } + _ = response + d.SetId(instanceId) return resourceTencentCloudCvmModifyInstanceDiskTypeRead(d, meta) diff --git a/tencentcloud/services/cvm/resource_tc_cvm_modify_instance_disk_type_extension.go b/tencentcloud/services/cvm/resource_tc_cvm_modify_instance_disk_type_extension.go new file mode 100644 index 0000000000..b417cc5d9f --- /dev/null +++ b/tencentcloud/services/cvm/resource_tc_cvm_modify_instance_disk_type_extension.go @@ -0,0 +1 @@ +package cvm From db3b93c2401e65598a788bbc492bae6fe2fa7e9d Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Mon, 13 May 2024 19:59:56 +0800 Subject: [PATCH 11/20] refactor: regenerate resource cvm_launch_template_version --- ...resource_tc_cvm_launch_template_version.go | 646 +++++++++--------- ...c_cvm_launch_template_version_extension.go | 1 + .../services/cvm/service_tencentcloud_cvm.go | 6 +- 3 files changed, 339 insertions(+), 314 deletions(-) create mode 100644 tencentcloud/services/cvm/resource_tc_cvm_launch_template_version_extension.go diff --git a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_version.go b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_version.go index 9406748c71..1728650dee 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_version.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_version.go @@ -1,18 +1,17 @@ +// Code generated by iacg; DO NOT EDIT. package cvm import ( "context" "fmt" "log" - "strconv" "strings" - tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -26,9 +25,9 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, Schema: map[string]*schema.Schema{ "placement": { + Type: schema.TypeList, Required: true, ForceNew: true, - Type: schema.TypeList, MaxItems: 1, Description: "Location of the instance. You can use this parameter to specify the attributes of the instance, such as its availability zone, project, and CDH (for dedicated CVMs).", Elem: &schema.Resource{ @@ -47,73 +46,73 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { Description: "ID of the project to which the instance belongs. This parameter can be obtained from the projectId returned by DescribeProject. If this is left empty, the default project is used.", }, "host_ids": { - Type: schema.TypeSet, - Elem: &schema.Schema{ - Type: schema.TypeString, - }, + Type: schema.TypeSet, Optional: true, Computed: true, ForceNew: true, Description: "ID list of CDHs from which the instance can be created. If you have purchased CDHs and specify this parameter, the instances you purchase will be randomly deployed on the CDHs.", - }, - "host_ips": { - Type: schema.TypeSet, Elem: &schema.Schema{ Type: schema.TypeString, }, + }, + "host_ips": { + Type: schema.TypeSet, Optional: true, Computed: true, ForceNew: true, Description: "IPs of the hosts to create CVMs.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, }, }, }, }, "launch_template_id": { + Type: schema.TypeString, Required: true, ForceNew: true, - Type: schema.TypeString, Description: "Instance launch template ID. This parameter is used as a basis for creating new template versions.", }, "launch_template_version": { + Type: schema.TypeInt, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeInt, Description: "This parameter, when specified, is used to create instance launch templates. If this parameter is not specified, the default version will be used.", }, "launch_template_version_description": { + Type: schema.TypeString, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeString, Description: "Description of instance launch template versions. This parameter can contain 2-256 characters.", }, "instance_type": { + Type: schema.TypeString, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeString, Description: "The type of the instance. If this parameter is not specified, the system will dynamically specify the default model according to the resource sales in the current region.", }, "image_id": { + Type: schema.TypeString, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeString, Description: "Image ID.", }, "system_disk": { + Type: schema.TypeList, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeList, MaxItems: 1, Description: "System disk configuration information of the instance. If this parameter is not specified, it is assigned according to the system default.", Elem: &schema.Resource{ @@ -151,10 +150,10 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, "data_disks": { + Type: schema.TypeList, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeList, Description: "The configuration information of instance data disks. If this parameter is not specified, no data disk will be purchased by default.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -225,10 +224,10 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, "virtual_private_cloud": { + Type: schema.TypeList, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeList, MaxItems: 1, Description: "Describes information on VPC, including subnets, IP addresses, etc.", Elem: &schema.Resource{ @@ -253,14 +252,14 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { Description: "Whether to use a CVM instance as a public gateway. The public gateway is only available when the instance has a public IP and resides in a VPC.", }, "private_ip_addresses": { - Type: schema.TypeSet, - Elem: &schema.Schema{ - Type: schema.TypeString, - }, + Type: schema.TypeSet, Optional: true, Computed: true, ForceNew: true, Description: "Array of VPC subnet IPs. You can use this parameter when creating instances or modifying VPC attributes of instances. Currently you can specify multiple IPs in one subnet only when creating multiple instances at the same time.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, }, "ipv6_address_count": { Type: schema.TypeInt, @@ -274,10 +273,10 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, "internet_accessible": { + Type: schema.TypeList, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeList, MaxItems: 1, Description: "Describes the accessibility of an instance in the public network, including its network billing method, maximum bandwidth, etc.", Elem: &schema.Resource{ @@ -315,26 +314,26 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, "instance_count": { + Type: schema.TypeInt, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeInt, Description: "The number of instances to be purchased.", }, "instance_name": { + Type: schema.TypeString, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeString, Description: "Instance name to be displayed.", }, "login_settings": { + Type: schema.TypeList, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeList, MaxItems: 1, Description: "Describes login settings of an instance.", Elem: &schema.Resource{ @@ -347,14 +346,14 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { Description: "Login password of the instance.", }, "key_ids": { - Type: schema.TypeSet, - Elem: &schema.Schema{ - Type: schema.TypeString, - }, + Type: schema.TypeSet, Optional: true, Computed: true, ForceNew: true, Description: "List of key IDs. After an instance is associated with a key, you can access the instance with the private key in the key pair.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, }, "keep_image_login": { Type: schema.TypeString, @@ -368,31 +367,31 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, "security_group_ids": { - Optional: true, - Computed: true, - ForceNew: true, - Type: schema.TypeSet, + Type: schema.TypeSet, + Optional: true, + Computed: true, + ForceNew: true, + Description: "Security groups to which the instance belongs. If this parameter is not specified, the instance will be associated with default security groups.", Elem: &schema.Schema{ Type: schema.TypeString, }, - Description: "Security groups to which the instance belongs. If this parameter is not specified, the instance will be associated with default security groups.", }, "enhanced_service": { + Type: schema.TypeList, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeList, MaxItems: 1, Description: "Enhanced service. You can use this parameter to specify whether to enable services such as Anti-DDoS and Cloud Monitor. If this parameter is not specified, Cloud Monitor and Anti-DDoS are enabled for public images by default.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "security_service": { Type: schema.TypeList, - MaxItems: 1, Optional: true, Computed: true, ForceNew: true, + MaxItems: 1, Description: "Enables cloud security service. If this parameter is not specified, the cloud security service will be enabled by default.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -407,10 +406,10 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, "monitor_service": { Type: schema.TypeList, - MaxItems: 1, Optional: true, Computed: true, ForceNew: true, + MaxItems: 1, Description: "Enables cloud monitor service. If this parameter is not specified, the cloud monitor service will be enabled by default.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -426,10 +425,10 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, "automation_service": { Type: schema.TypeList, - MaxItems: 1, Optional: true, Computed: true, ForceNew: true, + MaxItems: 1, Description: "Whether to enable the TAT service. If this parameter is not specified, the TAT service is enabled for public images and disabled for other images by default.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -448,26 +447,26 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, "client_token": { + Type: schema.TypeString, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeString, Description: "A unique string supplied by the client to ensure that the request is idempotent. Its maximum length is 64 ASCII characters. If this parameter is not specified, the idem-potency of the request cannot be guaranteed.", }, "host_name": { + Type: schema.TypeString, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeString, Description: "Hostname of a CVM.", }, "action_timer": { + Type: schema.TypeList, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeList, MaxItems: 1, Description: "Scheduled tasks.", Elem: &schema.Resource{ @@ -488,10 +487,10 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, "externals": { Type: schema.TypeList, - MaxItems: 1, Optional: true, Computed: true, ForceNew: true, + MaxItems: 1, Description: "Additional data.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -503,21 +502,21 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { Description: "Release address.", }, "unsupport_networks": { - Type: schema.TypeSet, - Elem: &schema.Schema{ - Type: schema.TypeString, - }, + Type: schema.TypeSet, Optional: true, Computed: true, ForceNew: true, Description: "Not supported network.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, }, "storage_block_attr": { Type: schema.TypeList, - MaxItems: 1, Optional: true, Computed: true, ForceNew: true, + MaxItems: 1, Description: "Information on local HDD storage.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -550,20 +549,20 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, "disaster_recover_group_ids": { - Optional: true, - ForceNew: true, - Type: schema.TypeSet, + Type: schema.TypeSet, + Optional: true, + ForceNew: true, + Description: "Placement group ID. You can only specify one.", Elem: &schema.Schema{ Type: schema.TypeString, }, - Description: "Placement group ID. You can only specify one.", }, "tag_specification": { + Type: schema.TypeList, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeList, Description: "Description of tags associated with resource instances during instance creation.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -599,19 +598,19 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, "instance_market_options": { + Type: schema.TypeList, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeList, MaxItems: 1, Description: "Options related to bidding requests.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "spot_options": { Type: schema.TypeList, - MaxItems: 1, Required: true, ForceNew: true, + MaxItems: 1, Description: "Options related to bidding.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -643,50 +642,50 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, "user_data": { + Type: schema.TypeString, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeString, Description: "User data provided to the instance. This parameter needs to be encoded in base64 format with the maximum size of 16 KB.", }, "dry_run": { + Type: schema.TypeBool, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeBool, Description: "Whether the request is a dry run only.", }, "cam_role_name": { + Type: schema.TypeString, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeString, Description: "The role name of CAM.", }, "hpc_cluster_id": { + Type: schema.TypeString, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeString, Description: "HPC cluster ID. The HPC cluster must and can only be specified for a high-performance computing instance.", }, "instance_charge_type": { + Type: schema.TypeString, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeString, Description: "The charge type of instance.", }, "instance_charge_prepaid": { + Type: schema.TypeList, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeList, MaxItems: 1, Description: "Describes the billing method of an instance.", Elem: &schema.Resource{ @@ -709,10 +708,10 @@ func ResourceTencentCloudCvmLaunchTemplateVersion() *schema.Resource { }, "disable_api_termination": { + Type: schema.TypeBool, Optional: true, Computed: true, ForceNew: true, - Type: schema.TypeBool, Description: "Whether the termination protection is enabled. `TRUE`: Enable instance protection, which means that this instance can not be deleted by an API action.`FALSE`: Do not enable the instance protection. Default value: `FALSE`.", }, }, @@ -725,39 +724,48 @@ func resourceTencentCloudCvmLaunchTemplateVersionCreate(d *schema.ResourceData, logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + var ( - request = cvm.NewCreateLaunchTemplateVersionRequest() - response = cvm.NewCreateLaunchTemplateVersionResponse() - launchTemplateId string + launchTemplateId string + launchTemplateVersionNumber int64 ) - if dMap, ok := helper.InterfacesHeadMap(d, "placement"); ok { + var ( + request = cvm.NewCreateLaunchTemplateVersionRequest() + response = cvm.NewCreateLaunchTemplateVersionResponse() + ) + + if v, ok := d.GetOk("launch_template_id"); ok { + launchTemplateId = v.(string) + } + + if placementMap, ok := helper.InterfacesHeadMap(d, "placement"); ok { placement := cvm.Placement{} - if v, ok := dMap["zone"]; ok { + if v, ok := placementMap["zone"]; ok { placement.Zone = helper.String(v.(string)) } - if v, ok := dMap["project_id"]; ok { + if v, ok := placementMap["project_id"]; ok { placement.ProjectId = helper.IntInt64(v.(int)) } - if v, ok := dMap["host_ids"]; ok { + if v, ok := placementMap["host_ids"]; ok { hostIdsSet := v.(*schema.Set).List() for i := range hostIdsSet { hostIds := hostIdsSet[i].(string) - placement.HostIds = append(placement.HostIds, &hostIds) + placement.HostIds = append(placement.HostIds, helper.String(hostIds)) } } - if v, ok := dMap["host_ips"]; ok { + if v, ok := placementMap["host_ips"]; ok { hostIpsSet := v.(*schema.Set).List() for i := range hostIpsSet { hostIps := hostIpsSet[i].(string) - placement.HostIps = append(placement.HostIps, &hostIps) + placement.HostIps = append(placement.HostIps, helper.String(hostIps)) } } request.Placement = &placement } if v, ok := d.GetOk("launch_template_id"); ok { - launchTemplateId = v.(string) - request.LaunchTemplateId = helper.String(launchTemplateId) + request.LaunchTemplateId = helper.String(v.(string)) } if v, ok := d.GetOkExists("launch_template_version"); ok { @@ -776,18 +784,18 @@ func resourceTencentCloudCvmLaunchTemplateVersionCreate(d *schema.ResourceData, request.ImageId = helper.String(v.(string)) } - if dMap, ok := helper.InterfacesHeadMap(d, "system_disk"); ok { + if systemDiskMap, ok := helper.InterfacesHeadMap(d, "system_disk"); ok { systemDisk := cvm.SystemDisk{} - if v, ok := dMap["disk_type"]; ok { + if v, ok := systemDiskMap["disk_type"]; ok { systemDisk.DiskType = helper.String(v.(string)) } - if v, ok := dMap["disk_id"]; ok { + if v, ok := systemDiskMap["disk_id"]; ok { systemDisk.DiskId = helper.String(v.(string)) } - if v, ok := dMap["disk_size"]; ok { + if v, ok := systemDiskMap["disk_size"]; ok { systemDisk.DiskSize = helper.IntInt64(v.(int)) } - if v, ok := dMap["cdc_id"]; ok { + if v, ok := systemDiskMap["cdc_id"]; ok { systemDisk.CdcId = helper.String(v.(string)) } request.SystemDisk = &systemDisk @@ -795,75 +803,75 @@ func resourceTencentCloudCvmLaunchTemplateVersionCreate(d *schema.ResourceData, if v, ok := d.GetOk("data_disks"); ok { for _, item := range v.([]interface{}) { - dMap := item.(map[string]interface{}) + dataDisksMap := item.(map[string]interface{}) dataDisk := cvm.DataDisk{} - if v, ok := dMap["disk_size"]; ok { + if v, ok := dataDisksMap["disk_size"]; ok { dataDisk.DiskSize = helper.IntInt64(v.(int)) } - if v, ok := dMap["disk_type"]; ok { + if v, ok := dataDisksMap["disk_type"]; ok { dataDisk.DiskType = helper.String(v.(string)) } - if v, ok := dMap["disk_id"]; ok { + if v, ok := dataDisksMap["disk_id"]; ok { dataDisk.DiskId = helper.String(v.(string)) } - if v, ok := dMap["delete_with_instance"]; ok { + if v, ok := dataDisksMap["delete_with_instance"]; ok { dataDisk.DeleteWithInstance = helper.Bool(v.(bool)) } - if v, ok := dMap["snapshot_id"]; ok { + if v, ok := dataDisksMap["snapshot_id"]; ok { dataDisk.SnapshotId = helper.String(v.(string)) } - if v, ok := dMap["encrypt"]; ok { + if v, ok := dataDisksMap["encrypt"]; ok { dataDisk.Encrypt = helper.Bool(v.(bool)) } - if v, ok := dMap["kms_key_id"]; ok { + if v, ok := dataDisksMap["kms_key_id"]; ok { dataDisk.KmsKeyId = helper.String(v.(string)) } - if v, ok := dMap["throughput_performance"]; ok { + if v, ok := dataDisksMap["throughput_performance"]; ok { dataDisk.ThroughputPerformance = helper.IntInt64(v.(int)) } - if v, ok := dMap["cdc_id"]; ok { + if v, ok := dataDisksMap["cdc_id"]; ok { dataDisk.CdcId = helper.String(v.(string)) } request.DataDisks = append(request.DataDisks, &dataDisk) } } - if dMap, ok := helper.InterfacesHeadMap(d, "virtual_private_cloud"); ok { + if virtualPrivateCloudMap, ok := helper.InterfacesHeadMap(d, "virtual_private_cloud"); ok { virtualPrivateCloud := cvm.VirtualPrivateCloud{} - if v, ok := dMap["vpc_id"]; ok { + if v, ok := virtualPrivateCloudMap["vpc_id"]; ok { virtualPrivateCloud.VpcId = helper.String(v.(string)) } - if v, ok := dMap["subnet_id"]; ok { + if v, ok := virtualPrivateCloudMap["subnet_id"]; ok { virtualPrivateCloud.SubnetId = helper.String(v.(string)) } - if v, ok := dMap["as_vpc_gateway"]; ok { + if v, ok := virtualPrivateCloudMap["as_vpc_gateway"]; ok { virtualPrivateCloud.AsVpcGateway = helper.Bool(v.(bool)) } - if v, ok := dMap["private_ip_addresses"]; ok { + if v, ok := virtualPrivateCloudMap["private_ip_addresses"]; ok { privateIpAddressesSet := v.(*schema.Set).List() for i := range privateIpAddressesSet { privateIpAddresses := privateIpAddressesSet[i].(string) - virtualPrivateCloud.PrivateIpAddresses = append(virtualPrivateCloud.PrivateIpAddresses, &privateIpAddresses) + virtualPrivateCloud.PrivateIpAddresses = append(virtualPrivateCloud.PrivateIpAddresses, helper.String(privateIpAddresses)) } } - if v, ok := dMap["ipv6_address_count"]; ok { + if v, ok := virtualPrivateCloudMap["ipv6_address_count"]; ok { virtualPrivateCloud.Ipv6AddressCount = helper.IntUint64(v.(int)) } request.VirtualPrivateCloud = &virtualPrivateCloud } - if dMap, ok := helper.InterfacesHeadMap(d, "internet_accessible"); ok { + if internetAccessibleMap, ok := helper.InterfacesHeadMap(d, "internet_accessible"); ok { internetAccessible := cvm.InternetAccessible{} - if v, ok := dMap["internet_charge_type"]; ok { + if v, ok := internetAccessibleMap["internet_charge_type"]; ok { internetAccessible.InternetChargeType = helper.String(v.(string)) } - if v, ok := dMap["internet_max_bandwidth_out"]; ok { + if v, ok := internetAccessibleMap["internet_max_bandwidth_out"]; ok { internetAccessible.InternetMaxBandwidthOut = helper.IntInt64(v.(int)) } - if v, ok := dMap["public_ip_assigned"]; ok { + if v, ok := internetAccessibleMap["public_ip_assigned"]; ok { internetAccessible.PublicIpAssigned = helper.Bool(v.(bool)) } - if v, ok := dMap["bandwidth_package_id"]; ok { + if v, ok := internetAccessibleMap["bandwidth_package_id"]; ok { internetAccessible.BandwidthPackageId = helper.String(v.(string)) } request.InternetAccessible = &internetAccessible @@ -877,19 +885,19 @@ func resourceTencentCloudCvmLaunchTemplateVersionCreate(d *schema.ResourceData, request.InstanceName = helper.String(v.(string)) } - if dMap, ok := helper.InterfacesHeadMap(d, "login_settings"); ok { + if loginSettingsMap, ok := helper.InterfacesHeadMap(d, "login_settings"); ok { loginSettings := cvm.LoginSettings{} - if v, ok := dMap["password"]; ok { + if v, ok := loginSettingsMap["password"]; ok { loginSettings.Password = helper.String(v.(string)) } - if v, ok := dMap["key_ids"]; ok { + if v, ok := loginSettingsMap["key_ids"]; ok { keyIdsSet := v.(*schema.Set).List() for i := range keyIdsSet { keyIds := keyIdsSet[i].(string) - loginSettings.KeyIds = append(loginSettings.KeyIds, &keyIds) + loginSettings.KeyIds = append(loginSettings.KeyIds, helper.String(keyIds)) } } - if v, ok := dMap["keep_image_login"]; ok { + if v, ok := loginSettingsMap["keep_image_login"]; ok { loginSettings.KeepImageLogin = helper.String(v.(string)) } request.LoginSettings = &loginSettings @@ -899,27 +907,27 @@ func resourceTencentCloudCvmLaunchTemplateVersionCreate(d *schema.ResourceData, securityGroupIdsSet := v.(*schema.Set).List() for i := range securityGroupIdsSet { securityGroupIds := securityGroupIdsSet[i].(string) - request.SecurityGroupIds = append(request.SecurityGroupIds, &securityGroupIds) + request.SecurityGroupIds = append(request.SecurityGroupIds, helper.String(securityGroupIds)) } } - if dMap, ok := helper.InterfacesHeadMap(d, "enhanced_service"); ok { + if enhancedServiceMap, ok := helper.InterfacesHeadMap(d, "enhanced_service"); ok { enhancedService := cvm.EnhancedService{} - if securityServiceMap, ok := helper.InterfaceToMap(dMap, "security_service"); ok { + if securityServiceMap, ok := helper.ConvertInterfacesHeadToMap(enhancedServiceMap["security_service"]); ok { runSecurityServiceEnabled := cvm.RunSecurityServiceEnabled{} if v, ok := securityServiceMap["enabled"]; ok { runSecurityServiceEnabled.Enabled = helper.Bool(v.(bool)) } enhancedService.SecurityService = &runSecurityServiceEnabled } - if monitorServiceMap, ok := helper.InterfaceToMap(dMap, "monitor_service"); ok { + if monitorServiceMap, ok := helper.ConvertInterfacesHeadToMap(enhancedServiceMap["monitor_service"]); ok { runMonitorServiceEnabled := cvm.RunMonitorServiceEnabled{} if v, ok := monitorServiceMap["enabled"]; ok { runMonitorServiceEnabled.Enabled = helper.Bool(v.(bool)) } enhancedService.MonitorService = &runMonitorServiceEnabled } - if automationServiceMap, ok := helper.InterfaceToMap(dMap, "automation_service"); ok { + if automationServiceMap, ok := helper.ConvertInterfacesHeadToMap(enhancedServiceMap["automation_service"]); ok { runAutomationServiceEnabled := cvm.RunAutomationServiceEnabled{} if v, ok := automationServiceMap["enabled"]; ok { runAutomationServiceEnabled.Enabled = helper.Bool(v.(bool)) @@ -937,15 +945,15 @@ func resourceTencentCloudCvmLaunchTemplateVersionCreate(d *schema.ResourceData, request.HostName = helper.String(v.(string)) } - if dMap, ok := helper.InterfacesHeadMap(d, "action_timer"); ok { + if actionTimerMap, ok := helper.InterfacesHeadMap(d, "action_timer"); ok { actionTimer := cvm.ActionTimer{} - if v, ok := dMap["timer_action"]; ok { + if v, ok := actionTimerMap["timer_action"]; ok { actionTimer.TimerAction = helper.String(v.(string)) } - if v, ok := dMap["action_time"]; ok { + if v, ok := actionTimerMap["action_time"]; ok { actionTimer.ActionTime = helper.String(v.(string)) } - if externalsMap, ok := helper.InterfaceToMap(dMap, "externals"); ok { + if externalsMap, ok := helper.ConvertInterfacesHeadToMap(actionTimerMap["externals"]); ok { externals := cvm.Externals{} if v, ok := externalsMap["release_address"]; ok { externals.ReleaseAddress = helper.Bool(v.(bool)) @@ -954,10 +962,10 @@ func resourceTencentCloudCvmLaunchTemplateVersionCreate(d *schema.ResourceData, unsupportNetworksSet := v.(*schema.Set).List() for i := range unsupportNetworksSet { unsupportNetworks := unsupportNetworksSet[i].(string) - externals.UnsupportNetworks = append(externals.UnsupportNetworks, &unsupportNetworks) + externals.UnsupportNetworks = append(externals.UnsupportNetworks, helper.String(unsupportNetworks)) } } - if storageBlockAttrMap, ok := helper.InterfaceToMap(externalsMap, "storage_block_attr"); ok { + if storageBlockAttrMap, ok := helper.ConvertInterfacesHeadToMap(externalsMap["storage_block_attr"]); ok { storageBlock := cvm.StorageBlock{} if v, ok := storageBlockAttrMap["type"]; ok { storageBlock.Type = helper.String(v.(string)) @@ -979,18 +987,18 @@ func resourceTencentCloudCvmLaunchTemplateVersionCreate(d *schema.ResourceData, disasterRecoverGroupIdsSet := v.(*schema.Set).List() for i := range disasterRecoverGroupIdsSet { disasterRecoverGroupIds := disasterRecoverGroupIdsSet[i].(string) - request.DisasterRecoverGroupIds = append(request.DisasterRecoverGroupIds, &disasterRecoverGroupIds) + request.DisasterRecoverGroupIds = append(request.DisasterRecoverGroupIds, helper.String(disasterRecoverGroupIds)) } } if v, ok := d.GetOk("tag_specification"); ok { for _, item := range v.([]interface{}) { - dMap := item.(map[string]interface{}) + tagSpecificationMap := item.(map[string]interface{}) tagSpecification := cvm.TagSpecification{} - if v, ok := dMap["resource_type"]; ok { + if v, ok := tagSpecificationMap["resource_type"]; ok { tagSpecification.ResourceType = helper.String(v.(string)) } - if v, ok := dMap["tags"]; ok { + if v, ok := tagSpecificationMap["tags"]; ok { for _, item := range v.([]interface{}) { tagsMap := item.(map[string]interface{}) tag := cvm.Tag{} @@ -1007,9 +1015,9 @@ func resourceTencentCloudCvmLaunchTemplateVersionCreate(d *schema.ResourceData, } } - if dMap, ok := helper.InterfacesHeadMap(d, "instance_market_options"); ok { + if instanceMarketOptionsMap, ok := helper.InterfacesHeadMap(d, "instance_market_options"); ok { instanceMarketOptionsRequest := cvm.InstanceMarketOptionsRequest{} - if spotOptionsMap, ok := helper.InterfaceToMap(dMap, "spot_options"); ok { + if spotOptionsMap, ok := helper.ConvertInterfacesHeadToMap(instanceMarketOptionsMap["spot_options"]); ok { spotMarketOptions := cvm.SpotMarketOptions{} if v, ok := spotOptionsMap["max_price"]; ok { spotMarketOptions.MaxPrice = helper.String(v.(string)) @@ -1019,7 +1027,7 @@ func resourceTencentCloudCvmLaunchTemplateVersionCreate(d *schema.ResourceData, } instanceMarketOptionsRequest.SpotOptions = &spotMarketOptions } - if v, ok := dMap["market_type"]; ok { + if v, ok := instanceMarketOptionsMap["market_type"]; ok { instanceMarketOptionsRequest.MarketType = helper.String(v.(string)) } request.InstanceMarketOptions = &instanceMarketOptionsRequest @@ -1045,12 +1053,12 @@ func resourceTencentCloudCvmLaunchTemplateVersionCreate(d *schema.ResourceData, request.InstanceChargeType = helper.String(v.(string)) } - if dMap, ok := helper.InterfacesHeadMap(d, "instance_charge_prepaid"); ok { + if instanceChargePrepaidMap, ok := helper.InterfacesHeadMap(d, "instance_charge_prepaid"); ok { instanceChargePrepaid := cvm.InstanceChargePrepaid{} - if v, ok := dMap["period"]; ok { + if v, ok := instanceChargePrepaidMap["period"]; ok { instanceChargePrepaid.Period = helper.IntInt64(v.(int)) } - if v, ok := dMap["renew_flag"]; ok { + if v, ok := instanceChargePrepaidMap["renew_flag"]; ok { instanceChargePrepaid.RenewFlag = helper.String(v.(string)) } request.InstanceChargePrepaid = &instanceChargePrepaid @@ -1061,7 +1069,7 @@ func resourceTencentCloudCvmLaunchTemplateVersionCreate(d *schema.ResourceData, } err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().CreateLaunchTemplateVersion(request) + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().CreateLaunchTemplateVersionWithContext(ctx, request) if e != nil { return tccommon.RetryError(e) } else { @@ -1071,13 +1079,13 @@ func resourceTencentCloudCvmLaunchTemplateVersionCreate(d *schema.ResourceData, return nil }) if err != nil { - log.Printf("[CRITAL]%s create cvm launchTemplateVersion failed, reason:%+v", logId, err) + log.Printf("[CRITAL]%s create cvm launch template version failed, reason:%+v", logId, err) return err } - launchTemplateVersionNumber := *response.Response.LaunchTemplateVersionNumber - launchTemplateVersionNumberString := strconv.FormatInt(launchTemplateVersionNumber, 10) - d.SetId(launchTemplateId + tccommon.FILED_SP + launchTemplateVersionNumberString) + launchTemplateVersionNumber = *response.Response.LaunchTemplateVersionNumber + + d.SetId(strings.Join([]string{launchTemplateId, helper.Int64ToStr(launchTemplateVersionNumber)}, tccommon.FILED_SP)) return resourceTencentCloudCvmLaunchTemplateVersionRead(d, meta) } @@ -1088,7 +1096,7 @@ func resourceTencentCloudCvmLaunchTemplateVersionRead(d *schema.ResourceData, me logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) service := CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} @@ -1099,236 +1107,235 @@ func resourceTencentCloudCvmLaunchTemplateVersionRead(d *schema.ResourceData, me launchTemplateId := idSplit[0] launchTemplateVersionNumber := idSplit[1] - launchTemplateVersion, err := service.DescribeCvmLaunchTemplateVersionById(ctx, launchTemplateId, launchTemplateVersionNumber) + _ = d.Set("launch_template_id", launchTemplateId) + + respData, err := service.DescribeCvmLaunchTemplateVersionById(ctx, launchTemplateId, launchTemplateVersionNumber) if err != nil { return err } - if launchTemplateVersion == nil { + if respData == nil { d.SetId("") - log.Printf("[WARN]%s resource `CvmLaunchTemplateVersion` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) + log.Printf("[WARN]%s resource `cvm_launch_template_version` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) return nil } - - if launchTemplateVersion.LaunchTemplateId != nil { - _ = d.Set("launch_template_id", launchTemplateVersion.LaunchTemplateId) + if respData.LaunchTemplateId != nil { + _ = d.Set("launch_template_id", respData.LaunchTemplateId) } - if launchTemplateVersion.LaunchTemplateVersion != nil { - _ = d.Set("launch_template_version", launchTemplateVersion.LaunchTemplateVersion) + if respData.LaunchTemplateVersion != nil { + _ = d.Set("launch_template_version", respData.LaunchTemplateVersion) } - if launchTemplateVersion.LaunchTemplateVersionDescription != nil { - _ = d.Set("launch_template_version_description", launchTemplateVersion.LaunchTemplateVersionDescription) + if respData.LaunchTemplateVersionDescription != nil { + _ = d.Set("launch_template_version_description", respData.LaunchTemplateVersionDescription) } - if launchTemplateVersion.LaunchTemplateVersionData != nil { - if launchTemplateVersion.LaunchTemplateVersionData.InstanceType != nil { - _ = d.Set("instance_type", launchTemplateVersion.LaunchTemplateVersionData.InstanceType) + if respData.LaunchTemplateVersionData != nil { + if respData.LaunchTemplateVersionData.InstanceType != nil { + _ = d.Set("instance_type", respData.LaunchTemplateVersionData.InstanceType) } - if launchTemplateVersion.LaunchTemplateVersionData.ImageId != nil { - _ = d.Set("image_id", launchTemplateVersion.LaunchTemplateVersionData.ImageId) + if respData.LaunchTemplateVersionData.ImageId != nil { + _ = d.Set("image_id", respData.LaunchTemplateVersionData.ImageId) } - if launchTemplateVersion.LaunchTemplateVersionData.Placement != nil { - placementMap := map[string]interface{}{} + placementMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.Placement.Zone != nil { - placementMap["zone"] = launchTemplateVersion.LaunchTemplateVersionData.Placement.Zone + if respData.LaunchTemplateVersionData.Placement != nil { + if respData.LaunchTemplateVersionData.Placement.Zone != nil { + placementMap["zone"] = respData.LaunchTemplateVersionData.Placement.Zone } - if launchTemplateVersion.LaunchTemplateVersionData.Placement.ProjectId != nil { - placementMap["project_id"] = launchTemplateVersion.LaunchTemplateVersionData.Placement.ProjectId + if respData.LaunchTemplateVersionData.Placement.ProjectId != nil { + placementMap["project_id"] = respData.LaunchTemplateVersionData.Placement.ProjectId } - if launchTemplateVersion.LaunchTemplateVersionData.Placement.HostIds != nil { - placementMap["host_ids"] = launchTemplateVersion.LaunchTemplateVersionData.Placement.HostIds + if respData.LaunchTemplateVersionData.Placement.HostIds != nil { + placementMap["host_ids"] = respData.LaunchTemplateVersionData.Placement.HostIds } - if launchTemplateVersion.LaunchTemplateVersionData.Placement.HostIps != nil { - placementMap["host_ips"] = launchTemplateVersion.LaunchTemplateVersionData.Placement.HostIps + if respData.LaunchTemplateVersionData.Placement.HostIps != nil { + placementMap["host_ips"] = respData.LaunchTemplateVersionData.Placement.HostIps } _ = d.Set("placement", []interface{}{placementMap}) } - if launchTemplateVersion.LaunchTemplateVersionData.SystemDisk != nil { - systemDiskMap := map[string]interface{}{} + systemDiskMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.SystemDisk.DiskType != nil { - systemDiskMap["disk_type"] = launchTemplateVersion.LaunchTemplateVersionData.SystemDisk.DiskType + if respData.LaunchTemplateVersionData.SystemDisk != nil { + if respData.LaunchTemplateVersionData.SystemDisk.DiskType != nil { + systemDiskMap["disk_type"] = respData.LaunchTemplateVersionData.SystemDisk.DiskType } - if launchTemplateVersion.LaunchTemplateVersionData.SystemDisk.DiskId != nil { - systemDiskMap["disk_id"] = launchTemplateVersion.LaunchTemplateVersionData.SystemDisk.DiskId + if respData.LaunchTemplateVersionData.SystemDisk.DiskId != nil { + systemDiskMap["disk_id"] = respData.LaunchTemplateVersionData.SystemDisk.DiskId } - if launchTemplateVersion.LaunchTemplateVersionData.SystemDisk.DiskSize != nil { - systemDiskMap["disk_size"] = launchTemplateVersion.LaunchTemplateVersionData.SystemDisk.DiskSize + if respData.LaunchTemplateVersionData.SystemDisk.DiskSize != nil { + systemDiskMap["disk_size"] = respData.LaunchTemplateVersionData.SystemDisk.DiskSize } - if launchTemplateVersion.LaunchTemplateVersionData.SystemDisk.CdcId != nil { - systemDiskMap["cdc_id"] = launchTemplateVersion.LaunchTemplateVersionData.SystemDisk.CdcId + if respData.LaunchTemplateVersionData.SystemDisk.CdcId != nil { + systemDiskMap["cdc_id"] = respData.LaunchTemplateVersionData.SystemDisk.CdcId } _ = d.Set("system_disk", []interface{}{systemDiskMap}) } - if launchTemplateVersion.LaunchTemplateVersionData.DataDisks != nil { - dataDisksList := []interface{}{} - for _, dataDisk := range launchTemplateVersion.LaunchTemplateVersionData.DataDisks { + dataDisksList := make([]map[string]interface{}, 0, len(respData.LaunchTemplateVersionData.DataDisks)) + if respData.LaunchTemplateVersionData.DataDisks != nil { + for _, dataDisks := range respData.LaunchTemplateVersionData.DataDisks { dataDisksMap := map[string]interface{}{} - if dataDisk.DiskSize != nil { - dataDisksMap["disk_size"] = dataDisk.DiskSize + if dataDisks.DiskSize != nil { + dataDisksMap["disk_size"] = dataDisks.DiskSize } - if dataDisk.DiskType != nil { - dataDisksMap["disk_type"] = dataDisk.DiskType + if dataDisks.DiskType != nil { + dataDisksMap["disk_type"] = dataDisks.DiskType } - if dataDisk.DiskId != nil { - dataDisksMap["disk_id"] = dataDisk.DiskId + if dataDisks.DiskId != nil { + dataDisksMap["disk_id"] = dataDisks.DiskId } - if dataDisk.DeleteWithInstance != nil { - dataDisksMap["delete_with_instance"] = dataDisk.DeleteWithInstance + if dataDisks.DeleteWithInstance != nil { + dataDisksMap["delete_with_instance"] = dataDisks.DeleteWithInstance } - if dataDisk.SnapshotId != nil { - dataDisksMap["snapshot_id"] = dataDisk.SnapshotId + if dataDisks.SnapshotId != nil { + dataDisksMap["snapshot_id"] = dataDisks.SnapshotId } - if dataDisk.Encrypt != nil { - dataDisksMap["encrypt"] = dataDisk.Encrypt + if dataDisks.Encrypt != nil { + dataDisksMap["encrypt"] = dataDisks.Encrypt } - if dataDisk.KmsKeyId != nil { - dataDisksMap["kms_key_id"] = dataDisk.KmsKeyId + if dataDisks.KmsKeyId != nil { + dataDisksMap["kms_key_id"] = dataDisks.KmsKeyId } - if dataDisk.ThroughputPerformance != nil { - dataDisksMap["throughput_performance"] = dataDisk.ThroughputPerformance + if dataDisks.ThroughputPerformance != nil { + dataDisksMap["throughput_performance"] = dataDisks.ThroughputPerformance } - if dataDisk.CdcId != nil { - dataDisksMap["cdc_id"] = dataDisk.CdcId + if dataDisks.CdcId != nil { + dataDisksMap["cdc_id"] = dataDisks.CdcId } dataDisksList = append(dataDisksList, dataDisksMap) } _ = d.Set("data_disks", dataDisksList) - } + virtualPrivateCloudMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.VirtualPrivateCloud != nil { - virtualPrivateCloudMap := map[string]interface{}{} - - if launchTemplateVersion.LaunchTemplateVersionData.VirtualPrivateCloud.VpcId != nil { - virtualPrivateCloudMap["vpc_id"] = launchTemplateVersion.LaunchTemplateVersionData.VirtualPrivateCloud.VpcId + if respData.LaunchTemplateVersionData.VirtualPrivateCloud != nil { + if respData.LaunchTemplateVersionData.VirtualPrivateCloud.VpcId != nil { + virtualPrivateCloudMap["vpc_id"] = respData.LaunchTemplateVersionData.VirtualPrivateCloud.VpcId } - if launchTemplateVersion.LaunchTemplateVersionData.VirtualPrivateCloud.SubnetId != nil { - virtualPrivateCloudMap["subnet_id"] = launchTemplateVersion.LaunchTemplateVersionData.VirtualPrivateCloud.SubnetId + if respData.LaunchTemplateVersionData.VirtualPrivateCloud.SubnetId != nil { + virtualPrivateCloudMap["subnet_id"] = respData.LaunchTemplateVersionData.VirtualPrivateCloud.SubnetId } - if launchTemplateVersion.LaunchTemplateVersionData.VirtualPrivateCloud.AsVpcGateway != nil { - virtualPrivateCloudMap["as_vpc_gateway"] = launchTemplateVersion.LaunchTemplateVersionData.VirtualPrivateCloud.AsVpcGateway + if respData.LaunchTemplateVersionData.VirtualPrivateCloud.AsVpcGateway != nil { + virtualPrivateCloudMap["as_vpc_gateway"] = respData.LaunchTemplateVersionData.VirtualPrivateCloud.AsVpcGateway } - if launchTemplateVersion.LaunchTemplateVersionData.VirtualPrivateCloud.PrivateIpAddresses != nil { - virtualPrivateCloudMap["private_ip_addresses"] = launchTemplateVersion.LaunchTemplateVersionData.VirtualPrivateCloud.PrivateIpAddresses + if respData.LaunchTemplateVersionData.VirtualPrivateCloud.PrivateIpAddresses != nil { + virtualPrivateCloudMap["private_ip_addresses"] = respData.LaunchTemplateVersionData.VirtualPrivateCloud.PrivateIpAddresses } - if launchTemplateVersion.LaunchTemplateVersionData.VirtualPrivateCloud.Ipv6AddressCount != nil { - virtualPrivateCloudMap["ipv6_address_count"] = launchTemplateVersion.LaunchTemplateVersionData.VirtualPrivateCloud.Ipv6AddressCount + if respData.LaunchTemplateVersionData.VirtualPrivateCloud.Ipv6AddressCount != nil { + virtualPrivateCloudMap["ipv6_address_count"] = respData.LaunchTemplateVersionData.VirtualPrivateCloud.Ipv6AddressCount } _ = d.Set("virtual_private_cloud", []interface{}{virtualPrivateCloudMap}) } - if launchTemplateVersion.LaunchTemplateVersionData.InternetAccessible != nil { - internetAccessibleMap := map[string]interface{}{} + internetAccessibleMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.InternetAccessible.InternetChargeType != nil { - internetAccessibleMap["internet_charge_type"] = launchTemplateVersion.LaunchTemplateVersionData.InternetAccessible.InternetChargeType + if respData.LaunchTemplateVersionData.InternetAccessible != nil { + if respData.LaunchTemplateVersionData.InternetAccessible.InternetChargeType != nil { + internetAccessibleMap["internet_charge_type"] = respData.LaunchTemplateVersionData.InternetAccessible.InternetChargeType } - if launchTemplateVersion.LaunchTemplateVersionData.InternetAccessible.InternetMaxBandwidthOut != nil { - internetAccessibleMap["internet_max_bandwidth_out"] = launchTemplateVersion.LaunchTemplateVersionData.InternetAccessible.InternetMaxBandwidthOut + if respData.LaunchTemplateVersionData.InternetAccessible.InternetMaxBandwidthOut != nil { + internetAccessibleMap["internet_max_bandwidth_out"] = respData.LaunchTemplateVersionData.InternetAccessible.InternetMaxBandwidthOut } - if launchTemplateVersion.LaunchTemplateVersionData.InternetAccessible.PublicIpAssigned != nil { - internetAccessibleMap["public_ip_assigned"] = launchTemplateVersion.LaunchTemplateVersionData.InternetAccessible.PublicIpAssigned + if respData.LaunchTemplateVersionData.InternetAccessible.PublicIpAssigned != nil { + internetAccessibleMap["public_ip_assigned"] = respData.LaunchTemplateVersionData.InternetAccessible.PublicIpAssigned } - if launchTemplateVersion.LaunchTemplateVersionData.InternetAccessible.BandwidthPackageId != nil { - internetAccessibleMap["bandwidth_package_id"] = launchTemplateVersion.LaunchTemplateVersionData.InternetAccessible.BandwidthPackageId + if respData.LaunchTemplateVersionData.InternetAccessible.BandwidthPackageId != nil { + internetAccessibleMap["bandwidth_package_id"] = respData.LaunchTemplateVersionData.InternetAccessible.BandwidthPackageId } _ = d.Set("internet_accessible", []interface{}{internetAccessibleMap}) } - if launchTemplateVersion.LaunchTemplateVersionData.InstanceCount != nil { - _ = d.Set("instance_count", launchTemplateVersion.LaunchTemplateVersionData.InstanceCount) + if respData.LaunchTemplateVersionData.InstanceCount != nil { + _ = d.Set("instance_count", respData.LaunchTemplateVersionData.InstanceCount) } - if launchTemplateVersion.LaunchTemplateVersionData.InstanceName != nil { - _ = d.Set("instance_name", launchTemplateVersion.LaunchTemplateVersionData.InstanceName) + if respData.LaunchTemplateVersionData.InstanceName != nil { + _ = d.Set("instance_name", respData.LaunchTemplateVersionData.InstanceName) } - if launchTemplateVersion.LaunchTemplateVersionData.LoginSettings != nil { - loginSettingsMap := map[string]interface{}{} + loginSettingsMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.LoginSettings.Password != nil { - loginSettingsMap["password"] = launchTemplateVersion.LaunchTemplateVersionData.LoginSettings.Password + if respData.LaunchTemplateVersionData.LoginSettings != nil { + if respData.LaunchTemplateVersionData.LoginSettings.Password != nil { + loginSettingsMap["password"] = respData.LaunchTemplateVersionData.LoginSettings.Password } - if launchTemplateVersion.LaunchTemplateVersionData.LoginSettings.KeyIds != nil { - loginSettingsMap["key_ids"] = launchTemplateVersion.LaunchTemplateVersionData.LoginSettings.KeyIds + if respData.LaunchTemplateVersionData.LoginSettings.KeyIds != nil { + loginSettingsMap["key_ids"] = respData.LaunchTemplateVersionData.LoginSettings.KeyIds } - if launchTemplateVersion.LaunchTemplateVersionData.LoginSettings.KeepImageLogin != nil { - loginSettingsMap["keep_image_login"] = launchTemplateVersion.LaunchTemplateVersionData.LoginSettings.KeepImageLogin + if respData.LaunchTemplateVersionData.LoginSettings.KeepImageLogin != nil { + loginSettingsMap["keep_image_login"] = respData.LaunchTemplateVersionData.LoginSettings.KeepImageLogin } _ = d.Set("login_settings", []interface{}{loginSettingsMap}) } - if launchTemplateVersion.LaunchTemplateVersionData.SecurityGroupIds != nil { - _ = d.Set("security_group_ids", launchTemplateVersion.LaunchTemplateVersionData.SecurityGroupIds) + if respData.LaunchTemplateVersionData.SecurityGroupIds != nil { + _ = d.Set("security_group_ids", respData.LaunchTemplateVersionData.SecurityGroupIds) } - if launchTemplateVersion.LaunchTemplateVersionData.EnhancedService != nil { - enhancedServiceMap := map[string]interface{}{} + enhancedServiceMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.EnhancedService.SecurityService != nil { - securityServiceMap := map[string]interface{}{} + if respData.LaunchTemplateVersionData.EnhancedService != nil { + securityServiceMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.EnhancedService.SecurityService.Enabled != nil { - securityServiceMap["enabled"] = launchTemplateVersion.LaunchTemplateVersionData.EnhancedService.SecurityService.Enabled + if respData.LaunchTemplateVersionData.EnhancedService.SecurityService != nil { + if respData.LaunchTemplateVersionData.EnhancedService.SecurityService.Enabled != nil { + securityServiceMap["enabled"] = respData.LaunchTemplateVersionData.EnhancedService.SecurityService.Enabled } enhancedServiceMap["security_service"] = []interface{}{securityServiceMap} } - if launchTemplateVersion.LaunchTemplateVersionData.EnhancedService.MonitorService != nil { - monitorServiceMap := map[string]interface{}{} + monitorServiceMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.EnhancedService.MonitorService.Enabled != nil { - monitorServiceMap["enabled"] = launchTemplateVersion.LaunchTemplateVersionData.EnhancedService.MonitorService.Enabled + if respData.LaunchTemplateVersionData.EnhancedService.MonitorService != nil { + if respData.LaunchTemplateVersionData.EnhancedService.MonitorService.Enabled != nil { + monitorServiceMap["enabled"] = respData.LaunchTemplateVersionData.EnhancedService.MonitorService.Enabled } enhancedServiceMap["monitor_service"] = []interface{}{monitorServiceMap} } - if launchTemplateVersion.LaunchTemplateVersionData.EnhancedService.AutomationService != nil { - automationServiceMap := map[string]interface{}{} + automationServiceMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.EnhancedService.AutomationService.Enabled != nil { - automationServiceMap["enabled"] = launchTemplateVersion.LaunchTemplateVersionData.EnhancedService.AutomationService.Enabled + if respData.LaunchTemplateVersionData.EnhancedService.AutomationService != nil { + if respData.LaunchTemplateVersionData.EnhancedService.AutomationService.Enabled != nil { + automationServiceMap["enabled"] = respData.LaunchTemplateVersionData.EnhancedService.AutomationService.Enabled } enhancedServiceMap["automation_service"] = []interface{}{automationServiceMap} @@ -1337,49 +1344,49 @@ func resourceTencentCloudCvmLaunchTemplateVersionRead(d *schema.ResourceData, me _ = d.Set("enhanced_service", []interface{}{enhancedServiceMap}) } - if launchTemplateVersion.LaunchTemplateVersionData.ClientToken != nil { - _ = d.Set("client_token", launchTemplateVersion.LaunchTemplateVersionData.ClientToken) + if respData.LaunchTemplateVersionData.ClientToken != nil { + _ = d.Set("client_token", respData.LaunchTemplateVersionData.ClientToken) } - if launchTemplateVersion.LaunchTemplateVersionData.HostName != nil { - _ = d.Set("host_name", launchTemplateVersion.LaunchTemplateVersionData.HostName) + if respData.LaunchTemplateVersionData.HostName != nil { + _ = d.Set("host_name", respData.LaunchTemplateVersionData.HostName) } - if launchTemplateVersion.LaunchTemplateVersionData.ActionTimer != nil { - actionTimerMap := map[string]interface{}{} + actionTimerMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.TimerAction != nil { - actionTimerMap["timer_action"] = launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.TimerAction + if respData.LaunchTemplateVersionData.ActionTimer != nil { + if respData.LaunchTemplateVersionData.ActionTimer.TimerAction != nil { + actionTimerMap["timer_action"] = respData.LaunchTemplateVersionData.ActionTimer.TimerAction } - if launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.ActionTime != nil { - actionTimerMap["action_time"] = launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.ActionTime + if respData.LaunchTemplateVersionData.ActionTimer.ActionTime != nil { + actionTimerMap["action_time"] = respData.LaunchTemplateVersionData.ActionTimer.ActionTime } - if launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.Externals != nil { - externalsMap := map[string]interface{}{} + externalsMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.Externals.ReleaseAddress != nil { - externalsMap["release_address"] = launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.Externals.ReleaseAddress + if respData.LaunchTemplateVersionData.ActionTimer.Externals != nil { + if respData.LaunchTemplateVersionData.ActionTimer.Externals.ReleaseAddress != nil { + externalsMap["release_address"] = respData.LaunchTemplateVersionData.ActionTimer.Externals.ReleaseAddress } - if launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.Externals.UnsupportNetworks != nil { - externalsMap["unsupport_networks"] = launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.Externals.UnsupportNetworks + if respData.LaunchTemplateVersionData.ActionTimer.Externals.UnsupportNetworks != nil { + externalsMap["unsupport_networks"] = respData.LaunchTemplateVersionData.ActionTimer.Externals.UnsupportNetworks } - if launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr != nil { - storageBlockAttrMap := map[string]interface{}{} + storageBlockAttrMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr.Type != nil { - storageBlockAttrMap["type"] = launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr.Type + if respData.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr != nil { + if respData.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr.Type != nil { + storageBlockAttrMap["type"] = respData.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr.Type } - if launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr.MinSize != nil { - storageBlockAttrMap["min_size"] = launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr.MinSize + if respData.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr.MinSize != nil { + storageBlockAttrMap["min_size"] = respData.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr.MinSize } - if launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr.MaxSize != nil { - storageBlockAttrMap["max_size"] = launchTemplateVersion.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr.MaxSize + if respData.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr.MaxSize != nil { + storageBlockAttrMap["max_size"] = respData.LaunchTemplateVersionData.ActionTimer.Externals.StorageBlockAttr.MaxSize } externalsMap["storage_block_attr"] = []interface{}{storageBlockAttrMap} @@ -1391,102 +1398,100 @@ func resourceTencentCloudCvmLaunchTemplateVersionRead(d *schema.ResourceData, me _ = d.Set("action_timer", []interface{}{actionTimerMap}) } - if launchTemplateVersion.LaunchTemplateVersionData.DisasterRecoverGroupIds != nil { - _ = d.Set("disaster_recover_group_ids", launchTemplateVersion.LaunchTemplateVersionData.DisasterRecoverGroupIds) + if respData.LaunchTemplateVersionData.DisasterRecoverGroupIds != nil { + _ = d.Set("disaster_recover_group_ids", respData.LaunchTemplateVersionData.DisasterRecoverGroupIds) } - if launchTemplateVersion.LaunchTemplateVersionData.TagSpecification != nil { - tagSpecificationList := []interface{}{} - for _, tagSpecification := range launchTemplateVersion.LaunchTemplateVersionData.TagSpecification { + tagSpecificationList := make([]map[string]interface{}, 0, len(respData.LaunchTemplateVersionData.TagSpecification)) + if respData.LaunchTemplateVersionData.TagSpecification != nil { + for _, tagSpecification := range respData.LaunchTemplateVersionData.TagSpecification { tagSpecificationMap := map[string]interface{}{} if tagSpecification.ResourceType != nil { tagSpecificationMap["resource_type"] = tagSpecification.ResourceType } + tagsList := make([]map[string]interface{}, 0, len(tagSpecification.Tags)) if tagSpecification.Tags != nil { - tagsList := []interface{}{} - for _, tag := range tagSpecification.Tags { + for _, tags := range tagSpecification.Tags { tagsMap := map[string]interface{}{} - if tag.Key != nil { - tagsMap["key"] = tag.Key + if tags.Key != nil { + tagsMap["key"] = tags.Key } - if tag.Value != nil { - tagsMap["value"] = tag.Value + if tags.Value != nil { + tagsMap["value"] = tags.Value } tagsList = append(tagsList, tagsMap) } - tagSpecificationMap["tags"] = []interface{}{tagsList} + tagSpecificationMap["tags"] = tagsList } - tagSpecificationList = append(tagSpecificationList, tagSpecificationMap) } _ = d.Set("tag_specification", tagSpecificationList) - } + instanceMarketOptionsMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.InstanceMarketOptions != nil { - instanceMarketOptionsMap := map[string]interface{}{} + if respData.LaunchTemplateVersionData.InstanceMarketOptions != nil { + spotOptionsMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.InstanceMarketOptions.SpotOptions != nil { - spotOptionsMap := map[string]interface{}{} - - if launchTemplateVersion.LaunchTemplateVersionData.InstanceMarketOptions.SpotOptions.MaxPrice != nil { - spotOptionsMap["max_price"] = launchTemplateVersion.LaunchTemplateVersionData.InstanceMarketOptions.SpotOptions.MaxPrice + if respData.LaunchTemplateVersionData.InstanceMarketOptions.SpotOptions != nil { + if respData.LaunchTemplateVersionData.InstanceMarketOptions.SpotOptions.MaxPrice != nil { + spotOptionsMap["max_price"] = respData.LaunchTemplateVersionData.InstanceMarketOptions.SpotOptions.MaxPrice } - if launchTemplateVersion.LaunchTemplateVersionData.InstanceMarketOptions.SpotOptions.SpotInstanceType != nil { - spotOptionsMap["spot_instance_type"] = launchTemplateVersion.LaunchTemplateVersionData.InstanceMarketOptions.SpotOptions.SpotInstanceType + if respData.LaunchTemplateVersionData.InstanceMarketOptions.SpotOptions.SpotInstanceType != nil { + spotOptionsMap["spot_instance_type"] = respData.LaunchTemplateVersionData.InstanceMarketOptions.SpotOptions.SpotInstanceType } instanceMarketOptionsMap["spot_options"] = []interface{}{spotOptionsMap} } - if launchTemplateVersion.LaunchTemplateVersionData.InstanceMarketOptions.MarketType != nil { - instanceMarketOptionsMap["market_type"] = launchTemplateVersion.LaunchTemplateVersionData.InstanceMarketOptions.MarketType + if respData.LaunchTemplateVersionData.InstanceMarketOptions.MarketType != nil { + instanceMarketOptionsMap["market_type"] = respData.LaunchTemplateVersionData.InstanceMarketOptions.MarketType } _ = d.Set("instance_market_options", []interface{}{instanceMarketOptionsMap}) } - if launchTemplateVersion.LaunchTemplateVersionData.UserData != nil { - _ = d.Set("user_data", launchTemplateVersion.LaunchTemplateVersionData.UserData) + if respData.LaunchTemplateVersionData.UserData != nil { + _ = d.Set("user_data", respData.LaunchTemplateVersionData.UserData) } - if launchTemplateVersion.LaunchTemplateVersionData.CamRoleName != nil { - _ = d.Set("cam_role_name", launchTemplateVersion.LaunchTemplateVersionData.CamRoleName) + if respData.LaunchTemplateVersionData.CamRoleName != nil { + _ = d.Set("cam_role_name", respData.LaunchTemplateVersionData.CamRoleName) } - if launchTemplateVersion.LaunchTemplateVersionData.HpcClusterId != nil { - _ = d.Set("hpc_cluster_id", launchTemplateVersion.LaunchTemplateVersionData.HpcClusterId) + if respData.LaunchTemplateVersionData.HpcClusterId != nil { + _ = d.Set("hpc_cluster_id", respData.LaunchTemplateVersionData.HpcClusterId) } - if launchTemplateVersion.LaunchTemplateVersionData.InstanceChargeType != nil { - _ = d.Set("instance_charge_type", launchTemplateVersion.LaunchTemplateVersionData.InstanceChargeType) + if respData.LaunchTemplateVersionData.InstanceChargeType != nil { + _ = d.Set("instance_charge_type", respData.LaunchTemplateVersionData.InstanceChargeType) } - if launchTemplateVersion.LaunchTemplateVersionData.InstanceChargePrepaid != nil { - instanceChargePrepaidMap := map[string]interface{}{} + instanceChargePrepaidMap := map[string]interface{}{} - if launchTemplateVersion.LaunchTemplateVersionData.InstanceChargePrepaid.Period != nil { - instanceChargePrepaidMap["period"] = launchTemplateVersion.LaunchTemplateVersionData.InstanceChargePrepaid.Period + if respData.LaunchTemplateVersionData.InstanceChargePrepaid != nil { + if respData.LaunchTemplateVersionData.InstanceChargePrepaid.Period != nil { + instanceChargePrepaidMap["period"] = respData.LaunchTemplateVersionData.InstanceChargePrepaid.Period } - if launchTemplateVersion.LaunchTemplateVersionData.InstanceChargePrepaid.RenewFlag != nil { - instanceChargePrepaidMap["renew_flag"] = launchTemplateVersion.LaunchTemplateVersionData.InstanceChargePrepaid.RenewFlag + if respData.LaunchTemplateVersionData.InstanceChargePrepaid.RenewFlag != nil { + instanceChargePrepaidMap["renew_flag"] = respData.LaunchTemplateVersionData.InstanceChargePrepaid.RenewFlag } _ = d.Set("instance_charge_prepaid", []interface{}{instanceChargePrepaidMap}) } - if launchTemplateVersion.LaunchTemplateVersionData.DisableApiTermination != nil { - _ = d.Set("disable_api_termination", launchTemplateVersion.LaunchTemplateVersionData.DisableApiTermination) + if respData.LaunchTemplateVersionData.DisableApiTermination != nil { + _ = d.Set("disable_api_termination", respData.LaunchTemplateVersionData.DisableApiTermination) } + } return nil @@ -1497,9 +1502,7 @@ func resourceTencentCloudCvmLaunchTemplateVersionDelete(d *schema.ResourceData, defer tccommon.InconsistentCheck(d, meta)() logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - - service := CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { @@ -1508,9 +1511,30 @@ func resourceTencentCloudCvmLaunchTemplateVersionDelete(d *schema.ResourceData, launchTemplateId := idSplit[0] launchTemplateVersionNumber := idSplit[1] - if err := service.DeleteCvmLaunchTemplateVersionById(ctx, launchTemplateId, launchTemplateVersionNumber); err != nil { + var ( + request = cvm.NewDeleteLaunchTemplateVersionsRequest() + response = cvm.NewDeleteLaunchTemplateVersionsResponse() + ) + + request.LaunchTemplateId = helper.String(launchTemplateId) + + request.LaunchTemplateVersions = []*int64{helper.StrToInt64Point(launchTemplateVersionNumber)} + + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().DeleteLaunchTemplateVersionsWithContext(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 create cvm launch template version failed, reason:%+v", logId, err) return err } + _ = response return nil } diff --git a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_version_extension.go b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_version_extension.go new file mode 100644 index 0000000000..b417cc5d9f --- /dev/null +++ b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_version_extension.go @@ -0,0 +1 @@ +package cvm diff --git a/tencentcloud/services/cvm/service_tencentcloud_cvm.go b/tencentcloud/services/cvm/service_tencentcloud_cvm.go index cb4a611739..b59f5c9ff4 100644 --- a/tencentcloud/services/cvm/service_tencentcloud_cvm.go +++ b/tencentcloud/services/cvm/service_tencentcloud_cvm.go @@ -1436,11 +1436,11 @@ func (me *CvmService) DeleteCvmLaunchTemplateById(ctx context.Context, launchTem return } -func (me *CvmService) DescribeCvmLaunchTemplateVersionById(ctx context.Context, launchTemplateId, launchTemplateVersionNumber string) (launchTemplateVersion *cvm.LaunchTemplateVersionInfo, errRet error) { +func (me *CvmService) DescribeCvmLaunchTemplateVersionById(ctx context.Context, launchTemplateId string, launchTemplateVersionNumber string) (ret *cvm.LaunchTemplateVersionInfo, errRet error) { logId := tccommon.GetLogId(ctx) request := cvm.NewDescribeLaunchTemplateVersionsRequest() - request.LaunchTemplateId = &launchTemplateId + request.LaunchTemplateId = helper.String(launchTemplateId) request.LaunchTemplateVersions = []*uint64{helper.StrToUint64Point(launchTemplateVersionNumber)} defer func() { @@ -1462,7 +1462,7 @@ func (me *CvmService) DescribeCvmLaunchTemplateVersionById(ctx context.Context, return } - launchTemplateVersion = response.Response.LaunchTemplateVersionSet[0] + ret = response.Response.LaunchTemplateVersionSet[0] return } From 93315bc4f2c3a434abce80fb2b3c9e73bee3e09e Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Mon, 13 May 2024 20:02:22 +0800 Subject: [PATCH 12/20] refactor: regenerate some cvm resources --- .../cvm/resource_tc_cvm_launch_template_default_version.go | 2 +- tencentcloud/services/cvm/service_tencentcloud_cvm.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version.go b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version.go index bc57e513da..2fdf3fe5d6 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version.go @@ -108,7 +108,7 @@ func resourceTencentCloudCvmLaunchTemplateDefaultVersionUpdate(d *schema.Resourc if needChange { request := cvm.NewModifyLaunchTemplateDefaultVersionRequest() - request.LaunchTemplateId = &launchTemplateId + request.LaunchTemplateId = helper.String(launchTemplateId) if v, ok := d.GetOkExists("default_version"); ok { request.DefaultVersion = helper.IntInt64(v.(int)) diff --git a/tencentcloud/services/cvm/service_tencentcloud_cvm.go b/tencentcloud/services/cvm/service_tencentcloud_cvm.go index b59f5c9ff4..ad23b858ab 100644 --- a/tencentcloud/services/cvm/service_tencentcloud_cvm.go +++ b/tencentcloud/services/cvm/service_tencentcloud_cvm.go @@ -1914,7 +1914,7 @@ func (me *CvmService) DescribeCvmLaunchTemplateDefaultVersionById(ctx context.Co logId := tccommon.GetLogId(ctx) request := cvm.NewDescribeLaunchTemplateVersionsRequest() - request.LaunchTemplateId = &launchTemplateId + request.LaunchTemplateId = helper.String(launchTemplateId) defer func() { if errRet != nil { From 3f155ba66fa65c7cb4fc95655edaf5af25f79c9b Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Tue, 11 Jun 2024 17:01:42 +0800 Subject: [PATCH 13/20] test: modify tencentcloud_cvm_instances_modification test --- ...urce_tc_cvm_instances_modification_test.go | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/tencentcloud/services/cvm/data_source_tc_cvm_instances_modification_test.go b/tencentcloud/services/cvm/data_source_tc_cvm_instances_modification_test.go index 820993fecf..cbffa587f1 100644 --- a/tencentcloud/services/cvm/data_source_tc_cvm_instances_modification_test.go +++ b/tencentcloud/services/cvm/data_source_tc_cvm_instances_modification_test.go @@ -27,8 +27,34 @@ func TestAccTencentCloudCvmInstancesModificationDataSource_basic(t *testing.T) { }) } -const testAccCvmInstancesModificationDataSource = tcacctest.DefaultCvmModificationVariable + ` +const testAccCvmInstancesModificationDataSource = ` +data "tencentcloud_images" "default" { + image_type = ["PUBLIC_IMAGE"] + image_name_regex = "Final" +} +data "tencentcloud_instance_types" "default" { + memory_size = 2 + exclude_sold_out = true + filter { + name = "instance-family" + values = ["SA2","SA3","SA4","SA5","S2","S3"] + } + filter { + name = "zone" + values = ["ap-guangzhou-7"] + } + cpu_core_count = 2 +} + +resource "tencentcloud_instance" "test_cvm" { + image_id = data.tencentcloud_images.default.images.0.image_id + availability_zone = "ap-guangzhou-7" + instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type + orderly_security_groups = ["sg-5275dorp"] + instance_charge_type = "POSTPAID_BY_HOUR" +} + data "tencentcloud_cvm_instances_modification" "foo" { - instance_ids = [var.cvm_id] + instance_ids = [tencentcloud_instance.test_cvm.id] } ` From 6b8775713fdbe547d9283688326b1d8a75159dfa Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Tue, 11 Jun 2024 17:11:27 +0800 Subject: [PATCH 14/20] test: modify tencentcloud_cvm_instance_vnc_url test --- ...ata_source_tc_cvm_instance_vnc_url_test.go | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/tencentcloud/services/cvm/data_source_tc_cvm_instance_vnc_url_test.go b/tencentcloud/services/cvm/data_source_tc_cvm_instance_vnc_url_test.go index 4edc19b686..914bf7906a 100644 --- a/tencentcloud/services/cvm/data_source_tc_cvm_instance_vnc_url_test.go +++ b/tencentcloud/services/cvm/data_source_tc_cvm_instance_vnc_url_test.go @@ -1,6 +1,7 @@ package cvm_test import ( + "fmt" "testing" tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" @@ -18,15 +19,48 @@ func TestAccTencentCloudCvmInstanceVncUrlDataSource_basic(t *testing.T) { Steps: []resource.TestStep{ { Config: testAccCvmInstanceVncUrlDataSource, - Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_cvm_instance_vnc_url.instance_vnc_url")), + Check: resource.ComposeTestCheckFunc( + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_cvm_instance_vnc_url.instance_vnc_url"), + resource.TestCheckResourceAttrWith("data.tencentcloud_cvm_instance_vnc_url.instance_vnc_url", "instance_vnc_url", func(value string) error { + if value == "" { + return fmt.Errorf("vnc url is empty") + } + return nil + }), + ), }, }, }) } -const testAccCvmInstanceVncUrlDataSource = tcacctest.DefaultCvmModificationVariable + ` +const testAccCvmInstanceVncUrlDataSource = ` +data "tencentcloud_images" "default" { + image_type = ["PUBLIC_IMAGE"] + image_name_regex = "Final" +} +data "tencentcloud_instance_types" "default" { + memory_size = 2 + exclude_sold_out = true + filter { + name = "instance-family" + values = ["SA2","SA3","SA4","SA5","S2","S3"] + } + filter { + name = "zone" + values = ["ap-guangzhou-7"] + } + cpu_core_count = 2 +} + +resource "tencentcloud_instance" "test_cvm" { + image_id = data.tencentcloud_images.default.images.0.image_id + availability_zone = "ap-guangzhou-7" + instance_type = data.tencentcloud_instance_types.default.instance_types.0.instance_type + orderly_security_groups = ["sg-5275dorp"] + instance_charge_type = "POSTPAID_BY_HOUR" +} data "tencentcloud_cvm_instance_vnc_url" "instance_vnc_url" { - instance_id = var.cvm_id + instance_id = tencentcloud_instance.test_cvm.id } ` From a0c3bfdfa9d4c9962142c145a4117330c018762c Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Tue, 11 Jun 2024 17:18:46 +0800 Subject: [PATCH 15/20] test: modify tencentcloud_eip_address_quota test --- .../services/cvm/data_source_tc_eip_address_quota_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tencentcloud/services/cvm/data_source_tc_eip_address_quota_test.go b/tencentcloud/services/cvm/data_source_tc_eip_address_quota_test.go index f8a6d50aad..aefadb3610 100644 --- a/tencentcloud/services/cvm/data_source_tc_eip_address_quota_test.go +++ b/tencentcloud/services/cvm/data_source_tc_eip_address_quota_test.go @@ -18,7 +18,10 @@ func TestAccTencentCloudEipAddressQuotaDataSource_basic(t *testing.T) { Steps: []resource.TestStep{ { Config: testAccEipAddressQuotaDataSource, - Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eip_address_quota.address_quota")), + Check: resource.ComposeTestCheckFunc( + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eip_address_quota.address_quota"), + resource.TestCheckResourceAttrSet("data.tencentcloud_eip_address_quota.address_quota", "quota_set.#"), + ), }, }, }) From f41b332405f18fa4f319dd0a861924bab47f7b41 Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Tue, 11 Jun 2024 17:23:17 +0800 Subject: [PATCH 16/20] test: modify tencentcloud_eip_network_account_type test --- .../data_source_tc_eip_network_account_type_test.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tencentcloud/services/cvm/data_source_tc_eip_network_account_type_test.go b/tencentcloud/services/cvm/data_source_tc_eip_network_account_type_test.go index a4f469f11a..b210d67ce2 100644 --- a/tencentcloud/services/cvm/data_source_tc_eip_network_account_type_test.go +++ b/tencentcloud/services/cvm/data_source_tc_eip_network_account_type_test.go @@ -1,6 +1,7 @@ package cvm_test import ( + "fmt" "testing" tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" @@ -18,7 +19,17 @@ func TestAccTencentCloudEipNetworkAccountTypeDataSource_basic(t *testing.T) { Steps: []resource.TestStep{ { Config: testAccEipNetworkAccountTypeDataSource, - Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eip_network_account_type.network_account_type")), + Check: resource.ComposeTestCheckFunc( + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eip_network_account_type.network_account_type"), + resource.TestCheckResourceAttrWith("data.tencentcloud_eip_network_account_type.network_account_type", "network_account_type", func(value string) error { + switch value { + case "STANDARD", "LEGACY": + default: + return fmt.Errorf("invalid network type: %q", value) + } + return nil + }), + ), }, }, }) From 273d9f1f029af66a67c3beba68a251c857338c9a Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Wed, 12 Jun 2024 14:01:55 +0800 Subject: [PATCH 17/20] test: modify tencentcloud_cvm_launch_template_version test --- ...vm_launch_template_default_version_test.go | 47 ++++++-- ...rce_tc_cvm_launch_template_version_test.go | 101 +++++++++++++++--- 2 files changed, 122 insertions(+), 26 deletions(-) diff --git a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version_test.go b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version_test.go index 7223f7a3d5..8f70f7fe9e 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version_test.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version_test.go @@ -17,23 +17,52 @@ func TestAccTencentCloudCvmLaunchTemplateDefaultVersionResource_basic(t *testing Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: testAccCvmLaunchTemplateDefaultVersion, - Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_cvm_launch_template_default_version.launch_template_default_version", "id")), + Config: testAccCvmLaunchTemplateDefaultVersionBase + testAccCvmLaunchTemplateDefaultVersion1, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("tencentcloud_cvm_launch_template_default_version.test_launch_tpl_default", "default_version", "2"), + ), }, { - ResourceName: "tencentcloud_cvm_launch_template_default_version.launch_template_default_version", - ImportState: true, - ImportStateVerify: true, + Config: testAccCvmLaunchTemplateDefaultVersionBase + testAccCvmLaunchTemplateDefaultVersion2, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("tencentcloud_cvm_launch_template_default_version.test_launch_tpl_default", "default_version", "1"), + ), }, }, }) } -const testAccCvmLaunchTemplateDefaultVersion = ` +const testAccCvmLaunchTemplateDefaultVersionBase = ` +data "tencentcloud_images" "default" { + image_type = ["PUBLIC_IMAGE"] + image_name_regex = "Final" +} +resource "tencentcloud_cvm_launch_template" "test_launch_tpl" { + launch_template_name = "test" + image_id = data.tencentcloud_images.default.images.0.image_id + placement { + zone = "ap-guangzhou-7" + } + instance_name = "v1" +} +resource "tencentcloud_cvm_launch_template_version" "test_launch_tpl_v2" { + launch_template_id = tencentcloud_cvm_launch_template.test_launch_tpl.id + placement { + zone = "ap-guangzhou-7" + } + instance_name = "v2" +}` -resource "tencentcloud_cvm_launch_template_default_version" "launch_template_default_version" { - launch_template_id = "lt-9e1znnsa" - default_version = 4 +const testAccCvmLaunchTemplateDefaultVersion1 = ` +resource "tencentcloud_cvm_launch_template_default_version" "test_launch_tpl_default" { + launch_template_id = tencentcloud_cvm_launch_template.test_launch_tpl.id + default_version = tencentcloud_cvm_launch_template_version.test_launch_tpl_v2.launch_template_version } +` +const testAccCvmLaunchTemplateDefaultVersion2 = ` +resource "tencentcloud_cvm_launch_template_default_version" "test_launch_tpl_default" { + launch_template_id = tencentcloud_cvm_launch_template.test_launch_tpl.id + default_version = 1 +} ` diff --git a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_version_test.go b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_version_test.go index d8eef76859..cb14c0bf8d 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_version_test.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_version_test.go @@ -18,28 +18,95 @@ func TestAccTencentCloudCvmLaunchTemplateVersionResource_basic(t *testing.T) { Steps: []resource.TestStep{ { Config: testAccCvmLaunchTemplateVersion, - Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_cvm_launch_template_version.launch_template_version", "id")), - }, - { - ResourceName: "tencentcloud_cvm_launch_template_version.launch_template_version", - ImportState: true, - ImportStateVerify: true, + Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_cvm_launch_template_version.test_launch_tpl_v2", "id")), }, }, }) } const testAccCvmLaunchTemplateVersion = ` -resource "tencentcloud_cvm_launch_template_version" "launch_template_version" { - placement { - zone = "ap-guangzhou-6" - project_id = 0 - - } - launch_template_id = "lt-9e1znnsa" - launch_template_version_description = "version description" - disable_api_termination = false - instance_type = "S5.MEDIUM4" - image_id = "img-9qrfy1xt" +data "tencentcloud_images" "default" { + image_type = ["PUBLIC_IMAGE"] + image_name_regex = "Final" +} +data "tencentcloud_vpc_instances" "vpc" { + is_default = true +} +data "tencentcloud_vpc_subnets" "subnets" { + availability_zone = "ap-guangzhou-7" + vpc_id = data.tencentcloud_vpc_instances.vpc.instance_list.0.vpc_id +} + +resource "tencentcloud_cvm_launch_template" "test_launch_tpl" { + launch_template_name = "test" + image_id = data.tencentcloud_images.default.images.0.image_id + placement { + zone = "ap-guangzhou-7" + } + instance_name = "v1" +} + +resource "tencentcloud_cvm_launch_template_version" "test_launch_tpl_v2" { + launch_template_id = tencentcloud_cvm_launch_template.test_launch_tpl.id + placement { + zone = "ap-guangzhou-7" + project_id = 0 + } + launch_template_version_description = "test" + instance_type = "S5.MEDIUM2" + image_id = data.tencentcloud_images.default.images.0.image_id +# system_disk { +# disk_type = "CLOUD_PREMIUM" +# disk_size = 20 +# } +# data_disks { +# disk_type = "CLOUD_PREMIUM" +# disk_size = 200 +# } + virtual_private_cloud { + vpc_id = data.tencentcloud_vpc_subnets.subnets.instance_list.0.vpc_id + subnet_id = data.tencentcloud_vpc_subnets.subnets.instance_list.0.subnet_id + } +# internet_accessible { +# internet_charge_type = "TRAFFIC_POSTPAID_BY_HOUR" +# internet_max_bandwidth_out = 20 +# } + instance_count = 2 + instance_name = "v2" + security_group_ids = ["sg-5275dorp","sg-cm7fbbf3"] + enhanced_service { + security_service { + enabled = true + } + monitor_service { + enabled = true + } + automation_service { + enabled = false + } + } + client_token = "123" + host_name = "test" + disaster_recover_group_ids = [] + tag_specification { + resource_type = "instance" + tags { + key = "key" + value = "value2" + } + tags { + key = "key2" + value = "value1" + } + } + user_data = "aGhoCg==" + cam_role_name = "" + hpc_cluster_id = "" + instance_charge_type = "PREPAID" + instance_charge_prepaid { + period = 3 + renew_flag = "DISABLE_NOTIFY_AND_MANUAL_RENEW" + } + disable_api_termination = true } ` From c4543be892e4e0cd56b07474ded8c0ed603d9b69 Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Wed, 12 Jun 2024 15:56:23 +0800 Subject: [PATCH 18/20] test: modify tencentcloud_cvm_modify_instance_disk_type test --- ...e_tc_cvm_modify_instance_disk_type_test.go | 62 ++++++++++++------- 1 file changed, 39 insertions(+), 23 deletions(-) diff --git a/tencentcloud/services/cvm/resource_tc_cvm_modify_instance_disk_type_test.go b/tencentcloud/services/cvm/resource_tc_cvm_modify_instance_disk_type_test.go index 5b9a7dd022..e3e2919672 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_modify_instance_disk_type_test.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_modify_instance_disk_type_test.go @@ -18,39 +18,55 @@ func TestAccTencentCloudNeedFixCvmModifyInstanceDiskTypeResource_basic(t *testin Steps: []resource.TestStep{ { Config: testAccCvmModifyInstanceDiskType, - Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_cvm_modify_instance_disk_type.modify_instance_disk_type", "id")), - }, - { - ResourceName: "tencentcloud_cvm_modify_instance_disk_type.modify_instance_disk_type", - ImportState: true, - ImportStateVerify: true, + Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_cvm_modify_instance_disk_type.modify_disk_type", "id")), }, }, }) } const testAccCvmModifyInstanceDiskType = ` +data "tencentcloud_images" "default" { + image_type = ["PUBLIC_IMAGE"] + image_name_regex = "Final" +} +data "tencentcloud_instance_types" "default" { + memory_size = 2 + exclude_sold_out = true + filter { + name = "instance-family" + values = ["SA2","SA3","SA4","SA5","S2","S3"] + } + filter { + name = "zone" + values = ["ap-guangzhou-7"] + } + cpu_core_count = 2 +} -resource "tencentcloud_cvm_modify_instance_disk_type" "modify_instance_disk_type" { - instance_id = "ins-r8hr2upy" +resource "tencentcloud_instance" "test_cvm" { + image_id = data.tencentcloud_images.default.images.0.image_id + availability_zone = "ap-guangzhou-7" + instance_type = "SA2.MEDIUM2" + orderly_security_groups = ["sg-5275dorp"] + instance_charge_type = "POSTPAID_BY_HOUR" data_disks { - disk_size = 50 - disk_type = "CLOUD_BASIC" - disk_id = "disk-hrsd0u81" - delete_with_instance = true - snapshot_id = "snap-r9unnd89" - encrypt = false - kms_key_id = "kms-abcd1234" - throughput_performance = 2 - cdc_id = "cdc-b9pbd3px" - + data_disk_size = 50 + data_disk_type = "CLOUD_PREMIUM" } - system_disk { - disk_type = "CLOUD_PREMIUM" - disk_id = "disk-1drr53sd" - disk_size = 50 - cdc_id = "cdc-b9pbd3px" + running_flag = false +} +resource "tencentcloud_cvm_modify_instance_disk_type" "modify_disk_type" { + instance_id = tencentcloud_instance.test_cvm.id + system_disk { + disk_type = "CLOUD_SSD" + disk_size = 50 + } + data_disks { + disk_type = "CLOUD_SSD" + disk_size = 50 + delete_with_instance = true + throughput_performance = 100 } } From cbe75b8234b0e719ba3f5ca753c1653a5639bf8d Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Wed, 12 Jun 2024 16:55:50 +0800 Subject: [PATCH 19/20] test: modify tencentcloud_cvm_reboot_instance test --- .../resource_tc_cvm_reboot_instance_test.go | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance_test.go b/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance_test.go index baa300b025..70ec67f66d 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance_test.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance_test.go @@ -18,16 +18,42 @@ func TestAccTencentCloudCvmRebootInstanceResource_basic(t *testing.T) { Steps: []resource.TestStep{ { Config: testAccCvmRebootInstance, - Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_cvm_reboot_instance.reboot_instance", "id")), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_cvm_reboot_instance.reboot", "id"), + ), }, }, }) } -const testAccCvmRebootInstance = tcacctest.DefaultRebootCvmVariable + ` +const testAccCvmRebootInstance = ` +data "tencentcloud_images" "default" { + image_type = ["PUBLIC_IMAGE"] + image_name_regex = "Final" +} +data "tencentcloud_instance_types" "default" { + memory_size = 2 + exclude_sold_out = true + filter { + name = "instance-family" + values = ["SA2","SA3","SA4","SA5","S2","S3"] + } + filter { + name = "zone" + values = ["ap-guangzhou-7"] + } + cpu_core_count = 2 +} +resource "tencentcloud_instance" "test_cvm" { + image_id = data.tencentcloud_images.default.images.0.image_id + availability_zone = "ap-guangzhou-7" + instance_type = "SA2.MEDIUM2" + orderly_security_groups = ["sg-5275dorp"] + instance_charge_type = "POSTPAID_BY_HOUR" +} -resource "tencentcloud_cvm_reboot_instance" "reboot_instance" { - instance_id = var.cvm_id - stop_type = "SOFT_FIRST" +resource tencentcloud_cvm_reboot_instance reboot { + instance_id = tencentcloud_instance.test_cvm.id + stop_type = "SOFT" } ` From 360853e2e6d64171854682a255cb96cbe570e804 Mon Sep 17 00:00:00 2001 From: Yanghao LUO Date: Wed, 12 Jun 2024 18:42:48 +0800 Subject: [PATCH 20/20] fix: tencentcloud_cvm_reboot_instance and tencentcloud_cvm_launch_template_default_version --- .../cvm/resource_tc_cvm_launch_template_default_version.go | 2 +- .../services/cvm/resource_tc_cvm_reboot_instance.go | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version.go b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version.go index 2fdf3fe5d6..1baadfd38f 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_launch_template_default_version.go @@ -80,7 +80,7 @@ func resourceTencentCloudCvmLaunchTemplateDefaultVersionRead(d *schema.ResourceD return nil } if respData.LaunchTemplateVersion != nil { - _ = d.Set("launch_template_version", respData.LaunchTemplateVersion) + _ = d.Set("default_version", respData.LaunchTemplateVersion) } return nil diff --git a/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance.go b/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance.go index 3dd0d36e76..ac03c6c12c 100644 --- a/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance.go +++ b/tencentcloud/services/cvm/resource_tc_cvm_reboot_instance.go @@ -67,11 +67,7 @@ func resourceTencentCloudCvmRebootInstanceCreate(d *schema.ResourceData, meta in } if v, ok := d.GetOk("instance_id"); ok { - instanceIdsSet := v.(*schema.Set).List() - for i := range instanceIdsSet { - instanceIds := instanceIdsSet[i].(string) - request.InstanceIds = append(request.InstanceIds, helper.String(instanceIds)) - } + request.InstanceIds = []*string{helper.String(v.(string))} } if v, ok := d.GetOkExists("force_reboot"); ok {