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
