From 28df8c77895434c010ae50af71d11e04e4229553 Mon Sep 17 00:00:00 2001 From: mikatong Date: Fri, 9 Aug 2024 14:20:22 +0800 Subject: [PATCH 1/2] fix emr need_master_wan --- tencentcloud/acctest/basic.go | 6 +- .../services/emr/resource_tc_emr_cluster.go | 16 +--- .../emr/resource_tc_emr_cluster_test.go | 89 ++++++++++++++++++- 3 files changed, 95 insertions(+), 16 deletions(-) diff --git a/tencentcloud/acctest/basic.go b/tencentcloud/acctest/basic.go index 2313184478..10ec15adec 100644 --- a/tencentcloud/acctest/basic.go +++ b/tencentcloud/acctest/basic.go @@ -116,9 +116,9 @@ variable "default_project" { // EMR const ( - DefaultEMRVpcId = DefaultVpcId - DefaultEMRSubnetId = DefaultSubnetId - DefaultEMRSgId = "sg-694qit0p" + DefaultEMRVpcId = "vpc-axrsmmrv" + DefaultEMRSubnetId = "subnet-j5vja918" + DefaultEMRSgId = "sg-bzbu5ezt" ) const DefaultEMRVariable = ` diff --git a/tencentcloud/services/emr/resource_tc_emr_cluster.go b/tencentcloud/services/emr/resource_tc_emr_cluster.go index e1a4727c01..14144ae0a2 100644 --- a/tencentcloud/services/emr/resource_tc_emr_cluster.go +++ b/tencentcloud/services/emr/resource_tc_emr_cluster.go @@ -328,10 +328,8 @@ func resourceTencentCloudEmrClusterCreate(d *schema.ResourceData, meta interface err = resource.Retry(10*tccommon.ReadRetryTimeout, func() *resource.RetryError { clusters, err := emrService.DescribeInstancesById(ctx, instanceId, displayStrategy) - if e, ok := err.(*errors.TencentCloudSDKError); ok { - if e.GetCode() == "InternalError.ClusterNotFound" { - return nil - } + if err != nil { + return resource.RetryableError(err) } if len(clusters) > 0 { @@ -342,9 +340,6 @@ func resourceTencentCloudEmrClusterCreate(d *schema.ResourceData, meta interface } } - if err != nil { - return resource.RetryableError(err) - } return nil }) if err != nil { @@ -377,10 +372,7 @@ func resourceTencentCloudEmrClusterDelete(d *schema.ResourceData, meta interface clusters, err := emrService.DescribeInstancesById(ctx, instanceId, DisplayStrategyIsclusterList) if e, ok := err.(*errors.TencentCloudSDKError); ok { - if e.GetCode() == "InternalError.ClusterNotFound" { - return nil - } - if e.GetCode() == "UnauthorizedOperation" { + if e.GetCode() == "ResourceNotFound.InstanceNotFound" { return nil } } @@ -619,7 +611,7 @@ func resourceTencentCloudEmrClusterRead(d *schema.ResourceData, meta interface{} "zone": *instance.Zone, }) _ = d.Set("placement_info", []interface{}{placement}) - if instance.MasterIp != nil { + if instance.MasterIp != nil && len(*instance.MasterIp) > 2 { _ = d.Set("need_master_wan", "NEED_MASTER_WAN") } else { _ = d.Set("need_master_wan", "NOT_NEED_MASTER_WAN") diff --git a/tencentcloud/services/emr/resource_tc_emr_cluster_test.go b/tencentcloud/services/emr/resource_tc_emr_cluster_test.go index c4ae9898a6..b4096c202b 100644 --- a/tencentcloud/services/emr/resource_tc_emr_cluster_test.go +++ b/tencentcloud/services/emr/resource_tc_emr_cluster_test.go @@ -133,7 +133,7 @@ var testEmrClusterResourceKey = "tencentcloud_emr_cluster.emrrrr" func TestAccTencentCloudEmrClusterResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, + PreCheck: func() { tcacctest.AccPreCheck(t) }, Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { @@ -167,6 +167,23 @@ func TestAccTencentCloudEmrClusterResource(t *testing.T) { }) } +func TestAccTencentCloudEmrClusterResource_NotNeedMasterWan(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testEmrNotNeedMasterWan, + Check: resource.ComposeTestCheckFunc( + testAccCheckEmrExists(testEmrClusterResourceKey), + resource.TestCheckResourceAttr(testEmrClusterResourceKey, "need_master_wan", "NOT_NEED_MASTER_WAN"), + ), + }, + }, + }) +} + func testAccCheckEmrExists(n string) resource.TestCheckFunc { return func(s *terraform.State) error { @@ -277,3 +294,73 @@ resource "tencentcloud_emr_cluster" "emrrrr" { } } ` + +const testEmrNotNeedMasterWan = tcacctest.DefaultEMRVariable + ` +data "tencentcloud_instance_types" "cvm4c8m" { + exclude_sold_out=true + cpu_core_count=4 + memory_size=8 + filter { + name = "instance-charge-type" + values = ["POSTPAID_BY_HOUR"] + } + filter { + name = "zone" + values = ["ap-guangzhou-3"] + } +} + +resource "tencentcloud_emr_cluster" "emrrrr" { + product_id=38 + vpc_settings={ + vpc_id=var.vpc_id + subnet_id=var.subnet_id + } + softwares = [ + "hdfs-2.8.5", + "knox-1.6.1", + "openldap-2.4.44", + "yarn-2.8.5", + "zookeeper-3.6.3", + ] + support_ha=0 + instance_name="emr-test-demo" + resource_spec { + master_resource_spec { + mem_size=8192 + cpu=4 + disk_size=100 + disk_type="CLOUD_PREMIUM" + spec="CVM.${data.tencentcloud_instance_types.cvm4c8m.instance_types.0.family}" + storage_type=5 + root_size=50 + } + core_resource_spec { + mem_size=8192 + cpu=4 + disk_size=100 + disk_type="CLOUD_PREMIUM" + spec="CVM.${data.tencentcloud_instance_types.cvm4c8m.instance_types.0.family}" + storage_type=5 + root_size=50 + } + master_count=1 + core_count=2 + } + login_settings={ + password="Tencent@cloud123" + } + time_span=3600 + time_unit="s" + pay_mode=0 + placement_info { + zone="ap-guangzhou-3" + project_id=0 + } + sg_id=var.sg_id + tags = { + emr-key = "emr-value" + } + need_master_wan = "NOT_NEED_MASTER_WAN" + } +` From 2bfa5cec66a5fb80826d5b14169afaf4ea81e277 Mon Sep 17 00:00:00 2001 From: mikatong Date: Fri, 9 Aug 2024 14:23:52 +0800 Subject: [PATCH 2/2] add changelog --- .changelog/2768.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/2768.txt diff --git a/.changelog/2768.txt b/.changelog/2768.txt new file mode 100644 index 0000000000..76097fa494 --- /dev/null +++ b/.changelog/2768.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_emr_cluster: fix read need_master_wan +```