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
