Daniel Erez has uploaded a new change for review.

Change subject: webadmin: disk dialog - VirtIO-SCSI availability hint
......................................................................

webadmin: disk dialog - VirtIO-SCSI availability hint

Add/Edit disk dialog:
When VirtIO-SCSI is supported by the cluster but disabled
for the VM, display an info icon next to Interface dialog
(with hinting that VirtIO-SCSI can be enabled from
Resource Allocation tab on VM dialog).

Change-Id: I9a2bd43de2adb0e85d3848042622fdce69e07ac0
Signed-off-by: Daniel Erez <de...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java
4 files changed, 58 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/12/21712/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
index a09a55f..0fdb68b 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
@@ -1579,6 +1579,9 @@
     @DefaultStringValue("Attach a VirtIO-SCSI controller when running the VM")
     String isVirtioScsiEnabledInfo();
 
+    @DefaultStringValue("VirtIO-SCSI can be enabled from Resource Allocation 
tab on VM dialog")
+    String diskInterfaceInfo();
+
     @DefaultStringValue("FQDN")
     String fqdn();
 
@@ -1591,3 +1594,4 @@
     @DefaultStringValue("Active VM before the preview")
     String snapshotDescriptionActiveVmBeforePreview();
 }
+thati
\ No newline at end of file
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java
index 1ef7cf7..c225abd 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java
@@ -27,6 +27,7 @@
 import org.ovirt.engine.core.common.businessentities.StorageType;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.utils.SizeConverter;
+import org.ovirt.engine.core.compat.Version;
 import org.ovirt.engine.ui.common.CommonApplicationConstants;
 import org.ovirt.engine.ui.common.CommonApplicationResources;
 import org.ovirt.engine.ui.common.CommonApplicationTemplates;
@@ -34,6 +35,7 @@
 import org.ovirt.engine.ui.common.idhandler.WithElementId;
 import org.ovirt.engine.ui.common.widget.Align;
 import org.ovirt.engine.ui.common.widget.ValidatedPanelWidget;
+import org.ovirt.engine.ui.common.widget.dialog.InfoIcon;
 import org.ovirt.engine.ui.common.widget.dialog.ProgressPopupContent;
 import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable;
 import org.ovirt.engine.ui.common.widget.editor.EntityModelCheckBoxEditor;
@@ -170,6 +172,10 @@
     @WithElementId("attachDisk")
     EntityModelCheckBoxEditor attachEditor;
 
+    @UiField(provided = true)
+    @Ignore
+    InfoIcon interfaceInfoIcon;
+
     @UiField
     @Ignore
     @WithElementId
@@ -235,7 +241,7 @@
                              boolean isLunDiskEnabled) {
         this.isNewLunDiskEnabled = isLunDiskEnabled;
         this.progressContent = createProgressContentWidget();
-        initManualWidgets();
+        initManualWidgets(constants, resources, templates);
         initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
         localize(constants);
         ViewIdHandler.idHandler.generateAndSetIds(this);
@@ -267,7 +273,9 @@
     }
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    private void initManualWidgets() {
+    private void initManualWidgets(CommonApplicationConstants constants,
+                                   CommonApplicationResources resources,
+                                   CommonApplicationTemplates templates) {
         storageDomainEditor = new ListModelListBoxEditor<Object>(new 
StorageDomainFreeSpaceRenderer());
 
         hostListEditor = new ListModelListBoxEditor<Object>(new 
AbstractRenderer<Object>() {
@@ -306,6 +314,8 @@
 
         internalDiskTable = new EntityModelCellTable<ListModel>(true);
         externalDiskTable = new EntityModelCellTable<ListModel>(true);
+
+        interfaceInfoIcon = new 
InfoIcon(templates.italicText(constants.diskInterfaceInfo()), resources);
     }
 
     private void initAttachPanelWidget() {
@@ -572,6 +582,22 @@
             }
         });
 
+        disk.getIsVirtioScsiEnabled().getEntityChangedEvent().addListener(new 
IEventListener() {
+            @Override
+            public void eventRaised(Event ev, Object sender, EventArgs args) {
+                if (disk.getVm() == null) {
+                    // not relevant for floating disks
+                    return;
+                }
+
+                boolean isVirtioScsiEnabled = 
Boolean.TRUE.equals(((EntityModel) sender).getEntity());
+                Version clusterVersion = 
disk.getVm().getVdsGroupCompatibilityVersion();
+
+                // Show the info icon if VirtIO-SCSI is supported by the 
cluster but disabled for the VM
+                
interfaceInfoIcon.setVisible(clusterVersion.compareTo(Version.v3_3) >= 0 && 
!isVirtioScsiEnabled);
+            }
+        });
+
         internalDiskRadioButton.addClickHandler(new ClickHandler() {
             @Override
             public void onClick(ClickEvent event) {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml
index 5d7bf2c..f29fc6f 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
 <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
-       xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" 
xmlns:w="urn:import:org.ovirt.engine.ui.common.widget">
+       xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" 
xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"
+    xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog">
 
        <ui:with field='constants' 
type='org.ovirt.engine.ui.common.CommonApplicationConstants' />
 
@@ -78,6 +79,12 @@
         .attachEditor {
             width: 90%;
         }
+
+        .infoIcon {
+            float: left;
+            padding-top: 5px;
+            padding-left: 2px;
+        }
        </ui:style>
 
        <g:FlowPanel addStyleNames="{style.container}">
@@ -95,7 +102,10 @@
           <e:EntityModelTextBoxEditor ui:field="sizeExtendEditor" 
addStyleNames="{style.boxEditor}"/>
                                        <e:EntityModelTextBoxEditor 
ui:field="aliasEditor" addStyleNames="{style.boxEditor}"/>
                                        <e:EntityModelTextBoxEditor 
ui:field="descriptionEditor" addStyleNames="{style.boxEditor}"/>
-                                       <e:ListModelListBoxEditor 
ui:field="interfaceEditor" addStyleNames="{style.boxEditor}"/>
+                    <g:HorizontalPanel>
+                                           <e:ListModelListBoxEditor 
ui:field="interfaceEditor" addStyleNames="{style.boxEditor}"/>
+                        <d:InfoIcon ui:field="interfaceInfoIcon" 
addStyleNames="{style.infoIcon}" visible="false"/>
+                    </g:HorizontalPanel>
                                        <e:ListModelListBoxEditor 
ui:field="volumeTypeEditor" addStyleNames="{style.boxEditor}"/>
                                        <e:ListModelListBoxEditor 
ui:field="datacenterEditor" addStyleNames="{style.boxEditor}"/>
                                        <e:ListModelListBoxEditor 
ui:field="storageDomainEditor" addStyleNames="{style.boxEditor}"/>
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java
index b7b78bb..25499b9 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java
@@ -227,6 +227,16 @@
         this.sizeExtend = sizeExtend;
     }
 
+    private EntityModel<Boolean> isVirtioScsiEnabled;
+
+    public EntityModel<Boolean> getIsVirtioScsiEnabled() {
+        return isVirtioScsiEnabled;
+    }
+
+    public void setIsVirtioScsiEnabled(EntityModel<Boolean> virtioScsiEnabled) 
{
+        this.isVirtioScsiEnabled = virtioScsiEnabled;
+    }
+
     public String getHash() {
         return hash;
     }
@@ -297,6 +307,8 @@
 
         setInternalAttachableDisks(new ListModel());
         setExternalAttachableDisks(new ListModel());
+
+        setIsVirtioScsiEnabled(new EntityModel<Boolean>());
     }
 
     public abstract boolean getIsNew();
@@ -525,14 +537,14 @@
             AsyncDataProvider.isVirtioScsiEnabledForVm(new AsyncQuery(this, 
new INewAsyncCallback() {
                 @Override
                 public void onSuccess(Object model, Object returnValue1) {
-                    final boolean isVirtioScsiDisabled = 
Boolean.FALSE.equals(returnValue1);
+                    
getIsVirtioScsiEnabled().setEntity(Boolean.TRUE.equals(returnValue1));
 
                     AsyncQuery asyncQuery = new AsyncQuery(this, new 
INewAsyncCallback() {
                         @Override
                         public void onSuccess(Object model, Object 
returnValue2) {
                             ArrayList<DiskInterface> diskInterfaces = 
(ArrayList<DiskInterface>) returnValue2;
 
-                            if (isVirtioScsiDisabled) {
+                            if 
(Boolean.FALSE.equals(getIsVirtioScsiEnabled().getEntity())) {
                                 
diskInterfaces.remove(DiskInterface.VirtIO_SCSI);
                             }
 


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9a2bd43de2adb0e85d3848042622fdce69e07ac0
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

Reply via email to