@@ -263,6 +263,39 @@ func ResourceTencentCloudElasticsearchInstance() *schema.Resource {
263263 },
264264 },
265265 },
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+ },
266299 // computed
267300 "elasticsearch_domain" : {
268301 Type : schema .TypeString ,
@@ -284,6 +317,11 @@ func ResourceTencentCloudElasticsearchInstance() *schema.Resource {
284317 Computed : true ,
285318 Description : "Kibana access URL." ,
286319 },
320+ "es_public_url" : {
321+ Type : schema .TypeString ,
322+ Computed : true ,
323+ Description : "Es public network address." ,
324+ },
287325 "create_time" : {
288326 Type : schema .TypeString ,
289327 Computed : true ,
@@ -469,9 +507,56 @@ func resourceTencentCloudElasticsearchInstanceCreate(d *schema.ResourceData, met
469507 isUpdate = true
470508 }
471509 }
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+
472557 if isUpdate {
473558 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 )
475560 if errRet != nil {
476561 return tccommon .RetryError (errRet )
477562 }
@@ -501,7 +586,7 @@ func resourceTencentCloudElasticsearchInstanceCreate(d *schema.ResourceData, met
501586 }
502587
503588 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 )
505590 if errRet != nil {
506591 return tccommon .RetryError (errRet )
507592 }
@@ -625,6 +710,24 @@ func resourceTencentCloudElasticsearchInstanceRead(d *schema.ResourceData, meta
625710 _ = d .Set ("es_acl" , esAcls )
626711 }
627712
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+
628731 if instance .CosBackup != nil {
629732 cosBackupList := make ([]map [string ]interface {}, 0 , 1 )
630733 cosBackupMap := map [string ]interface {}{}
@@ -667,7 +770,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
667770 instanceName := d .Get ("instance_name" ).(string )
668771 // Update operation support at most one item at the same time
669772 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 )
671774 if errRet != nil {
672775 return tccommon .RetryError (errRet )
673776 }
@@ -684,7 +787,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
684787 if d .HasChange ("password" ) {
685788 password := d .Get ("password" ).(string )
686789 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 )
688791 if errRet != nil {
689792 return tccommon .RetryError (errRet )
690793 }
@@ -703,7 +806,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
703806 if d .HasChange ("kibana_public_access" ) {
704807 if v , ok := d .GetOk ("kibana_public_access" ); ok {
705808 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 )
707810 if errRet != nil {
708811 return tccommon .RetryError (errRet )
709812 }
@@ -762,7 +865,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
762865 licenseType := d .Get ("license_type" ).(string )
763866 licenseTypeUpgrading := licenseType != "oss"
764867 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 )
766869 if errRet != nil {
767870 err := errRet .(* sdkErrors.TencentCloudSDKError )
768871 if err .Code == es .INVALIDPARAMETER && licenseTypeUpgrading {
@@ -793,7 +896,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
793896 NodeType : helper .String (value ["node_type" ].(string )),
794897 }
795898 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 )
797900 if errRet != nil {
798901 return tccommon .RetryError (errRet )
799902 }
@@ -832,7 +935,44 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
832935 nodeInfoList = append (nodeInfoList , & dataDisk )
833936 }
834937 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 )
836976 if errRet != nil {
837977 return tccommon .RetryError (errRet )
838978 }
@@ -883,7 +1023,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
8831023 }
8841024
8851025 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 )
8871027 if errRet != nil {
8881028 return tccommon .RetryError (errRet )
8891029 }
@@ -913,7 +1053,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
9131053 }
9141054
9151055 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 )
9171057 if errRet != nil {
9181058 return tccommon .RetryError (errRet )
9191059 }
0 commit comments