@@ -18,12 +18,13 @@ package clb
1818import (
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
5254func 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+ }
0 commit comments