You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ml...@apache.org on 2014/03/04 02:42:13 UTC

git commit: updated refs/heads/resize-root to 5eeee5c

Repository: cloudstack
Updated Branches:
  refs/heads/resize-root 974fc4e67 -> 5eeee5cf7


rootdisksize: fail earlier when template size is greater than specified rootdisksize


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

Branch: refs/heads/resize-root
Commit: 5eeee5cf739f10ecdf89b739bc70047f303fb72c
Parents: 974fc4e
Author: Marcus Sorensen <ma...@betterservers.com>
Authored: Mon Mar 3 18:42:04 2014 -0700
Committer: Marcus Sorensen <ma...@betterservers.com>
Committed: Mon Mar 3 18:42:04 2014 -0700

----------------------------------------------------------------------
 server/src/com/cloud/vm/UserVmManagerImpl.java | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5eeee5cf/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 72a80a9..48166f3 100755
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -2835,17 +2835,29 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
                     vm.setIsoId(template.getId());
                 }
                 Long rootDiskSize = null;
+                // custom root disk size, resizes base template to larger size
                 if (customParameters.containsKey("rootdisksize")) {
                     if (NumbersUtil.parseLong(customParameters.get("rootdisksize"), -1) <= 0) {
                         throw new InvalidParameterValueException("rootdisk size should be a non zero number.");
                     }
+                    rootDiskSize = Long.parseLong(customParameters.get("rootdisksize"));
+
                     // only KVM supports rootdisksize override
                     if (hypervisor != HypervisorType.KVM) {
                         throw new InvalidParameterValueException("Hypervisor " + hypervisor + " does not support rootdisksize override");
                     }
 
-                    s_logger.debug("found root disk size of " + customParameters.get("rootdisksize"));
-                    rootDiskSize = Long.parseLong(customParameters.get("rootdisksize"));
+                    // rotdisksize must be larger than template
+                    VMTemplateVO templateVO = _templateDao.findById(template.getId());
+                    if (templateVO == null) {
+                        throw new InvalidParameterValueException("Unable to look up template by id " + template.getId());
+                    }
+
+                    if ((rootDiskSize << 30) < templateVO.getSize()) {
+                        throw new InvalidParameterValueException("unsupported: rootdisksize override is smaller than template size " + templateVO.getSize());
+                    }
+
+                    s_logger.debug("found root disk size of " + rootDiskSize);
                     customParameters.remove("rootdisksize");
                 }