diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index b451620fe95..95d658f70c2 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -6127,11 +6127,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir throw new InvalidParameterValueException("Unable to use template " + templateId); } if (TemplateType.VNF.equals(template.getTemplateType())) { - if (template.isDeployAsIs()) { - vnfTemplateManager.validateVnfApplianceNetworksMap(template, cmd.getVmNetworkMap()); - } else { - vnfTemplateManager.validateVnfApplianceNics(template, cmd.getNetworkIds()); - } + vnfTemplateManager.validateVnfApplianceNics(template, cmd.getNetworkIds(), cmd.getVmNetworkMap()); } else if (cmd instanceof DeployVnfApplianceCmd) { throw new InvalidParameterValueException("Can't deploy VNF appliance from a non-VNF template"); } diff --git a/server/src/main/java/org/apache/cloudstack/storage/template/VnfTemplateManagerImpl.java b/server/src/main/java/org/apache/cloudstack/storage/template/VnfTemplateManagerImpl.java index c7f11377fdf..0ebff237a44 100644 --- a/server/src/main/java/org/apache/cloudstack/storage/template/VnfTemplateManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/storage/template/VnfTemplateManagerImpl.java @@ -201,13 +201,17 @@ public class VnfTemplateManagerImpl extends ManagerBase implements VnfTemplateMa } @Override - public void validateVnfApplianceNics(VirtualMachineTemplate template, List networkIds) { + public void validateVnfApplianceNics(VirtualMachineTemplate template, List networkIds, Map vmNetworkMap) { + if (template.isDeployAsIs()) { + if (CollectionUtils.isNotEmpty(networkIds)) { + throw new InvalidParameterValueException("VNF nics mappings should be empty for deploy-as-is templates"); + } + validateVnfApplianceNetworksMap(template, vmNetworkMap); + return; + } if (CollectionUtils.isEmpty(networkIds)) { throw new InvalidParameterValueException("VNF nics list is empty"); } - if (CollectionUtils.isNotEmpty(networkIds) && template.isDeployAsIs()) { - throw new InvalidParameterValueException("VNF nics list should be empty for deploy-as-is templates"); - } List vnfNics = vnfTemplateNicDao.listByTemplateId(template.getId()); for (VnfTemplateNicVO vnfNic : vnfNics) { if (vnfNic.isRequired() && networkIds.size() <= vnfNic.getDeviceId()) { @@ -216,8 +220,7 @@ public class VnfTemplateManagerImpl extends ManagerBase implements VnfTemplateMa } } - @Override - public void validateVnfApplianceNetworksMap(VirtualMachineTemplate template, Map vmNetworkMap) { + private void validateVnfApplianceNetworksMap(VirtualMachineTemplate template, Map vmNetworkMap) { if (MapUtils.isEmpty(vmNetworkMap)) { throw new InvalidParameterValueException("VNF networks map is empty"); }