Skip to content

Commit 5d18fac

Browse files
tongyimingmikatong
andauthored
fix(es): [124389095]update es_public_acl error (#3409)
* fix update es_public_acl error * add changelog --------- Co-authored-by: mikatong <[email protected]>
1 parent 7ee6243 commit 5d18fac

File tree

3 files changed

+131
-3
lines changed

3 files changed

+131
-3
lines changed

.changelog/3409.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_elasticsearch_instance: fix update `es_public_acl` failed
3+
```

tencentcloud/services/es/resource_tc_elasticsearch_instance.go

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,9 +1013,9 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
10131013
}
10141014
}
10151015

1016-
if d.HasChange("public_access") || d.HasChange("es_public_acl") {
1016+
if d.HasChange("public_access") {
10171017
var publicAccess string
1018-
esPublicAcl := es.EsPublicAcl{}
1018+
esPublicAcl := &es.EsPublicAcl{}
10191019
if v, ok := d.GetOk("public_access"); ok {
10201020
publicAccess = v.(string)
10211021
}
@@ -1034,8 +1034,43 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
10341034
}
10351035
}
10361036
}
1037+
if publicAccess == ES_PUBLIC_ACCESS_CLOSE {
1038+
esPublicAcl = nil
1039+
}
10371040
err := resource.Retry(tccommon.WriteRetryTimeout*2, func() *resource.RetryError {
1038-
errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", "", "", "", publicAccess, 0, nil, nil, nil, nil, &esPublicAcl)
1041+
errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", "", "", "", publicAccess, 0, nil, nil, nil, nil, esPublicAcl)
1042+
if errRet != nil {
1043+
return tccommon.RetryError(errRet)
1044+
}
1045+
return nil
1046+
})
1047+
if err != nil {
1048+
return err
1049+
}
1050+
err = tencentCloudElasticsearchInstanceUpgradeWaiting(ctx, &elasticsearchService, instanceId)
1051+
if err != nil {
1052+
return err
1053+
}
1054+
}
1055+
1056+
if d.HasChange("es_public_acl") {
1057+
esPublicAcl := es.EsPublicAcl{}
1058+
if aclMap, ok := helper.InterfacesHeadMap(d, "es_public_acl"); ok {
1059+
// if v, ok := aclMap["black_ip_list"]; ok {
1060+
// bList := v.(*schema.Set).List()
1061+
// for _, d := range bList {
1062+
// esPublicAcl.BlackIpList = append(esPublicAcl.BlackIpList, helper.String(d.(string)))
1063+
// }
1064+
// }
1065+
if v, ok := aclMap["white_ip_list"]; ok {
1066+
wList := v.(*schema.Set).List()
1067+
for _, d := range wList {
1068+
esPublicAcl.WhiteIpList = append(esPublicAcl.WhiteIpList, helper.String(d.(string)))
1069+
}
1070+
}
1071+
}
1072+
err := resource.Retry(tccommon.WriteRetryTimeout*2, func() *resource.RetryError {
1073+
errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", "", "", "", "", 0, nil, nil, nil, nil, &esPublicAcl)
10391074
if errRet != nil {
10401075
return tccommon.RetryError(errRet)
10411076
}

tencentcloud/services/es/resource_tc_elasticsearch_instance_test.go

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,38 @@ func TestAccTencentCloudElasticsearchInstanceResource_kibanaPrivateAccess(t *tes
201201
})
202202
}
203203

204+
func TestAccTencentCloudElasticsearchInstanceResource_publicAccess(t *testing.T) {
205+
t.Parallel()
206+
207+
resource.Test(t, resource.TestCase{
208+
PreCheck: func() { tcacctest.AccPreCheck(t) },
209+
Providers: tcacctest.AccProviders,
210+
CheckDestroy: testAccCheckElasticsearchInstanceDestroy,
211+
Steps: []resource.TestStep{
212+
{
213+
Config: testAccElasticsearchInstancePublicAccessDefault,
214+
Check: resource.ComposeTestCheckFunc(
215+
testAccCheckElasticsearchInstanceExists("tencentcloud_elasticsearch_instance.es_kibana"),
216+
resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.es_kibana", "public_access", "OPEN"),
217+
resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.es_kibana", "es_public_acl.#", "1"),
218+
resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.es_kibana", "es_public_acl.0.white_ip_list.#", "1"),
219+
resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.es_kibana", "es_public_acl.0.white_ip_list.0", "127.0.0.1"),
220+
),
221+
},
222+
{
223+
Config: testAccElasticsearchInstanceKibanaPublicAccessUpdate,
224+
Check: resource.ComposeTestCheckFunc(
225+
testAccCheckElasticsearchInstanceExists("tencentcloud_elasticsearch_instance.es_kibana"),
226+
resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.es_kibana", "public_access", "OPEN"),
227+
resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.es_kibana", "es_public_acl.#", "1"),
228+
resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.es_kibana", "es_public_acl.0.white_ip_list.#", "1"),
229+
resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.es_kibana", "es_public_acl.0.white_ip_list.0", "127.0.0.2"),
230+
),
231+
},
232+
},
233+
})
234+
}
235+
204236
func testAccCheckElasticsearchInstanceDestroy(s *terraform.State) error {
205237
logId := tccommon.GetLogId(tccommon.ContextNil)
206238
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
@@ -436,3 +468,61 @@ resource "tencentcloud_elasticsearch_instance" "es_kibana" {
436468
}
437469
}
438470
`
471+
472+
const testAccElasticsearchInstancePublicAccessDefault = tcacctest.DefaultEsVariables + `
473+
resource "tencentcloud_elasticsearch_instance" "es_kibana" {
474+
instance_name = "tf-ci-test-kibana"
475+
availability_zone = var.availability_zone
476+
version = "7.10.1"
477+
vpc_id = var.vpc_id
478+
subnet_id = var.subnet_id
479+
password = "Test1234"
480+
license_type = "basic"
481+
basic_security_type = 2
482+
public_access = "OPEN"
483+
es_acl {
484+
white_list = [
485+
"127.0.0.1"
486+
]
487+
}
488+
es_public_acl {
489+
white_ip_list = [
490+
"127.0.0.1"
491+
]
492+
}
493+
494+
node_info_list {
495+
node_num = 2
496+
node_type = "ES.S1.MEDIUM4"
497+
}
498+
}
499+
`
500+
501+
const testAccElasticsearchInstanceKibanaPublicAccessUpdate = tcacctest.DefaultEsVariables + `
502+
resource "tencentcloud_elasticsearch_instance" "es_kibana" {
503+
instance_name = "tf-ci-test-kibana"
504+
availability_zone = var.availability_zone
505+
version = "7.10.1"
506+
vpc_id = var.vpc_id
507+
subnet_id = var.subnet_id
508+
password = "Test1234"
509+
license_type = "basic"
510+
basic_security_type = 2
511+
public_access = "OPEN"
512+
es_acl {
513+
white_list = [
514+
"127.0.0.2"
515+
]
516+
}
517+
es_public_acl {
518+
white_ip_list = [
519+
"127.0.0.2"
520+
]
521+
}
522+
523+
node_info_list {
524+
node_num = 2
525+
node_type = "ES.S1.MEDIUM4"
526+
}
527+
}
528+
`

0 commit comments

Comments
 (0)