This is an automated email from the ASF dual-hosted git repository.
sureshanaparti pushed a commit to branch 4.19
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.19 by this push:
new 264e404108a Fix for dynamic scaling toggle for instance (#11086)
264e404108a is described below
commit 264e404108ad3b35389e0a444db2fccb6592ae17
Author: Manoj Kumar <[email protected]>
AuthorDate: Thu Jul 24 09:30:20 2025 +0530
Fix for dynamic scaling toggle for instance (#11086)
* Fix for dynamic scaling toggle for instance
* Update
api/src/main/java/org/apache/cloudstack/api/response/CapabilitiesResponse.java
---------
Co-authored-by: Suresh Kumar Anaparti <[email protected]>
---
.../api/command/user/config/ListCapabilitiesCmd.java | 1 +
.../cloudstack/api/response/CapabilitiesResponse.java | 8 ++++++++
.../main/java/com/cloud/server/ManagementServerImpl.java | 1 +
ui/src/views/compute/DeployVM.vue | 14 +++-----------
ui/src/views/compute/DeployVnfAppliance.vue | 14 +++-----------
ui/src/views/compute/EditVM.vue | 16 ++--------------
6 files changed, 18 insertions(+), 36 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 65920a97c98..4f036e89a64 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
@@ -71,6 +71,7 @@ public class ListCapabilitiesCmd extends BaseCmd {
response.setInstancesStatsUserOnly((Boolean)
capabilities.get(ApiConstants.INSTANCES_STATS_USER_ONLY));
response.setInstancesDisksStatsRetentionEnabled((Boolean)
capabilities.get(ApiConstants.INSTANCES_DISKS_STATS_RETENTION_ENABLED));
response.setInstancesDisksStatsRetentionTime((Integer)
capabilities.get(ApiConstants.INSTANCES_DISKS_STATS_RETENTION_TIME));
+ response.setDynamicScalingEnabled((Boolean)
capabilities.get(ApiConstants.DYNAMIC_SCALING_ENABLED));
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 e4224c85e97..83fb4f4b372 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
@@ -124,6 +124,10 @@ public class CapabilitiesResponse extends BaseResponse {
@Param(description = "the retention time for Instances disks stats", since
= "4.18.0")
private Integer instancesDisksStatsRetentionTime;
+ @SerializedName(ApiConstants.DYNAMIC_SCALING_ENABLED)
+ @Param(description = "true if dynamically scaling for instances is
enabled", since = "4.21.0")
+ private Boolean dynamicScalingEnabled;
+
public void setSecurityGroupsEnabled(boolean securityGroupsEnabled) {
this.securityGroupsEnabled = securityGroupsEnabled;
}
@@ -223,4 +227,8 @@ public class CapabilitiesResponse extends BaseResponse {
public void setCustomHypervisorDisplayName(String
customHypervisorDisplayName) {
this.customHypervisorDisplayName = customHypervisorDisplayName;
}
+
+ public void setDynamicScalingEnabled(Boolean dynamicScalingEnabled) {
+ this.dynamicScalingEnabled = dynamicScalingEnabled;
+ }
}
diff --git a/server/src/main/java/com/cloud/server/ManagementServerImpl.java
b/server/src/main/java/com/cloud/server/ManagementServerImpl.java
index 7ccd6b5e289..451c8f4e159 100644
--- a/server/src/main/java/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/main/java/com/cloud/server/ManagementServerImpl.java
@@ -4408,6 +4408,7 @@ public class ManagementServerImpl extends ManagerBase
implements ManagementServe
capabilities.put(ApiConstants.INSTANCES_STATS_USER_ONLY,
StatsCollector.vmStatsCollectUserVMOnly.value());
capabilities.put(ApiConstants.INSTANCES_DISKS_STATS_RETENTION_ENABLED,
StatsCollector.vmDiskStatsRetentionEnabled.value());
capabilities.put(ApiConstants.INSTANCES_DISKS_STATS_RETENTION_TIME,
StatsCollector.vmDiskStatsMaxRetentionTime.value());
+ capabilities.put(ApiConstants.DYNAMIC_SCALING_ENABLED,
UserVmManager.EnableDynamicallyScaleVm.value());
if (apiLimitEnabled) {
capabilities.put("apiLimitInterval", apiLimitInterval);
capabilities.put("apiLimitMax", apiLimitMax);
diff --git a/ui/src/views/compute/DeployVM.vue
b/ui/src/views/compute/DeployVM.vue
index c99ffe4d321..30ac498c5c2 100644
--- a/ui/src/views/compute/DeployVM.vue
+++ b/ui/src/views/compute/DeployVM.vue
@@ -944,8 +944,7 @@ export default {
keyboards: [],
bootTypes: [],
bootModes: [],
- ioPolicyTypes: [],
- dynamicScalingVmConfig: false
+ ioPolicyTypes: []
},
rowCount: {},
loading: {
@@ -1175,13 +1174,6 @@ export default {
type: 'Routing'
},
field: 'hostid'
- },
- dynamicScalingVmConfig: {
- list: 'listConfigurations',
- options: {
- zoneid: _.get(this.zone, 'id'),
- name: 'enable.dynamic.scale.vm'
- }
}
}
},
@@ -1312,7 +1304,7 @@ export default {
return Boolean('listUserData' in this.$store.getters.apis)
},
dynamicScalingVmConfigValue () {
- return this.options.dynamicScalingVmConfig?.[0]?.value === 'true'
+ return this.$store.getters.features.dynamicscalingenabled
},
isCustomizedDiskIOPS () {
return this.diskSelected?.iscustomizediops || false
@@ -2215,7 +2207,7 @@ export default {
param.loading = true
param.opts = []
const options = param.options || {}
- if (!('listall' in options) && !['zones', 'pods', 'clusters', 'hosts',
'dynamicScalingVmConfig', 'hypervisors'].includes(name)) {
+ if (!('listall' in options) && !['zones', 'pods', 'clusters', 'hosts',
'hypervisors'].includes(name)) {
options.listall = true
}
api(param.list, options).then((response) => {
diff --git a/ui/src/views/compute/DeployVnfAppliance.vue
b/ui/src/views/compute/DeployVnfAppliance.vue
index 5e1baac3d8f..b69b67aa8d3 100644
--- a/ui/src/views/compute/DeployVnfAppliance.vue
+++ b/ui/src/views/compute/DeployVnfAppliance.vue
@@ -960,8 +960,7 @@ export default {
keyboards: [],
bootTypes: [],
bootModes: [],
- ioPolicyTypes: [],
- dynamicScalingVmConfig: false
+ ioPolicyTypes: []
},
rowCount: {},
loading: {
@@ -1194,13 +1193,6 @@ export default {
type: 'Routing'
},
field: 'hostid'
- },
- dynamicScalingVmConfig: {
- list: 'listConfigurations',
- options: {
- zoneid: _.get(this.zone, 'id'),
- name: 'enable.dynamic.scale.vm'
- }
}
}
},
@@ -1332,7 +1324,7 @@ export default {
return Boolean('listUserData' in this.$store.getters.apis)
},
dynamicScalingVmConfigValue () {
- return this.options.dynamicScalingVmConfig?.[0]?.value === 'true'
+ return this.$store.getters.features.dynamicscalingenabled
},
isCustomizedDiskIOPS () {
return this.diskSelected?.iscustomizediops || false
@@ -2403,7 +2395,7 @@ export default {
param.loading = true
param.opts = []
const options = param.options || {}
- if (!('listall' in options) && !['zones', 'pods', 'clusters', 'hosts',
'dynamicScalingVmConfig', 'hypervisors'].includes(name)) {
+ if (!('listall' in options) && !['zones', 'pods', 'clusters', 'hosts',
'hypervisors'].includes(name)) {
options.listall = true
}
api(param.list, options).then((response) => {
diff --git a/ui/src/views/compute/EditVM.vue b/ui/src/views/compute/EditVM.vue
index 92079b84113..90cc96dd9ef 100644
--- a/ui/src/views/compute/EditVM.vue
+++ b/ui/src/views/compute/EditVM.vue
@@ -145,7 +145,6 @@ export default {
template: {},
userDataEnabled: false,
securityGroupsEnabled: false,
- dynamicScalingVmConfig: false,
loading: false,
securitygroups: {
loading: false,
@@ -189,7 +188,6 @@ export default {
this.fetchInstaceGroups()
this.fetchServiceOfferingData()
this.fetchTemplateData()
- this.fetchDynamicScalingVmConfig()
this.fetchUserData()
},
fetchZoneDetails () {
@@ -241,18 +239,8 @@ export default {
this.template = templateResponses[0]
})
},
- fetchDynamicScalingVmConfig () {
- const params = {}
- params.name = 'enable.dynamic.scale.vm'
- params.zoneid = this.resource.zoneid
- var apiName = 'listConfigurations'
- api(apiName, params).then(json => {
- const configResponse = json.listconfigurationsresponse.configuration
- this.dynamicScalingVmConfig = configResponse[0]?.value === 'true'
- })
- },
- canDynamicScalingEnabled () {
- return this.template.isdynamicallyscalable &&
this.serviceOffering.dynamicscalingenabled && this.dynamicScalingVmConfig
+ isDynamicScalingEnabled () {
+ return this.template.isdynamicallyscalable &&
this.serviceOffering.dynamicscalingenabled &&
this.$store.getters.features.dynamicscalingenabled
},
fetchOsTypes () {
this.osTypes.loading = true