@@ -242,6 +242,26 @@ func ResourceTencentCloudElasticsearchInstance() *schema.Resource {
242
242
ValidateFunc : tccommon .ValidateAllowedStringValue (ES_KIBANA_PUBLIC_ACCESS ),
243
243
Description : "Kibana public network access status. Valid values are `OPEN` and `CLOSE`." ,
244
244
},
245
+ "cos_backup" : {
246
+ Type : schema .TypeList ,
247
+ Optional : true ,
248
+ MaxItems : 1 ,
249
+ Description : "COS automatic backup information." ,
250
+ Elem : & schema.Resource {
251
+ Schema : map [string ]* schema.Schema {
252
+ "is_auto_backup" : {
253
+ Type : schema .TypeBool ,
254
+ Required : true ,
255
+ Description : "Whether to enable automatic backup of cos." ,
256
+ },
257
+ "backup_time" : {
258
+ Type : schema .TypeString ,
259
+ Required : true ,
260
+ Description : "Automatic backup execution time (accurate to the hour), e.g. `22:00`." ,
261
+ },
262
+ },
263
+ },
264
+ },
245
265
// computed
246
266
"elasticsearch_domain" : {
247
267
Type : schema .TypeString ,
@@ -446,7 +466,7 @@ func resourceTencentCloudElasticsearchInstanceCreate(d *schema.ResourceData, met
446
466
}
447
467
if isUpdate {
448
468
err = resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
449
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , kibanaPublicAccess , 0 , nil , nil , & esAcl )
469
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , kibanaPublicAccess , 0 , nil , nil , & esAcl , nil )
450
470
if errRet != nil {
451
471
return tccommon .RetryError (errRet )
452
472
}
@@ -462,6 +482,38 @@ func resourceTencentCloudElasticsearchInstanceCreate(d *schema.ResourceData, met
462
482
}
463
483
}
464
484
485
+ if v , ok := d .GetOk ("cos_backup" ); ok {
486
+ cosBackup := es.CosBackup {}
487
+ for _ , item := range v .([]interface {}) {
488
+ value := item .(map [string ]interface {})
489
+ if v , ok := value ["is_auto_backup" ]; ok {
490
+ cosBackup .IsAutoBackup = helper .Bool (v .(bool ))
491
+ }
492
+
493
+ if v , ok := value ["backup_time" ]; ok && v .(string ) != "" {
494
+ cosBackup .BackupTime = helper .String (v .(string ))
495
+ }
496
+ }
497
+
498
+ err = resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
499
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , 0 , nil , nil , nil , & cosBackup )
500
+ if errRet != nil {
501
+ return tccommon .RetryError (errRet )
502
+ }
503
+
504
+ return nil
505
+ })
506
+
507
+ if err != nil {
508
+ return err
509
+ }
510
+
511
+ err = tencentCloudElasticsearchInstanceUpgradeWaiting (ctx , & elasticsearchService , instanceId )
512
+ if err != nil {
513
+ return err
514
+ }
515
+ }
516
+
465
517
// tags
466
518
if tags := helper .GetTags (d , "tags" ); len (tags ) > 0 {
467
519
client := meta .(tccommon.ProviderMeta ).GetAPIV3Conn ()
@@ -568,6 +620,21 @@ func resourceTencentCloudElasticsearchInstanceRead(d *schema.ResourceData, meta
568
620
_ = d .Set ("es_acl" , esAcls )
569
621
}
570
622
623
+ if instance .CosBackup != nil {
624
+ cosBackupList := make ([]map [string ]interface {}, 0 , 1 )
625
+ cosBackupMap := map [string ]interface {}{}
626
+ if instance .CosBackup .IsAutoBackup != nil {
627
+ cosBackupMap ["is_auto_backup" ] = instance .CosBackup .IsAutoBackup
628
+ }
629
+
630
+ if instance .CosBackup .BackupTime != nil {
631
+ cosBackupMap ["backup_time" ] = instance .CosBackup .BackupTime
632
+ }
633
+
634
+ cosBackupList = append (cosBackupList , cosBackupMap )
635
+ _ = d .Set ("cos_backup" , cosBackupList )
636
+ }
637
+
571
638
if len (instance .TagList ) > 0 {
572
639
tags := make (map [string ]string )
573
640
for _ , tag := range instance .TagList {
@@ -595,7 +662,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
595
662
instanceName := d .Get ("instance_name" ).(string )
596
663
// Update operation support at most one item at the same time
597
664
err := resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError {
598
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , instanceName , "" , "" , 0 , nil , nil , nil )
665
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , instanceName , "" , "" , 0 , nil , nil , nil , nil )
599
666
if errRet != nil {
600
667
return tccommon .RetryError (errRet )
601
668
}
@@ -612,7 +679,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
612
679
if d .HasChange ("password" ) {
613
680
password := d .Get ("password" ).(string )
614
681
err := resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError {
615
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , password , "" , 0 , nil , nil , nil )
682
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , password , "" , 0 , nil , nil , nil , nil )
616
683
if errRet != nil {
617
684
return tccommon .RetryError (errRet )
618
685
}
@@ -631,7 +698,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
631
698
if d .HasChange ("kibana_public_access" ) {
632
699
if v , ok := d .GetOk ("kibana_public_access" ); ok {
633
700
err := resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError {
634
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , v .(string ), 0 , nil , nil , nil )
701
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , v .(string ), 0 , nil , nil , nil , nil )
635
702
if errRet != nil {
636
703
return tccommon .RetryError (errRet )
637
704
}
@@ -690,7 +757,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
690
757
licenseType := d .Get ("license_type" ).(string )
691
758
licenseTypeUpgrading := licenseType != "oss"
692
759
err := resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
693
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , int64 (basicSecurityType ), nil , nil , nil )
760
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , int64 (basicSecurityType ), nil , nil , nil , nil )
694
761
if errRet != nil {
695
762
err := errRet .(* sdkErrors.TencentCloudSDKError )
696
763
if err .Code == es .INVALIDPARAMETER && licenseTypeUpgrading {
@@ -721,7 +788,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
721
788
NodeType : helper .String (value ["node_type" ].(string )),
722
789
}
723
790
err = resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
724
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , 0 , nil , info , nil )
791
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , 0 , nil , info , nil , nil )
725
792
if errRet != nil {
726
793
return tccommon .RetryError (errRet )
727
794
}
@@ -760,7 +827,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
760
827
nodeInfoList = append (nodeInfoList , & dataDisk )
761
828
}
762
829
err := resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
763
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , 0 , nodeInfoList , nil , nil )
830
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , 0 , nodeInfoList , nil , nil , nil )
764
831
if errRet != nil {
765
832
return tccommon .RetryError (errRet )
766
833
}
@@ -811,7 +878,7 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
811
878
}
812
879
813
880
err := resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
814
- errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , 0 , nil , nil , & esAcl )
881
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , 0 , nil , nil , & esAcl , nil )
815
882
if errRet != nil {
816
883
return tccommon .RetryError (errRet )
817
884
}
@@ -826,6 +893,40 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met
826
893
}
827
894
}
828
895
896
+ if d .HasChange ("cos_backup" ) {
897
+ if v , ok := d .GetOk ("cos_backup" ); ok {
898
+ cosBackup := es.CosBackup {}
899
+ for _ , item := range v .([]interface {}) {
900
+ value := item .(map [string ]interface {})
901
+ if v , ok := value ["is_auto_backup" ]; ok {
902
+ cosBackup .IsAutoBackup = helper .Bool (v .(bool ))
903
+ }
904
+
905
+ if v , ok := value ["backup_time" ]; ok && v .(string ) != "" {
906
+ cosBackup .BackupTime = helper .String (v .(string ))
907
+ }
908
+ }
909
+
910
+ err := resource .Retry (tccommon .WriteRetryTimeout * 2 , func () * resource.RetryError {
911
+ errRet := elasticsearchService .UpdateInstance (ctx , instanceId , "" , "" , "" , 0 , nil , nil , nil , & cosBackup )
912
+ if errRet != nil {
913
+ return tccommon .RetryError (errRet )
914
+ }
915
+
916
+ return nil
917
+ })
918
+
919
+ if err != nil {
920
+ return err
921
+ }
922
+
923
+ err = tencentCloudElasticsearchInstanceUpgradeWaiting (ctx , & elasticsearchService , instanceId )
924
+ if err != nil {
925
+ return err
926
+ }
927
+ }
928
+ }
929
+
829
930
d .Partial (false )
830
931
831
932
return resourceTencentCloudElasticsearchInstanceRead (d , meta )
0 commit comments