Vered Volansky has uploaded a new change for review. Change subject: core: AddLSM source sd allocation validation ......................................................................
core: AddLSM source sd allocation validation In LiveMigrateVmDisksCommand - added space allocation validation in the source domains. Before actual migration the active image is copied on the source domain. Therefore source domains should have enough space for this image, a fact verified by this patch. Change-Id: I1914f5efe50d2f5a4fb9debf0c0bde4ffc9e32eb Bug-Url: https://bugzilla.redhat.com/1099894 Signed-off-by: Vered Volansky <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java 1 file changed, 34 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/61/28961/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java index 2f033be..2c935e6 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java @@ -275,7 +275,7 @@ protected boolean canDoAction() { setStoragePoolId(getVm().getStoragePoolId()); - if (!isValidParametersList() || !checkImagesStatus() || !isValidSpaceRequirements() + if (!isValidParametersList() || !checkImagesStatus() || !validateSpaceRequirements() || !performVmRelatedChecks()) { return false; } @@ -375,7 +375,12 @@ return validate(validator.isDomainExistAndActive()) && validate(validator.domainIsValidDestination()); } - protected boolean isValidSpaceRequirements() { + protected boolean validateSpaceRequirements() { + return validateDestDomainsSpaceRequirements() + && validateSourceDomainsSpaceRequirements(); + } + + protected boolean validateDestDomainsSpaceRequirements() { Map<Guid, List<DiskImage>> storageDomainsImagesMap = new HashMap<Guid, List<DiskImage>>(); for (LiveMigrateDiskParameters parameters : getParameters().getParametersList()) { @@ -410,6 +415,33 @@ return true; } + protected boolean validateSourceDomainsSpaceRequirements() { + Map<Guid, List<DiskImage>> storageDomainsActiveImagesMap = new HashMap<>(); + + for (LiveMigrateDiskParameters parameters : getParameters().getParametersList()) { + DiskImage diskImage = getDiskImageByImageId(parameters.getImageId()); + if (diskImage.getActive()) { + diskImage.getSnapshots().add(diskImage); + MultiValueMapUtils.addToMap(parameters.getSourceStorageDomainId(), + diskImage, + storageDomainsActiveImagesMap); + } + } + + for (Map.Entry<Guid, List<DiskImage>> entry : storageDomainsActiveImagesMap.entrySet()) { + Guid sourceDomainId = entry.getKey(); + List<DiskImage> disksList = entry.getValue(); + Guid storagePoolId = disksList.get(0).getStoragePoolId(); + StorageDomain sourceDomain = getStorageDomainById(sourceDomainId, storagePoolId); + + if (!doesStorageDomainHasSpaceForRequest(sourceDomain, disksList)) { + return false; + } + } + + return true; + } + protected boolean isDiskSnapshotNotPluggedToOtherVmsThatAreNotDown(Guid imageId) { return validate(createDiskValidator(getDiskImageByImageId(imageId)).isDiskPluggedToVmsThatAreNotDown(true, null)); } -- To view, visit http://gerrit.ovirt.org/28961 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1914f5efe50d2f5a4fb9debf0c0bde4ffc9e32eb Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Vered Volansky <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
