From e68bbf6fb9b0a803a2243e4e16d0b16e8824fef3 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Fri, 6 Mar 2020 21:37:03 +0800 Subject: [PATCH] fix: add keystone service type filter --- cmd/climc/shell/services.go | 4 ++-- pkg/apis/identity/input.go | 3 +++ pkg/keystone/models/services.go | 5 ++++- 3 files changed, 9 insertions(+), 3 deletions(-) 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 }