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 e6dd3f923d..253c63abd4 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 }