@@ -263,6 +263,39 @@ func ResourceTencentCloudElasticsearchInstance() *schema.Resource {
263
263
},
264
264
},
265
265
},
266
+ "public_access" : {
267
+ Type : schema .TypeString ,
268
+ Optional : true ,
269
+ Computed : true ,
270
+ ValidateFunc : tccommon .ValidateAllowedStringValue (ES_PUBLIC_ACCESS ),
271
+ Description : "ES cluster public network access status. Valid values are `OPEN` and `CLOSE`. Cannot be changed at the same time as `es_acl`." ,
272
+ },
273
+ "es_public_acl" : {
274
+ Type : schema .TypeList ,
275
+ Optional : true ,
276
+ Computed : true ,
277
+ MaxItems : 1 ,
278
+ RequiredWith : []string {"public_access" },
279
+ Description : "Public network access control list." ,
280
+ Elem : & schema.Resource {
281
+ Schema : map [string ]* schema.Schema {
282
+ // "black_ip_list": {
283
+ // Type: schema.TypeSet,
284
+ // Elem: &schema.Schema{Type: schema.TypeString},
285
+ // Optional: true,
286
+ // Computed: true,
287
+ // Description: "Access blacklist.",
288
+ // },
289
+ "white_ip_list" : {
290
+ Type : schema .TypeSet ,
291
+ Elem : & schema.Schema {Type : schema .TypeString },
292
+ Optional : true ,
293
+ Computed : true ,
294
+ Description : "Access Whitelist." ,
295
+ },
296
+ },
297
+ },
298
+ },
266
299
// computed
267
300
"elasticsearch_domain" : {
268
301
Type : schema .TypeString ,
@@ -284,6 +317,11 @@ func ResourceTencentCloudElasticsearchInstance() *schema.Resource {
284
317
Computed : true ,
285
318
Description : "Kibana access URL." ,
286
319
},
320
+ "es_public_url" : {
321
+ Type : schema .TypeString ,
322
+ Computed : true ,
323
+ Description : "Es public network address." ,
324
+ },
287
325
"create_time" : {
288
326
Type : schema .TypeString ,
289
327
Computed : true ,
@@ -469,9 +507,56 @@ func resourceTencentCloudElasticsearchInstanceCreate(d *schema.ResourceData, met
469
507
isUpdate = true
470
508
}
471
509
}
510
+
511
+ if isUpdate {
512
+ err = resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
513
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , kibanaPublicAccess , "" , 0 , nil , nil , & esAcl , nil , nil )
514
+ if errRet != nil {
515
+ return tccommon .RetryError (errRet )
516
+ }
517
+ return nil
518
+ })
519
+ if err != nil {
520
+ return err
521
+ }
522
+
523
+ err = tencentCloudElasticsearchInstanceUpgradeWaiting (ctx , & elasticsearchService , instanceId )
524
+ if err != nil {
525
+ return err
526
+ }
527
+
528
+ isUpdate = false
529
+ }
530
+
531
+ // PublicAccess
532
+ var publicAccess string
533
+ esPublicAcl := es.EsPublicAcl {}
534
+ if v , ok := d .GetOk ("public_access" ); ok {
535
+ access := v .(string )
536
+ if access != ES_PUBLIC_ACCESS_CLOSE {
537
+ publicAccess = access
538
+ isUpdate = true
539
+
540
+ if aclMap , ok := helper .InterfacesHeadMap (d , "es_public_acl" ); ok {
541
+ // if v, ok := aclMap["black_ip_list"]; ok {
542
+ // bList := v.(*schema.Set).List()
543
+ // for _, d := range bList {
544
+ // esPublicAcl.BlackIpList = append(esPublicAcl.BlackIpList, helper.String(d.(string)))
545
+ // }
546
+ // }
547
+ if v , ok := aclMap ["white_ip_list" ]; ok {
548
+ wList := v .(* schema.Set ).List ()
549
+ for _ , d := range wList {
550
+ esPublicAcl .WhiteIpList = append (esPublicAcl .WhiteIpList , helper .String (d .(string )))
551
+ }
552
+ }
553
+ }
554
+ }
555
+ }
556
+
472
557
if isUpdate {
473
558
err = resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
474
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , kibanaPublicAccess , 0 , nil , nil , & esAcl , nil )
559
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , publicAccess , 0 , nil , nil , nil , nil , & esPublicAcl )
475
560
if errRet != nil {
476
561
return tccommon .RetryError (errRet )
477
562
}
@@ -501,7 +586,7 @@ func resourceTencentCloudElasticsearchInstanceCreate(d *schema.ResourceData, met
501
586
}
502
587
503
588
err = resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
504
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , 0 , nil , nil , nil , & cosBackup )
589
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , "" , 0 , nil , nil , nil , & cosBackup , nil )
505
590
if errRet != nil {
506
591
return tccommon .RetryError (errRet )
507
592
}
@@ -625,6 +710,24 @@ func resourceTencentCloudElasticsearchInstanceRead(d *schema.ResourceData, meta
625
710
_ = d .Set ("es_acl" , esAcls )
626
711
}
627
712
713
+ if instance .EsPublicAcl != nil {
714
+ esAcls := make ([]map [string ]interface {}, 0 , 1 )
715
+ esAcl := map [string ]interface {}{
716
+ // "black_ip_list": instance.EsPublicAcl.BlackIpList,
717
+ "white_ip_list" : instance .EsPublicAcl .WhiteIpList ,
718
+ }
719
+ esAcls = append (esAcls , esAcl )
720
+ _ = d .Set ("es_public_acl" , esAcls )
721
+ }
722
+
723
+ if instance .PublicAccess != nil {
724
+ _ = d .Set ("public_access" , instance .PublicAccess )
725
+ }
726
+
727
+ if instance .EsPublicUrl != nil {
728
+ _ = d .Set ("es_public_url" , instance .EsPublicUrl )
729
+ }
730
+
628
731
if instance .CosBackup != nil {
629
732
cosBackupList := make ([]map [string ]interface {}, 0 , 1 )
630
733
cosBackupMap := map [string ]interface {}{}
@@ -667,7 +770,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
667
770
instanceName := d .Get ("instance_name" ).(string )
668
771
// Update operation support at most one item at the same time
669
772
err := resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError {
670
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , instanceName , "" , "" , 0 , nil , nil , nil , nil )
773
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , instanceName , "" , "" , "" , 0 , nil , nil , nil , nil , nil )
671
774
if errRet != nil {
672
775
return tccommon .RetryError (errRet )
673
776
}
@@ -684,7 +787,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
684
787
if d .HasChange ("password" ) {
685
788
password := d .Get ("password" ).(string )
686
789
err := resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError {
687
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , password , "" , 0 , nil , nil , nil , nil )
790
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , password , "" , "" , 0 , nil , nil , nil , nil , nil )
688
791
if errRet != nil {
689
792
return tccommon .RetryError (errRet )
690
793
}
@@ -703,7 +806,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
703
806
if d .HasChange ("kibana_public_access" ) {
704
807
if v , ok := d .GetOk ("kibana_public_access" ); ok {
705
808
err := resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError {
706
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , v .(string ), 0 , nil , nil , nil , nil )
809
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , v .(string ), "" , 0 , nil , nil , nil , nil , nil )
707
810
if errRet != nil {
708
811
return tccommon .RetryError (errRet )
709
812
}
@@ -762,7 +865,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
762
865
licenseType := d .Get ("license_type" ).(string )
763
866
licenseTypeUpgrading := licenseType != "oss"
764
867
err := resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
765
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , int64 (basicSecurityType ), nil , nil , nil , nil )
868
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , "" , int64 (basicSecurityType ), nil , nil , nil , nil , nil )
766
869
if errRet != nil {
767
870
err := errRet .(* sdkErrors.TencentCloudSDKError )
768
871
if err .Code == es .INVALIDPARAMETER && licenseTypeUpgrading {
@@ -793,7 +896,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
793
896
NodeType : helper .String (value ["node_type" ].(string )),
794
897
}
795
898
err = resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
796
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , 0 , nil , info , nil , nil )
899
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , "" , 0 , nil , info , nil , nil , nil )
797
900
if errRet != nil {
798
901
return tccommon .RetryError (errRet )
799
902
}
@@ -832,7 +935,44 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
832
935
nodeInfoList = append (nodeInfoList , & dataDisk )
833
936
}
834
937
err := resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
835
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , 0 , nodeInfoList , nil , nil , nil )
938
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , "" , 0 , nodeInfoList , nil , nil , nil , nil )
939
+ if errRet != nil {
940
+ return tccommon .RetryError (errRet )
941
+ }
942
+ return nil
943
+ })
944
+ if err != nil {
945
+ return err
946
+ }
947
+ err = tencentCloudElasticsearchInstanceUpgradeWaiting (ctx , & elasticsearchService , instanceId )
948
+ if err != nil {
949
+ return err
950
+ }
951
+ }
952
+
953
+ if d .HasChange ("public_access" ) || d .HasChange ("es_public_acl" ) {
954
+ var publicAccess string
955
+ esPublicAcl := es.EsPublicAcl {}
956
+ if v , ok := d .GetOk ("public_access" ); ok {
957
+ publicAccess = v .(string )
958
+ }
959
+
960
+ if aclMap , ok := helper .InterfacesHeadMap (d , "es_public_acl" ); ok {
961
+ // if v, ok := aclMap["black_ip_list"]; ok {
962
+ // bList := v.(*schema.Set).List()
963
+ // for _, d := range bList {
964
+ // esPublicAcl.BlackIpList = append(esPublicAcl.BlackIpList, helper.String(d.(string)))
965
+ // }
966
+ // }
967
+ if v , ok := aclMap ["white_ip_list" ]; ok {
968
+ wList := v .(* schema.Set ).List ()
969
+ for _ , d := range wList {
970
+ esPublicAcl .WhiteIpList = append (esPublicAcl .WhiteIpList , helper .String (d .(string )))
971
+ }
972
+ }
973
+ }
974
+ err := resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
975
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , publicAccess , 0 , nil , nil , nil , nil , & esPublicAcl )
836
976
if errRet != nil {
837
977
return tccommon .RetryError (errRet )
838
978
}
@@ -883,7 +1023,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
883
1023
}
884
1024
885
1025
err := resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
886
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , 0 , nil , nil , & esAcl , nil )
1026
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , "" , 0 , nil , nil , & esAcl , nil , nil )
887
1027
if errRet != nil {
888
1028
return tccommon .RetryError (errRet )
889
1029
}
@@ -913,7 +1053,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
913
1053
}
914
1054
915
1055
err := resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
916
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , 0 , nil , nil , nil , & cosBackup )
1056
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , "" , 0 , nil , nil , nil , & cosBackup , nil )
917
1057
if errRet != nil {
918
1058
return tccommon .RetryError (errRet )
919
1059
}
0 commit comments