Skip to content

Commit

Permalink
encapsulate logic that sets qcow for incremental backup
Browse files Browse the repository at this point in the history
Signed-off-by: Arik Hadas <ahadas@redhat.com>
  • Loading branch information
ahadas committed Jun 15, 2022
1 parent b88e185 commit 121474d
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -153,9 +153,10 @@ private ImportVmFromExternalProviderParameters buildImportVmParameters(VM vm) {
// in kvm we just copy the image, in other modes such as vmware or xen we use
// virt-v2v which converts the image format as well
if (vm.getOrigin() != OriginType.KVM) {
disk.setVolumeFormat(disk.getBackup() == DiskBackup.Incremental ? VolumeFormat.COW :
getDiskVolumeFormat(disk.getVolumeType(),
getStorageDomain().getStorageType()));
disk.setVolumeFormat(getDiskVolumeFormat(
disk.getVolumeType(),
getStorageDomain().getStorageType(),
disk.getBackup()));
}

if (getParameters().getQuotaId() != null) {
Expand Down Expand Up @@ -290,7 +291,10 @@ protected VM loadExternalVm() {
}

// TODO: remove code duplication with frontend AsyncDataProvider
private static VolumeFormat getDiskVolumeFormat(VolumeType volumeType, StorageType storageType) {
private static VolumeFormat getDiskVolumeFormat(VolumeType volumeType, StorageType storageType, DiskBackup backup) {
if (backup == DiskBackup.Incremental) {
return VolumeFormat.COW;
}
if (storageType.isFileDomain()) {
return VolumeFormat.RAW;
} else if (storageType.isBlockDomain()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@
import org.ovirt.engine.core.common.businessentities.pm.FenceAgent;
import org.ovirt.engine.core.common.businessentities.qos.QosType;
import org.ovirt.engine.core.common.businessentities.storage.Disk;
import org.ovirt.engine.core.common.businessentities.storage.DiskBackup;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
import org.ovirt.engine.core.common.businessentities.storage.DiskInterface;
import org.ovirt.engine.core.common.businessentities.storage.Image;
Expand Down Expand Up @@ -1127,7 +1128,10 @@ public void getStorageDomainByName(AsyncQuery<StorageDomainStatic> aQuery, Strin
}

// NOTE: This logic is duplicated in ovirt-web-ui for disk and VM creation. Any changes here should also be made there.
public VolumeFormat getDiskVolumeFormat(VolumeType volumeType, StorageType storageType) {
public VolumeFormat getDiskVolumeFormat(VolumeType volumeType, StorageType storageType, DiskBackup backup) {
if (backup == DiskBackup.Incremental) {
return VolumeFormat.COW;
}
if (storageType.isFileDomain()) {
return VolumeFormat.RAW;
} else if (storageType.isBlockDomain()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum;
import org.ovirt.engine.core.common.businessentities.StorageDomain;
import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile;
import org.ovirt.engine.core.common.businessentities.storage.DiskBackup;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
import org.ovirt.engine.core.common.businessentities.storage.DiskStorageType;
import org.ovirt.engine.core.common.businessentities.storage.VolumeFormat;
Expand Down Expand Up @@ -367,9 +366,8 @@ private void updateImageToDestinationDomainMap() {
} else if (diskModel.getVolumeType().getIsAvailable()) {
VolumeType volumeType = diskModel.getVolumeType().getSelectedItem();
diskImage.setVolumeType(volumeType);
diskImage.setVolumeFormat(diskImage.getBackup() == DiskBackup.Incremental ? VolumeFormat.COW :
AsyncDataProvider.getInstance().getDiskVolumeFormat(
volumeType, storageDomain.getStorageType()));
diskImage.setVolumeFormat(AsyncDataProvider.getInstance().getDiskVolumeFormat(
volumeType, storageDomain.getStorageType(), diskImage.getBackup()));
}

imageToDestinationDomainMap.put(diskImage.getId(), diskImage);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import org.ovirt.engine.core.common.businessentities.VmTemplate;
import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile;
import org.ovirt.engine.core.common.businessentities.storage.Disk;
import org.ovirt.engine.core.common.businessentities.storage.DiskBackup;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
import org.ovirt.engine.core.common.businessentities.storage.VolumeFormat;
import org.ovirt.engine.core.common.businessentities.storage.VolumeType;
Expand Down Expand Up @@ -445,11 +444,10 @@ Guid.Empty, getStoragePool().getId(),
for (Map.Entry<Guid, Disk> entry : vm.getDiskMap().entrySet()) {
DiskImage disk = (DiskImage) entry.getValue();
map.put(disk.getId(), getDiskImportData(disk.getId()).getSelectedStorageDomain().getId());
disk.setVolumeFormat(
disk.getBackup() == DiskBackup.Incremental ? VolumeFormat.COW :
AsyncDataProvider.getInstance().getDiskVolumeFormat(
getDiskImportData(disk.getId()).getSelectedVolumeType(),
getDiskImportData(disk.getId()).getSelectedStorageDomain().getStorageType()));
disk.setVolumeFormat(AsyncDataProvider.getInstance().getDiskVolumeFormat(
getDiskImportData(disk.getId()).getSelectedVolumeType(),
getDiskImportData(disk.getId()).getSelectedStorageDomain().getStorageType(),
disk.getBackup()));
disk.setVolumeType(getDiskImportData(disk.getId()).getSelectedVolumeType());

if (getDiskImportData(disk.getId()).getSelectedQuota() != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile;
import org.ovirt.engine.core.common.businessentities.storage.Disk;
import org.ovirt.engine.core.common.businessentities.storage.DiskBackup;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
import org.ovirt.engine.core.common.businessentities.storage.VolumeFormat;
import org.ovirt.engine.core.common.businessentities.storage.VolumeType;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.ui.frontend.Frontend;
Expand Down Expand Up @@ -149,10 +147,10 @@ private List<ActionParametersBase> buildImportVmFromExternalProviderParameters()
// in kvm we just copy the image, in other modes such as vmware or xen we use
// virt-v2v which converts the image format as well
if (vm.getOrigin() != OriginType.KVM) {
disk.setVolumeFormat(disk.getBackup() == DiskBackup.Incremental ? VolumeFormat.COW :
AsyncDataProvider.getInstance().getDiskVolumeFormat(
disk.getVolumeType(),
getStorage().getSelectedItem().getStorageType()));
disk.setVolumeFormat(AsyncDataProvider.getInstance().getDiskVolumeFormat(
disk.getVolumeType(),
getStorage().getSelectedItem().getStorageType(),
disk.getBackup()));
}

if (getDiskImportData(disk.getDiskAlias()).getSelectedQuota() != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile;
import org.ovirt.engine.core.common.businessentities.storage.Disk;
import org.ovirt.engine.core.common.businessentities.storage.DiskBackup;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
import org.ovirt.engine.core.common.businessentities.storage.VolumeFormat;
import org.ovirt.engine.core.common.businessentities.storage.VolumeType;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.ui.frontend.Frontend;
Expand Down Expand Up @@ -100,10 +98,10 @@ private List<ActionParametersBase> buildImportVmFromOvaParameters() {
DiskImage disk = (DiskImage) entry.getValue();
ImportDiskData importDiskData = getDiskImportData(disk.getDiskAlias());
disk.setVolumeType(getVolumeType(importDiskData));
disk.setVolumeFormat(disk.getBackup() == DiskBackup.Incremental ? VolumeFormat.COW :
AsyncDataProvider.getInstance().getDiskVolumeFormat(
disk.getVolumeType(),
getStorage().getSelectedItem().getStorageType()));
disk.setVolumeFormat(AsyncDataProvider.getInstance().getDiskVolumeFormat(
disk.getVolumeType(),
getStorage().getSelectedItem().getStorageType(),
disk.getBackup()));
if (getDiskImportData(disk.getDiskAlias()).getSelectedQuota() != null) {
disk.setQuotaId(importDiskData.getSelectedQuota().getId());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.ovirt.engine.core.common.businessentities.StoragePool;
import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
import org.ovirt.engine.core.common.businessentities.VmDeviceId;
import org.ovirt.engine.core.common.businessentities.storage.DiskBackup;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
import org.ovirt.engine.core.common.businessentities.storage.DiskStorageType;
import org.ovirt.engine.core.common.businessentities.storage.DiskVmElement;
Expand Down Expand Up @@ -141,9 +142,10 @@ public void flush() {
}
diskImage.setVolumeType(getVolumeType().getSelectedItem());
// Incremental backup can be enabled only for COW VolumeFormat
VolumeFormat volumeFormat = getIsIncrementalBackup().getEntity() ? VolumeFormat.COW :
AsyncDataProvider.getInstance().getDiskVolumeFormat(
diskImage.getVolumeType(), getStorageDomain().getSelectedItem().getStorageType());
VolumeFormat volumeFormat = AsyncDataProvider.getInstance().getDiskVolumeFormat(
diskImage.getVolumeType(),
getStorageDomain().getSelectedItem().getStorageType(),
getIsIncrementalBackup().getEntity() ? DiskBackup.Incremental : DiskBackup.None);
diskImage.setVolumeFormat(volumeFormat);
break;
}
Expand Down

0 comments on commit 121474d

Please sign in to comment.