You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2023/08/03 14:06:19 UTC
[cloudstack] branch 4.18 updated: include all VMs when projects selected not just for admins (#7667)
This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch 4.18
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.18 by this push:
new b4032d9984e include all VMs when projects selected not just for admins (#7667)
b4032d9984e is described below
commit b4032d9984e5d2640a231edeb0363c491cddc2f9
Author: dahn <da...@onecht.net>
AuthorDate: Thu Aug 3 16:06:11 2023 +0200
include all VMs when projects selected not just for admins (#7667)
---
.../src/main/java/com/cloud/api/query/QueryManagerImpl.java | 6 +++---
server/src/main/java/com/cloud/user/AccountManagerImpl.java | 13 ++++++-------
2 files changed, 9 insertions(+), 10 deletions(-)
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 0968af0e7c0..5aad6afcdbb 100644
--- a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
+++ b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
@@ -991,14 +991,14 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
private Pair<List<UserVmJoinVO>, Integer> searchForUserVMsInternal(ListVMsCmd cmd) {
Account caller = CallContext.current().getCallingAccount();
- List<Long> permittedAccounts = new ArrayList<Long>();
+ List<Long> permittedAccounts = new ArrayList<>();
boolean listAll = cmd.listAll();
Long id = cmd.getId();
Long userId = cmd.getUserId();
Map<String, String> tags = cmd.getTags();
Boolean display = cmd.getDisplay();
- Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
+ Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<>(cmd.getDomainId(), cmd.isRecursive(), null);
_accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(), cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject, listAll, false);
Long domainId = domainIdRecursiveListProject.first();
Boolean isRecursive = domainIdRecursiveListProject.second();
@@ -1011,7 +1011,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
if (cmd.getIds() != null && !cmd.getIds().isEmpty()) {
throw new InvalidParameterValueException("Specify either id or ids but not both parameters");
}
- ids = new ArrayList<Long>();
+ ids = new ArrayList<>();
ids.add(cmd.getId());
} else {
ids = cmd.getIds();
diff --git a/server/src/main/java/com/cloud/user/AccountManagerImpl.java b/server/src/main/java/com/cloud/user/AccountManagerImpl.java
index 62a84d0d9bf..38b2eddeb60 100644
--- a/server/src/main/java/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/main/java/com/cloud/user/AccountManagerImpl.java
@@ -2955,18 +2955,17 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M
if (projectId != null) {
if (!forProjectInvitation) {
if (projectId == -1L) {
- if (caller.getType() == Account.Type.ADMIN) {
- domainIdRecursiveListProject.third(Project.ListProjectResourcesCriteria.ListProjectResourcesOnly);
- if (listAll) {
- domainIdRecursiveListProject.third(ListProjectResourcesCriteria.ListAllIncludingProjectResources);
- }
- } else {
+ domainIdRecursiveListProject.third(Project.ListProjectResourcesCriteria.ListProjectResourcesOnly);
+ if (caller.getType() != Account.Type.ADMIN) {
permittedAccounts.addAll(_projectMgr.listPermittedProjectAccounts(caller.getId()));
// permittedAccounts can be empty when the caller is not a part of any project (a domain account)
- if (permittedAccounts.isEmpty()) {
+ if (permittedAccounts.isEmpty() || listAll) {
permittedAccounts.add(caller.getId());
}
}
+ if (listAll) {
+ domainIdRecursiveListProject.third(ListProjectResourcesCriteria.ListAllIncludingProjectResources);
+ }
} else {
Project project = _projectMgr.getProject(projectId);
if (project == null) {