Kanagaraj M has uploaded a new change for review.

Change subject: webadmin: Fix brick advanced details hang issue
......................................................................

webadmin: Fix brick advanced details hang issue

Brick Advanced details query might fail when the
corresponding brick process is down.

An error message will be shown in Advanced details
popup if the query is failed.

Change-Id: Ie880c7eb7435f96bd081473dcffe78c10f1658cd
Bug-Url: https://bugzilla.redhat.com/886411
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/VolumeBrickListModel.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/BrickAdvancedDetailsPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.ui.xml
5 files changed, 40 insertions(+), 11 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/73/10273/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..db3492b 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
@@ -29,6 +29,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,7 +47,6 @@
 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;
@@ -1096,13 +1096,6 @@
     }
 
     public static void GetGlusterVolumeBrickDetails(AsyncQuery aQuery, Guid 
clusterId, String volume, String brick) {
-        aQuery.converterCallback = new IAsyncConverter() {
-            @Override
-            public Object Convert(Object source, AsyncQuery _asyncQuery)
-            {
-                return source;
-            }
-        };
         GlusterVolumeAdvancedDetailsParameters parameters =
                 new GlusterVolumeAdvancedDetailsParameters(clusterId, volume, 
brick, true);
         Frontend.RunQuery(VdcQueryType.GetGlusterVolumeAdvancedDetails,
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java
index a85dae5..c5bcfee 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeBrickListModel.java
@@ -20,6 +20,7 @@
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
 import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeType;
 import org.ovirt.engine.core.common.businessentities.gluster.Mempool;
+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;
@@ -140,7 +141,8 @@
 
         getReplaceBrickCommand().setIsExecutionAllowed(getSelectedItems() != 
null && getSelectedItems().size() == 1);
         
getBrickAdvancedDetailsCommand().setIsExecutionAllowed(getSelectedItems() != 
null
-                && getSelectedItems().size() == 1 && ((GlusterVolumeEntity) 
getEntity()).isOnline());
+                && getSelectedItems().size() == 1 && ((GlusterVolumeEntity) 
getEntity()).isOnline()
+                && getSelectedItems().get(0) != null && ((GlusterBrickEntity) 
getSelectedItems().get(0)).isOnline());
     }
 
     @Override
@@ -712,7 +714,16 @@
             public void OnSuccess(Object model, Object result)
             {
                 brickModel.StopProgress();
-                GlusterVolumeAdvancedDetails advDetails = 
(GlusterVolumeAdvancedDetails) result;
+
+                VdcQueryReturnValue returnValue = (VdcQueryReturnValue) result;
+                if (returnValue == null || !returnValue.getSucceeded()) {
+                    brickModel.setMessage(ConstantsManager.getInstance()
+                            .getConstants()
+                            .errorInFetchingBrickAdvancedDetails());
+                    return;
+                }
+
+                GlusterVolumeAdvancedDetails advDetails = 
(GlusterVolumeAdvancedDetails) returnValue.getReturnValue();
                 
brickModel.getBrick().setEntity(brickEntity.getQualifiedName());
                 if (advDetails != null && advDetails.getBrickDetails() != null
                         && advDetails.getBrickDetails().size() == 1)
@@ -736,7 +747,7 @@
                     brickModel.getMemoryPools().setItems(memoryPools);
                 }
             }
-        }), volumeEntity.getClusterId(), volumeEntity.getName(), 
brickEntity.getQualifiedName());
+        },true), volumeEntity.getClusterId(), volumeEntity.getName(), 
brickEntity.getQualifiedName());
 
         UICommand command = new UICommand("Cancel", this); //$NON-NLS-1$
         
command.setTitle(ConstantsManager.getInstance().getConstants().close());
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..7df9551 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
@@ -1389,6 +1389,9 @@
     @DefaultStringValue("Brick Details")
     String advancedDetailsBrickTitle();
 
+    @DefaultStringValue("Error in fetching the brick details, please try 
again.")
+    String errorInFetchingBrickAdvancedDetails();
+
     @DefaultStringValue("Are you sure want to remove the following Brick(s)?")
     String removeBricksMessage();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.java
index bc1ad66..ae24836 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.java
@@ -25,6 +25,7 @@
 import com.google.gwt.resources.client.CssResource;
 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 BrickAdvancedDetailsPopupView extends 
AbstractModelBoundPopupView<BrickAdvancedDetailsModel> implements 
BrickAdvancedDetailsPopupPresenterWidget.ViewDef {
@@ -169,6 +170,10 @@
     @Ignore
     @WithElementId
     EntityModelCellTable<ListModel> memoryPoolsTable;
+
+    @UiField
+    @Ignore
+    Label messageLabel;
 
     @Inject
     public BrickAdvancedDetailsPopupView(EventBus eventBus, 
ApplicationResources resources, ApplicationConstants constants) {
@@ -344,6 +349,12 @@
         return Driver.driver.flush();
     }
 
+    @Override
+    public void setMessage(String message) {
+        super.setMessage(message);
+        messageLabel.setText(message);
+    }
+
     interface WidgetStyle extends CssResource {
         String memStatLabel();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.ui.xml
index 863e126..8907382 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/BrickAdvancedDetailsPopupView.ui.xml
@@ -11,14 +11,24 @@
                        width: 615px;
                        border: 1px solid #CED8DF;
                }
+
                .memStatLabel{
                        width: 150px;
                }
+
                .memStatValue{
                        width: 150px;
                }
+
                .generalValue{
                        width: 300px;
+               }
+
+               .messageLabel {
+                       color: #FF0000;
+                       left: 10px;
+                       padding-top: 50px;
+                       padding-left: 5px;
                }
        </ui:style>
 
@@ -39,6 +49,7 @@
                                                                
<e:EntityModelLabelEditor ui:field="blockSizeEditor" />
                                                                
<e:EntityModelTextAreaLabelEditor ui:field="mountOptionsEditor" />
                                                                
<e:EntityModelLabelEditor ui:field="fileSystemEditor" />
+                                                               <g:Label 
ui:field="messageLabel" addStyleNames="{style.messageLabel}" />
                                                        </g:FlowPanel>
                                                </t:content>
                                        </t:DialogTab>


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

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