cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rajeshbatt...@apache.org
Subject git commit: updated refs/heads/master to 2898f7d
Date Mon, 17 Nov 2014 10:44:32 GMT
Repository: cloudstack
Updated Branches:
  refs/heads/master 3a4d70e69 -> 2898f7d8d


CLOUDSTACK-7703, CLOUDSTACK-7752: Fixed deployment planner stuck in infinite loop. If we create
VM with shared service offering and attach disk with local disk offering, and one of storage
pool is full(cannot be allocated) and other is not full then we are not putting the cluster
in avoid list which is causing this infinite loop.

Fixed by putting the cluster in avoid list even if one of the storage pool is full(cannot
be allocated)
This closes #30


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/2898f7d8
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/2898f7d8
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/2898f7d8

Branch: refs/heads/master
Commit: 2898f7d8d6a09312d58f682ab727e0a80ed7d0dd
Parents: 3a4d70e
Author: Anshul Gangwar <anshul.gangwar@citrix.com>
Authored: Mon Oct 20 16:04:25 2014 +0530
Committer: Rajesh Battala <rajesh.battala@citrix.com>
Committed: Mon Nov 17 16:17:15 2014 +0530

----------------------------------------------------------------------
 .../deploy/DeploymentPlanningManagerImpl.java    | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2898f7d8/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java b/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java
index bfb33b0..6b80dba 100755
--- a/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java
+++ b/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java
@@ -31,7 +31,6 @@ import javax.ejb.Local;
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
-import com.cloud.utils.fsm.StateMachine2;
 import org.apache.log4j.Logger;
 
 import org.apache.cloudstack.affinity.AffinityGroupProcessor;
@@ -121,6 +120,7 @@ import com.cloud.utils.db.TransactionCallback;
 import com.cloud.utils.db.TransactionStatus;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.fsm.StateListener;
+import com.cloud.utils.fsm.StateMachine2;
 import com.cloud.vm.DiskProfile;
 import com.cloud.vm.VMInstanceVO;
 import com.cloud.vm.VirtualMachine;
@@ -990,7 +990,10 @@ StateListener<State, VirtualMachine.Event, VirtualMachine> {
 
         // if all hosts or all pools in the cluster are in avoid set after this
         // pass, then put the cluster in avoid set.
-        boolean avoidAllHosts = true, avoidAllPools = true;
+        boolean avoidAllHosts = true;
+        boolean avoidAllPools = true;
+        boolean avoidAllLocalPools = true;
+        boolean avoidAllSharedPools = true;
 
         List<HostVO> allhostsInCluster =
                 _hostDao.listAllUpAndEnabledNonHAHosts(Host.Type.Routing, clusterVO.getId(),
clusterVO.getPodId(), clusterVO.getDataCenterId(), null);
@@ -1024,7 +1027,7 @@ StateListener<State, VirtualMachine.Event, VirtualMachine> {
                 for (StoragePoolVO pool : allPoolsInCluster) {
                     if (!allocatorAvoidOutput.shouldAvoid(pool)) {
                         // there's some pool in the cluster that is not yet in avoid set
-                        avoidAllPools = false;
+                        avoidAllSharedPools = false;
                         break;
                     }
                 }
@@ -1038,11 +1041,19 @@ StateListener<State, VirtualMachine.Event, VirtualMachine> {
                     if (!allocatorAvoidOutput.shouldAvoid(pool)) {
                         // there's some pool in the cluster that is not yet
                         // in avoid set
-                        avoidAllPools = false;
+                        avoidAllLocalPools = false;
                         break;
                     }
                 }
             }
+
+            if (vmRequiresSharedStorage && vmRequiresLocalStorege) {
+                avoidAllPools = (avoidAllLocalPools || avoidAllSharedPools) ? true : false;
+            } else if (vmRequiresSharedStorage) {
+                avoidAllPools = avoidAllSharedPools;
+            } else if (vmRequiresLocalStorege) {
+                avoidAllPools = avoidAllLocalPools;
+            }
         }
 
         if (avoidAllHosts || avoidAllPools) {


Mime
View raw message