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))

Reply via email to