Daniel Erez has uploaded a new change for review. Change subject: webadmin: disable virtio-scsi for unsupported OSes ......................................................................
webadmin: disable virtio-scsi for unsupported OSes VM dialog: * When selecting an OS that doesn't support VirtIO-SCSI, 'VirtIO-SCSI Enabled' checkbox should be disabled. * Updated VmModelBehaviorBase and derived behavior models accordingly. Change-Id: I0256b84e1c82a6c2330287f1e68385d785d26b26 Bug-Url: https://bugzilla.redhat.com/1038613 Signed-off-by: Daniel Erez <de...@redhat.com> --- 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/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/VmModelBehaviorBase.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java 8 files changed, 77 insertions(+), 18 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/49/22649/1 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 2643e1a..d6128e1 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 @@ -208,7 +208,7 @@ updateConsoleDevice(getVm().getId()); - updateVirtioScsiEnabled(getVm().getId()); + updateVirtioScsiEnabled(getVm().getId(), getVm().getVmOsId()); getModel().getVncKeyboardLayout().setSelectedItem(vm.getVncKeyboardLayout()); @@ -292,6 +292,12 @@ } @Override + public void oSType_SelectedItemChanged() { + int osType = getModel().getOSType().getSelectedItem(); + updateVirtioScsiEnabled(vm.getId(), osType); + } + + @Override public void updateMinAllocatedMemory() { DataCenterWithCluster dataCenterWithCluster = getModel().getDataCenterWithClustersList().getSelectedItem(); 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..35a95d5 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 @@ -189,6 +189,11 @@ } @Override + public void oSType_SelectedItemChanged() + { + } + + @Override public void updateMinAllocatedMemory() { } 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 eef793e..e777da6 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 @@ -122,7 +122,7 @@ } updateConsoleDevice(template.getId()); - updateVirtioScsiEnabled(template.getId()); + updateVirtioScsiEnabled(template.getId(), template.getOsId()); updateTimeZone(template.getTimeZone()); // Update domain list @@ -257,6 +257,15 @@ } @Override + public void oSType_SelectedItemChanged() { + VmTemplate template = getModel().getTemplate().getSelectedItem(); + int osType = getModel().getOSType().getSelectedItem(); + if (template != null) { + updateVirtioScsiEnabled(template.getId(), osType); + } + } + + @Override public void updateMinAllocatedMemory() { DataCenterWithCluster dataCenterWithCluster = getModel().getDataCenterWithClustersList().getSelectedItem(); 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 df353ce..53d06bb 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 @@ -128,7 +128,7 @@ updateTimeZone(vmBase.getTimeZone()); updateConsoleDevice(vmBase.getId()); - updateVirtioScsiEnabled(vmBase.getId()); + updateVirtioScsiEnabled(vmBase.getId(), vmBase.getOsId()); // Update domain list updateDomain(); @@ -232,6 +232,15 @@ } @Override + public void oSType_SelectedItemChanged() { + VmTemplate template = getModel().getTemplate().getSelectedItem(); + int osType = getModel().getOSType().getSelectedItem(); + if (template != null) { + updateVirtioScsiEnabled(template.getId(), osType); + } + } + + @Override public void updateMinAllocatedMemory() { VDSGroup cluster = (VDSGroup) getModel().getSelectedCluster(); 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..fb41012 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 @@ -130,6 +130,11 @@ } @Override + public void oSType_SelectedItemChanged() + { + } + + @Override public void updateMinAllocatedMemory() { } 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 b003265..04cb7d6 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 @@ -1440,6 +1440,7 @@ else if (sender == getOSType()) { oSType_SelectedItemChanged(sender, args); + getBehavior().oSType_SelectedItemChanged(); updateDisplayProtocol(); initUsbPolicy(); } @@ -1810,7 +1811,6 @@ getDomain().setIsChangable(getIsWindowsOS()); getBehavior().updateDefaultTimeZone(); - 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 99458e4..2fd58e7 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 @@ -10,6 +10,7 @@ import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; import org.ovirt.engine.core.common.businessentities.DiskImage; +import org.ovirt.engine.core.common.businessentities.DiskInterface; import org.ovirt.engine.core.common.businessentities.DisplayType; import org.ovirt.engine.core.common.businessentities.MigrationSupport; import org.ovirt.engine.core.common.businessentities.Quota; @@ -117,6 +118,8 @@ public abstract void defaultHost_SelectedItemChanged(); public abstract void provisioning_SelectedItemChanged(); + + public abstract void oSType_SelectedItemChanged(); public abstract void updateMinAllocatedMemory(); @@ -1062,22 +1065,41 @@ })); } - protected void updateVirtioScsiEnabled(Guid vmId) { - if (Guid.isNullOrEmpty(vmId)) { - VDSGroup cluster = getModel().getSelectedCluster(); - boolean isVirtioScsiEnabled = (Boolean) AsyncDataProvider.getConfigValuePreConverted( - ConfigurationValues.VirtIoScsiEnabled, cluster.getcompatibility_version().getValue()); - getModel().getIsVirtioScsiEnabled().setEntity(isVirtioScsiEnabled); - return; - } + protected void updateVirtioScsiEnabled(final Guid vmId, int osId) { + VDSGroup cluster = getModel().getSelectedCluster(); + Version clusterVersion = cluster != null ? cluster.getcompatibility_version() : null; - AsyncDataProvider.isVirtioScsiEnabledForVm(new AsyncQuery(getModel(), new INewAsyncCallback() { + AsyncDataProvider.getDiskInterfaceList(osId, clusterVersion, + new AsyncQuery(getModel(), new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object returnValue) { + ArrayList<DiskInterface> diskInterfaces = (ArrayList<DiskInterface>) returnValue; + boolean isOsSupportVirtioScsi = diskInterfaces.contains(DiskInterface.VirtIO_SCSI); - @Override - public void onSuccess(Object model, Object returnValue) { - getModel().getIsVirtioScsiEnabled().setEntity((Boolean) returnValue); - } - }), vmId); + getModel().getIsVirtioScsiEnabled().setIsChangable(isOsSupportVirtioScsi); + + if (!isOsSupportVirtioScsi) { + getModel().getIsVirtioScsiEnabled().setEntity(false); + getModel().getIsVirtioScsiEnabled().setChangeProhibitionReason(constants.cannotEnableVirtioScsiForOs()); + } + else { + if (Guid.isNullOrEmpty(vmId)) { + VDSGroup cluster = getModel().getSelectedCluster(); + boolean isVirtioScsiEnabled = (Boolean) AsyncDataProvider.getConfigValuePreConverted( + ConfigurationValues.VirtIoScsiEnabled, cluster.getcompatibility_version().getValue()); + getModel().getIsVirtioScsiEnabled().setEntity(isVirtioScsiEnabled); + } + else { + AsyncDataProvider.isVirtioScsiEnabledForVm(new AsyncQuery(getModel(), new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object returnValue) { + getModel().getIsVirtioScsiEnabled().setEntity((Boolean) returnValue); + } + }), vmId); + } + } + } + })); } public void vmTypeChanged(VmType vmType) { diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java index 4a5dd7b..a3e5365 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java @@ -2093,5 +2093,8 @@ @DefaultStringValue("Not available when Templates are not configured.") String notAvailableWithNoTemplates(); + + @DefaultStringValue("VirtIO-SCSI is not supported for the selected OS") + String cannotEnableVirtioScsiForOs(); } -- To view, visit http://gerrit.ovirt.org/22649 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0256b84e1c82a6c2330287f1e68385d785d26b26 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Daniel Erez <de...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches