diff --git a/cmd/climc/shell/cloudid/cloudgroup.go b/cmd/climc/shell/cloudid/cloudgroup.go index 232250f10c..1ac696bf80 100644 --- a/cmd/climc/shell/cloudid/cloudgroup.go +++ b/cmd/climc/shell/cloudid/cloudgroup.go @@ -28,6 +28,7 @@ func init() { ClouduserId string `json:"clouduser_id"` CloudpolicyId string `json:"cloudpolicy_id"` + Usable bool `json:"usable"` } R(&CloudgroupListOptions{}, "cloud-group-list", "List cloud groups", func(s *mcclient.ClientSession, opts *CloudgroupListOptions) error { params, err := options.ListStructToParams(opts) diff --git a/pkg/apis/cloudid/cloudgroup.go b/pkg/apis/cloudid/cloudgroup.go index 57c0db493b..f249e8aa05 100644 --- a/pkg/apis/cloudid/cloudgroup.go +++ b/pkg/apis/cloudid/cloudgroup.go @@ -80,6 +80,9 @@ type CloudgroupListInput struct { // 根据权限过滤权限组 CloudpolicyId string `json:"cloudpolicy_id"` + + // 是否可用 + Usable *bool `json:"usable"` } type SCloudIdBaseResource struct { diff --git a/pkg/apis/output.go b/pkg/apis/output.go index a44f138955..d52e43f999 100644 --- a/pkg/apis/output.go +++ b/pkg/apis/output.go @@ -124,7 +124,8 @@ type MetadataResourceInfo struct { type StatusDomainLevelUserResourceDetails struct { StatusDomainLevelResourceDetails - UserResourceDetails + // 用户名称 + OwnerName string `json:"owner_name"` } type UserResourceDetails struct { diff --git a/pkg/cloudid/models/cloudgroup.go b/pkg/cloudid/models/cloudgroup.go index cef28173b1..2f75b14ed8 100644 --- a/pkg/cloudid/models/cloudgroup.go +++ b/pkg/cloudid/models/cloudgroup.go @@ -100,6 +100,11 @@ func (manager *SCloudgroupManager) ListItemFilter(ctx context.Context, q *sqlche q = q.In("id", sq.SubQuery()) } + if query.Usable != nil && *query.Usable { + sq := CloudaccountManager.Query("provider").SubQuery() + q = q.In("provider", sq) + } + return q, nil } diff --git a/pkg/multicloud/qcloud/cloudgroup.go b/pkg/multicloud/qcloud/cloudgroup.go index fdac4fcb1d..c321a27a4c 100644 --- a/pkg/multicloud/qcloud/cloudgroup.go +++ b/pkg/multicloud/qcloud/cloudgroup.go @@ -167,7 +167,7 @@ func (self *SQcloudClient) ListGroups(keyword string, page int, rp int) ([]SClou if err != nil { return nil, 0, errors.Wrap(err, "resp.Unmarshal") } - total, _ := resp.Int("TotalNum") + total, _ := resp.Float("TotalNum") return groups, int(total), nil } @@ -244,7 +244,7 @@ func (self *SQcloudClient) ListAttachedGroupPolicies(groupId int, page int, rp i if err != nil { return nil, 0, errors.Wrap(err, "resp.Unmarshal") } - total, _ := resp.Int("TotalNum") + total, _ := resp.Float("TotalNum") return policies, int(total), nil } @@ -269,7 +269,7 @@ func (self *SQcloudClient) ListGroupUsers(groupId int, page int, rp int) ([]SClo if err != nil { return nil, 0, errors.Wrap(err, "resp.Unmarshal") } - total, _ := resp.Int("TotalNum") + total, _ := resp.Float("TotalNum") return users, int(total), nil } diff --git a/pkg/multicloud/qcloud/clouduser.go b/pkg/multicloud/qcloud/clouduser.go index 7365718739..07a4e87246 100644 --- a/pkg/multicloud/qcloud/clouduser.go +++ b/pkg/multicloud/qcloud/clouduser.go @@ -174,7 +174,7 @@ func (self *SQcloudClient) ListGroupsForUser(uin string, rp, page int) ([]SCloud if err != nil { return nil, 0, errors.Wrap(err, "resp.Unmarshal") } - total, _ := resp.Int("TotalNum") + total, _ := resp.Float("TotalNum") return groups, int(total), nil } @@ -271,11 +271,15 @@ func (policy *SClouduserPolicy) GetPolicyType() string { } func (policy *SClouduserPolicy) GetDescription() string { + if len(policy.Description) > 0 { + return policy.Description + } p, err := policy.client.GetPolicy(policy.GetGlobalId()) if err != nil { + log.Errorf("failed to get policy %s description: %v", policy.PolicyName, err) return p.Description } - return "" + return p.Description } func (self *SQcloudClient) ListAttachedUserPolicies(uin string, page int, rp int) ([]SClouduserPolicy, int, error) { @@ -299,7 +303,7 @@ func (self *SQcloudClient) ListAttachedUserPolicies(uin string, page int, rp int if err != nil { return nil, 0, errors.Wrap(err, "resp.Unmarshal") } - total, _ := resp.Int("TotalNum") + total, _ := resp.Float("TotalNum") return policies, int(total), nil } @@ -348,7 +352,7 @@ func (self *SQcloudClient) ListPolicies(keyword, scope string, page int, rp int) if err != nil { return nil, 0, errors.Wrap(err, "resp.Unmarshal") } - total, _ := resp.Int("TotalNum") + total, _ := resp.Float("TotalNum") return policies, int(total), nil }