Updated Branches: refs/heads/master 5af61a85a -> 03fac8318
CLOUDSTACK-3358: create template from a volume/snapshot should also take input from User/Admin whether xstools / vmware tools installed in the VM Signed off by : Nitin Mehta<[email protected]> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/03fac831 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/03fac831 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/03fac831 Branch: refs/heads/master Commit: 03fac831800a8b7fd34af607a0ca36ced05cb0ea Parents: 5af61a8 Author: Harikrishna Patnala <[email protected]> Authored: Fri Jul 19 11:54:09 2013 +0530 Committer: Nitin Mehta <[email protected]> Committed: Fri Jul 19 11:55:32 2013 +0530 ---------------------------------------------------------------------- .../api/command/user/template/CreateTemplateCmd.java | 7 +++++++ server/src/com/cloud/hypervisor/HypervisorGuruBase.java | 2 +- server/src/com/cloud/template/TemplateManagerImpl.java | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/03fac831/api/src/org/apache/cloudstack/api/command/user/template/CreateTemplateCmd.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/command/user/template/CreateTemplateCmd.java b/api/src/org/apache/cloudstack/api/command/user/template/CreateTemplateCmd.java index 271357d..6116a4e 100644 --- a/api/src/org/apache/cloudstack/api/command/user/template/CreateTemplateCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/template/CreateTemplateCmd.java @@ -102,6 +102,9 @@ import java.util.Map; @Parameter(name=ApiConstants.DETAILS, type=CommandType.MAP, description="Template details in key/value pairs.") protected Map details; + @Parameter(name = ApiConstants.IS_DYNAMICALLY_SCALABLE, type = CommandType.BOOLEAN, description = "true if template contains XS/VMWare tools inorder to support dynamic scaling of VM cpu/memory") + protected Boolean isDynamicallyScalable; + // /////////////////////////////////////////////////// // ///////////////// Accessors /////////////////////// // /////////////////////////////////////////////////// @@ -169,6 +172,10 @@ import java.util.Map; return params; } + public boolean isDynamicallyScalable() { + return isDynamicallyScalable == null ? false : isDynamicallyScalable; + } + // /////////////////////////////////////////////////// // ///////////// API Implementation/////////////////// // /////////////////////////////////////////////////// http://git-wip-us.apache.org/repos/asf/cloudstack/blob/03fac831/server/src/com/cloud/hypervisor/HypervisorGuruBase.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/hypervisor/HypervisorGuruBase.java b/server/src/com/cloud/hypervisor/HypervisorGuruBase.java index 769648a..2ffd682 100644 --- a/server/src/com/cloud/hypervisor/HypervisorGuruBase.java +++ b/server/src/com/cloud/hypervisor/HypervisorGuruBase.java @@ -120,7 +120,7 @@ public abstract class HypervisorGuruBase extends AdapterBase implements Hypervis details.putAll(detailsInVm); } if (details.get(VirtualMachine.IsDynamicScalingEnabled) == null || details.get(VirtualMachine.IsDynamicScalingEnabled).isEmpty()) { - to. setEnableDynamicallyScaleVm(false); + to.setEnableDynamicallyScaleVm(false); } else { // check if XStools/VMWare tools are present in the VM and dynamic scaling feature is enabled (per zone/global) to.setEnableDynamicallyScaleVm(details.get(VirtualMachine.IsDynamicScalingEnabled).equals("true") && Boolean.parseBoolean(_configServer.getConfigValue(Config.EnableDynamicallyScaleVm.key(), Config.ConfigurationParameterScope.zone.toString(), vm.getDataCenterId()))); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/03fac831/server/src/com/cloud/template/TemplateManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java index c6446ac..f1a5602 100755 --- a/server/src/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/com/cloud/template/TemplateManagerImpl.java @@ -1457,6 +1457,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, if (isPublic == null) { isPublic = Boolean.FALSE; } + boolean isDynamicScalingEnabled = cmd.isDynamicallyScalable(); // check whether template owner can create public templates boolean allowPublicUserTemplates = Boolean.parseBoolean(_configServer.getConfigValue(Config.AllowPublicUserTemplates.key(), Config.ConfigurationParameterScope.account.toString(), templateOwner.getId())); @@ -1497,6 +1498,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, } throw new CloudRuntimeException(msg); } + hyperType = this._volumeDao.getHypervisorType(volumeId); } else { // create template from snapshot snapshot = _snapshotDao.findById(snapshotId); @@ -1568,6 +1570,8 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, privateTemplate = new VMTemplateVO(nextTemplateId, uniqueName, name, ImageFormat.RAW, isPublic, featured, isExtractable, TemplateType.USER, null, null, requiresHvmValue, bitsValue, templateOwner.getId(), null, description, passwordEnabledValue, guestOS.getId(), true, hyperType, templateTag, cmd.getDetails()); + privateTemplate.setDynamicallyScalable(isDynamicScalingEnabled); + if (sourceTemplateId != null) { if (s_logger.isDebugEnabled()) { s_logger.debug("This template is getting created from other template, setting source template Id to: " + sourceTemplateId);
