diff --git a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java index 8cac107d19b..4013ae7e553 100644 --- a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java @@ -3705,25 +3705,30 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q if (domainId != null) { SearchCriteria scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList(), listProjectResourcesCriteria, affinityGroupId, affinityGroupName, affinityGroupType, keyword); - affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, domainId)); + Pair, Integer> groupsPair = listDomainLevelAffinityGroups(scDomain, searchFilter, domainId); + affinityGroups.addAll(groupsPair.first()); + count += groupsPair.second(); } else { for (Long permAcctId : permittedAccounts) { Account permittedAcct = _accountDao.findById(permAcctId); SearchCriteria scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList(), listProjectResourcesCriteria, affinityGroupId, affinityGroupName, affinityGroupType, keyword); - - affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, permittedAcct.getDomainId())); + Pair, Integer> groupsPair = listDomainLevelAffinityGroups(scDomain, searchFilter, permittedAcct.getDomainId()); + affinityGroups.addAll(groupsPair.first()); + count += groupsPair.second(); } } } else if (((permittedAccounts.isEmpty()) && (domainId != null) && isRecursive)) { // list all domain level affinity groups for the domain admin case SearchCriteria scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList(), listProjectResourcesCriteria, affinityGroupId, affinityGroupName, affinityGroupType, keyword); - affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, domainId)); + Pair, Integer> groupsPair = listDomainLevelAffinityGroups(scDomain, searchFilter, domainId); + affinityGroups.addAll(groupsPair.first()); + count += groupsPair.second(); } - return new Pair, Integer>(affinityGroups, affinityGroups.size()); + return new Pair, Integer>(affinityGroups, count); } @@ -3821,7 +3826,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q return new Pair, Integer>(ags, count); } - private List listDomainLevelAffinityGroups(SearchCriteria sc, Filter searchFilter, long domainId) { + private Pair, Integer> listDomainLevelAffinityGroups(SearchCriteria sc, Filter searchFilter, long domainId) { List affinityGroupIds = new ArrayList(); Set allowedDomains = _domainMgr.getDomainParentIds(domainId); List maps = _affinityGroupDomainMapDao.listByDomain(allowedDomains.toArray()); @@ -3845,7 +3850,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q Integer count = uniqueGroupsPair.second(); if (count.intValue() == 0) { // empty result - return new ArrayList(); + return new Pair<>(new ArrayList(), 0); } List uniqueGroups = uniqueGroupsPair.first(); Long[] vrIds = new Long[uniqueGroups.size()]; @@ -3854,9 +3859,9 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q vrIds[i++] = v.getId(); } List vrs = _affinityGroupJoinDao.searchByIds(vrIds); - return vrs; + return new Pair<>(vrs, count); } else { - return new ArrayList(); + return new Pair<>(new ArrayList(), 0); } }