From 65df7762e48ab266c3e1d54b18602f902eb34349 Mon Sep 17 00:00:00 2001 From: chenjr15 <24223746+chenjr15@users.noreply.github.com> Date: Wed, 11 Dec 2024 12:04:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20rs=E5=90=8C=E6=AD=A5=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=8D=95=E6=89=B9=E6=AC=A1=E5=90=8C=E6=AD=A5=E8=B6=85=E8=BF=87?= =?UTF-8?q?100=E7=9B=91=E5=90=AC=E5=99=A8=20(#1210)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --story=120038038 --- .../tcloud/load_balancer_target_group.go | 18 ++++++++++++++++-- pkg/adaptor/tcloud/target.go | 2 +- pkg/adaptor/types/load-balancer/tcloud.go | 8 ++------ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/cmd/hc-service/logics/res-sync/tcloud/load_balancer_target_group.go b/cmd/hc-service/logics/res-sync/tcloud/load_balancer_target_group.go index 8b64c01e49..31b233d608 100644 --- a/cmd/hc-service/logics/res-sync/tcloud/load_balancer_target_group.go +++ b/cmd/hc-service/logics/res-sync/tcloud/load_balancer_target_group.go @@ -539,9 +539,23 @@ func (cli *client) listTargetsFromCloud(kt *kit.Kit, param *SyncBaseParams, listOpt := &typeslb.TCloudListTargetsOption{ Region: param.Region, LoadBalancerId: opt.CloudLBID, - ListenerIds: param.CloudIDs, } - return cli.cloudCli.ListTargets(kt, listOpt) + if len(param.CloudIDs) == 0 { + return cli.cloudCli.ListTargets(kt, listOpt) + } + allTargets := make([]typeslb.TCloudListenerTarget, 0) + // 指定id的情况 + for i, lblIDBatch := range slice.Split(param.CloudIDs, constant.TCLBDescribeMax) { + listOpt.ListenerIds = lblIDBatch + targets, err := cli.cloudCli.ListTargets(kt, listOpt) + if err != nil { + logs.Errorf("fail to list targets from cloud, err: %v, idx: %d, cloud_id: %v, rid: %s", + err, i, lblIDBatch, kt.Rid) + return nil, err + } + allTargets = append(allTargets, targets...) + } + return allTargets, nil } // 获取云上监听器列表 diff --git a/pkg/adaptor/tcloud/target.go b/pkg/adaptor/tcloud/target.go index e1f8a74bd5..daa6c793c5 100644 --- a/pkg/adaptor/tcloud/target.go +++ b/pkg/adaptor/tcloud/target.go @@ -34,7 +34,7 @@ import ( ) // ListTargets 获取监听器后端绑定的机器列表信息. -// reference: https://cloud.tencent.com/document/api/214/30686 +// reference: https://cloud.tencent.com/document/api/214/30684 func (t *TCloudImpl) ListTargets(kt *kit.Kit, opt *typelb.TCloudListTargetsOption) ( []typelb.TCloudListenerTarget, error) { diff --git a/pkg/adaptor/types/load-balancer/tcloud.go b/pkg/adaptor/types/load-balancer/tcloud.go index 71d31fbdc4..05201940cc 100644 --- a/pkg/adaptor/types/load-balancer/tcloud.go +++ b/pkg/adaptor/types/load-balancer/tcloud.go @@ -268,18 +268,14 @@ func (clb TCloudListener) String() string { type TCloudListTargetsOption struct { Region string `json:"region" validate:"required"` LoadBalancerId string `json:"load_balancer_id" validate:"required"` - ListenerIds []string `json:"cloud_ids" validate:"omitempty"` + ListenerIds []string `json:"cloud_ids" validate:"max=20,dive,required"` Protocol enumor.ProtocolType `json:"protocol" validate:"omitempty"` Port int64 `json:"port" validate:"omitempty"` } // Validate tcloud targets list option. func (opt TCloudListTargetsOption) Validate() error { - if err := validator.Validate.Struct(opt); err != nil { - return nil - } - - return nil + return validator.Validate.Struct(opt) } // TCloudListenerTarget for listener target Instance