Daniel Erez has uploaded a new change for review.

Change subject: core: adding CinderProviderValidator
......................................................................

core: adding CinderProviderValidator

Introducing CinderProviderValidator for validations
of OpenStack volume provider flows.

Change-Id: Ic508913d4640a9767a415f69e567620d4ab23d67
Bug-Url: https://bugzilla.redhat.com/1185826
Signed-off-by: Daniel Erez <[email protected]>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/CinderProviderValidator.java
1 file changed, 69 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/38907/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/CinderProviderValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/CinderProviderValidator.java
new file mode 100644
index 0000000..3a219c0
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/storage/CinderProviderValidator.java
@@ -0,0 +1,69 @@
+package org.ovirt.engine.core.bll.provider.storage;
+
+import org.ovirt.engine.core.bll.ValidationResult;
+import org.ovirt.engine.core.bll.provider.ProviderValidator;
+import org.ovirt.engine.core.bll.validator.storage.StoragePoolValidator;
+import org.ovirt.engine.core.common.FeatureSupported;
+import 
org.ovirt.engine.core.common.businessentities.storage.OpenStackVolumeProviderProperties;
+import org.ovirt.engine.core.common.businessentities.Provider;
+import org.ovirt.engine.core.common.businessentities.StoragePool;
+import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dao.StoragePoolDAO;
+
+public class CinderProviderValidator extends ProviderValidator {
+
+    public CinderProviderValidator(Provider<?> provider) {
+        super(provider);
+    }
+
+    public ValidationResult validateAddProvider() {
+        return validateAttachStorageDomain();
+    }
+
+    private ValidationResult validateAttachStorageDomain() {
+        StoragePoolValidator spValidator = new 
StoragePoolValidator(getStoragePool());
+        ValidationResult result;
+
+        result = spValidator.isAnyDomainInProcess();
+        if (!result.isValid()) {
+            return result;
+        }
+        result = isCinderSupportedInDC();
+        if (!result.isValid()) {
+            return result;
+        }
+        result = spValidator.checkStoragePoolNotInStatus(StoragePoolStatus.Up);
+        if (!result.isValid()) {
+            return result;
+        }
+        return ValidationResult.VALID;
+    }
+
+
+    private StoragePool getStoragePool() {
+        Guid storagePoolId =
+                ((OpenStackVolumeProviderProperties) 
provider.getAdditionalProperties()).getStoragePoolId();
+        return getStoragePoolDao().get(storagePoolId);
+    }
+
+    protected StoragePoolDAO getStoragePoolDao() {
+        return DbFacade.getInstance().getStoragePoolDao();
+    }
+
+    /**
+     * Checks that the DC compatibility version supports Cinder domains and it 
is not local.
+     * In case there is a mismatch, a proper canDoAction message will be added
+     *
+     * @return The result of the validation
+     */
+    public ValidationResult isCinderSupportedInDC() {
+        if (!getStoragePool().isLocal()
+                && 
!FeatureSupported.cinderProviderSupported(getStoragePool().getCompatibilityVersion()))
 {
+            return new 
ValidationResult(VdcBllMessages.DATA_CENTER_CINDER_STORAGE_NOT_SUPPORTED_IN_CURRENT_VERSION);
+        }
+        return ValidationResult.VALID;
+    }
+}


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

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

Reply via email to