From 3634601d3de0354207a65d0d3d99a69e647ad0be Mon Sep 17 00:00:00 2001 From: tb365 Date: Wed, 20 Oct 2021 16:03:16 +0800 Subject: [PATCH] host count add filters --- pkg/cloudcommon/db/db_dispatcher.go | 4 ++-- pkg/compute/models/hosts.go | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/pkg/cloudcommon/db/db_dispatcher.go b/pkg/cloudcommon/db/db_dispatcher.go index ed786056e7..f2de212bee 100644 --- a/pkg/cloudcommon/db/db_dispatcher.go +++ b/pkg/cloudcommon/db/db_dispatcher.go @@ -184,7 +184,7 @@ func applyListItemsSearchFilters(manager IModelManager, ctx context.Context, q * return q, nil } -func applyListItemsGeneralFilters(manager IModelManager, q *sqlchemy.SQuery, +func ApplyListItemsGeneralFilters(manager IModelManager, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, filters []string, filterAny bool) (*sqlchemy.SQuery, error) { conds := make([]sqlchemy.ICondition, 0) schFields := searchFields(manager, userCred) // only filter searchable fields @@ -298,7 +298,7 @@ func listItemQueryFiltersRaw(manager IModelManager, filterAny, _ := query.Bool("filter_any") filters := jsonutils.GetQueryStringArray(query, "filter") if len(filters) > 0 { - q, err = applyListItemsGeneralFilters(manager, q, userCred, filters, filterAny) + q, err = ApplyListItemsGeneralFilters(manager, q, userCred, filters, filterAny) } jointFilter := jsonutils.GetQueryStringArray(query, "joint_filter") if len(jointFilter) > 0 { diff --git a/pkg/compute/models/hosts.go b/pkg/compute/models/hosts.go index cee5ea04da..500dd4ed3b 100644 --- a/pkg/compute/models/hosts.go +++ b/pkg/compute/models/hosts.go @@ -1029,7 +1029,16 @@ func (self *SHostManager) GetPropertyNodeCount(ctx context.Context, userCred mcc } func (self *SHostManager) getCount(ctx context.Context, userCred mcclient.TokenCredential, q *sqlchemy.SQuery, query api.HostListInput) (jsonutils.JSONObject, error) { - q, err := self.ListItemFilter(ctx, q, userCred, query) + filterAny := false + if query.FilterAny != nil { + filterAny = *query.FilterAny + } + q, err := db.ApplyListItemsGeneralFilters(self, q, userCred, query.Filter, filterAny) + if err != nil { + return nil, err + } + + q, err = self.ListItemFilter(ctx, q, userCred, query) if err != nil { return nil, err }