Updated Branches: refs/heads/4.2 c03296808 -> 12c711cef
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/12c711ce Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/12c711ce Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/12c711ce Branch: refs/heads/4.2 Commit: 12c711cef7d75f2feaebb8da82e57979869dac49 Parents: c032968 Author: Harikrishna Patnala <[email protected]> Authored: Fri Jul 19 11:54:09 2013 +0530 Committer: Nitin Mehta <[email protected]> Committed: Fri Jul 19 11:54:36 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/12c711ce/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 6aa60ac..2f6d0c2 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 @@ -100,6 +100,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 /////////////////////// // /////////////////////////////////////////////////// @@ -167,6 +170,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/12c711ce/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/12c711ce/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 2d984cf..5005ee0 100755 --- a/server/src/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/com/cloud/template/TemplateManagerImpl.java @@ -1460,6 +1460,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())); @@ -1500,6 +1501,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); @@ -1571,6 +1573,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);
