Skip to content

Commit 84ca98d

Browse files
Lyc-hengLyc-heng
andauthored
fix:tencent clb add sg detail fields (#89)
Co-authored-by: Lyc-heng <[email protected]>
1 parent f37136e commit 84ca98d

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

collector/tencent/collector/clb/clb.go

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@ package clb
1818
import (
1919
"context"
2020

21+
"github.com/cloudrec/tencent/collector"
2122
"github.com/core-sdk/constant"
2223
"github.com/core-sdk/log"
2324
"github.com/core-sdk/schema"
24-
"github.com/cloudrec/tencent/collector"
2525
clb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317"
2626
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
27+
vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312"
2728
"go.uber.org/zap"
2829
)
2930

@@ -47,27 +48,31 @@ type LBDetail struct {
4748
LoadBalancer clb.LoadBalancer
4849
Listeners []*clb.ListenerBackend
4950
SecureGroups []*string
51+
SecurityGroupDetail []*vpc.SecurityGroupPolicySet
5052
}
5153

5254
func ListCLBResource(ctx context.Context, service schema.ServiceInterface, res chan<- any) error {
53-
cli := service.(*collector.Services).CLB
55+
services := service.(*collector.Services)
56+
clbClient := services.CLB
57+
vpcClient := services.VPC
5458

5559
request := clb.NewDescribeLoadBalancersRequest()
5660
request.Limit = common.Int64Ptr(100)
5761
request.Offset = common.Int64Ptr(0)
5862

5963
var count uint64
6064
for {
61-
response, err := cli.DescribeLoadBalancers(request)
65+
response, err := clbClient.DescribeLoadBalancers(request)
6266
if err != nil {
6367
log.CtxLogger(ctx).Warn("DescribeLoadBalancers error", zap.Error(err))
6468
return err
6569
}
6670
for _, lb := range response.Response.LoadBalancerSet {
6771
d := &LBDetail{
6872
LoadBalancer: *lb,
69-
Listeners: describeTargets(ctx, cli, lb.LoadBalancerId),
73+
Listeners: describeTargets(ctx, clbClient, lb.LoadBalancerId),
7074
SecureGroups: lb.SecureGroups,
75+
SecurityGroupDetail: describeSecurityGroups(ctx, vpcClient, lb.SecureGroups),
7176
}
7277
res <- d
7378
}
@@ -93,3 +98,22 @@ func describeTargets(ctx context.Context, cli *clb.Client, LoadBalancerId *strin
9398
}
9499
return response.Response.Listeners
95100
}
101+
102+
func describeSecurityGroups(ctx context.Context, cli *vpc.Client, securityGroupIds []*string) []*vpc.SecurityGroupPolicySet {
103+
104+
var securityGroupInfo []*vpc.SecurityGroupPolicySet
105+
for _, securityGroupId := range securityGroupIds {
106+
request := vpc.NewDescribeSecurityGroupPoliciesRequest()
107+
request.SecurityGroupId = securityGroupId
108+
109+
response, err := cli.DescribeSecurityGroupPolicies(request)
110+
if err != nil {
111+
log.CtxLogger(ctx).Warn("Describe SecurityGroupPolicies error", zap.Error(err))
112+
return nil
113+
}
114+
115+
securityGroupInfo = append(securityGroupInfo, response.Response.SecurityGroupPolicySet)
116+
}
117+
118+
return securityGroupInfo
119+
}

collector/tencent/collector/services.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ func (s *Services) InitServices(cloudAccountParam schema.CloudAccountParam) (err
111111
if err != nil {
112112
log.GetWLogger().Error(fmt.Sprintf("failed to initialize CLB client in region:%s, err:%s", param.Region, err.Error()))
113113
}
114+
s.VPC, err = createVPCClient(param.Region, s.Credential)
115+
if err != nil {
116+
log.GetWLogger().Error(fmt.Sprintf("failed to initialize VPC client in region:%s, err:%s", param.Region, err.Error()))
117+
}
114118
case CDB:
115119
s.CDB, err = createCDBClient(param.Region, s.Credential)
116120
if err != nil {

0 commit comments

Comments
 (0)