From aa289542f01fd838e3573550d24bd8142b2dea0c Mon Sep 17 00:00:00 2001 From: Nicolas Vazquez Date: Thu, 13 May 2021 06:00:34 -0300 Subject: [PATCH] vmware: Fix deploy-as-is not honoured on upload from local (#5015) * Fix deploy-as-is not honoured on upload from local * Missing param --- .../user/template/GetUploadParamsForTemplateCmd.java | 10 ++++++++++ .../storage/upload/params/TemplateUploadParams.java | 4 ++-- .../cloud/storage/upload/params/UploadParamsBase.java | 6 ++++-- .../java/com/cloud/template/TemplateAdapterBase.java | 4 ++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/template/GetUploadParamsForTemplateCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/template/GetUploadParamsForTemplateCmd.java index b42b2717b91..2fafe933968 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/template/GetUploadParamsForTemplateCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/template/GetUploadParamsForTemplateCmd.java @@ -89,6 +89,11 @@ public class GetUploadParamsForTemplateCmd extends AbstractGetUploadParamsCmd { @Parameter(name = ApiConstants.TEMPLATE_TAG, type = CommandType.STRING, description = "the tag for this template.") private String templateTag; + @Parameter(name=ApiConstants.DEPLOY_AS_IS, + type = CommandType.BOOLEAN, + description = "(VMware only) true if VM deployments should preserve all the configurations defined for this template", since = "4.15.1") + private Boolean deployAsIs; + public String getDisplayText() { return displayText; } @@ -153,6 +158,11 @@ public class GetUploadParamsForTemplateCmd extends AbstractGetUploadParamsCmd { return templateTag; } + public boolean isDeployAsIs() { + return Hypervisor.HypervisorType.VMware.toString().equalsIgnoreCase(hypervisor) && + Boolean.TRUE.equals(deployAsIs); + } + @Override public void execute() throws ServerApiException { validateRequest(); diff --git a/server/src/main/java/com/cloud/storage/upload/params/TemplateUploadParams.java b/server/src/main/java/com/cloud/storage/upload/params/TemplateUploadParams.java index 9dede2ee5a3..31206ca31b3 100644 --- a/server/src/main/java/com/cloud/storage/upload/params/TemplateUploadParams.java +++ b/server/src/main/java/com/cloud/storage/upload/params/TemplateUploadParams.java @@ -29,10 +29,10 @@ public class TemplateUploadParams extends UploadParamsBase { Long zoneId, Hypervisor.HypervisorType hypervisorType, String chksum, String templateTag, long templateOwnerId, Map details, Boolean sshkeyEnabled, - Boolean isDynamicallyScalable, Boolean isRoutingType) { + Boolean isDynamicallyScalable, Boolean isRoutingType, boolean deployAsIs) { super(userId, name, displayText, bits, passwordEnabled, requiresHVM, isPublic, featured, isExtractable, format, guestOSId, zoneId, hypervisorType, chksum, templateTag, templateOwnerId, details, - sshkeyEnabled, isDynamicallyScalable, isRoutingType); + sshkeyEnabled, isDynamicallyScalable, isRoutingType, deployAsIs); setBootable(true); } } diff --git a/server/src/main/java/com/cloud/storage/upload/params/UploadParamsBase.java b/server/src/main/java/com/cloud/storage/upload/params/UploadParamsBase.java index e5bc1a3c906..60ccc27a48f 100644 --- a/server/src/main/java/com/cloud/storage/upload/params/UploadParamsBase.java +++ b/server/src/main/java/com/cloud/storage/upload/params/UploadParamsBase.java @@ -44,6 +44,7 @@ public abstract class UploadParamsBase implements UploadParams { private boolean sshkeyEnabled; private boolean isDynamicallyScalable; private boolean isRoutingType; + private boolean deployAsIs; UploadParamsBase(long userId, String name, String displayText, Integer bits, boolean passwordEnabled, boolean requiresHVM, @@ -52,7 +53,7 @@ public abstract class UploadParamsBase implements UploadParams { Long zoneId, Hypervisor.HypervisorType hypervisorType, String checksum, String templateTag, long templateOwnerId, Map details, boolean sshkeyEnabled, - boolean isDynamicallyScalable, boolean isRoutingType) { + boolean isDynamicallyScalable, boolean isRoutingType, boolean deployAsIs) { this.userId = userId; this.name = name; this.displayText = displayText; @@ -73,6 +74,7 @@ public abstract class UploadParamsBase implements UploadParams { this.sshkeyEnabled = sshkeyEnabled; this.isDynamicallyScalable = isDynamicallyScalable; this.isRoutingType = isRoutingType; + this.deployAsIs = deployAsIs; } UploadParamsBase(long userId, String name, String displayText, boolean isPublic, boolean isFeatured, @@ -216,7 +218,7 @@ public abstract class UploadParamsBase implements UploadParams { @Override public boolean isDeployAsIs() { - return false; + return deployAsIs; } void setIso(boolean iso) { diff --git a/server/src/main/java/com/cloud/template/TemplateAdapterBase.java b/server/src/main/java/com/cloud/template/TemplateAdapterBase.java index 52628ee2e23..290a895adc0 100644 --- a/server/src/main/java/com/cloud/template/TemplateAdapterBase.java +++ b/server/src/main/java/com/cloud/template/TemplateAdapterBase.java @@ -337,7 +337,7 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat params.isExtractable(), params.getFormat(), params.getGuestOSId(), zoneList, params.getHypervisorType(), params.getChecksum(), params.isBootable(), params.getTemplateTag(), owner, params.getDetails(), params.isSshKeyEnabled(), params.getImageStoreUuid(), - params.isDynamicallyScalable(), params.isRoutingType() ? TemplateType.ROUTING : TemplateType.USER, params.isDirectDownload(), false); + params.isDynamicallyScalable(), params.isRoutingType() ? TemplateType.ROUTING : TemplateType.USER, params.isDirectDownload(), params.isDeployAsIs()); } private Long getDefaultDeployAsIsGuestOsId() { @@ -358,7 +358,7 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat BooleanUtils.toBoolean(cmd.isFeatured()), BooleanUtils.toBoolean(cmd.isExtractable()), cmd.getFormat(), osTypeId, cmd.getZoneId(), HypervisorType.getType(cmd.getHypervisor()), cmd.getChecksum(), cmd.getTemplateTag(), cmd.getEntityOwnerId(), cmd.getDetails(), BooleanUtils.toBoolean(cmd.isSshKeyEnabled()), - BooleanUtils.toBoolean(cmd.isDynamicallyScalable()), BooleanUtils.toBoolean(cmd.isRoutingType())); + BooleanUtils.toBoolean(cmd.isDynamicallyScalable()), BooleanUtils.toBoolean(cmd.isRoutingType()), cmd.isDeployAsIs()); return prepareUploadParamsInternal(params); }