Skip to content

Commit 66d4b47

Browse files
authored
fix(tke): [120261680] tencentcloud_kubernetes_scale_worker Update read/delete function (#2908)
* add new auth for tencentcloud cos backend * fix scale worker read * add
1 parent 7ce12f8 commit 66d4b47

File tree

4 files changed

+130
-34
lines changed

4 files changed

+130
-34
lines changed

.changelog/2908.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_kubernetes_scale_worker: Update read function
3+
```

tencentcloud/services/tke/resource_tc_kubernetes_scale_worker.go

Lines changed: 3 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tencentcloud/services/tke/resource_tc_kubernetes_scale_worker_extension.go

Lines changed: 122 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
}

tencentcloud/services/tke/service_tencentcloud_tke.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3438,15 +3438,11 @@ func (me *TkeService) DescribeKubernetesScaleWorkerById1(ctx context.Context) (r
34383438

34393439
ratelimit.Check(request.GetAction())
34403440

3441-
if err := resourceTencentCloudKubernetesScaleWorkerReadPreRequest1(ctx, request); err != nil {
3441+
response, err := resourceTencentCloudKubernetesScaleWorkerReadPreRequest1(ctx, request)
3442+
if err != nil {
34423443
return nil, err
34433444
}
34443445

3445-
response, err := me.client.UseCvmV20170312Client().DescribeInstances(request)
3446-
if err != nil {
3447-
errRet = err
3448-
return
3449-
}
34503446
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
34513447

34523448
if err := resourceTencentCloudKubernetesScaleWorkerReadPostRequest1(ctx, request, response); err != nil {

0 commit comments

Comments
 (0)