diff --git a/cmd/climc/shell/services.go b/cmd/climc/shell/services.go index 81bad2b179..76eaaed4da 100644 --- a/cmd/climc/shell/services.go +++ b/cmd/climc/shell/services.go @@ -43,10 +43,10 @@ func init() { query.Add(jsonutils.NewInt(args.Offset), "offset") } if len(args.Name) > 0 { - query.Add(jsonutils.NewString(args.Name), "name__icontains") + query.Add(jsonutils.NewString(args.Name), "name") } if len(args.Type) > 0 { - query.Add(jsonutils.NewString(args.Type), "type__icontains") + query.Add(jsonutils.NewString(args.Type), "type") } if len(args.Search) > 0 { query.Add(jsonutils.NewString(args.Search), "search") diff --git a/pkg/apis/identity/input.go b/pkg/apis/identity/input.go index 3d08c79d2f..6d407407dc 100644 --- a/pkg/apis/identity/input.go +++ b/pkg/apis/identity/input.go @@ -249,4 +249,7 @@ type RegionListInput struct { type ServiceListInput struct { apis.StandaloneResourceListInput + + // 以Service Type过滤 + Type string `json:"type"` } diff --git a/pkg/keystone/models/services.go b/pkg/keystone/models/services.go index 884d8276dd..ab89180346 100644 --- a/pkg/keystone/models/services.go +++ b/pkg/keystone/models/services.go @@ -226,12 +226,15 @@ func (manager *SServiceManager) ListItemFilter( ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, - query api.RegionListInput, + query api.ServiceListInput, ) (*sqlchemy.SQuery, error) { q, err := manager.SStandaloneResourceBaseManager.ListItemFilter(ctx, q, userCred, query.StandaloneResourceListInput) if err != nil { return nil, errors.Wrap(err, "SStandaloneResourceBaseManager.ListItemFilter") } + if len(query.Type) > 0 { + q = q.Equals("type", query.Type) + } return q, nil }