Ravi Nori has uploaded a new change for review. Change subject: core, webadmin : Fix issues with reports integration ......................................................................
core, webadmin : Fix issues with reports integration Reports tab and right click reports generation need to use different url to access reports. Reports tab is not updated when clicking on system tree. Sometimes null uri is sent to reports. Change-Id: Id5e91aa80dcd4e4d4f175d0193e92d19e65281e6 Bug-Url: https://bugzilla.redhat.com/1116851 Signed-off-by: Ravi Nori <[email protected]> --- M backend/manager/modules/services/src/main/webapp/WEB-INF/web.xml M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportInit.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/reports/ReportsListModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabReportsPresenter.java M packaging/services/ovirt-engine/ovirt-engine.conf.in 7 files changed, 59 insertions(+), 44 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/38/33538/1 diff --git a/backend/manager/modules/services/src/main/webapp/WEB-INF/web.xml b/backend/manager/modules/services/src/main/webapp/WEB-INF/web.xml index 7aad30f..7eaeeb3 100644 --- a/backend/manager/modules/services/src/main/webapp/WEB-INF/web.xml +++ b/backend/manager/modules/services/src/main/webapp/WEB-INF/web.xml @@ -69,6 +69,19 @@ </servlet-mapping> <servlet> + <servlet-name>reports-rightclick-redirect</servlet-name> + <servlet-class>org.ovirt.engine.core.utils.servlet.RedirectServlet</servlet-class> + <init-param> + <param-name>url</param-name> + <param-value>%{ENGINE_REPORTS_RIGHTCLICK_URL}</param-value> + </init-param> + </servlet> + <servlet-mapping> + <servlet-name>reports-rightclick-redirect</servlet-name> + <url-pattern>/reports-rightclick-redirect</url-pattern> + </servlet-mapping> + + <servlet> <servlet-name>reports-interface-proxy</servlet-name> <servlet-class>org.ovirt.engine.core.services.ProxyServlet</servlet-class> <init-param> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportInit.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportInit.java index 2aedd56..b0a6fa1 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportInit.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ReportInit.java @@ -27,6 +27,7 @@ private static final int MAX_RETRY_COUNTS = 20; private static final int RETRY_INTERVAL = 30000; public static final String REDIRECT_SERVICE = "services/reports-redirect"; //$NON-NLS-1$ + public static final String RIGHT_CLICK_REDIRECT_SERVICE = "services/reports-rightclick-redirect"; //$NON-NLS-1$ public static final String STATUS_SERVICE = "services/reports-interface-proxy?command=status"; //$NON-NLS-1$ public static final String XML_SERVICE = "services/reports-interface-proxy?command=webadmin-ui-xml"; //$NON-NLS-1$ private int retryCount; @@ -37,6 +38,7 @@ private boolean initEventRaised; private Event reportsInitEvent; private String reportBaseUrl; + private String reportRightClickUrl; private String ssoToken; private boolean isCommunityEdition; @@ -59,6 +61,7 @@ initState(); setReportBaseUrl(buildUrl(REDIRECT_SERVICE)); + setReportRightClickUrl(buildUrl(RIGHT_CLICK_REDIRECT_SERVICE)); parseReportsXML(); } @@ -69,6 +72,7 @@ scheduledStatusCheckInProgress = false; initEventRaised = false; reportBaseUrl = ""; //$NON-NLS-1$ + reportRightClickUrl = ""; //$NON-NLS-1$ isCommunityEdition = false; resourceMap = new HashMap<String, Resource>(); dashboardMap = new HashMap<String, Dashboard>(); @@ -195,6 +199,14 @@ return reportBaseUrl; } + public void setReportRightClickUrl(String reportRightClickUrl) { + this.reportRightClickUrl = reportRightClickUrl; + } + + public String getReportRightClickUrl() { + return reportRightClickUrl; + } + public void setSsoToken(final String token) { this.ssoToken = token; checkIfInitFinished(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java index c91aae5..007825f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java @@ -308,16 +308,20 @@ // Select a default item depending on system tree selection. ListModel oldSelectedItem = getSelectedItem(); + boolean performSearch = false; // Do not Change Tab if the Selection is the Reports - if (!reportsList.getIsAvailable() || getSelectedItem() != reportsList) { + if (!reportsList.getIsAvailable() || + (getSelectedItem() != reportsList && !reportsList.isReportsTabSelected())) { changeSelectedTabIfNeeded(model); + performSearch = true; } else { reportsList.refreshReportModel(); } // Update search string if selected item was not changed. If it is, // search string will be updated in OnSelectedItemChanged method. - if (getSelectedItem() == oldSelectedItem) + // dont perform search if refreshing reports + if (performSearch && getSelectedItem() == oldSelectedItem) { String prefix = ""; //$NON-NLS-1$ String search = ""; //$NON-NLS-1$ @@ -545,7 +549,9 @@ private void setAllListModelsUnavailable() { for (ListModel m : getItems()) { - m.setIsAvailable(false); + if (!(m instanceof ReportsListModel)) { + m.setIsAvailable(false); + } } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java index 0bc081a..392a8ae 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java @@ -517,7 +517,7 @@ protected ReportModel createReportModel() { ReportCommand reportCommand = (ReportCommand) getLastExecutedCommand(); - ReportModel reportModel = new ReportModel(ReportInit.getInstance().getReportBaseUrl(), + ReportModel reportModel = new ReportModel(ReportInit.getInstance().getReportRightClickUrl(), ReportInit.getInstance().getSsoToken()); reportModel.setReportUnit(reportCommand.getUriValue()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/reports/ReportsListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/reports/ReportsListModel.java index 7e7bf22..34236c2 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/reports/ReportsListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/reports/ReportsListModel.java @@ -26,6 +26,8 @@ HtmlParameters htmlParams = new HtmlParameters(); private String lastResourceId = ""; //$NON-NLS-1$ private final String reportUrl; + private String uri; + private boolean reportsTabSelected = false; public ReportsListModel(String baseUrl, String ssoToken) { reportUrl = baseUrl; @@ -70,11 +72,16 @@ } public void setUri(String uri) { + this.uri = uri; if (ReportInit.getInstance().isCommunityEdition()) { htmlParams.setParameter("reportUnit", uri); //$NON-NLS-1$ } else { htmlParams.setParameter("dashboardResource", uri); //$NON-NLS-1$ } + } + + public String getUri() { + return uri; } private void clearTreeSensitiveParams() { @@ -193,4 +200,11 @@ return searchString.trim().toLowerCase().startsWith("reports"); //$NON-NLS-1$ } + public boolean isReportsTabSelected() { + return reportsTabSelected; + } + + public void setReportsTabSelected(boolean reportsTabSelected) { + this.reportsTabSelected = reportsTabSelected; + } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabReportsPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabReportsPresenter.java index e1add28..3cf244e 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabReportsPresenter.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabReportsPresenter.java @@ -3,18 +3,12 @@ import java.util.List; import java.util.Map; -import com.google.gwt.http.client.Request; -import com.google.gwt.http.client.RequestBuilder; -import com.google.gwt.http.client.RequestCallback; -import com.google.gwt.http.client.RequestException; -import com.google.gwt.http.client.Response; import org.ovirt.engine.ui.common.place.PlaceRequestFactory; import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider; import org.ovirt.engine.ui.common.widget.Align; import org.ovirt.engine.ui.common.widget.tab.ModelBoundTabData; import org.ovirt.engine.ui.common.widget.table.ActionTable; import org.ovirt.engine.ui.uicommonweb.ErrorPopupManager; -import org.ovirt.engine.ui.uicommonweb.ReportInit; import org.ovirt.engine.ui.uicommonweb.models.reports.ReportsListModel; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.EventArgs; @@ -38,8 +32,6 @@ public class MainTabReportsPresenter extends AbstractMainTabPresenter<Void, ReportsListModel, MainTabReportsPresenter.ViewDef, MainTabReportsPresenter.ProxyDef> { private static boolean reportsWebappDeployed = false; - private final ErrorPopupManager errorPopupManager; - private final ApplicationConstants applicationConstants; @ProxyCodeSplit @NameToken(ApplicationPlaces.reportsMainTabPlace) @@ -63,35 +55,7 @@ ErrorPopupManager errorPopupManager, ApplicationConstants applicationConstants, PlaceManager placeManager, MainModelProvider<Void, ReportsListModel> modelProvider) { super(eventBus, view, proxy, placeManager, modelProvider); - this.errorPopupManager = errorPopupManager; - this.applicationConstants = applicationConstants; getModel().getReportsAvailabilityEvent().addListener(new ReportsModelRefreshEvent()); - } - - private void checkUpdateReportsPanel(final String url, - final Map<String, List<String>> params) { - RequestBuilder requestBuilder = ReportInit.constructServiceRequestBuilder(ReportInit.STATUS_SERVICE); - try { - requestBuilder.setTimeoutMillis(1000); - requestBuilder.sendRequest(null, new RequestCallback() { - @Override - public void onError(Request request, Throwable exception) { - errorPopupManager.show(applicationConstants.reportsWebAppNotDeployedMsg()); - } - - @Override - public void onResponseReceived(Request request, Response response) { - if (response.getStatusCode() == Response.SC_OK) { - reportsWebappDeployed = true; - getView().updateReportsPanel(url, params); - } else { - errorPopupManager.show(applicationConstants.reportsWebAppNotDeployedMsg()); - } - } - }); - } catch (RequestException e) { - errorPopupManager.show(applicationConstants.reportsWebAppErrorMsg()); - } } @Override @@ -103,14 +67,21 @@ @Override protected void onReveal() { super.onReveal(); + getModel().setReportsTabSelected(true); + reportsWebappDeployed = true; getModel().updateReportsAvailability(); + } + + @Override + protected void onHide() { + super.onHide(); + getModel().setReportsTabSelected(false); } @Override protected void onReset() { super.onReset(); if (!hasReportsModelRefreshEvent()) { - reportsWebappDeployed = false; getModel().getReportsAvailabilityEvent().addListener(new ReportsModelRefreshEvent()); } setSubTabPanelVisible(false); @@ -129,10 +100,8 @@ class ReportsModelRefreshEvent implements IEventListener { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { - if (reportsWebappDeployed) { + if (reportsWebappDeployed && getModel().getUri() != null) { getView().updateReportsPanel(getModel().getUrl(), getModel().getParams()); - } else { - checkUpdateReportsPanel(getModel().getUrl(), getModel().getParams()); } } } diff --git a/packaging/services/ovirt-engine/ovirt-engine.conf.in b/packaging/services/ovirt-engine/ovirt-engine.conf.in index 794deb1..c7411d7 100644 --- a/packaging/services/ovirt-engine/ovirt-engine.conf.in +++ b/packaging/services/ovirt-engine/ovirt-engine.conf.in @@ -218,6 +218,7 @@ ENGINE_REPORTS_VERIFY_HOST=true ENGINE_REPORTS_VERIFY_CHAIN=true ENGINE_REPORTS_READ_TIMEOUT= +ENGINE_REPORTS_RIGHTCLICK_URL= ENGINE_EXTENSION_PATH="${ENGINE_USR}/extensions.d:${ENGINE_ETC}/extensions.d" -- To view, visit http://gerrit.ovirt.org/33538 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id5e91aa80dcd4e4d4f175d0193e92d19e65281e6 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Ravi Nori <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
