Sergey Gotliv has uploaded a new change for review. Change subject: engine,webadmin: Limit usage of Local ISO SD to Local DC ......................................................................
engine,webadmin: Limit usage of Local ISO SD to Local DC Using ISO Storage Domain which is local to one host in the multihost environment can create issues because this SD is not visible by other hosts, therefore there is a decision to limit its usage to single host environment. Change-Id: I4cfc3bb68581664fa6729e5cb8a163324e7fbc29 Bug-Url: https://bugzilla.redhat.com/993111 Signed-off-by: Sergey Gotliv <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddLocalStorageDomainCommand.java A backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddLocalStorageDomainCommandTest.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportStorageModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/NewEditStorageModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModelBehavior.java 5 files changed, 55 insertions(+), 19 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/29/18229/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddLocalStorageDomainCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddLocalStorageDomainCommand.java index c985121..787aee3 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddLocalStorageDomainCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddLocalStorageDomainCommand.java @@ -46,8 +46,10 @@ setStoragePool(storagePool); } - if (retVal && getStorageDomain().getStorageDomainType() == StorageDomainType.Data - && storagePool.getStorageType() != StorageType.LOCALFS) { + if (retVal && + (getStorageDomain().getStorageDomainType() == StorageDomainType.Data || + getStorageDomain().getStorageDomainType() == StorageDomainType.ISO) && + storagePool.getStorageType() != StorageType.LOCALFS) { addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_POOL_IS_NOT_LOCAL); retVal = false; } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddLocalStorageDomainCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddLocalStorageDomainCommandTest.java new file mode 100644 index 0000000..786409a --- /dev/null +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddLocalStorageDomainCommandTest.java @@ -0,0 +1,11 @@ +package org.ovirt.engine.core.bll.storage; + +/** + * Created with IntelliJ IDEA. + * User: sgotliv + * Date: 8/17/13 + * Time: 1:36 PM + * To change this template use File | Settings | File Templates. + */ +public class AddLocalStorageDomainCommandTest { +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportStorageModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportStorageModelBehavior.java index f478d60..a0acb3f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportStorageModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportStorageModelBehavior.java @@ -73,12 +73,17 @@ Model model = (Model) item; StoragePool dataCenter = (StoragePool) getModel().getDataCenter().getSelectedItem(); - // available type/function items are: - // all in case of Unassigned DC. - // ISO in case the specified DC doesn't have an attached ISO domain. - // Export in case the specified DC doesn't have an attached export domain. - model.setIsSelectable((dataCenter.getId().equals(StorageModel.UnassignedDataCenterId) - || (item.getRole() == StorageDomainType.ISO && isNoStorageAttached) || (item.getRole() == StorageDomainType.ImportExport && isNoStorageAttached))); + if (!isStorageDomainSelectableForDataCenter(dataCenter, item)) { + model.setIsSelectable(false); + } else { + // available type/function items are: + // all in case of Unassigned DC. + // ISO in case the specified DC doesn't have an attached ISO domain. + // Export in case the specified DC doesn't have an attached export domain. + model.setIsSelectable((dataCenter.getId().equals(StorageModel.UnassignedDataCenterId) + || (item.getRole() == StorageDomainType.ISO && isNoStorageAttached) + || (item.getRole() == StorageDomainType.ImportExport && isNoStorageAttached))); + } behavior.onStorageModelUpdated(item); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/NewEditStorageModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/NewEditStorageModelBehavior.java index 7e0d125..d2b3a5a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/NewEditStorageModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/NewEditStorageModelBehavior.java @@ -68,20 +68,24 @@ StoragePool dataCenter = (StoragePool) getModel().getDataCenter().getSelectedItem(); Model model = (Model) item; - boolean isExistingStorage = getModel().getStorage() != null && - item.getType() == getModel().getStorage().getStorageType(); - boolean isNoneDataCenter = dataCenter != null && - dataCenter.getId().equals(StorageModel.UnassignedDataCenterId); + if (isStorageDomainSelectableForDataCenter(dataCenter, item)) { + model.setIsSelectable(false); + } else { + boolean isExistingStorage = getModel().getStorage() != null && + item.getType() == getModel().getStorage().getStorageType(); + boolean isNoneDataCenter = dataCenter != null && + dataCenter.getId().equals(StorageModel.UnassignedDataCenterId); - boolean isData = item.getRole() == StorageDomainType.Data; - boolean isExportOrIso = item.getRole() == StorageDomainType.ImportExport || item.getRole() == StorageDomainType.ISO; + boolean isData = item.getRole() == StorageDomainType.Data; + boolean isExportOrIso = item.getRole() == StorageDomainType.ImportExport || item.getRole() == StorageDomainType.ISO; - boolean canAttachData = isData && item.getType() == dataCenter.getStorageType(); - boolean canAttachExportOrIso = isExportOrIso && isNoExportOrIsoStorageAttached && - dataCenter.getstatus() != StoragePoolStatus.Uninitialized; + boolean canAttachData = isData && item.getType() == dataCenter.getStorageType(); + boolean canAttachExportOrIso = isExportOrIso && isNoExportOrIsoStorageAttached && + dataCenter.getstatus() != StoragePoolStatus.Uninitialized; - model.setIsSelectable(isExistingStorage || (isNoneDataCenter && isData) || - (!isNoneDataCenter && (canAttachData || canAttachExportOrIso))); + model.setIsSelectable(isExistingStorage || (isNoneDataCenter && isData) || + (!isNoneDataCenter && (canAttachData || canAttachExportOrIso))); + } onStorageModelUpdated(item); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModelBehavior.java index e42b8bd..1b0294a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModelBehavior.java @@ -3,8 +3,10 @@ import java.util.ArrayList; import java.util.List; +import org.ovirt.engine.core.common.businessentities.StorageDomainType; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; +import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.uicommonweb.Linq; @@ -105,4 +107,16 @@ getModel().frontend_QueryComplete(); } } + + public boolean isStorageDomainSelectableForDataCenter(StoragePool dataCenter, IStorageModel storageModel) { + boolean isLocalIsoStorageDomain = (storageModel.getRole() == StorageDomainType.ISO && + storageModel.getType() == StorageType.LOCALFS); + boolean isLocalDataCenter = (dataCenter != null && dataCenter.getStorageType() == StorageType.LOCALFS); + + if (isLocalIsoStorageDomain && !isLocalDataCenter) { + return false; + } else { + return true; + } + } } -- To view, visit http://gerrit.ovirt.org/18229 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4cfc3bb68581664fa6729e5cb8a163324e7fbc29 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Sergey Gotliv <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
