From 747cf5b13fda883cdc58f24820d9afdceba6eedd Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 10 Sep 2021 17:55:16 +0530 Subject: [PATCH] api, ui: return default ui pagesize as part of capability response listConfigurations is not available for all roles and therefore not fit to use in UI for a generic functionality. This PR makes default ui pagesize a part for listCapabilities API response to make it available for UI across different role accounts. Signed-off-by: Abhishek Kumar --- .../api/command/user/config/ListCapabilitiesCmd.java | 2 ++ .../cloudstack/api/response/CapabilitiesResponse.java | 8 ++++++++ .../java/com/cloud/server/ManagementServerImpl.java | 2 ++ ui/src/store/modules/user.js | 10 +++------- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java index 566be64cc94a..05176f58a72c 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java @@ -21,6 +21,7 @@ import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.response.CapabilitiesResponse; +import org.apache.cloudstack.config.ApiServiceConfiguration; import org.apache.log4j.Logger; import com.cloud.user.Account; @@ -69,6 +70,7 @@ public void execute() { if (capabilities.containsKey("apiLimitMax")) { response.setApiLimitMax((Integer)capabilities.get("apiLimitMax")); } + response.setDefaultUiPageSize((Long)capabilities.get(ApiServiceConfiguration.DefaultUIPageSize.key())); response.setObjectName("capability"); response.setResponseName(getCommandName()); this.setResponseObject(response); diff --git a/api/src/main/java/org/apache/cloudstack/api/response/CapabilitiesResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/CapabilitiesResponse.java index 26b3fd53d54a..e860baebe6de 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/CapabilitiesResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/CapabilitiesResponse.java @@ -100,6 +100,10 @@ public class CapabilitiesResponse extends BaseResponse { @Param(description = "true if experimental features for Kubernetes cluster such as Docker private registry are enabled, false otherwise") private boolean kubernetesClusterExperimentalFeaturesEnabled; + @SerializedName("defaultuipagesize") + @Param(description = "default page size in the UI for various views, value set in the configurations", since = "4.15.2") + private Long defaultUiPageSize; + public void setSecurityGroupsEnabled(boolean securityGroupsEnabled) { this.securityGroupsEnabled = securityGroupsEnabled; } @@ -175,4 +179,8 @@ public void setKubernetesServiceEnabled(boolean kubernetesServiceEnabled) { public void setKubernetesClusterExperimentalFeaturesEnabled(boolean kubernetesClusterExperimentalFeaturesEnabled) { this.kubernetesClusterExperimentalFeaturesEnabled = kubernetesClusterExperimentalFeaturesEnabled; } + + public void setDefaultUiPageSize(Long defaultUiPageSize) { + this.defaultUiPageSize = defaultUiPageSize; + } } diff --git a/server/src/main/java/com/cloud/server/ManagementServerImpl.java b/server/src/main/java/com/cloud/server/ManagementServerImpl.java index bec025f06851..93c1e9bf78c3 100644 --- a/server/src/main/java/com/cloud/server/ManagementServerImpl.java +++ b/server/src/main/java/com/cloud/server/ManagementServerImpl.java @@ -538,6 +538,7 @@ import org.apache.cloudstack.api.command.user.vpn.UpdateVpnCustomerGatewayCmd; import org.apache.cloudstack.api.command.user.vpn.UpdateVpnGatewayCmd; import org.apache.cloudstack.api.command.user.zone.ListZonesCmd; +import org.apache.cloudstack.config.ApiServiceConfiguration; import org.apache.cloudstack.config.Configuration; import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.orchestration.service.VolumeOrchestrationService; @@ -3858,6 +3859,7 @@ public Map listCapabilities(final ListCapabilitiesCmd cmd) { capabilities.put("allowUserViewAllDomainAccounts", allowUserViewAllDomainAccounts); capabilities.put("kubernetesServiceEnabled", kubernetesServiceEnabled); capabilities.put("kubernetesClusterExperimentalFeaturesEnabled", kubernetesClusterExperimentalFeaturesEnabled); + capabilities.put(ApiServiceConfiguration.DefaultUIPageSize.key(), ApiServiceConfiguration.DefaultUIPageSize.value()); if (apiLimitEnabled) { capabilities.put("apiLimitInterval", apiLimitInterval); capabilities.put("apiLimitMax", apiLimitMax); diff --git a/ui/src/store/modules/user.js b/ui/src/store/modules/user.js index 9bd760ba1be7..97bea865acc0 100644 --- a/ui/src/store/modules/user.js +++ b/ui/src/store/modules/user.js @@ -255,13 +255,9 @@ const user = { api('listCapabilities').then(response => { const result = response.listcapabilitiesresponse.capability commit('SET_FEATURES', result) - }).catch(error => { - reject(error) - }) - - api('listConfigurations', { name: 'default.ui.page.size' }).then(response => { - const defaultListViewPageSize = parseInt(response.listconfigurationsresponse.configuration[0].value) - commit('SET_DEFAULT_LISTVIEW_PAGE_SIZE', defaultListViewPageSize) + if (result && result.defaultuipagesize) { + commit('SET_DEFAULT_LISTVIEW_PAGE_SIZE', result.defaultuipagesize) + } }).catch(error => { reject(error) })