Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 19 additions & 16 deletions collector/hws/collector/ecs/ecs.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,15 @@ package ecs

import (
"context"
vpc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v2"
"fmt"

"github.com/cloudrec/hws/collector"
"github.com/core-sdk/constant"
"github.com/core-sdk/log"
"github.com/core-sdk/schema"
"github.com/cloudrec/hws/collector"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ecs/v2/model"
vpcModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v2/model"
ecsModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ecs/v2/model"
vpc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v3"
vpcModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v3/model"
"go.uber.org/zap"
)

Expand All @@ -44,8 +45,8 @@ func GetInstanceResource() schema.Resource {
}

type InstanceDetail struct {
ServerDetail model.ServerDetail
SecurityGroup []*vpcModel.SecurityGroup
ServerDetail ecsModel.ServerDetail
SecurityGroup []*vpcModel.SecurityGroupInfo
}

func GetInstanceDetail(ctx context.Context, service schema.ServiceInterface, res chan<- any) error {
Expand All @@ -54,7 +55,7 @@ func GetInstanceDetail(ctx context.Context, service schema.ServiceInterface, res

limit := int32(50)
offset := int32(1)
request := &model.ListServersDetailsRequest{
request := &ecsModel.ListServersDetailsRequest{
Limit: &limit,
Offset: &offset,
}
Expand All @@ -69,7 +70,7 @@ func GetInstanceDetail(ctx context.Context, service schema.ServiceInterface, res
ecs.OSEXTSRVATTRuserData = nil
res <- &InstanceDetail{
ServerDetail: ecs,
SecurityGroup: showSecurityGroup(ctx, vpcClient, ecs.SecurityGroups),
SecurityGroup: getSecurityGroup(ecs.SecurityGroups, vpcClient),
}
}

Expand All @@ -82,15 +83,17 @@ func GetInstanceDetail(ctx context.Context, service schema.ServiceInterface, res
return nil
}

func showSecurityGroup(ctx context.Context, cli *vpc.VpcClient, SecurityGroups []model.ServerSecurityGroup) (SecurityGroup []*vpcModel.SecurityGroup) {
for _, securityGroup := range SecurityGroups {
request := &vpcModel.ShowSecurityGroupRequest{SecurityGroupId: securityGroup.Id}
response, err := cli.ShowSecurityGroup(request)
func getSecurityGroup(securityGroups []ecsModel.ServerSecurityGroup, client *vpc.VpcClient) []*vpcModel.SecurityGroupInfo {
var result []*vpcModel.SecurityGroupInfo
for _, securityGroup := range securityGroups {
request := &vpcModel.ShowSecurityGroupRequest{}
request.SecurityGroupId = securityGroup.Id
response, err := client.ShowSecurityGroup(request)
result = append(result, response.SecurityGroup)
if err != nil {
log.CtxLogger(ctx).Warn("ShowSecurityGroup error", zap.Error(err))
return
log.GetWLogger().Error(fmt.Sprintf("get SecurityGroup error: %s", err.Error()))
return nil
}
Comment on lines +92 to 96

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

There's a potential nil pointer dereference here. The call to client.ShowSecurityGroup is followed by accessing response.SecurityGroup before checking if err is nil. If an error occurs, response is likely to be nil, which would cause a panic. The error check should be performed immediately after the API call, before attempting to access the response object.

Suggested change
result = append(result, response.SecurityGroup)
if err != nil {
log.CtxLogger(ctx).Warn("ShowSecurityGroup error", zap.Error(err))
return
log.GetWLogger().Error(fmt.Sprintf("get SecurityGroup error: %s", err.Error()))
return nil
}
if err != nil {
log.GetWLogger().Error(fmt.Sprintf("get SecurityGroup error: %s", err.Error()))
return nil
}
result = append(result, response.SecurityGroup)

SecurityGroup = append(SecurityGroup, response.SecurityGroup)
}
return
return result
}
4 changes: 2 additions & 2 deletions collector/hws/collector/serivce_for_public_cloud.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ import (
rdsRegion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rds/v3/region"
sfs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/sfsturbo/v1"
sfsRegion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/sfsturbo/v1/region"
vpc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v2"
vpcRegion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v2/region"
vpc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v3"
vpcRegion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v3/region"
)

func (s *Services) OBSClient() (*obs.ObsClient, error) {
Expand Down
8 changes: 5 additions & 3 deletions collector/hws/collector/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@ package collector

import (
"context"
"github.com/core-sdk/log"
"go.uber.org/zap"
"net"
"time"

"github.com/core-sdk/log"
"go.uber.org/zap"

"github.com/core-sdk/constant"
"github.com/core-sdk/schema"
"github.com/huaweicloud/huaweicloud-sdk-go-obs/obs"
Expand All @@ -41,7 +42,7 @@ import (
nat "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/nat/v2"
rds "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/rds/v3"
sfs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/sfsturbo/v1"
vpc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v2"
vpc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v3"
)

func ConfigBaseAuth(ak string, sk string) *basic.Credentials {
Expand Down Expand Up @@ -140,6 +141,7 @@ func (s *Services) InitServices(cloudAccountParam schema.CloudAccountParam) (err
s.OBS, err = s.OBSClient()
case ECS:
s.ECS, err = s.ECSClient(param.Region)
s.VPC, err = s.VPCClient(param.Region)
case IAMUser:
s.IAM, err = s.IAMClient()
case VPC, SecurityGroup:
Expand Down
4 changes: 3 additions & 1 deletion collector/hws/collector/service_for_private_cloud.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ import (
eip "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eip/v2"
elb "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/elb/v3"
iam "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iam/v3"
vpc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v2"

// vpc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v2"
vpc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v3"
)

func ConfigBaseAuthForPrivate(projectId, ak, sk, endpoint string) *basic.Credentials {
Expand Down
7 changes: 4 additions & 3 deletions collector/hws/collector/vpc/securitygroup.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@
package vpc

import (
"context"

"github.com/cloudrec/hws/collector"
"github.com/core-sdk/constant"
"github.com/core-sdk/log"
"github.com/core-sdk/schema"
"context"
"github.com/cloudrec/hws/collector"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v2/model"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v3/model"
"go.uber.org/zap"
)

Expand Down
7 changes: 4 additions & 3 deletions collector/hws/collector/vpc/vpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@
package vpc

import (
"context"

"github.com/cloudrec/hws/collector"
"github.com/core-sdk/constant"
"github.com/core-sdk/log"
"github.com/core-sdk/schema"
"context"
"github.com/cloudrec/hws/collector"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v2/model"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v3/model"
"go.uber.org/zap"
)

Expand Down
2 changes: 1 addition & 1 deletion collector/hws/platform/platform_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import (
"github.com/cloudrec/hws/collector/eip"
"github.com/cloudrec/hws/collector/elb"
"github.com/cloudrec/hws/collector/evs"
"github.com/cloudrec/hws/collector/gaussdb"
gaussDB "github.com/cloudrec/hws/collector/gaussdb"
"github.com/cloudrec/hws/collector/iam"
"github.com/cloudrec/hws/collector/lts"
"github.com/cloudrec/hws/collector/nat"
Expand Down
Loading