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 <[email protected]>
Authored: Fri Mar 29 00:12:15 2013 -0700
Committer: Prachi Damle <[email protected]>
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))