@@ -573,28 +573,57 @@ func resourceTencentCloudKubernetesScaleWorkerDeleteOnExit(ctx context.Context)
573
573
return nil
574
574
}
575
575
576
- err = service .DeleteClusterInstances (ctx , clusterId , needDeletes )
577
- if err != nil {
578
- err = resource .Retry (3 * tccommon .WriteRetryTimeout , func () * resource.RetryError {
579
- err = service .DeleteClusterInstances (ctx , clusterId , needDeletes )
576
+ if len (needDeletes ) <= 100 {
577
+ err = service .DeleteClusterInstances (ctx , clusterId , needDeletes )
578
+ if err != nil {
579
+ err = resource .Retry (3 * tccommon .WriteRetryTimeout , func () * resource.RetryError {
580
+ err = service .DeleteClusterInstances (ctx , clusterId , needDeletes )
580
581
581
- if e , ok := err .(* errors.TencentCloudSDKError ); ok {
582
- if e .GetCode () == "InternalError.ClusterNotFound" {
583
- return nil
584
- }
582
+ if e , ok := err .(* errors.TencentCloudSDKError ); ok {
583
+ if e .GetCode () == "InternalError.ClusterNotFound" {
584
+ return nil
585
+ }
585
586
586
- if e .GetCode () == "InternalError.Param" &&
587
- strings .Contains (e .GetMessage (), `PARAM_ERROR[some instances []is not in right state` ) {
588
- return nil
587
+ if e .GetCode () == "InternalError.Param" &&
588
+ strings .Contains (e .GetMessage (), `PARAM_ERROR[some instances []is not in right state` ) {
589
+ return nil
590
+ }
589
591
}
590
- }
591
592
593
+ if err != nil {
594
+ return tccommon .RetryError (err , tccommon .InternalError )
595
+ }
596
+ return nil
597
+ })
598
+ }
599
+ } else {
600
+ for _ , subsubSlice := range spliteInstanceIds (helper .Strings (needDeletes ), 100 ) {
601
+ tmpDeletes := helper .PStrings (subsubSlice )
602
+ err = service .DeleteClusterInstances (ctx , clusterId , tmpDeletes )
592
603
if err != nil {
593
- return tccommon .RetryError (err , tccommon .InternalError )
604
+ err = resource .Retry (3 * tccommon .WriteRetryTimeout , func () * resource.RetryError {
605
+ err = service .DeleteClusterInstances (ctx , clusterId , tmpDeletes )
606
+
607
+ if e , ok := err .(* errors.TencentCloudSDKError ); ok {
608
+ if e .GetCode () == "InternalError.ClusterNotFound" {
609
+ return nil
610
+ }
611
+
612
+ if e .GetCode () == "InternalError.Param" &&
613
+ strings .Contains (e .GetMessage (), `PARAM_ERROR[some instances []is not in right state` ) {
614
+ return nil
615
+ }
616
+ }
617
+
618
+ if err != nil {
619
+ return tccommon .RetryError (err , tccommon .InternalError )
620
+ }
621
+ return nil
622
+ })
594
623
}
595
- return nil
596
- })
624
+ }
597
625
}
626
+
598
627
return nil
599
628
}
600
629
@@ -678,9 +707,85 @@ func resourceTencentCloudKubernetesScaleWorkerReadPostFillRequest1(ctx context.C
678
707
return nil
679
708
}
680
709
681
- func resourceTencentCloudKubernetesScaleWorkerReadPreRequest1 (ctx context.Context , req * cvm.DescribeInstancesRequest ) error {
710
+ func resourceTencentCloudKubernetesScaleWorkerReadPreRequest1 (ctx context.Context , req * cvm.DescribeInstancesRequest ) (resp * cvm.DescribeInstancesResponse , err error ) {
711
+ logId := tccommon .GetLogId (ctx )
712
+ meta := tccommon .ProviderMetaFromContext (ctx )
682
713
ctxData := tccommon .DataFromContext (ctx )
683
714
instanceIds := ctxData .Get ("instanceIds" ).([]* string )
684
- req .InstanceIds = instanceIds
715
+ req .Limit = helper .Int64 (100 )
716
+ req .Offset = helper .Int64 (0 )
717
+ if len (instanceIds ) <= 100 {
718
+ req .InstanceIds = instanceIds
719
+ resp , err = meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseCvmV20170312Client ().DescribeInstances (req )
720
+ log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " , logId , req .GetAction (), req .ToJsonString (), resp .ToJsonString ())
721
+ if err != nil {
722
+ return nil , err
723
+ }
724
+ } else {
725
+ var (
726
+ tmpTotalCount int64
727
+ tmpInstanceSet []* cvm.Instance
728
+ )
729
+ tmpResp := new (cvm.DescribeInstancesResponse )
730
+ subSlices := spliteInstanceIds (instanceIds , 100 )
731
+ for _ , subsubSlice := range subSlices {
732
+ req .InstanceIds = subsubSlice
733
+ response , err := meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseCvmV20170312Client ().DescribeInstances (req )
734
+ log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " , logId , req .GetAction (), req .ToJsonString (), response .ToJsonString ())
735
+ if err != nil {
736
+ return nil , err
737
+ }
738
+
739
+ if response .Response .TotalCount != nil {
740
+ tmpTotalCount += * response .Response .TotalCount
741
+ }
742
+
743
+ if len (response .Response .InstanceSet ) != 0 {
744
+ tmpInstanceSet = append (tmpInstanceSet , response .Response .InstanceSet ... )
745
+ }
746
+
747
+ }
748
+
749
+ tmpResp .Response = & cvm.DescribeInstancesResponseParams {
750
+ TotalCount : & tmpTotalCount ,
751
+ InstanceSet : tmpInstanceSet ,
752
+ }
753
+
754
+ resp = tmpResp
755
+ }
756
+
757
+ return resp , nil
758
+ }
759
+
760
+ func resourceTencentCloudKubernetesScaleWorkerReadPostHandleResponse0 (ctx context.Context , resp * tke.DescribeClustersResponseParams ) error {
761
+ logId := tccommon .GetLogId (ctx )
762
+ d := tccommon .ResourceDataFromContext (ctx )
763
+ meta := tccommon .ProviderMetaFromContext (ctx )
764
+ service := TkeService {client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn ()}
765
+ respData1 , err := service .DescribeKubernetesScaleWorkerById1 (ctx )
766
+ if err != nil {
767
+ return err
768
+ }
769
+
770
+ if respData1 == nil {
771
+ d .SetId ("" )
772
+ log .Printf ("[WARN]%s resource `kubernetes_scale_worker` [%s] not found, please check if it has been deleted.\n " , logId , d .Id ())
773
+ return nil
774
+ }
775
+
685
776
return nil
686
777
}
778
+
779
+ func spliteInstanceIds (slice []* string , size int ) [][]* string {
780
+ var result [][]* string
781
+ for i := 0 ; i < len (slice ); i += size {
782
+ end := i + size
783
+ if end > len (slice ) {
784
+ end = len (slice )
785
+ }
786
+
787
+ result = append (result , slice [i :end ])
788
+ }
789
+
790
+ return result
791
+ }
0 commit comments