From d3b292ace9b5c6c8f02fb8fcff806dd9b4743775 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 1 Aug 2019 13:30:34 +0530 Subject: [PATCH] server: Fixes API permissions, global settings and template UX (#3534) Fixes: - This allows getUploadParamsForIso for all user role types, also fixes authorised field for getUploadParamsForTemplate API. - Fix global setting description to say what is used when value is empty/blank. - For VM running/allocated usage description, use parenthesis to return the instance name and ID. - Display template download progress when template is added to a project Signed-off-by: Rohit Yadav --- .../user/iso/GetUploadParamsForIsoCmd.java | 15 +++++++++------ .../template/GetUploadParamsForTemplateCmd.java | 7 +++++-- .../org/apache/cloudstack/query/QueryService.java | 2 +- .../java/com/cloud/api/ApiResponseHelper.java | 2 +- .../cloud/api/query/dao/TemplateJoinDaoImpl.java | 6 ++++-- 5 files changed, 20 insertions(+), 12 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/iso/GetUploadParamsForIsoCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/iso/GetUploadParamsForIsoCmd.java index 92e3b979885..b1d252ccd2f 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/iso/GetUploadParamsForIsoCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/iso/GetUploadParamsForIsoCmd.java @@ -16,11 +16,9 @@ // under the License. package org.apache.cloudstack.api.command.user.iso; -import com.cloud.exception.ConcurrentOperationException; -import com.cloud.exception.InsufficientCapacityException; -import com.cloud.exception.NetworkRuleConflictException; -import com.cloud.exception.ResourceAllocationException; -import com.cloud.exception.ResourceUnavailableException; +import java.net.MalformedURLException; + +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.AbstractGetUploadParamsCmd; import org.apache.cloudstack.api.ApiConstants; @@ -33,11 +31,16 @@ import org.apache.cloudstack.api.response.GuestOSResponse; import org.apache.cloudstack.api.response.ZoneResponse; import org.apache.cloudstack.context.CallContext; -import java.net.MalformedURLException; +import com.cloud.exception.ConcurrentOperationException; +import com.cloud.exception.InsufficientCapacityException; +import com.cloud.exception.NetworkRuleConflictException; +import com.cloud.exception.ResourceAllocationException; +import com.cloud.exception.ResourceUnavailableException; @APICommand(name = GetUploadParamsForIsoCmd.APINAME, description = "upload an existing ISO into the CloudStack cloud.", responseObject = GetUploadParamsResponse.class, since = "4.13", + authorized = {RoleType.Admin, RoleType.ResourceAdmin, RoleType.DomainAdmin, RoleType.User}, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false) public class GetUploadParamsForIsoCmd extends AbstractGetUploadParamsCmd { diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/template/GetUploadParamsForTemplateCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/template/GetUploadParamsForTemplateCmd.java index 248e892d897..00e956a56f3 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/template/GetUploadParamsForTemplateCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/template/GetUploadParamsForTemplateCmd.java @@ -22,6 +22,7 @@ import java.net.MalformedURLException; import java.util.Collection; import java.util.Map; +import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.AbstractGetUploadParamsCmd; import org.apache.cloudstack.api.ApiConstants; @@ -35,8 +36,10 @@ import org.apache.log4j.Logger; import com.cloud.exception.ResourceAllocationException; -@APICommand(name = "getUploadParamsForTemplate", description = "upload an existing template into the CloudStack cloud. ", responseObject = GetUploadParamsResponse.class, since = - "4.6.0", requestHasSensitiveInfo = false, responseHasSensitiveInfo = false) +@APICommand(name = "getUploadParamsForTemplate", description = "upload an existing template into the CloudStack cloud. ", + responseObject = GetUploadParamsResponse.class, since = "4.6.0", + authorized = {RoleType.Admin, RoleType.ResourceAdmin, RoleType.DomainAdmin, RoleType.User}, + requestHasSensitiveInfo = false, responseHasSensitiveInfo = false) public class GetUploadParamsForTemplateCmd extends AbstractGetUploadParamsCmd { public static final Logger s_logger = Logger.getLogger(GetUploadParamsForTemplateCmd.class.getName()); diff --git a/api/src/main/java/org/apache/cloudstack/query/QueryService.java b/api/src/main/java/org/apache/cloudstack/query/QueryService.java index b9010cb8901..e5ef658dce8 100644 --- a/api/src/main/java/org/apache/cloudstack/query/QueryService.java +++ b/api/src/main/java/org/apache/cloudstack/query/QueryService.java @@ -92,7 +92,7 @@ public interface QueryService { static final ConfigKey UserVMBlacklistedDetails = new ConfigKey("Advanced", String.class, "user.vm.blacklisted.details", "rootdisksize, cpuOvercommitRatio, memoryOvercommitRatio, Message.ReservedCapacityFreed.Flag", - "Determines whether users can view certain VM settings", true); + "Determines whether users can view certain VM settings. When set to empty, default value used is: rootdisksize, cpuOvercommitRatio, memoryOvercommitRatio, Message.ReservedCapacityFreed.Flag.", true); static final ConfigKey UserVMReadOnlyUIDetails = new ConfigKey("Advanced", String.class, "user.vm.readonly.ui.details", "dataDiskController, rootDiskController", diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java index 90d4ff01fbf..df1eedb90ab 100644 --- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java +++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java @@ -3373,7 +3373,7 @@ public class ApiResponseHelper implements ResponseGenerator { builder.append("Allocated VM usage "); } if (vm != null) { - builder.append("for ").append(vm.getHostName()).append(" (").append(vm.getInstanceName()).append(", ").append(vm.getUuid()).append(") "); + builder.append("for ").append(vm.getHostName()).append(" (").append(vm.getInstanceName()).append(") (").append(vm.getUuid()).append(") "); } if (svcOffering != null) { builder.append("using service offering ").append(svcOffering.getName()).append(" (").append(svcOffering.getUuid()).append(") "); diff --git a/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java index 155fd14b531..54686f73df2 100644 --- a/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java @@ -166,8 +166,10 @@ public class TemplateJoinDaoImpl extends GenericDaoBaseWithTagInformation