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 127ac9037a1c..33ca1bb258c0 100644 --- a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java @@ -3624,25 +3624,30 @@ public Pair, Integer> searchForAffinityGroupsInternal( 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); } @@ -3740,7 +3745,7 @@ private Pair, Integer> listAffinityGroupsByVM(long vmI 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()); @@ -3764,7 +3769,7 @@ private List listDomainLevelAffinityGroups(SearchCriteria(); + return new Pair<>(new ArrayList(), 0); } List uniqueGroups = uniqueGroupsPair.first(); Long[] vrIds = new Long[uniqueGroups.size()]; @@ -3773,9 +3778,9 @@ private List listDomainLevelAffinityGroups(SearchCriteria vrs = _affinityGroupJoinDao.searchByIds(vrIds); - return vrs; + return new Pair<>(vrs, count); } else { - return new ArrayList(); + return new Pair<>(new ArrayList(), 0); } }