Maor Lipchuk has uploaded a new change for review.

Change subject: core: Validate if Cinder Storage Domain contain disks on detach
......................................................................

core: Validate if Cinder Storage Domain contain disks on detach

Validate if Cinder Storage Domain contained disk

Change-Id: I501351c2505a50d083db64e59ed2dd7201649901
Bug-Url: https://bugzilla.redhat.com/1185826
Signed-off-by: Maor Lipchuk <mlipc...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
7 files changed, 20 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/16/40016/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java
index 9957015..7549d48 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/CINDERStorageHelper.java
@@ -74,6 +74,14 @@
         });
     }
 
+    public static ValidationResult isCinderHasNoImages(Guid storageDomainId) {
+        List<DiskImage> cinderDisks = 
getDbFacade().getDiskImageDao().getAllForStorageDomain(storageDomainId);
+        if (!cinderDisks.isEmpty()) {
+            return new 
ValidationResult(VdcBllMessages.ERROR_CANNOT_DETACH_EXTERNAL_VOLUME_PROVIDER_WITH_IMAGES);
+        }
+        return ValidationResult.VALID;
+    }
+
     public void activateCinderDomain(Guid storageDomainId, Guid storagePoolId) 
{
         OpenStackVolumeProviderProxy proxy = 
OpenStackVolumeProviderProxy.getFromStorageDomainId(storageDomainId);
         if (proxy == null) {
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 a961d31..7b7501a 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
@@ -13,6 +13,7 @@
 import org.ovirt.engine.core.bll.interfaces.BackendInternal;
 import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
+import org.ovirt.engine.core.bll.validator.storage.CinderDisksValidator;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.StoragePoolParametersBase;
 import org.ovirt.engine.core.common.businessentities.OvfEntityData;
@@ -142,7 +143,7 @@
 
     protected boolean canDetachStorageDomainWithVmsAndDisks(StorageDomain 
storageDomain) {
         if (!storageDomain.getStorageDomainType().isDataDomain()) {
-            return true;
+            return 
validate(CINDERStorageHelper.isCinderHasNoImages(storageDomain.getId());
         }
 
         SnapshotsValidator snapshotsValidator = new SnapshotsValidator();
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
index c5050b2..afc51e9 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
@@ -1207,6 +1207,7 @@
     ACTION_TYPE_FAILED_PROVIDER_NOT_SUPPORTED(ErrorType.NOT_SUPPORTED),
     ACTION_TYPE_FAILED_CINDER(ErrorType.INTERNAL_ERROR),
     CANNOT_ADD_CINDER_DISK_VOLUME_LIMIT_EXCEEDED(ErrorType.CONFLICT),
+    
ERROR_CANNOT_DETACH_EXTERNAL_VOLUME_PROVIDER_WITH_IMAGES(ErrorType.CONFLICT),
 
     NO_HOST_PROVIDER_FOR_SYSTEM(ErrorType.NOT_SUPPORTED);
 
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
index ebfa6c6..e292643 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -1405,5 +1405,7 @@
 ACTION_TYPE_FAILED_PROVIDER_NOT_SUPPORTED=Cannot ${action} ${type}. The 
current type ${providerType} is not supported.
 ACTION_TYPE_FAILED_CINDER=Cannot ${action} ${type}. An error occurred on 
Cinder - '${cinderException}'.
 CANNOT_ADD_CINDER_DISK_VOLUME_LIMIT_EXCEEDED=Cannot ${action} ${type}. Maximum 
number of volumes allowed (${maxTotalVolumes}) exceeded - could not create 
Cinder disk ${diskAlias}.
+ERROR_CANNOT_DETACH_EXTERNAL_VOLUME_PROVIDER_WITH_IMAGES=Cannot detach a non 
empty external volume provider.\n\
+        -Please remove all VMs / Templates / Disks and try again.
 
 NO_HOST_PROVIDER_FOR_SYSTEM=The engine server is not associated with any host 
provider.
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
index c72ab48..d637c5b 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
@@ -3762,4 +3762,7 @@
 
     @DefaultStringValue("The engine server is not associated with any host 
provider.")
     String NO_HOST_PROVIDER_FOR_SYSTEM();
+
+    @DefaultStringValue("Cannot detach a non empty external volume provider.\n 
-Please remove all VMs / Templates / Disks and try again.")
+    String ERROR_CANNOT_DETACH_EXTERNAL_VOLUME_PROVIDER_WITH_IMAGES();
 }
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index bfe32d5..534c939 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -1099,3 +1099,5 @@
 ACTION_TYPE_FAILED_PROVIDER_NOT_SUPPORTED=Cannot ${action} ${type}. The 
current type ${providerType} is not supported.
 ACTION_TYPE_FAILED_CINDER=Cannot ${action} ${type}. An error occurred on 
Cinder - '${cinderException}'.
 CANNOT_ADD_CINDER_DISK_VOLUME_LIMIT_EXCEEDED=Cannot ${action} ${type}. Maximum 
number of volumes allowed (${maxTotalVolumes}) exceeded - could not create 
Cinder disk ${diskAlias}.
+ERROR_CANNOT_DETACH_EXTERNAL_VOLUME_PROVIDER_WITH_IMAGES=Cannot detach a non 
empty external volume provider.\n\
+        -Please remove all VMs / Templates / Disks and try again.
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index 23eef96..ecc8c0f 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -1353,5 +1353,7 @@
 ACTION_TYPE_FAILED_PROVIDER_NOT_SUPPORTED=Cannot ${action} ${type}. The 
current type ${providerType} is not supported.
 ACTION_TYPE_FAILED_CINDER=Cannot ${action} ${type}. An error occurred on 
Cinder - '${cinderException}'.
 CANNOT_ADD_CINDER_DISK_VOLUME_LIMIT_EXCEEDED=Cannot ${action} ${type}. Maximum 
number of volumes allowed (${maxTotalVolumes}) exceeded - could not create 
Cinder disk ${diskAlias}.
+ERROR_CANNOT_DETACH_EXTERNAL_VOLUME_PROVIDER_WITH_IMAGES=Cannot detach a non 
empty external volume provider.\n\
+        -Please remove all VMs / Templates / Disks and try again.
 
 NO_HOST_PROVIDER_FOR_SYSTEM=The engine server is not associated with any host 
provider.


-- 
To view, visit https://gerrit.ovirt.org/40016
To unsubscribe, visit https://gerrit.ovirt.org/settings

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

Reply via email to