@@ -6246,11 +6246,11 @@ public UserVm createVirtualMachine(DeployVMCmd cmd) throws InsufficientCapacityE
62466246 networkIds = new ArrayList<>(userVmNetworkMap.values());
62476247 }
62486248
6249- return createVirtualMachine(cmd, zone, owner, serviceOffering, template, diskOfferingId, cmd.getSize(), overrideDiskOfferingId, dataDiskOfferingsInfo, networkIds, cmd.getIpToNetworkMap());
6249+ return createVirtualMachine(cmd, zone, owner, serviceOffering, template, cmd.getHypervisor(), diskOfferingId, cmd.getSize(), overrideDiskOfferingId, dataDiskOfferingsInfo, networkIds, cmd.getIpToNetworkMap());
62506250 }
62516251
62526252 private UserVm createVirtualMachine(BaseDeployVMCmd cmd, DataCenter zone, Account owner, ServiceOffering serviceOffering, VirtualMachineTemplate template,
6253- Long diskOfferingId, Long size, Long overrideDiskOfferingId, List<DiskOfferingInfo> dataDiskOfferingsInfo,
6253+ HypervisorType hypervisor, Long diskOfferingId, Long size, Long overrideDiskOfferingId, List<DiskOfferingInfo> dataDiskOfferingsInfo,
62546254 List<Long> networkIds, Map<Long, IpAddresses> ipToNetworkMap) throws InsufficientCapacityException, ResourceUnavailableException, ConcurrentOperationException, ResourceAllocationException {
62556255
62566256 ServiceOfferingJoinVO svcOffering = serviceOfferingJoinDao.findById(serviceOffering.getId());
@@ -6306,15 +6306,15 @@ private UserVm createVirtualMachine(BaseDeployVMCmd cmd, DataCenter zone, Accoun
63066306 throw new InvalidParameterValueException("Can't specify network Ids in Basic zone");
63076307 } else {
63086308 vm = createBasicSecurityGroupVirtualMachine(zone, serviceOffering, template, getSecurityGroupIdList(cmd, zone, template, owner), owner, name, displayName, diskOfferingId,
6309- size , dataDiskOfferingsInfo, group , cmd.getHypervisor() , cmd.getHttpMethod(), userData, userDataId, userDataDetails, sshKeyPairNames, ipToNetworkMap, addrs, displayVm , keyboard , cmd.getAffinityGroupIdList(),
6309+ size , dataDiskOfferingsInfo, group , hypervisor , cmd.getHttpMethod(), userData, userDataId, userDataDetails, sshKeyPairNames, ipToNetworkMap, addrs, displayVm , keyboard , cmd.getAffinityGroupIdList(),
63106310 cmd.getDetails(), cmd.getCustomId(), cmd.getDhcpOptionsMap(),
63116311 dataDiskTemplateToDiskOfferingMap, userVmOVFProperties, dynamicScalingEnabled, overrideDiskOfferingId);
63126312 }
63136313 } else {
63146314 if (_networkModel.checkSecurityGroupSupportForNetwork(owner, zone, networkIds,
63156315 cmd.getSecurityGroupIdList())) {
63166316 vm = createAdvancedSecurityGroupVirtualMachine(zone, serviceOffering, template, networkIds, getSecurityGroupIdList(cmd, zone, template, owner), owner, name,
6317- displayName, diskOfferingId, size, dataDiskOfferingsInfo, group, cmd.getHypervisor() , cmd.getHttpMethod(), userData, userDataId, userDataDetails, sshKeyPairNames, ipToNetworkMap, addrs, displayVm, keyboard,
6317+ displayName, diskOfferingId, size, dataDiskOfferingsInfo, group, hypervisor , cmd.getHttpMethod(), userData, userDataId, userDataDetails, sshKeyPairNames, ipToNetworkMap, addrs, displayVm, keyboard,
63186318 cmd.getAffinityGroupIdList(), cmd.getDetails(), cmd.getCustomId(), cmd.getDhcpOptionsMap(),
63196319 dataDiskTemplateToDiskOfferingMap, userVmOVFProperties, dynamicScalingEnabled, overrideDiskOfferingId, null);
63206320
@@ -6323,7 +6323,7 @@ private UserVm createVirtualMachine(BaseDeployVMCmd cmd, DataCenter zone, Accoun
63236323 throw new InvalidParameterValueException("Can't create vm with security groups; security group feature is not enabled per zone");
63246324 }
63256325 vm = createAdvancedVirtualMachine(zone, serviceOffering, template, networkIds, owner, name, displayName, diskOfferingId, size, dataDiskOfferingsInfo, group,
6326- cmd.getHypervisor() , cmd.getHttpMethod(), userData, userDataId, userDataDetails, sshKeyPairNames, ipToNetworkMap, addrs, displayVm, keyboard, cmd.getAffinityGroupIdList(), cmd.getDetails(),
6326+ hypervisor , cmd.getHttpMethod(), userData, userDataId, userDataDetails, sshKeyPairNames, ipToNetworkMap, addrs, displayVm, keyboard, cmd.getAffinityGroupIdList(), cmd.getDetails(),
63276327 cmd.getCustomId(), cmd.getDhcpOptionsMap(), dataDiskTemplateToDiskOfferingMap, userVmOVFProperties, dynamicScalingEnabled, null, overrideDiskOfferingId);
63286328 if (cmd instanceof DeployVnfApplianceCmd) {
63296329 vnfTemplateManager.createIsolatedNetworkRulesForVnfAppliance(zone, template, owner, vm, (DeployVnfApplianceCmd) cmd);
@@ -9429,7 +9429,7 @@ public UserVm allocateVMFromBackup(CreateVMFromBackupCmd cmd) throws Insufficien
94299429 size = cmd.getSize();
94309430 }
94319431
9432- return createVirtualMachine(cmd, zone, owner, serviceOffering, template, diskOfferingId, size, overrideDiskOfferingId, dataDiskOfferingsInfo, networkIds, ipToNetworkMap);
9432+ return createVirtualMachine(cmd, zone, owner, serviceOffering, template, hypervisorType, diskOfferingId, size, overrideDiskOfferingId, dataDiskOfferingsInfo, networkIds, ipToNetworkMap);
94339433 }
94349434
94359435 @Override
@@ -9450,9 +9450,16 @@ public UserVm restoreVMFromBackup(CreateVMFromBackupCmd cmd) throws ResourceUnav
94509450 throw new CloudRuntimeException("Unable to stop the instance before restore");
94519451 }
94529452
9453+ Long isoId = vm.getIsoId();
9454+ if (isoId != null) {
9455+ UserVmVO vmVO = _vmDao.findById(vmId);
9456+ vmVO.setIsoId(null);
9457+ _vmDao.update(vm.getId(), vmVO);
9458+ }
9459+
94539460 backupManager.restoreBackupToVM(cmd.getBackupId(), vmId);
94549461
9455- } catch (Exception e) {
9462+ } catch (CloudRuntimeException e) {
94569463 UserVmVO vmVO = _vmDao.findById(vmId);
94579464 try {
94589465 expunge(vmVO);
0 commit comments