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
