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 <[email protected]> --- 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(+), 17 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/61/23861/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 e8b1d46..37448ee 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 @@ -225,7 +225,7 @@ updateConsoleDevice(getVm().getId()); - updateVirtioScsiEnabled(getVm().getId()); + updateVirtioScsiEnabled(getVm().getId(), getVm().getVmOsId()); getModel().getVncKeyboardLayout().setSelectedItem(vm.getDefaultVncKeyboardLayout()); @@ -332,6 +332,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 eb0d40c..a19fd7b 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 @@ -290,6 +290,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 2a49abd..4e3876b 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 @@ -123,7 +123,7 @@ } updateConsoleDevice(template.getId()); - updateVirtioScsiEnabled(template.getId()); + updateVirtioScsiEnabled(template.getId(), template.getOsId()); updateTimeZone(template.getTimeZone()); // Update domain list @@ -269,6 +269,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 0ca7408..a91fd1e 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 @@ -129,7 +129,7 @@ updateTimeZone(vmBase.getTimeZone()); updateConsoleDevice(vmBase.getId()); - updateVirtioScsiEnabled(vmBase.getId()); + updateVirtioScsiEnabled(vmBase.getId(), vmBase.getOsId()); // Update domain list updateDomain(); @@ -236,6 +236,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 1faf746..85ce2ff 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 @@ -144,6 +144,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 164633d..dd10495 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 @@ -1553,6 +1553,7 @@ else if (sender == getOSType()) { oSType_SelectedItemChanged(sender, args); + getBehavior().oSType_SelectedItemChanged(); getVmInitModel().osTypeChanged(getOSType().getSelectedItem()); updateDisplayProtocol(); initUsbPolicy(); 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 0594171..4e01c3e 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 @@ -13,6 +13,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; @@ -119,6 +120,8 @@ public abstract void defaultHost_SelectedItemChanged(); public abstract void provisioning_SelectedItemChanged(); + + public abstract void oSType_SelectedItemChanged(); public abstract void updateMinAllocatedMemory(); @@ -1141,22 +1144,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 66e6e58..3af87de 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 @@ -2167,5 +2167,8 @@ @DefaultStringValue("In case the vm is stateless, vm will be re-created with the LATEST template version") String latestTemplateVersionDescription(); + + @DefaultStringValue("VirtIO-SCSI is not supported for the selected OS") + String cannotEnableVirtioScsiForOs(); } -- To view, visit http://gerrit.ovirt.org/23861 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0256b84e1c82a6c2330287f1e68385d785d26b26 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.4 Gerrit-Owner: Daniel Erez <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
