From 090c1e38a6baeeeb01a85aaa7130edfa927caba7 Mon Sep 17 00:00:00 2001 From: Henrique Sato Date: Tue, 16 Apr 2024 11:55:20 -0300 Subject: [PATCH] Improve vm.allocation.algorithm global setting description (#8823) Co-authored-by: Henrique Sato --- .../com/cloud/deploy/DeploymentClusterPlanner.java | 11 +++++++++++ .../src/main/java/com/cloud/configuration/Config.java | 10 ---------- .../main/java/com/cloud/deploy/FirstFitPlanner.java | 4 ++-- .../test/java/com/cloud/vm/FirstFitPlannerTest.java | 3 +-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/api/src/main/java/com/cloud/deploy/DeploymentClusterPlanner.java b/api/src/main/java/com/cloud/deploy/DeploymentClusterPlanner.java index a668b79187d..2697311d2b9 100644 --- a/api/src/main/java/com/cloud/deploy/DeploymentClusterPlanner.java +++ b/api/src/main/java/com/cloud/deploy/DeploymentClusterPlanner.java @@ -57,6 +57,17 @@ public interface DeploymentClusterPlanner extends DeploymentPlanner { false, ConfigKey.Scope.Global); + static final ConfigKey VmAllocationAlgorithm = new ConfigKey<>( + String.class, + "vm.allocation.algorithm", + "Advanced", + "random", + "Order in which hosts within a cluster will be considered for VM/volume allocation. The value can be 'random', 'firstfit', 'userdispersing', 'userconcentratedpod_random', 'userconcentratedpod_firstfit', or 'firstfitleastconsumed'.", + true, + ConfigKey.Scope.Global, null, null, null, null, null, + ConfigKey.Kind.Select, + "random,firstfit,userdispersing,userconcentratedpod_random,userconcentratedpod_firstfit,firstfitleastconsumed"); + /** * This is called to determine list of possible clusters where a virtual * machine can be deployed. diff --git a/server/src/main/java/com/cloud/configuration/Config.java b/server/src/main/java/com/cloud/configuration/Config.java index ef20d54aef5..1fb36b65ecf 100644 --- a/server/src/main/java/com/cloud/configuration/Config.java +++ b/server/src/main/java/com/cloud/configuration/Config.java @@ -918,16 +918,6 @@ public enum Config { "1", "Weight for user dispersion heuristic (as a value between 0 and 1) applied to resource allocation during vm deployment. Weight for capacity heuristic will be (1 - weight of user dispersion)", null), - VmAllocationAlgorithm( - "Advanced", - ManagementServer.class, - String.class, - "vm.allocation.algorithm", - "random", - "'random', 'firstfit', 'userdispersing', 'userconcentratedpod_random', 'userconcentratedpod_firstfit', 'firstfitleastconsumed' : Order in which hosts within a cluster will be considered for VM/volume allocation.", - null, - ConfigKey.Kind.Select, - "random,firstfit,userdispersing,userconcentratedpod_random,userconcentratedpod_firstfit,firstfitleastconsumed"), VmDeploymentPlanner( "Advanced", ManagementServer.class, diff --git a/server/src/main/java/com/cloud/deploy/FirstFitPlanner.java b/server/src/main/java/com/cloud/deploy/FirstFitPlanner.java index eaf36162ab6..22b9a33f65b 100644 --- a/server/src/main/java/com/cloud/deploy/FirstFitPlanner.java +++ b/server/src/main/java/com/cloud/deploy/FirstFitPlanner.java @@ -567,7 +567,7 @@ public class FirstFitPlanner extends AdapterBase implements DeploymentClusterPla @Override public boolean configure(String name, Map params) throws ConfigurationException { super.configure(name, params); - allocationAlgorithm = configDao.getValue(Config.VmAllocationAlgorithm.key()); + allocationAlgorithm = VmAllocationAlgorithm.value(); globalDeploymentPlanner = configDao.getValue(Config.VmDeploymentPlanner.key()); String configValue; if ((configValue = configDao.getValue(Config.ImplicitHostTags.key())) != null) { @@ -594,6 +594,6 @@ public class FirstFitPlanner extends AdapterBase implements DeploymentClusterPla @Override public ConfigKey[] getConfigKeys() { - return new ConfigKey[] {ClusterCPUCapacityDisableThreshold, ClusterMemoryCapacityDisableThreshold, ClusterThresholdEnabled}; + return new ConfigKey[] {ClusterCPUCapacityDisableThreshold, ClusterMemoryCapacityDisableThreshold, ClusterThresholdEnabled, VmAllocationAlgorithm}; } } diff --git a/server/src/test/java/com/cloud/vm/FirstFitPlannerTest.java b/server/src/test/java/com/cloud/vm/FirstFitPlannerTest.java index 33bccecac20..0852c20010b 100644 --- a/server/src/test/java/com/cloud/vm/FirstFitPlannerTest.java +++ b/server/src/test/java/com/cloud/vm/FirstFitPlannerTest.java @@ -151,6 +151,7 @@ public class FirstFitPlannerTest { public void setUp() { ConfigKey.init(configDepot); + when(configDepot.global()).thenReturn(configDao); when(configDao.getValue(Mockito.anyString())).thenReturn(null); when(configDao.getValue(Config.ImplicitHostTags.key())).thenReturn("GPU"); @@ -242,8 +243,6 @@ public class FirstFitPlannerTest { } private List initializeForClusterThresholdDisabled() { - when(configDepot.global()).thenReturn(configDao); - ConfigurationVO config = mock(ConfigurationVO.class); when(config.getValue()).thenReturn(String.valueOf(false)); when(configDao.findById(DeploymentClusterPlanner.ClusterThresholdEnabled.key())).thenReturn(config);