mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
server: allow migration of vm with snapshots for vmware (#9305)
Fixes #9061 Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
This commit is contained in:
parent
7044564bab
commit
e3681a04bb
@ -31,20 +31,22 @@ import java.util.stream.Collectors;
|
|||||||
import static com.cloud.hypervisor.Hypervisor.HypervisorType.Functionality.DirectDownloadTemplate;
|
import static com.cloud.hypervisor.Hypervisor.HypervisorType.Functionality.DirectDownloadTemplate;
|
||||||
import static com.cloud.hypervisor.Hypervisor.HypervisorType.Functionality.RootDiskSizeOverride;
|
import static com.cloud.hypervisor.Hypervisor.HypervisorType.Functionality.RootDiskSizeOverride;
|
||||||
import static com.cloud.hypervisor.Hypervisor.HypervisorType.Functionality.VmStorageMigration;
|
import static com.cloud.hypervisor.Hypervisor.HypervisorType.Functionality.VmStorageMigration;
|
||||||
|
import static com.cloud.hypervisor.Hypervisor.HypervisorType.Functionality.VmStorageMigrationWithSnapshots;
|
||||||
|
|
||||||
public class Hypervisor {
|
public class Hypervisor {
|
||||||
public static class HypervisorType {
|
public static class HypervisorType {
|
||||||
public enum Functionality {
|
public enum Functionality {
|
||||||
DirectDownloadTemplate,
|
DirectDownloadTemplate,
|
||||||
RootDiskSizeOverride,
|
RootDiskSizeOverride,
|
||||||
VmStorageMigration
|
VmStorageMigration,
|
||||||
|
VmStorageMigrationWithSnapshots
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Map<String, HypervisorType> hypervisorTypeMap = new LinkedHashMap<>();
|
private static final Map<String, HypervisorType> hypervisorTypeMap = new LinkedHashMap<>();
|
||||||
public static final HypervisorType None = new HypervisorType("None"); //for storage hosts
|
public static final HypervisorType None = new HypervisorType("None"); //for storage hosts
|
||||||
public static final HypervisorType XenServer = new HypervisorType("XenServer", ImageFormat.VHD, EnumSet.of(RootDiskSizeOverride, VmStorageMigration));
|
public static final HypervisorType XenServer = new HypervisorType("XenServer", ImageFormat.VHD, EnumSet.of(RootDiskSizeOverride, VmStorageMigration));
|
||||||
public static final HypervisorType KVM = new HypervisorType("KVM", ImageFormat.QCOW2, EnumSet.of(DirectDownloadTemplate, RootDiskSizeOverride, VmStorageMigration));
|
public static final HypervisorType KVM = new HypervisorType("KVM", ImageFormat.QCOW2, EnumSet.of(DirectDownloadTemplate, RootDiskSizeOverride, VmStorageMigration));
|
||||||
public static final HypervisorType VMware = new HypervisorType("VMware", ImageFormat.OVA, EnumSet.of(RootDiskSizeOverride, VmStorageMigration));
|
public static final HypervisorType VMware = new HypervisorType("VMware", ImageFormat.OVA, EnumSet.of(RootDiskSizeOverride, VmStorageMigration, VmStorageMigrationWithSnapshots));
|
||||||
public static final HypervisorType Hyperv = new HypervisorType("Hyperv");
|
public static final HypervisorType Hyperv = new HypervisorType("Hyperv");
|
||||||
public static final HypervisorType VirtualBox = new HypervisorType("VirtualBox");
|
public static final HypervisorType VirtualBox = new HypervisorType("VirtualBox");
|
||||||
public static final HypervisorType Parralels = new HypervisorType("Parralels");
|
public static final HypervisorType Parralels = new HypervisorType("Parralels");
|
||||||
|
|||||||
@ -7338,7 +7338,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||||||
HypervisorType.getListOfHypervisorsSupportingFunctionality(Functionality.VmStorageMigration)));
|
HypervisorType.getListOfHypervisorsSupportingFunctionality(Functionality.VmStorageMigration)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_vmSnapshotDao.findByVm(vmId).size() > 0) {
|
if (!vm.getHypervisorType().isFunctionalitySupported(Functionality.VmStorageMigrationWithSnapshots) &&
|
||||||
|
CollectionUtils.isNotEmpty(_vmSnapshotDao.findByVm(vmId))) {
|
||||||
throw new InvalidParameterValueException("VM with VM Snapshots cannot be migrated with storage, please remove all VM snapshots");
|
throw new InvalidParameterValueException("VM with VM Snapshots cannot be migrated with storage, please remove all VM snapshots");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user