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

Reply via email to