Liron Ar has uploaded a new change for review.

Change subject: core: allow to remove storage pool when the only disks are ovf 
stores
......................................................................

core: allow to remove storage pool when the only disks are ovf stores

Change-Id: Ifca867af242984aa9292938b88f568f51a4a147c
Signed-off-by: Liron Aravot <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageDomainValidator.java
2 files changed, 23 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/44/24644/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
index 4fb1ef8..6e8b815 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
@@ -13,6 +13,7 @@
 import org.ovirt.engine.core.bll.context.CommandContext;
 import org.ovirt.engine.core.bll.network.ExternalNetworkManager;
 import org.ovirt.engine.core.bll.network.MacPoolManager;
+import org.ovirt.engine.core.bll.validator.StorageDomainValidator;
 import org.ovirt.engine.core.common.AuditLogType;
 import 
org.ovirt.engine.core.common.action.DetachStorageDomainFromPoolParameters;
 import org.ovirt.engine.core.common.action.RemoveStorageDomainParameters;
@@ -326,9 +327,11 @@
             }
             for (StorageDomain domain : poolDomains) {
                 // check that there are no images on data domains
-                if ((domain.getStorageDomainType() == StorageDomainType.Data 
|| domain.getStorageDomainType() == StorageDomainType.Master)
-                        && 
getDbFacade().getDiskImageDao().getAllSnapshotsForStorageDomain(domain.getId()).size()
 != 0) {
-                    return 
failCanDoAction(VdcBllMessages.ERROR_CANNOT_REMOVE_STORAGE_POOL_WITH_IMAGES);
+                if ((domain.getStorageDomainType() == StorageDomainType.Data 
|| domain.getStorageDomainType() == StorageDomainType.Master)) {
+                    StorageDomainValidator storageDomainValidator = new 
StorageDomainValidator(domain);
+                    if 
(!validate(storageDomainValidator.isDomainHasNoImages(VdcBllMessages.ERROR_CANNOT_REMOVE_STORAGE_POOL_WITH_IMAGES,
 true))) {
+                        return false;
+                    }
                 }
             }
             final List<VmStatic> vms = 
getVmStaticDAO().getAllByStoragePoolId(getStoragePool().getId());
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageDomainValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageDomainValidator.java
index 4d92435..992e702 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageDomainValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageDomainValidator.java
@@ -76,6 +76,23 @@
         return ValidationResult.VALID;
     }
 
+    public ValidationResult isDomainHasNoImages(VdcBllMessages message, 
boolean allowOvfDisk) {
+        int numOfAllowedDisks = 0;
+        if (allowOvfDisk && 
getDbFacade().getStorageDomainOvfInfoDao().get(storageDomain.getId()) != null) {
+            numOfAllowedDisks = 1;
+        }
+
+        if 
(getDbFacade().getDiskImageDao().getAllSnapshotsForStorageDomain(storageDomain.getId()).size()
 > numOfAllowedDisks) {
+            return new ValidationResult(message);
+        }
+
+        return ValidationResult.VALID;
+    }
+
+    private DbFacade getDbFacade() {
+        return DbFacade.getInstance();
+    }
+
     private static Integer getLowDiskSpaceThreshold() {
         return Config.<Integer> 
getValue(ConfigValues.FreeSpaceCriticalLowInGB);
     }


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

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

Reply via email to