Repository: atlas
Updated Branches:
  refs/heads/0.8-incubating f800575ef -> 165886de9


ATLAS-1960: fixed handling of import/export APIs in HA configuration

Signed-off-by: Madhan Neethiraj <mad...@apache.org>
(cherry picked from commit d23d61b2a88a472978dcd15428a61dfa48d31215)


Project: http://git-wip-us.apache.org/repos/asf/atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/atlas/commit/165886de
Tree: http://git-wip-us.apache.org/repos/asf/atlas/tree/165886de
Diff: http://git-wip-us.apache.org/repos/asf/atlas/diff/165886de

Branch: refs/heads/0.8-incubating
Commit: 165886de944b308d18a75e373d97dab52b1b374e
Parents: f800575
Author: ashutoshm <ames...@hortonworks.com>
Authored: Fri Jul 21 12:17:42 2017 -0700
Committer: Madhan Neethiraj <mad...@apache.org>
Committed: Fri Jul 21 19:44:40 2017 -0700

----------------------------------------------------------------------
 .../atlas/web/filters/ActiveServerFilter.java   | 15 ++++++++-
 .../web/filters/ActiveServerFilterTest.java     | 35 ++++++++++++++++----
 2 files changed, 42 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/atlas/blob/165886de/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java
----------------------------------------------------------------------
diff --git 
a/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java 
b/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java
index 36f2688..29d829f 100644
--- a/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java
+++ b/webapp/src/main/java/org/apache/atlas/web/filters/ActiveServerFilter.java
@@ -100,10 +100,23 @@ public class ActiveServerFilter implements Filter {
         }
     }
 
+    final String adminUriNotFiltered[] = { "/admin/export", "/admin/import", 
"/admin/importfile" };
     private boolean isFilteredURI(ServletRequest servletRequest) {
         HttpServletRequest httpServletRequest = (HttpServletRequest) 
servletRequest;
         String requestURI = httpServletRequest.getRequestURI();
-        return requestURI.contains("/admin/");
+
+        if(requestURI.contains("/admin/")) {
+            for (String s : adminUriNotFiltered) {
+                if (requestURI.contains(s)) {
+                    LOG.error("URL not supported in HA mode: {}", requestURI);
+                    return false;
+                }
+            }
+
+            return true;
+        } else {
+            return false;
+        }
     }
 
     boolean isInstanceActive() {

http://git-wip-us.apache.org/repos/asf/atlas/blob/165886de/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java
----------------------------------------------------------------------
diff --git 
a/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java 
b/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java
index a8d1110..3396072 100644
--- 
a/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java
+++ 
b/webapp/src/test/java/org/apache/atlas/web/filters/ActiveServerFilterTest.java
@@ -6,9 +6,9 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -99,7 +99,28 @@ public class ActiveServerFilterTest {
 
         activeServerFilter.doFilter(servletRequest, servletResponse, 
filterChain);
 
-        verify(servletResponse).sendRedirect(ACTIVE_SERVER_ADDRESS+"types");
+        verify(servletResponse).sendRedirect(ACTIVE_SERVER_ADDRESS + "types");
+    }
+
+
+    @Test
+    public void 
adminImportRequestsToPassiveServerShouldToActiveServerAddress() throws 
IOException, ServletException {
+        String importExportUrls[] = {"api/admin/export", "api/admin/import", 
"api/admin/importfile"};
+
+        for (String partialUrl : importExportUrls) {
+            
when(serviceState.getState()).thenReturn(ServiceState.ServiceStateValue.PASSIVE);
+            when(servletRequest.getRequestURI()).thenReturn(partialUrl);
+
+            ActiveServerFilter activeServerFilter = new 
ActiveServerFilter(activeInstanceState, serviceState);
+
+            
when(activeInstanceState.getActiveServerAddress()).thenReturn(ACTIVE_SERVER_ADDRESS);
+            when(servletRequest.getRequestURI()).thenReturn(partialUrl);
+            when(servletRequest.getMethod()).thenReturn(HttpMethod.GET);
+
+            activeServerFilter.doFilter(servletRequest, servletResponse, 
filterChain);
+
+            verify(servletResponse).sendRedirect(ACTIVE_SERVER_ADDRESS + 
partialUrl);
+        }
     }
 
     @Test
@@ -116,7 +137,7 @@ public class ActiveServerFilterTest {
 
         activeServerFilter.doFilter(servletRequest, servletResponse, 
filterChain);
 
-        
verify(servletResponse).sendRedirect(ACTIVE_SERVER_ADDRESS+"types?query=TRAIT");
+        verify(servletResponse).sendRedirect(ACTIVE_SERVER_ADDRESS + 
"types?query=TRAIT");
 
     }
 
@@ -133,7 +154,7 @@ public class ActiveServerFilterTest {
 
         activeServerFilter.doFilter(servletRequest, servletResponse, 
filterChain);
 
-        verify(servletResponse).setHeader("Location", 
ACTIVE_SERVER_ADDRESS+"types");
+        verify(servletResponse).setHeader("Location", ACTIVE_SERVER_ADDRESS + 
"types");
         
verify(servletResponse).setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT);
     }
 
@@ -150,7 +171,7 @@ public class ActiveServerFilterTest {
 
         activeServerFilter.doFilter(servletRequest, servletResponse, 
filterChain);
 
-        verify(servletResponse).setHeader("Location", 
ACTIVE_SERVER_ADDRESS+"types");
+        verify(servletResponse).setHeader("Location", ACTIVE_SERVER_ADDRESS + 
"types");
         
verify(servletResponse).setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT);
     }
 

Reply via email to