@@ -573,28 +573,57 @@ func resourceTencentCloudKubernetesScaleWorkerDeleteOnExit(ctx context.Context)
573573 return nil
574574 }
575575
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 )
580581
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+ }
585586
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+ }
589591 }
590- }
591592
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 )
592603 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+ })
594623 }
595- return nil
596- })
624+ }
597625 }
626+
598627 return nil
599628}
600629
@@ -678,9 +707,85 @@ func resourceTencentCloudKubernetesScaleWorkerReadPostFillRequest1(ctx context.C
678707 return nil
679708}
680709
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 )
682713 ctxData := tccommon .DataFromContext (ctx )
683714 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+
685776 return nil
686777}
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