From 06f3ff0b04aac4d8c01d5116be2c0744660c5eea Mon Sep 17 00:00:00 2001 From: davidjumani Date: Thu, 18 Jun 2020 14:17:13 +0000 Subject: [PATCH] api: listVirtualMachinesMetrics should extend ListVMsCmd instead of ListVMsCmdByAdmin (#4145) Fixes #4143 Co-authored-by: Rohit Yadav --- .../java/org/apache/cloudstack/api/ListVMsMetricsCmd.java | 4 ++-- .../src/main/java/com/cloud/api/query/QueryManagerImpl.java | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/plugins/metrics/src/main/java/org/apache/cloudstack/api/ListVMsMetricsCmd.java b/plugins/metrics/src/main/java/org/apache/cloudstack/api/ListVMsMetricsCmd.java index 1cec5a31612..9b8564c2c8b 100644 --- a/plugins/metrics/src/main/java/org/apache/cloudstack/api/ListVMsMetricsCmd.java +++ b/plugins/metrics/src/main/java/org/apache/cloudstack/api/ListVMsMetricsCmd.java @@ -18,7 +18,7 @@ package org.apache.cloudstack.api; import org.apache.cloudstack.acl.RoleType; -import org.apache.cloudstack.api.command.admin.vm.ListVMsCmdByAdmin; +import org.apache.cloudstack.api.command.user.vm.ListVMsCmd; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.metrics.MetricsService; @@ -30,7 +30,7 @@ import java.util.List; @APICommand(name = ListVMsMetricsCmd.APINAME, description = "Lists VM metrics", responseObject = VmMetricsResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, responseView = ResponseObject.ResponseView.Full, since = "4.9.3", authorized = {RoleType.Admin, RoleType.ResourceAdmin, RoleType.DomainAdmin, RoleType.User}) -public class ListVMsMetricsCmd extends ListVMsCmdByAdmin { +public class ListVMsMetricsCmd extends ListVMsCmd { public static final String APINAME = "listVirtualMachinesMetrics"; @Inject 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 127ac9037a1..c41cd0e68a6 100644 --- a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java @@ -781,7 +781,8 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q Pair, Integer> result = searchForUserVMsInternal(cmd); ListResponse response = new ListResponse(); ResponseView respView = ResponseView.Restricted; - if (cmd instanceof ListVMsCmdByAdmin) { + Account caller = CallContext.current().getCallingAccount(); + if (_accountMgr.isRootAdmin(caller.getId())) { respView = ResponseView.Full; } List vmResponses = ViewResponseHelper.createUserVmResponse(respView, "virtualmachine", cmd.getDetails(), result.first().toArray(new UserVmJoinVO[result.first().size()])); @@ -1691,7 +1692,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q ResponseView respView = ResponseView.Restricted; Account account = CallContext.current().getCallingAccount(); - if (_accountMgr.isAdmin(account.getAccountId())) { + if (_accountMgr.isRootAdmin(account.getAccountId())) { respView = ResponseView.Full; }