Allon Mureinik has uploaded a new change for review.

Change subject: core: Unfilter ImagesHandler.PerformImagesChecks
......................................................................

core: Unfilter ImagesHandler.PerformImagesChecks

Before this patch, ImagesHandler.PerformImagesChecks received a
collection of Disks, and filtered them so only DiskImages which aren't
sharable were evaluated.

This patch removes the filtering from this methods, and makes it the
responsibility of the calling method to perform any required filtering.
This patch also adds said filtering wherever relevant, so no behavior is
changed.

This achieves two goals:
1. Added flexibility, to allow possible validation on sharable disks.
2. A clearer API - it is now clear, in compile time, that this method
   only performs validations on DiskImages, as opposed to the way it
   was before the patch, where the function could be passed a faulty
   (e.g., non-existent) LunDisk, which would just be silently ignored.

Change-Id: Icc93d1bb72daed053f0f37ae3c3f12efef915669
Signed-off-by: Allon Mureinik <amure...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TryBackToAllSnapshotsOfVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
9 files changed, 14 insertions(+), 17 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/21/12321/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
index 1328390..8b79d6d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
@@ -216,7 +216,7 @@
                 true,
                 true,
                 true,
-                mImages)) {
+                ImagesHandler.filterEditableImageDisks(mImages))) {
             return false;
         }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
index 64b9af5..792c048 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
@@ -2,7 +2,6 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -276,7 +275,7 @@
         moveOrCopyAllImageGroups(getVm().getId(), getDisksBasedOnImage());
     }
 
-    private Collection<DiskImage> getDisksBasedOnImage() {
+    private List<DiskImage> getDisksBasedOnImage() {
         if (disksImages == null) {
             disksImages = 
ImagesHandler.filterEditableImageDisks(getVm().getDiskMap().values());
         }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
index 3775187..a5a75d6 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
@@ -437,22 +437,21 @@
             boolean checkImagesIllegal,
             boolean checkImagesExist,
             boolean checkIsValid,
-            Collection<? extends Disk> diskImageList) {
+            List<DiskImage> diskImageList) {
 
         boolean returnValue = true;
-        List<DiskImage> images = filterEditableImageDisks(diskImageList);
         if (returnValue && checkImagesLocked) {
-            returnValue = checkImagesLocked(messages, images);
+            returnValue = checkImagesLocked(messages, diskImageList);
         }
 
         if (returnValue && checkIsValid) {
-            if (images.size() > 0) {
+            if (diskImageList.size() > 0) {
                 returnValue = returnValue &&
                         checkDiskImages(messages,
                                 storagePoolId,
                                 checkImagesIllegal,
                                 checkImagesExist,
-                                images);
+                                diskImageList);
             } else if (checkImagesExist) {
                 returnValue = false;
                 ListUtils.nullSafeAdd(messages, 
VdcBllMessages.ACTION_TYPE_FAILED_VM_HAS_NO_DISKS.toString());
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveVmCommand.java
index e604d49..be04050 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveVmCommand.java
@@ -79,7 +79,7 @@
                                 true,
                                 true,
                                 true,
-                                diskImages);
+                                
ImagesHandler.filterEditableImageDisks(diskImages));
 
         ensureDomainMap(diskImages, getParameters().getStorageDomainId());
         for(DiskImage disk : diskImages) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java
index de5ab6f..ac2cb2f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java
@@ -225,8 +225,6 @@
     }
 
     private boolean canRemoveVmImageDisk() {
-        List<Disk> diskList = Arrays.asList(getDisk());
-
         if (!listVms.isEmpty()) {
             Guid storagePoolId = listVms.get(0).getStoragePoolId();
             storage_pool sp = getStoragePoolDAO().get(storagePoolId);
@@ -234,6 +232,7 @@
                 return false;
             }
 
+            List<Disk> diskList = Arrays.asList(getDisk());
             if (!ImagesHandler.PerformImagesChecks(
                     getReturnValue().getCanDoActionMessages(),
                     storagePoolId,
@@ -241,7 +240,7 @@
                     false,
                     false,
                     true,
-                    diskList)) {
+                    ImagesHandler.filterEditableImageDisks(diskList))) {
                 return false;
             }
         }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
index 39cb8d8..f99ed1e 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
@@ -260,9 +260,10 @@
     }
 
     protected boolean validateImages() {
+        List<DiskImage> imagesToValidate = 
ImagesHandler.filterEditableImageDisks(getDiskDao().getAllForVm(getVmId()));
         return 
ImagesHandler.PerformImagesChecks(getReturnValue().getCanDoActionMessages(),
                 getVm().getStoragePoolId(),
-                true, true, true, true, getDiskDao().getAllForVm(getVmId()));
+                true, true, true, true, imagesToValidate);
     }
 
     protected boolean validateImageNotInTemplate() {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
index a98f1ae..1db637d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
@@ -346,7 +346,7 @@
                         false,
                         false,
                         true,
-                        getImagesList());
+                        
ImagesHandler.filterEditableImageDisks(getImagesList()));
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TryBackToAllSnapshotsOfVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TryBackToAllSnapshotsOfVmCommand.java
index 5db8238..606a1da 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TryBackToAllSnapshotsOfVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TryBackToAllSnapshotsOfVmCommand.java
@@ -1,6 +1,5 @@
 package org.ovirt.engine.core.bll;
 
-import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -213,7 +212,7 @@
         }
 
         updateVmDisksFromDb();
-        Collection<DiskImage> diskImages =
+        List<DiskImage> diskImages =
                 ImagesHandler.filterImageDisks(getVm().getDiskMap().values(), 
false, true);
         if (!diskImages.isEmpty()) {
             Set<Guid> storageIds = 
ImagesHandler.getAllStorageIdsForImageIds(diskImages);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
index bf20606..b454892 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
@@ -212,7 +212,7 @@
                             false,
                             false,
                             true,
-                            disks)) {
+                            vmImages)) {
             return failVmFree(messages);
         }
 


--
To view, visit http://gerrit.ovirt.org/12321
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icc93d1bb72daed053f0f37ae3c3f12efef915669
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Allon Mureinik <amure...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to