Skip to content

Commit b4032d9

Browse files
authored
include all VMs when projects selected not just for admins (#7667)
1 parent c86684f commit b4032d9

File tree

2 files changed

+9
-10
lines changed

2 files changed

+9
-10
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -991,14 +991,14 @@ private Object getObjectPossibleMethodValue(Object obj, String methodName) {
991991

992992
private Pair<List<UserVmJoinVO>, Integer> searchForUserVMsInternal(ListVMsCmd cmd) {
993993
Account caller = CallContext.current().getCallingAccount();
994-
List<Long> permittedAccounts = new ArrayList<Long>();
994+
List<Long> permittedAccounts = new ArrayList<>();
995995

996996
boolean listAll = cmd.listAll();
997997
Long id = cmd.getId();
998998
Long userId = cmd.getUserId();
999999
Map<String, String> tags = cmd.getTags();
10001000
Boolean display = cmd.getDisplay();
1001-
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
1001+
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<>(cmd.getDomainId(), cmd.isRecursive(), null);
10021002
_accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(), cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject, listAll, false);
10031003
Long domainId = domainIdRecursiveListProject.first();
10041004
Boolean isRecursive = domainIdRecursiveListProject.second();
@@ -1011,7 +1011,7 @@ private Pair<List<UserVmJoinVO>, Integer> searchForUserVMsInternal(ListVMsCmd cm
10111011
if (cmd.getIds() != null && !cmd.getIds().isEmpty()) {
10121012
throw new InvalidParameterValueException("Specify either id or ids but not both parameters");
10131013
}
1014-
ids = new ArrayList<Long>();
1014+
ids = new ArrayList<>();
10151015
ids.add(cmd.getId());
10161016
} else {
10171017
ids = cmd.getIds();

server/src/main/java/com/cloud/user/AccountManagerImpl.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2955,18 +2955,17 @@ public void buildACLSearchParameters(Account caller, Long id, String accountName
29552955
if (projectId != null) {
29562956
if (!forProjectInvitation) {
29572957
if (projectId == -1L) {
2958-
if (caller.getType() == Account.Type.ADMIN) {
2959-
domainIdRecursiveListProject.third(Project.ListProjectResourcesCriteria.ListProjectResourcesOnly);
2960-
if (listAll) {
2961-
domainIdRecursiveListProject.third(ListProjectResourcesCriteria.ListAllIncludingProjectResources);
2962-
}
2963-
} else {
2958+
domainIdRecursiveListProject.third(Project.ListProjectResourcesCriteria.ListProjectResourcesOnly);
2959+
if (caller.getType() != Account.Type.ADMIN) {
29642960
permittedAccounts.addAll(_projectMgr.listPermittedProjectAccounts(caller.getId()));
29652961
// permittedAccounts can be empty when the caller is not a part of any project (a domain account)
2966-
if (permittedAccounts.isEmpty()) {
2962+
if (permittedAccounts.isEmpty() || listAll) {
29672963
permittedAccounts.add(caller.getId());
29682964
}
29692965
}
2966+
if (listAll) {
2967+
domainIdRecursiveListProject.third(ListProjectResourcesCriteria.ListAllIncludingProjectResources);
2968+
}
29702969
} else {
29712970
Project project = _projectMgr.getProject(projectId);
29722971
if (project == null) {

0 commit comments

Comments
 (0)