Kanagaraj M has uploaded a new change for review.

Change subject: webadmin: Fix volume option dialog hang issue
......................................................................

webadmin: Fix volume option dialog hang issue

When there are no UP servers in the cluster, we
will not able to fecth the volume option help.
An error message will be shown to user in case
of any failures while fetching the option list.

Change-Id: I4264cabaeffc3c931069b4b368900a4c950f688f
Bug-Url: https://bugzilla.redhat.com/864649
Signed-off-by: Kanagaraj M <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterListModel.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.ui.xml
5 files changed, 62 insertions(+), 25 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/99/10299/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
index a8855bd..dd23292 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
@@ -8,7 +8,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.EventNotificationEntity;
@@ -29,6 +28,7 @@
 import org.ovirt.engine.core.common.businessentities.Role;
 import org.ovirt.engine.core.common.businessentities.ServerCpu;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
+import org.ovirt.engine.core.common.businessentities.StorageServerConnections;
 import org.ovirt.engine.core.common.businessentities.StorageType;
 import org.ovirt.engine.core.common.businessentities.TagsType;
 import org.ovirt.engine.core.common.businessentities.VDS;
@@ -46,11 +46,9 @@
 import org.ovirt.engine.core.common.businessentities.permissions;
 import org.ovirt.engine.core.common.businessentities.storage_domains;
 import org.ovirt.engine.core.common.businessentities.storage_pool;
-import org.ovirt.engine.core.common.businessentities.StorageServerConnections;
 import org.ovirt.engine.core.common.businessentities.tags;
 import org.ovirt.engine.core.common.businessentities.vm_pools;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
-import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeOptionInfo;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.interfaces.SearchType;
 import org.ovirt.engine.core.common.mode.ApplicationMode;
@@ -1039,24 +1037,6 @@
     }
 
     public static void GetGlusterVolumeOptionInfoList(AsyncQuery aQuery, Guid 
clusterId) {
-        aQuery.converterCallback = new IAsyncConverter() {
-            @Override
-            public Object Convert(Object source, AsyncQuery _asyncQuery)
-            {
-                if (source != null)
-                {
-                    ArrayList<GlusterVolumeOptionInfo> list =
-                            new 
ArrayList<GlusterVolumeOptionInfo>((Set<GlusterVolumeOptionInfo>) source);
-                    // user.cifs option will be present in the list by 
default, so adding it now
-                    GlusterVolumeOptionInfo cifsOption = new 
GlusterVolumeOptionInfo();
-                    cifsOption.setKey("user.cifs"); //$NON-NLS-1$
-                    list.add(cifsOption);
-                    return list;
-                }
-
-                return new ArrayList<GlusterVolumeOptionInfo>();
-            }
-        };
         Frontend.RunQuery(VdcQueryType.GetGlusterVolumeOptionsInfo, new 
GlusterParameters(clusterId), aQuery);
     }
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterListModel.java
index 5d4e6d5..15fd049 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterListModel.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.ui.uicommonweb.models.gluster;
 
 import java.util.ArrayList;
+import java.util.Set;
 
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
@@ -9,6 +10,7 @@
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeOptionEntity;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeOptionInfo;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.Frontend;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
@@ -113,6 +115,7 @@
 
         AsyncQuery _asyncQuery = new AsyncQuery();
         _asyncQuery.setModel(this);
+        _asyncQuery.setHandleFailure(true);
         _asyncQuery.asyncCallback = new INewAsyncCallback() {
             @Override
             public void OnSuccess(Object model, Object result)
@@ -120,9 +123,21 @@
                 VolumeParameterListModel volumeParameterListModel = 
(VolumeParameterListModel) model;
                 VolumeParameterModel innerParameterModel = 
(VolumeParameterModel) getWindow();
 
-                ArrayList<GlusterVolumeOptionInfo> optionInfoList = 
(ArrayList<GlusterVolumeOptionInfo>) result;
-                innerParameterModel.getKeyList().setItems(optionInfoList);
+                ArrayList<GlusterVolumeOptionInfo> optionInfoList = new 
ArrayList<GlusterVolumeOptionInfo>();
 
+                VdcQueryReturnValue returnValue = (VdcQueryReturnValue) result;
+
+                if (!returnValue.getSucceeded()) {
+                    
innerParameterModel.setMessage(ConstantsManager.getInstance()
+                            .getConstants()
+                            .errorInFetchingVolumeOptionList());
+                } else {
+                    optionInfoList =
+                            new 
ArrayList<GlusterVolumeOptionInfo>((Set<GlusterVolumeOptionInfo>) 
returnValue.getReturnValue());
+                    optionInfoList.add(getCifsVolumeOption());
+                }
+
+                innerParameterModel.getKeyList().setItems(optionInfoList);
                 innerParameterModel.StopProgress();
 
                 UICommand command = new UICommand("OnSetParameter", 
volumeParameterListModel); //$NON-NLS-1$
@@ -209,6 +224,7 @@
 
         AsyncQuery _asyncQuery = new AsyncQuery();
         _asyncQuery.setModel(this);
+        _asyncQuery.setHandleFailure(true);
         _asyncQuery.asyncCallback = new INewAsyncCallback() {
             @Override
             public void OnSuccess(Object model, Object result)
@@ -216,7 +232,20 @@
                 VolumeParameterListModel volumeParameterListModel = 
(VolumeParameterListModel) model;
                 VolumeParameterModel innerParameterModel = 
(VolumeParameterModel) getWindow();
 
-                ArrayList<GlusterVolumeOptionInfo> optionInfoList = 
(ArrayList<GlusterVolumeOptionInfo>) result;
+                ArrayList<GlusterVolumeOptionInfo> optionInfoList = new 
ArrayList<GlusterVolumeOptionInfo>();
+
+                VdcQueryReturnValue returnValue = (VdcQueryReturnValue) result;
+
+                if (!returnValue.getSucceeded()) {
+                    
innerParameterModel.setMessage(ConstantsManager.getInstance()
+                            .getConstants()
+                            .errorInFetchingVolumeOptionList());
+                } else {
+                    optionInfoList =
+                            new 
ArrayList<GlusterVolumeOptionInfo>((Set<GlusterVolumeOptionInfo>) 
returnValue.getReturnValue());
+                    optionInfoList.add(getCifsVolumeOption());
+                }
+
                 innerParameterModel.getKeyList().setItems(optionInfoList);
 
                 GlusterVolumeOptionEntity selectedOption = 
(GlusterVolumeOptionEntity) getSelectedItem();
@@ -239,6 +268,12 @@
         AsyncDataProvider.GetGlusterVolumeOptionInfoList(_asyncQuery, 
volume.getClusterId());
     }
 
+    private GlusterVolumeOptionInfo getCifsVolumeOption() {
+        GlusterVolumeOptionInfo cifsOption = new GlusterVolumeOptionInfo();
+        cifsOption.setKey("user.cifs"); //$NON-NLS-1$
+        return cifsOption;
+    }
+
     private void resetParameter() {
         if (getWindow() != null)
         {
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
index 4d1f2c3..1dc3275 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
@@ -1350,6 +1350,9 @@
     @DefaultStringValue("Edit Option")
     String editOptionVolume();
 
+    @DefaultStringValue("Error in fetching volume option list, please try 
again.")
+    String errorInFetchingVolumeOptionList();
+
     @DefaultStringValue("Reset Option")
     String resetOptionVolumeTitle();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.java
index 5f517a5..451a8f2 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.java
@@ -20,6 +20,7 @@
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.ui.Label;
 import com.google.inject.Inject;
 
 public class VolumeParameterPopupView extends 
AbstractModelBoundPopupView<VolumeParameterModel> implements 
VolumeParameterPopupPresenterWidget.ViewDef {
@@ -61,6 +62,10 @@
     @UiField
     @Path(value = "value.entity")
     EntityModelTextBoxEditor valueEditor;
+
+    @UiField
+    @Ignore
+    Label messageLabel;
 
     @Inject
     public VolumeParameterPopupView(EventBus eventBus, ApplicationResources 
resources, ApplicationConstants constants) {
@@ -105,4 +110,9 @@
         return Driver.driver.flush();
     }
 
+    @Override
+    public void setMessage(String message) {
+        super.setMessage(message);
+        messageLabel.setText(message);
+    }
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.ui.xml
index 50911c2..b8f3c24 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.ui.xml
@@ -9,17 +9,26 @@
                .description textarea{
                        height: 130px;
                }
+
                .key label{
                        margin-left: 0px;
                }
+
+               .messageLabel {
+                       color: #FF0000;
+                       left: 10px;
+                       padding-top: 5px;
+                       padding-left: 5px;
+               }
        </ui:style>
        
-       <d:SimpleDialogPanel width="450px" height="300px">
+       <d:SimpleDialogPanel width="450px" height="320px">
                <d:content>
                        <g:VerticalPanel>
                                <w:ComboBox ui:field="keyComboBox" 
addStyleNames="{style.key}"/>
                                <e:EntityModelTextAreaLabelEditor  
addStyleNames="{style.description}" ui:field="descriptionEditor"/>
                                <e:EntityModelTextBoxEditor 
ui:field="valueEditor" />
+                               <g:Label ui:field="messageLabel" 
addStyleNames="{style.messageLabel}" />
                        </g:VerticalPanel>
                </d:content>
        </d:SimpleDialogPanel>


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4264cabaeffc3c931069b4b368900a4c950f688f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Kanagaraj M <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to