server: fix for wrong affinity group count (#4154)

Fixes wrong count in listAffinityGroup API.
API was returning the count of AffinityGroupJoinVO records. 

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
This commit is contained in:
Abhishek Kumar 2020-06-24 07:02:56 +05:30 committed by GitHub
parent 97f21c1835
commit 8010718878
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3625,25 +3625,30 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
if (domainId != null) { if (domainId != null) {
SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria, affinityGroupId, SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria, affinityGroupId,
affinityGroupName, affinityGroupType, keyword); affinityGroupName, affinityGroupType, keyword);
affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, domainId)); Pair<List<AffinityGroupJoinVO>, Integer> groupsPair = listDomainLevelAffinityGroups(scDomain, searchFilter, domainId);
affinityGroups.addAll(groupsPair.first());
count += groupsPair.second();
} else { } else {
for (Long permAcctId : permittedAccounts) { for (Long permAcctId : permittedAccounts) {
Account permittedAcct = _accountDao.findById(permAcctId); Account permittedAcct = _accountDao.findById(permAcctId);
SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria, affinityGroupId, SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria, affinityGroupId,
affinityGroupName, affinityGroupType, keyword); affinityGroupName, affinityGroupType, keyword);
Pair<List<AffinityGroupJoinVO>, Integer> groupsPair = listDomainLevelAffinityGroups(scDomain, searchFilter, permittedAcct.getDomainId());
affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, permittedAcct.getDomainId())); affinityGroups.addAll(groupsPair.first());
count += groupsPair.second();
} }
} }
} else if (((permittedAccounts.isEmpty()) && (domainId != null) && isRecursive)) { } else if (((permittedAccounts.isEmpty()) && (domainId != null) && isRecursive)) {
// list all domain level affinity groups for the domain admin case // list all domain level affinity groups for the domain admin case
SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria, affinityGroupId, affinityGroupName, SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria, affinityGroupId, affinityGroupName,
affinityGroupType, keyword); affinityGroupType, keyword);
affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, domainId)); Pair<List<AffinityGroupJoinVO>, Integer> groupsPair = listDomainLevelAffinityGroups(scDomain, searchFilter, domainId);
affinityGroups.addAll(groupsPair.first());
count += groupsPair.second();
} }
return new Pair<List<AffinityGroupJoinVO>, Integer>(affinityGroups, affinityGroups.size()); return new Pair<List<AffinityGroupJoinVO>, Integer>(affinityGroups, count);
} }
@ -3741,7 +3746,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
return new Pair<List<AffinityGroupJoinVO>, Integer>(ags, count); return new Pair<List<AffinityGroupJoinVO>, Integer>(ags, count);
} }
private List<AffinityGroupJoinVO> listDomainLevelAffinityGroups(SearchCriteria<AffinityGroupJoinVO> sc, Filter searchFilter, long domainId) { private Pair<List<AffinityGroupJoinVO>, Integer> listDomainLevelAffinityGroups(SearchCriteria<AffinityGroupJoinVO> sc, Filter searchFilter, long domainId) {
List<Long> affinityGroupIds = new ArrayList<Long>(); List<Long> affinityGroupIds = new ArrayList<Long>();
Set<Long> allowedDomains = _domainMgr.getDomainParentIds(domainId); Set<Long> allowedDomains = _domainMgr.getDomainParentIds(domainId);
List<AffinityGroupDomainMapVO> maps = _affinityGroupDomainMapDao.listByDomain(allowedDomains.toArray()); List<AffinityGroupDomainMapVO> maps = _affinityGroupDomainMapDao.listByDomain(allowedDomains.toArray());
@ -3765,7 +3770,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
Integer count = uniqueGroupsPair.second(); Integer count = uniqueGroupsPair.second();
if (count.intValue() == 0) { if (count.intValue() == 0) {
// empty result // empty result
return new ArrayList<AffinityGroupJoinVO>(); return new Pair<>(new ArrayList<AffinityGroupJoinVO>(), 0);
} }
List<AffinityGroupJoinVO> uniqueGroups = uniqueGroupsPair.first(); List<AffinityGroupJoinVO> uniqueGroups = uniqueGroupsPair.first();
Long[] vrIds = new Long[uniqueGroups.size()]; Long[] vrIds = new Long[uniqueGroups.size()];
@ -3774,9 +3779,9 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
vrIds[i++] = v.getId(); vrIds[i++] = v.getId();
} }
List<AffinityGroupJoinVO> vrs = _affinityGroupJoinDao.searchByIds(vrIds); List<AffinityGroupJoinVO> vrs = _affinityGroupJoinDao.searchByIds(vrIds);
return vrs; return new Pair<>(vrs, count);
} else { } else {
return new ArrayList<AffinityGroupJoinVO>(); return new Pair<>(new ArrayList<AffinityGroupJoinVO>(), 0);
} }
} }