Maor Lipchuk has uploaded a new change for review.

Change subject: core: Use validation on entites related to one SD.
......................................................................

core: Use validation on entites related to one SD.

Remove all the entities which are related to multiple Storage Domains
from the list of Vms/Templates which we validate.

VM/Template with multiple disks on different Storage Domain will not be deleted 
from the engine
but instead will be kept in the engine without the disks related to it.

Change-Id: I9bc46616a164e6d6ec87fbd4ac67f84823bec4de
Signed-off-by: Maor Lipchuk <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java
1 file changed, 11 insertions(+), 20 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/36/28536/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java
index 7a3ed9d..6a66387 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java
@@ -56,8 +56,6 @@
 import org.ovirt.engine.core.utils.transaction.TransactionSupport;
 
 public abstract class StorageHandlingCommandBase<T extends 
StoragePoolParametersBase> extends CommandBase<T> {
-    private List<VM> vmsForStorageDomain;
-    private List<VmTemplate> templatesForStorageDomain;
     private List<DiskImage> diskImagesForStorageDomain;
 
     public StorageHandlingCommandBase(T parameters) {
@@ -116,20 +114,6 @@
         return ret;
     }
 
-    protected List<VM> getVMsForStorageDomain(Guid storageDomainId) {
-        if (vmsForStorageDomain == null) {
-            vmsForStorageDomain = 
getVmDAO().getAllForStorageDomain(storageDomainId);
-        }
-        return vmsForStorageDomain;
-    }
-
-    protected List<VmTemplate> getTemplatesForStorageDomain(Guid 
storageDomainId) {
-        if (templatesForStorageDomain == null) {
-            templatesForStorageDomain = 
getVmTemplateDAO().getAllForStorageDomain(storageDomainId);
-        }
-        return templatesForStorageDomain;
-    }
-
     protected List<DiskImage> getDiskImagesForStorageDomain(Guid 
storageDomainId) {
         if (diskImagesForStorageDomain == null) {
             diskImagesForStorageDomain = 
getDiskImageDao().getAllForStorageDomain(storageDomainId);
@@ -174,7 +158,11 @@
             return true;
         }
 
-        List<VM> vmRelatedToDomain = 
getVMsForStorageDomain(storageDomain.getId());
+        List<VM> vmRelatedToDomain = 
getVmDAO().getAllForStorageDomain(storageDomain.getId());
+        List<VM> vms = 
getDbFacade().getVmDao().getAllVMsWithDisksOnOtherStorageDomain(storageDomain.getId());
+        vmRelatedToDomain.removeAll(vms);
+
+
         SnapshotsValidator snapshotsValidator = new SnapshotsValidator();
         boolean succeeded = true;
         List<String> entitiesDeleteProtected = new ArrayList<>();
@@ -192,7 +180,10 @@
             }
         }
 
-        List<VmTemplate> templatesRelatedToDomain = 
getTemplatesForStorageDomain(storageDomain.getId());
+        List<VmTemplate> templatesRelatedToDomain = 
getVmTemplateDAO().getAllForStorageDomain(storageDomain.getId());
+        List<VmTemplate> vmTemplates = 
getDbFacade().getVmTemplateDao().getAllTemplatesWithDisksOnOtherStorageDomain(storageDomain.getId());
+        templatesRelatedToDomain.removeAll(vmTemplates);
+
         for (VmTemplate vmTemplate : templatesRelatedToDomain) {
             if (vmTemplate.isDeleteProtected()) {
                 entitiesDeleteProtected.add(vmTemplate.getName());
@@ -219,8 +210,8 @@
 
     protected void detachStorageDomainWithEntities(StorageDomain 
storageDomain) {
         // Check if we have entities related to the Storage Domain.
-        List<VM> vmsForStorageDomain = 
getVMsForStorageDomain(storageDomain.getId());
-        List<VmTemplate> vmTemplatesForStorageDomain = 
getTemplatesForStorageDomain(storageDomain.getId());
+        List<VM> vmsForStorageDomain = 
getVmDAO().getAllForStorageDomain(storageDomain.getId());
+        List<VmTemplate> vmTemplatesForStorageDomain = 
getVmTemplateDAO().getAllForStorageDomain(storageDomain.getId());
         List<DiskImage> disksForStorageDomain = 
getDiskImageDao().getAllForStorageDomain(storageDomain.getId());
         removeEntitiesFromStorageDomain(vmsForStorageDomain, 
vmTemplatesForStorageDomain, disksForStorageDomain, storageDomain.getId());
     }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9bc46616a164e6d6ec87fbd4ac67f84823bec4de
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Maor Lipchuk <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to