mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
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:
parent
97f21c1835
commit
8010718878
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user