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

Reply via email to