Skip to content

Commit 8010718

Browse files
authored
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>
1 parent 97f21c1 commit 8010718

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3625,25 +3625,30 @@ public Pair<List<AffinityGroupJoinVO>, Integer> searchForAffinityGroupsInternal(
36253625
if (domainId != null) {
36263626
SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria, affinityGroupId,
36273627
affinityGroupName, affinityGroupType, keyword);
3628-
affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, domainId));
3628+
Pair<List<AffinityGroupJoinVO>, Integer> groupsPair = listDomainLevelAffinityGroups(scDomain, searchFilter, domainId);
3629+
affinityGroups.addAll(groupsPair.first());
3630+
count += groupsPair.second();
36293631
} else {
36303632

36313633
for (Long permAcctId : permittedAccounts) {
36323634
Account permittedAcct = _accountDao.findById(permAcctId);
36333635
SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria, affinityGroupId,
36343636
affinityGroupName, affinityGroupType, keyword);
3635-
3636-
affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, permittedAcct.getDomainId()));
3637+
Pair<List<AffinityGroupJoinVO>, Integer> groupsPair = listDomainLevelAffinityGroups(scDomain, searchFilter, permittedAcct.getDomainId());
3638+
affinityGroups.addAll(groupsPair.first());
3639+
count += groupsPair.second();
36373640
}
36383641
}
36393642
} else if (((permittedAccounts.isEmpty()) && (domainId != null) && isRecursive)) {
36403643
// list all domain level affinity groups for the domain admin case
36413644
SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria, affinityGroupId, affinityGroupName,
36423645
affinityGroupType, keyword);
3643-
affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, domainId));
3646+
Pair<List<AffinityGroupJoinVO>, Integer> groupsPair = listDomainLevelAffinityGroups(scDomain, searchFilter, domainId);
3647+
affinityGroups.addAll(groupsPair.first());
3648+
count += groupsPair.second();
36443649
}
36453650

3646-
return new Pair<List<AffinityGroupJoinVO>, Integer>(affinityGroups, affinityGroups.size());
3651+
return new Pair<List<AffinityGroupJoinVO>, Integer>(affinityGroups, count);
36473652

36483653
}
36493654

@@ -3741,7 +3746,7 @@ private Pair<List<AffinityGroupJoinVO>, Integer> listAffinityGroupsByVM(long vmI
37413746
return new Pair<List<AffinityGroupJoinVO>, Integer>(ags, count);
37423747
}
37433748

3744-
private List<AffinityGroupJoinVO> listDomainLevelAffinityGroups(SearchCriteria<AffinityGroupJoinVO> sc, Filter searchFilter, long domainId) {
3749+
private Pair<List<AffinityGroupJoinVO>, Integer> listDomainLevelAffinityGroups(SearchCriteria<AffinityGroupJoinVO> sc, Filter searchFilter, long domainId) {
37453750
List<Long> affinityGroupIds = new ArrayList<Long>();
37463751
Set<Long> allowedDomains = _domainMgr.getDomainParentIds(domainId);
37473752
List<AffinityGroupDomainMapVO> maps = _affinityGroupDomainMapDao.listByDomain(allowedDomains.toArray());
@@ -3765,7 +3770,7 @@ private List<AffinityGroupJoinVO> listDomainLevelAffinityGroups(SearchCriteria<A
37653770
Integer count = uniqueGroupsPair.second();
37663771
if (count.intValue() == 0) {
37673772
// empty result
3768-
return new ArrayList<AffinityGroupJoinVO>();
3773+
return new Pair<>(new ArrayList<AffinityGroupJoinVO>(), 0);
37693774
}
37703775
List<AffinityGroupJoinVO> uniqueGroups = uniqueGroupsPair.first();
37713776
Long[] vrIds = new Long[uniqueGroups.size()];
@@ -3774,9 +3779,9 @@ private List<AffinityGroupJoinVO> listDomainLevelAffinityGroups(SearchCriteria<A
37743779
vrIds[i++] = v.getId();
37753780
}
37763781
List<AffinityGroupJoinVO> vrs = _affinityGroupJoinDao.searchByIds(vrIds);
3777-
return vrs;
3782+
return new Pair<>(vrs, count);
37783783
} else {
3779-
return new ArrayList<AffinityGroupJoinVO>();
3784+
return new Pair<>(new ArrayList<AffinityGroupJoinVO>(), 0);
37803785
}
37813786
}
37823787

0 commit comments

Comments
 (0)