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
