From a3d260383a915ce222c0c29bdb67b40cfcf57de6 Mon Sep 17 00:00:00 2001 From: mikatong Date: Thu, 7 Apr 2022 15:24:51 +0800 Subject: [PATCH 1/4] fix: emr clear metadb --- tencentcloud/resource_tc_emr_cluster.go | 29 ++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/tencentcloud/resource_tc_emr_cluster.go b/tencentcloud/resource_tc_emr_cluster.go index 2f8eb67375..7a8ff74b91 100644 --- a/tencentcloud/resource_tc_emr_cluster.go +++ b/tencentcloud/resource_tc_emr_cluster.go @@ -321,11 +321,19 @@ func resourceTencentCloudEmrClusterDelete(d *schema.ResourceData, meta interface emrService := EMRService{ client: meta.(*TencentCloudClient).apiV3Conn, } - if err := emrService.DeleteInstance(ctx, d); err != nil { + instanceId := d.Id() + clusters, err := emrService.DescribeInstancesById(ctx, instanceId, DisplayStrategyIsclusterList) + if len(clusters) == 0 { + return innerErr.New("Not find clusters.") + } + metaDB := clusters[0].MetaDb + if err != nil { return err } - instanceId := d.Id() - err := resource.Retry(10*readRetryTimeout, func() *resource.RetryError { + if err = emrService.DeleteInstance(ctx, d); err != nil { + return err + } + err = resource.Retry(10*readRetryTimeout, func() *resource.RetryError { clusters, err := emrService.DescribeInstancesById(ctx, instanceId, DisplayStrategyIsclusterList) if e, ok := err.(*errors.TencentCloudSDKError); ok { @@ -353,6 +361,21 @@ func resourceTencentCloudEmrClusterDelete(d *schema.ResourceData, meta interface if err != nil { return err } + // remove metadb + mysqlService := MysqlService{client: meta.(*TencentCloudClient).apiV3Conn} + + err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := mysqlService.OfflineIsolatedInstances(ctx, *metaDB) + if err != nil { + return retryError(err, InternalError) + } + return nil + }) + + if err != nil { + return err + } + return nil } From 235edabd4a43fd35fda14ed83caa1b2a28cf6e33 Mon Sep 17 00:00:00 2001 From: mikatong Date: Thu, 7 Apr 2022 15:30:39 +0800 Subject: [PATCH 2/4] fix: fmt resource_tc_eni_test.go --- tencentcloud/resource_tc_eni_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tencentcloud/resource_tc_eni_test.go b/tencentcloud/resource_tc_eni_test.go index 7ad11ad3c9..3f3a1f04f4 100644 --- a/tencentcloud/resource_tc_eni_test.go +++ b/tencentcloud/resource_tc_eni_test.go @@ -34,7 +34,7 @@ func testSweepEniInstance(region string) error { client: client.apiV3Conn, } - instances, err := vpcService.DescribeEniByFilters(ctx, nil, nil, nil, nil, nil, nil,nil,nil) + instances, err := vpcService.DescribeEniByFilters(ctx, nil, nil, nil, nil, nil, nil, nil, nil) if err != nil { return fmt.Errorf("get instance list error: %s", err.Error()) } From 75182506ae5520c876a521d40f51d7e3bb7e08d9 Mon Sep 17 00:00:00 2001 From: mikatong Date: Thu, 7 Apr 2022 15:43:28 +0800 Subject: [PATCH 3/4] fix: emr unit test --- tencentcloud/basic_test.go | 2 +- tencentcloud/data_source_tc_emr_nodes_test.go | 49 ++----------------- 2 files changed, 5 insertions(+), 46 deletions(-) diff --git a/tencentcloud/basic_test.go b/tencentcloud/basic_test.go index 7501079111..ce1f4d068e 100644 --- a/tencentcloud/basic_test.go +++ b/tencentcloud/basic_test.go @@ -66,7 +66,7 @@ const ( defaultTkeOSImageId = "img-2lr9q49h" defaultTkeOSImageName = "tlinux2.2(tkernel3)x86_64" - defaultEMRSgId = "sg-qyy7jd2b" + defaultEMRSgId = "sg-mag8k2fj" ) // Tke Exclusive Network Environment diff --git a/tencentcloud/data_source_tc_emr_nodes_test.go b/tencentcloud/data_source_tc_emr_nodes_test.go index 47c558e320..e3d8240619 100644 --- a/tencentcloud/data_source_tc_emr_nodes_test.go +++ b/tencentcloud/data_source_tc_emr_nodes_test.go @@ -13,7 +13,7 @@ func TestAccDataSourceTencentCloudEMRNodes(t *testing.T) { Providers: testAccProviders, Steps: []resource.TestStep{ { - Config: testAccEMRNodes, + Config: testAccEMRNodes(), Check: resource.ComposeTestCheckFunc( testAccCheckTencentCloudDataSourceID("data.tencentcloud_emr_nodes.my_emr_nodes"), resource.TestCheckResourceAttr("data.tencentcloud_emr_nodes.my_emr_nodes", "nodes.#", "1"), @@ -23,52 +23,11 @@ func TestAccDataSourceTencentCloudEMRNodes(t *testing.T) { }) } -const testAccEMRNodes = ` - -resource "tencentcloud_emr_cluster" "emrrrr" { - product_id=4 - display_strategy="clusterList" - vpc_settings={ - vpc_id="vpc-4owdpnwr" - subnet_id:"subnet-ahv6swf2" - } - softwares=["zookeeper-3.6.1"] - support_ha=0 - instance_name="emr-test" - resource_spec { - master_resource_spec { - mem_size=8192 - cpu=4 - disk_size=100 - disk_type="CLOUD_PREMIUM" - spec="CVM.S2" - storage_type=5 - } - core_resource_spec { - mem_size=8192 - cpu=4 - disk_size=100 - disk_type="CLOUD_PREMIUM" - spec="CVM.S2" - storage_type=5 - } - master_count=1 - core_count=2 - } - login_settings={ - password="tencent@cloud123" - } - time_span=3600 - time_unit="s" - pay_mode=0 - placement={ - zone="ap-guangzhou-3" - project_id=0 - } - sg_id="sg-qyy7jd2b" -} +func testAccEMRNodes() string { + return testEmrBasic() + ` data "tencentcloud_emr_nodes" "my_emr_nodes" { node_flag="master" instance_id=tencentcloud_emr_cluster.emrrrr.instance_id } ` +} From 7fccd17736a27d0a7e030dd8397124d46157d8bf Mon Sep 17 00:00:00 2001 From: mikatong Date: Thu, 7 Apr 2022 16:20:48 +0800 Subject: [PATCH 4/4] fix: no metadb case --- tencentcloud/resource_tc_emr_cluster.go | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/tencentcloud/resource_tc_emr_cluster.go b/tencentcloud/resource_tc_emr_cluster.go index 7a8ff74b91..c8c4a04c1a 100644 --- a/tencentcloud/resource_tc_emr_cluster.go +++ b/tencentcloud/resource_tc_emr_cluster.go @@ -361,21 +361,23 @@ func resourceTencentCloudEmrClusterDelete(d *schema.ResourceData, meta interface if err != nil { return err } - // remove metadb - mysqlService := MysqlService{client: meta.(*TencentCloudClient).apiV3Conn} - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - err := mysqlService.OfflineIsolatedInstances(ctx, *metaDB) + if metaDB != nil && *metaDB != "" { + // remove metadb + mysqlService := MysqlService{client: meta.(*TencentCloudClient).apiV3Conn} + + err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := mysqlService.OfflineIsolatedInstances(ctx, *metaDB) + if err != nil { + return retryError(err, InternalError) + } + return nil + }) + if err != nil { - return retryError(err, InternalError) + return err } - return nil - }) - - if err != nil { - return err } - return nil }