Ravi Nori has uploaded a new change for review. Change subject: engine, webadmin: Webadmin needs to be able to read reports.xml via GET from remote reports app ......................................................................
engine, webadmin: Webadmin needs to be able to read reports.xml via GET from remote reports app in 3.5 report can be installed in separate server. Webadmin needs to be able to read reports.xml from that location via http. Change-Id: I76db7ab889f21de083bb3c8276e8abb77b68fdb3 Bug-Url: https://bugzilla.redhat.com/1116851 Signed-off-by: Ravi Nori <rn...@redhat.com> --- A backend/manager/modules/services/src/main/java/org/ovirt/engine/core/services/ReportsXmlServlet.java 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 3 files changed, 93 insertions(+), 3 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/23/29723/1 diff --git a/backend/manager/modules/services/src/main/java/org/ovirt/engine/core/services/ReportsXmlServlet.java b/backend/manager/modules/services/src/main/java/org/ovirt/engine/core/services/ReportsXmlServlet.java new file mode 100644 index 0000000..718eedc --- /dev/null +++ b/backend/manager/modules/services/src/main/java/org/ovirt/engine/core/services/ReportsXmlServlet.java @@ -0,0 +1,52 @@ +package org.ovirt.engine.core.services; + +import org.apache.commons.compress.utils.IOUtils; +import org.apache.commons.lang.StringUtils; +import org.ovirt.engine.core.common.config.Config; +import org.ovirt.engine.core.common.config.ConfigValues; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URL; + +/** + * The purpose of this servlet is to read reports xml from + * <RedirectServletPageReports>/reports.xml rather than read + * from engine_var/reports.xml as the reports web app can be + * installed on a remote machine + */ +@SuppressWarnings("serial") +public class ReportsXmlServlet extends HttpServlet { + + private void addAlert(OutputStream out, String message) throws IOException { + String msg = "<html><body><script>alert(\"" + message + "\");window.history.back()</script></body></html>"; + out.write(msg.getBytes()); + } + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + response.setContentType("text/html"); + OutputStream out = response.getOutputStream(); + String reportsUrl = Config.<String> getValue(ConfigValues.RedirectServletReportsPage); + try { + if (StringUtils.isEmpty(reportsUrl)) { + addAlert(out, "The reports application isn't installed."); + } + else { + String reportsXmlUrl = reportsUrl + "/reports.xml"; + InputStream xmlStream = new URL(reportsXmlUrl).openStream(); + IOUtils.copy(xmlStream, out); + } + } finally { + out.flush(); + out.close(); + } + } + +} 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 5df7ce9..e355c19 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 @@ -65,6 +65,15 @@ </servlet-mapping> <servlet> + <servlet-name>reports-xml</servlet-name> + <servlet-class>org.ovirt.engine.core.services.ReportsXmlServlet</servlet-class> + </servlet> + <servlet-mapping> + <servlet-name>reports-xml</servlet-name> + <url-pattern>/reports-xml</url-pattern> + </servlet-mapping> + + <servlet> <servlet-name>reports-ui</servlet-name> <servlet-class>org.ovirt.engine.core.utils.servlet.FileServlet</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 5872ce6..ecffa90 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 @@ -26,6 +26,7 @@ public class ReportInit { private static final ReportInit INSTANCE = new ReportInit(); + private static final String REPORTS_WEBAPP_DEPLOYED_MSG = "Reports Webapp Deployed"; //$NON-NLS-1$ private boolean reportsEnabled; private boolean xmlInitialized; private boolean urlInitialized; @@ -33,6 +34,7 @@ private String reportBaseUrl; private String ssoToken; private boolean isCommunityEdition; + private boolean reportsWebappDeployed; private Map<String, Resource> resourceMap; private Map<String, Dashboard> dashboardMap; @@ -59,8 +61,7 @@ setReportBaseUrl((String) returnValue); } })); - - parseReportsXML(); + checkReportsDeploymentStatus(); } private void initState() { @@ -89,13 +90,38 @@ return dashboardMap.get(type); } + private void checkReportsDeploymentStatus() { + RequestBuilder requestBuilder = + new RequestBuilder(RequestBuilder.GET, reportBaseUrl + "/Status"); //$NON-NLS-1$ + try { + requestBuilder.setTimeoutMillis(1000); + requestBuilder.sendRequest(null, new RequestCallback() { + @Override + public void onError(Request request, Throwable exception) { + // ignore error + } + + @Override + public void onResponseReceived(Request request, Response response) { + if (response.getStatusCode() == Response.SC_OK + && response.getText().trim().equals(REPORTS_WEBAPP_DEPLOYED_MSG)) { + reportsWebappDeployed = true; + parseReportsXML(); + } + } + }); + } catch (RequestException e) { + // ignore error + } + } + private void parseReportsXML() { RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, "/" //$NON-NLS-1$ + BaseContextPathData.getInstance().getRelativePath() - + "services/reports-ui"); //$NON-NLS-1$ + + "services/reports-xml"); //$NON-NLS-1$ try { requestBuilder.sendRequest(null, new RequestCallback() { @Override @@ -125,6 +151,9 @@ } public boolean isReportsEnabled() { + if (!reportsWebappDeployed) { + checkReportsDeploymentStatus(); + } return reportsEnabled; } -- To view, visit http://gerrit.ovirt.org/29723 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I76db7ab889f21de083bb3c8276e8abb77b68fdb3 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ravi Nori <rn...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches