Vitor de Lima has uploaded a new change for review.

Change subject: webadmin: Filter clusters by arch in FE
......................................................................

webadmin: Filter clusters by arch in FE

This patch introduces some changes in the frontend in order to prevent
the user from making mistakes and receive errors from the backend
commands. These changes include:

* Show only clusters with the same architecture as the VM, Pool or
  Template when editing them;
* Show only clusters with the same architecture as the VM used as a
  model when creating a template;
* Hide clusters with undefined architecture in the 'New VM' and
'New Pool' dialogs.

Change-Id: I89df0de70a26379642a09e765631d3abf3200339
Signed-off-by: Vitor de Lima <vitor.l...@eldorado.org.br>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingPoolModelBehavior.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewPoolModelBehavior.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalExistingVmModelBehavior.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalNewVmModelBehavior.java
11 files changed, 64 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/56/22356/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
index c4cc87e..68389df 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
@@ -702,6 +702,17 @@
         return filteredClusters;
     }
 
+    public static List<VDSGroup> 
filterClustersWithoutArchitecture(List<VDSGroup> clusters) {
+        List<VDSGroup> filteredClusters = new ArrayList<VDSGroup>();
+
+        for (VDSGroup cluster : clusters) {
+            if (cluster.getArchitecture() != ArchitectureType.undefined) {
+                filteredClusters.add(cluster);
+            }
+        }
+        return filteredClusters;
+    }
+
     public static void getClusterByServiceList(AsyncQuery aQuery, Guid 
dataCenterId,
             final boolean supportsVirtService, final boolean 
supportsGlusterService) {
         aQuery.converterCallback = new IAsyncConverter() {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingPoolModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingPoolModelBehavior.java
index 0adf740..e68d478 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingPoolModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingPoolModelBehavior.java
@@ -8,6 +8,7 @@
 import org.ovirt.engine.core.common.businessentities.DisplayType;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
+import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VmBase;
 import org.ovirt.engine.core.common.businessentities.VmStatic;
@@ -131,4 +132,9 @@
 
         return parentValidation;
     }
+
+    @Override
+    protected List<VDSGroup> filterClusters(List<VDSGroup> clusters) {
+        return AsyncDataProvider.filterByArchitecture(clusters, 
pool.getClusterArch());
+    }
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
index 5e65b36..a585ef3 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
@@ -127,9 +127,15 @@
                     @Override
                     public void onSuccess(Object target, Object returnValue) {
                         UnitVmModel model = (UnitVmModel) target;
+
+                        List<VDSGroup> clusters = (List<VDSGroup>) returnValue;
+
+                        List<VDSGroup> filteredClusters =
+                                
AsyncDataProvider.filterByArchitecture(clusters, vm.getClusterArch());
+
                         model.setDataCentersAndClusters(model,
                                 dataCenters,
-                                (List<VDSGroup>) returnValue, 
vm.getVdsGroupId());
+                                filteredClusters, vm.getVdsGroupId());
                         initTemplate();
                         initCdImage();
                         initSoundCard(vm.getId());
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewPoolModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewPoolModelBehavior.java
index db82b42..9b8e36c 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewPoolModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewPoolModelBehavior.java
@@ -4,9 +4,11 @@
 
 import org.ovirt.engine.core.common.businessentities.DisplayType;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
+import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VmBase;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.ui.uicommonweb.Linq;
+import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel;
 import org.ovirt.engine.ui.uicommonweb.validation.IValidation;
@@ -73,4 +75,9 @@
 
         return parentValidation;
     }
+
+    @Override
+    protected List<VDSGroup> filterClusters(List<VDSGroup> clusters) {
+        return AsyncDataProvider.filterClustersWithoutArchitecture(clusters);
+    }
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
index b7d4e4d..ae01221 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
@@ -73,9 +73,14 @@
                                             UnitVmModel model = (UnitVmModel) 
target;
 
                                             List<VDSGroup> clusters = 
(List<VDSGroup>) returnValue;
+
+                                            List<VDSGroup> filteredClusters =
+                                                    
AsyncDataProvider.filterByArchitecture(clusters,
+                                                            
vm.getClusterArch());
+
                                             
model.setDataCentersAndClusters(model,
                                                     Arrays.asList(dataCenter),
-                                                    clusters,
+                                                    filteredClusters,
                                                     vm.getVdsGroupId());
 
                                             initTemplate();
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
index 12ce015..d4a7983 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
@@ -56,9 +56,11 @@
                                         @Override
                                         public void onSuccess(Object target, 
Object returnValue) {
                                             UnitVmModel model = (UnitVmModel) 
target;
+                                            List<VDSGroup> clusterList = 
(List<VDSGroup>) returnValue;
+                                            List<VDSGroup> filteredClusterList 
= AsyncDataProvider.filterClustersWithoutArchitecture(clusterList);
                                             
model.setDataCentersAndClusters(model,
                                                     dataCenters,
-                                                    (List<VDSGroup>) 
returnValue, null);
+                                                    filteredClusterList, null);
                                             initCdImage();
                                         }
                                     }, getModel().getHash()),
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
index 004157e..d6c6fd9 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
@@ -77,9 +77,11 @@
                     @Override
                     public void onSuccess(Object target, Object returnValue) {
                         UnitVmModel model = (UnitVmModel) target;
+                        List<VDSGroup> clusters = (List<VDSGroup>) returnValue;
+                        List<VDSGroup> filteredClusters = 
filterClusters(clusters);
                         model.setDataCentersAndClusters(model,
                                 dataCenters,
-                                (List<VDSGroup>) returnValue, null);
+                                filteredClusters, null);
                         initCdImage();
                         getPoolModelBehaviorInitializedEvent().raise(this, 
EventArgs.Empty);
                     }
@@ -87,6 +89,8 @@
                 true, false);
     }
 
+    protected abstract List<VDSGroup> filterClusters(List<VDSGroup> clusters);
+
     protected void setupWindowModelFrom(VmBase vmBase) {
         if (vmBase != null) {
             updateQuotaByCluster(vmBase.getQuotaId(), vmBase.getQuotaName());
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
index 73e519c..03491e8 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
@@ -3,6 +3,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.List;
 
 import org.ovirt.engine.core.common.businessentities.DisplayType;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
@@ -51,13 +52,18 @@
                                             UnitVmModel model = (UnitVmModel) 
target;
 
                                             ArrayList<VDSGroup> clusters = 
(ArrayList<VDSGroup>) returnValue;
-                                            ArrayList<VDSGroup> 
filteredClusters = new ArrayList<VDSGroup>();
+                                            ArrayList<VDSGroup> 
clustersSupportingVirt = new ArrayList<VDSGroup>();
                                             // filter clusters supporting virt 
service only
                                             for (VDSGroup cluster : clusters) {
                                                 if 
(cluster.supportsVirtService()) {
-                                                    
filteredClusters.add(cluster);
+                                                    
clustersSupportingVirt.add(cluster);
                                                 }
                                             }
+
+                                            List<VDSGroup> filteredClusters =
+                                                    
AsyncDataProvider.filterByArchitecture(clustersSupportingVirt,
+                                                            
template.getClusterArch());
+
                                             
model.setDataCentersAndClusters(model,
                                                     new 
ArrayList<StoragePool>(Arrays.asList(new StoragePool[] { dataCenter })),
                                                     filteredClusters,
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
index a29da2a..43ff041 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
@@ -2040,8 +2040,10 @@
                 new ArrayList<DataCenterWithCluster>();
 
         for (StoragePool dataCenter : dataCenters) {
-            for (VDSGroup cluster : 
dataCenterToCluster.get(dataCenter.getId())) {
-                dataCentersWithClusters.add(new 
DataCenterWithCluster(dataCenter, cluster));
+            if (dataCenterToCluster.containsKey(dataCenter.getId())) {
+                for (VDSGroup cluster : 
dataCenterToCluster.get(dataCenter.getId())) {
+                    dataCentersWithClusters.add(new 
DataCenterWithCluster(dataCenter, cluster));
+                }
             }
         }
         getDataCenterWithClustersList().setItems(dataCentersWithClusters);
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalExistingVmModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalExistingVmModelBehavior.java
index daec44c..3e6f49c 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalExistingVmModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalExistingVmModelBehavior.java
@@ -50,6 +50,9 @@
                         UnitVmModel model = (UnitVmModel) array[1];
                         List<VDSGroup> clusters = (List<VDSGroup>) returnValue;
 
+                        // filter clusters by architecture
+                        clusters = 
AsyncDataProvider.filterByArchitecture(clusters, vm.getClusterArch());
+
                         if (containsVmCluster(clusters)) {
                             Collections.sort(clusters, new 
NameableComparator());
                             model.setDataCentersAndClusters(model, 
dataCenters, clusters, vm.getVdsGroupId());
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalNewVmModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalNewVmModelBehavior.java
index 8f2ca06..d62a088 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalNewVmModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UserPortalNewVmModelBehavior.java
@@ -64,9 +64,12 @@
                                         @Override
                                         public void onSuccess(Object target, 
Object returnValue) {
                                             UnitVmModel model = (UnitVmModel) 
target;
+                                            List<VDSGroup> clusters = 
(List<VDSGroup>) returnValue;
+                                            // filter clusters without cpu name
+                                            clusters = 
AsyncDataProvider.filterClustersWithoutArchitecture(clusters);
                                             
model.setDataCentersAndClusters(model,
                                                     dataCenters,
-                                                    (List<VDSGroup>) 
returnValue, null);
+                                                    clusters, null);
                                         }
                                     }, getModel().getHash()),
                                     CREATE_VM, true, false);


-- 
To view, visit http://gerrit.ovirt.org/22356
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I89df0de70a26379642a09e765631d3abf3200339
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Vitor de Lima <vitor.l...@eldorado.org.br>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to