diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index 49761905f004..ef148580f017 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -9508,6 +9508,16 @@ public UserVm importVM(final DataCenter zone, final Host host, final VirtualMach if (host == null && hypervisorType == HypervisorType.VMware) { throw new InvalidParameterValueException("Unable to import virtual machine with invalid host"); } + if (template == null) { + throw new InvalidParameterValueException("Unable to import virtual machine without a template"); + } + + // Ensure template details are loaded so that commitUserVm can copy them into the VM's details map + VMTemplateVO vmTemplateVO = _templateDao.findById(template.getId()); + if (vmTemplateVO == null) { + throw new InvalidParameterValueException("Unable to find template with id " + template.getId() + " for virtual machine import"); + } + _templateDao.loadDetails(vmTemplateVO); final long id = _vmDao.getNextInSequence(Long.class, "id"); String instanceName = StringUtils.isBlank(instanceNameInternal) ? @@ -9521,8 +9531,8 @@ public UserVm importVM(final DataCenter zone, final Host host, final VirtualMach final String uuidName = _uuidMgr.generateUuid(UserVm.class, null); final Host lastHost = powerState != VirtualMachine.PowerState.PowerOn ? host : null; - final Boolean dynamicScalingEnabled = checkIfDynamicScalingCanBeEnabled(null, serviceOffering, template, zone.getId()); - return commitUserVm(true, zone, host, lastHost, template, hostName, displayName, owner, + final Boolean dynamicScalingEnabled = checkIfDynamicScalingCanBeEnabled(null, serviceOffering, vmTemplateVO, zone.getId()); + return commitUserVm(true, zone, host, lastHost, vmTemplateVO, hostName, displayName, owner, null, null, userData, null, null, isDisplayVm, keyboard, accountId, userId, serviceOffering, template.getFormat().equals(ImageFormat.ISO), sshPublicKeys, networkNicMap, id, instanceName, uuidName, hypervisorType, customParameters,