CLOUDSTACK-1706 Failed to deploy VM with error "cannot find DeployPlannerSelector"
Changes: - Regular plugin/adapter components should usually be loaded at run level RUNLEVEL_COMPONENT(5) - HypervisorVmPlannerSelector was at level 0, while configurationServer at level 2 - causing config to be not loaded for the HypervisorVmPlannerSelector Conflicts: server/src/com/cloud/deploy/HypervisorVmPlannerSelector.java Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b9cf4345 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b9cf4345 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b9cf4345 Branch: refs/heads/affinity_groups Commit: b9cf434514bc8a6db39a73d59a0fa47937f116b0 Parents: adf7ddb Author: Prachi Damle <pra...@cloud.com> Authored: Fri Mar 29 00:12:15 2013 -0700 Committer: Prachi Damle <pra...@cloud.com> Committed: Fri Mar 29 00:12:15 2013 -0700 ---------------------------------------------------------------------- .../cloud/deploy/HypervisorVmPlannerSelector.java | 22 ++++++++++++++- .../src/com/cloud/utils/component/AdapterBase.java | 4 ++- 2 files changed, 24 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b9cf4345/server/src/com/cloud/deploy/HypervisorVmPlannerSelector.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/deploy/HypervisorVmPlannerSelector.java b/server/src/com/cloud/deploy/HypervisorVmPlannerSelector.java index 034a9aa..b59984f 100755 --- a/server/src/com/cloud/deploy/HypervisorVmPlannerSelector.java +++ b/server/src/com/cloud/deploy/HypervisorVmPlannerSelector.java @@ -18,15 +18,35 @@ package com.cloud.deploy; import javax.ejb.Local; +import org.apache.log4j.Logger; + +import com.cloud.deploy.DeploymentPlanner.AllocationAlgorithm; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.vm.UserVmVO; @Local(value = {DeployPlannerSelector.class}) public class HypervisorVmPlannerSelector extends AbstractDeployPlannerSelector { + private static final Logger s_logger = Logger.getLogger(HypervisorVmPlannerSelector.class); + @Override public String selectPlanner(UserVmVO vm) { if (vm.getHypervisorType() != HypervisorType.BareMetal) { - return "FirstFitPlanner"; + //check the allocation strategy + if (_allocationAlgorithm != null) { + if (_allocationAlgorithm.equals(AllocationAlgorithm.random.toString()) + || _allocationAlgorithm.equals(AllocationAlgorithm.firstfit.toString())) { + return "FirstFitPlanner"; + } else if (_allocationAlgorithm.equals(AllocationAlgorithm.userdispersing.toString())) { + return "UserDispersingPlanner"; + } else if (_allocationAlgorithm.equals(AllocationAlgorithm.userconcentratedpod_random.toString()) + || _allocationAlgorithm.equals(AllocationAlgorithm.userconcentratedpod_firstfit.toString())) { + return "UserConcentratedPodPlanner"; + } + } else { + if (s_logger.isDebugEnabled()) { + s_logger.debug("The allocation algorithm is null, cannot select the planner"); + } + } } return null; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b9cf4345/utils/src/com/cloud/utils/component/AdapterBase.java ---------------------------------------------------------------------- diff --git a/utils/src/com/cloud/utils/component/AdapterBase.java b/utils/src/com/cloud/utils/component/AdapterBase.java index 405762d..328b51e 100644 --- a/utils/src/com/cloud/utils/component/AdapterBase.java +++ b/utils/src/com/cloud/utils/component/AdapterBase.java @@ -22,8 +22,10 @@ import java.util.List; public class AdapterBase extends ComponentLifecycleBase implements Adapter { public AdapterBase() { + // set default run level for adapter components + setRunLevel(ComponentLifecycle.RUN_LEVEL_COMPONENT); } - + public static <T extends Adapter> T getAdapterByName(List<T> adapters, String name) { for(T adapter : adapters) { if(adapter.getName() != null && adapter.getName().equalsIgnoreCase(name))