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

Reply via email to