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

Reply via email to