Vitor de Lima has uploaded a new change for review.

Change subject: userportal, webadmin: Prevent migration on the frontend
......................................................................

userportal, webadmin: Prevent migration on the frontend

This patch transparently disables migration when creating VMs on
architectures that do not support it. This includes pinning the created
VM to a host and forcing the "Do not migrate" resilience policy.

Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1057178

Change-Id: I4e6f82dd8906fe8aa3d6c9e28eaf0e155feef51c
Signed-off-by: Vitor de Lima <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.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/VmModelBehaviorBase.java
3 files changed, 63 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/48/25048/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
index 71e3b1c..30fccf7 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
@@ -1023,6 +1023,7 @@
 
         setCPU(new ListModel<ServerCpu>());
         getCPU().setIsAvailable(ApplicationModeHelper.getUiMode() != 
ApplicationMode.GlusterOnly);
+        getCPU().getSelectedItemChangedEvent().addListener(this);
         setVersion(new ListModel<Version>());
         getVersion().getSelectedItemChangedEvent().addListener(this);
         setMigrateOnErrorOption(MigrateOnErrorOptions.YES);
@@ -1226,6 +1227,9 @@
             else if (sender == getClusterPolicy()) {
                 clusterPolicyChanged();
             }
+            else if (sender == getCPU()) {
+                CPU_SelectedItemChanged(args);
+            }
         }
         else if 
(ev.matchesDefinition(EntityModel.entityChangedEventDefinition))
         {
@@ -1283,6 +1287,10 @@
                 }
             }
         }
+    }
+
+    private void CPU_SelectedItemChanged(EventArgs args) {
+        updateMigrateOnError();
     }
 
     private void version_SelectedItemChanged(EventArgs e)
@@ -1355,6 +1363,34 @@
         if (isSmallerThanVersion3_4) {
             getEnableKsm().setEntity(true);
         }
+
+        updateMigrateOnError();
+    }
+
+    private void updateMigrateOnError() {
+        ServerCpu cpu = (ServerCpu) getCPU().getSelectedItem();
+
+        Version version = (Version) getVersion().getSelectedItem();
+
+        if (version == null) {
+            return;
+        }
+
+        if (cpu == null) {
+            return;
+        }
+
+        if (AsyncDataProvider.isMigrationSupported(cpu.getArchitecture(), 
version)) {
+            getMigrateOnErrorOption_NO().setIsAvailable(true);
+            getMigrateOnErrorOption_YES().setIsAvailable(true);
+            getMigrateOnErrorOption_HA_ONLY().setIsAvailable(true);
+        } else {
+            getMigrateOnErrorOption_NO().setIsAvailable(true);
+            getMigrateOnErrorOption_YES().setIsAvailable(false);
+            getMigrateOnErrorOption_HA_ONLY().setIsAvailable(false);
+
+            setMigrateOnErrorOption(MigrateOnErrorOptions.NO);
+        }
     }
 
     private void populateCPUList(ClusterModel clusterModel, List<ServerCpu> 
cpus, boolean canChangeArchitecture)
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 dd10495..7b8cdf0 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
@@ -1780,6 +1780,27 @@
                                                                  }, 
getHash()));
     }
 
+    private void updateMigrationOptions()
+    {
+        DataCenterWithCluster dataCenterWithCluster =
+                (DataCenterWithCluster) 
getDataCenterWithClustersList().getSelectedItem();
+        if (dataCenterWithCluster == null) {
+            return;
+        }
+
+        VDSGroup cluster = dataCenterWithCluster.getCluster();
+
+        Boolean isMigrationSupported =
+                
AsyncDataProvider.isMigrationSupported(cluster.getArchitecture(),
+                        cluster.getcompatibility_version());
+
+        if (isMigrationSupported) {
+            
getMigrationMode().setItems(Arrays.asList(MigrationSupport.values()));
+        } else {
+            
getMigrationMode().setItems(Arrays.asList(MigrationSupport.PINNED_TO_HOST));
+        }
+    }
+
     private void updateMaximalVmMemSize()
     {
         DataCenterWithCluster dataCenterWithCluster = 
getDataCenterWithClustersList().getSelectedItem();
@@ -1893,6 +1914,7 @@
                     .getQuotaEnforcementType());
         }
 
+        updateMigrationOptions();
         updateMaximalVmMemSize();
         handleQxlClusterLevel();
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
index 40b43ce..799f361 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
@@ -1111,7 +1111,11 @@
     }
 
     protected void updateHostPinning(MigrationSupport migrationSupport) {
-        getModel().getMigrationMode().setSelectedItem(migrationSupport);
+        List<MigrationSupport> supportedModes = (List<MigrationSupport>) 
getModel().getMigrationMode().getItems();
+
+        if (supportedModes.contains(migrationSupport)) {
+            getModel().getMigrationMode().setSelectedItem(migrationSupport);
+        }
     }
 
     protected void updateOSValues() {


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4e6f82dd8906fe8aa3d6c9e28eaf0e155feef51c
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.4
Gerrit-Owner: Vitor de Lima <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to