You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by pr...@apache.org on 2013/11/05 01:45:39 UTC

[3/3] git commit: updated refs/heads/master to 3cc8239

CLOUDSTACK-4755: cloudstack 4.x does not allow memory upgrade

Changes:
- Set total capacity of a host if it has changed in the CapacityChecker thread
- Fix bug while setting the reserved/used cpu/mem capacity - only one of them used to get set


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

Branch: refs/heads/master
Commit: 3cc823903a0aa99b20a55b13e871d0ad8f6caf79
Parents: 863a84a
Author: Prachi Damle <pr...@cloud.com>
Authored: Mon Nov 4 16:37:55 2013 -0800
Committer: Prachi Damle <pr...@cloud.com>
Committed: Mon Nov 4 16:45:11 2013 -0800

----------------------------------------------------------------------
 .../com/cloud/capacity/CapacityManagerImpl.java | 64 ++++++++++++++------
 1 file changed, 44 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3cc82390/server/src/com/cloud/capacity/CapacityManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/capacity/CapacityManagerImpl.java b/server/src/com/cloud/capacity/CapacityManagerImpl.java
index 72905a7..1c5f189 100755
--- a/server/src/com/cloud/capacity/CapacityManagerImpl.java
+++ b/server/src/com/cloud/capacity/CapacityManagerImpl.java
@@ -599,34 +599,58 @@ public class CapacityManagerImpl extends ManagerBase implements CapacityManager,
         CapacityVO memCap = _capacityDao.findByHostIdType(host.getId(), CapacityVO.CAPACITY_TYPE_MEMORY);
 
         if (cpuCap != null && memCap != null){
+
+            long hostTotalCpu = host.getCpus().longValue() * host.getSpeed().longValue();
+
+            if (cpuCap.getTotalCapacity() != hostTotalCpu) {
+                s_logger.debug("Calibrate total cpu for host: " + host.getId() + " old total CPU:"
+                        + cpuCap.getTotalCapacity() + " new total CPU:" + hostTotalCpu);
+                cpuCap.setTotalCapacity(hostTotalCpu);
+
+            }
+
         	if (cpuCap.getUsedCapacity() == usedCpu && cpuCap.getReservedCapacity() == reservedCpu) {
         		s_logger.debug("No need to calibrate cpu capacity, host:" + host.getId() + " usedCpu: " + cpuCap.getUsedCapacity()
         				+ " reservedCpu: " + cpuCap.getReservedCapacity());
-        	} else if (cpuCap.getReservedCapacity() != reservedCpu) {
-        		s_logger.debug("Calibrate reserved cpu for host: " + host.getId() + " old reservedCpu:" + cpuCap.getReservedCapacity()
-        				+ " new reservedCpu:" + reservedCpu);
-        		cpuCap.setReservedCapacity(reservedCpu);
-        	} else if (cpuCap.getUsedCapacity() != usedCpu) {
-        		s_logger.debug("Calibrate used cpu for host: " + host.getId() + " old usedCpu:" + cpuCap.getUsedCapacity() + " new usedCpu:"
-        				+ usedCpu);
-        		cpuCap.setUsedCapacity(usedCpu);
+            } else {
+                if (cpuCap.getReservedCapacity() != reservedCpu) {
+                    s_logger.debug("Calibrate reserved cpu for host: " + host.getId() + " old reservedCpu:"
+                            + cpuCap.getReservedCapacity() + " new reservedCpu:" + reservedCpu);
+                    cpuCap.setReservedCapacity(reservedCpu);
+                }
+                if (cpuCap.getUsedCapacity() != usedCpu) {
+                    s_logger.debug("Calibrate used cpu for host: " + host.getId() + " old usedCpu:"
+                            + cpuCap.getUsedCapacity() + " new usedCpu:" + usedCpu);
+                    cpuCap.setUsedCapacity(usedCpu);
+                }
         	}
 
+            if (memCap.getTotalCapacity() != host.getTotalMemory()) {
+                s_logger.debug("Calibrate total memory for host: " + host.getId() + " old total memory:"
+                        + memCap.getTotalCapacity() + " new total memory:" + host.getTotalMemory());
+                memCap.setTotalCapacity(host.getTotalMemory());
+
+            }
+
 	        if (memCap.getUsedCapacity() == usedMemory && memCap.getReservedCapacity() == reservedMemory) {
 	            s_logger.debug("No need to calibrate memory capacity, host:" + host.getId() + " usedMem: " + memCap.getUsedCapacity()
 	                    + " reservedMem: " + memCap.getReservedCapacity());
-	        } else if (memCap.getReservedCapacity() != reservedMemory) {
-	            s_logger.debug("Calibrate reserved memory for host: " + host.getId() + " old reservedMem:" + memCap.getReservedCapacity()
-	                    + " new reservedMem:" + reservedMemory);
-	            memCap.setReservedCapacity(reservedMemory);
-	        } else if (memCap.getUsedCapacity() != usedMemory) {
-	            /*
-	             * Didn't calibrate for used memory, because VMs can be in state(starting/migrating) that I don't know on which host they are
-	             * allocated
-	             */
-	            s_logger.debug("Calibrate used memory for host: " + host.getId() + " old usedMem: " + memCap.getUsedCapacity()
-	                    + " new usedMem: " + usedMemory);
-	            memCap.setUsedCapacity(usedMemory);
+            } else {
+                if (memCap.getReservedCapacity() != reservedMemory) {
+                    s_logger.debug("Calibrate reserved memory for host: " + host.getId() + " old reservedMem:"
+                            + memCap.getReservedCapacity() + " new reservedMem:" + reservedMemory);
+                    memCap.setReservedCapacity(reservedMemory);
+                }
+                if (memCap.getUsedCapacity() != usedMemory) {
+                    /*
+                     * Didn't calibrate for used memory, because VMs can be in
+                     * state(starting/migrating) that I don't know on which host
+                     * they are allocated
+                     */
+                    s_logger.debug("Calibrate used memory for host: " + host.getId() + " old usedMem: "
+                            + memCap.getUsedCapacity() + " new usedMem: " + usedMemory);
+                    memCap.setUsedCapacity(usedMemory);
+                }
 	        }
 
 	        try {