You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by pb...@apache.org on 2017/05/08 10:40:25 UTC

[19/37] oozie git commit: OOZIE-2850 Fix default callback notifications (asasvari via gezapeti)

OOZIE-2850 Fix default callback notifications (asasvari via gezapeti)


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

Branch: refs/heads/oya
Commit: ce7eb312b34d32841c85dde01cd24cf3e934fad4
Parents: f110c33
Author: Gezapeti Cseh <ge...@gmail.com>
Authored: Wed Apr 5 15:25:29 2017 +0200
Committer: Gezapeti Cseh <ge...@gmail.com>
Committed: Wed Apr 5 15:25:29 2017 +0200

----------------------------------------------------------------------
 core/src/main/resources/oozie-default.xml       |  2 +-
 .../oozie/service/TestConfigurationService.java |  4 +-
 release-log.txt                                 |  1 +
 .../oozie/server/EmbeddedOozieServer.java       | 20 +++++-
 .../ConstraintSecurityHandlerProvider.java      | 15 ++++-
 .../oozie/server/TestEmbeddedOozieServer.java   |  2 +
 .../TestConstraintSecurityHandlerProvider.java  | 66 ++++++++++++++++++++
 7 files changed, 104 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oozie/blob/ce7eb312/core/src/main/resources/oozie-default.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/oozie-default.xml b/core/src/main/resources/oozie-default.xml
index c2f874f..fe095ca 100644
--- a/core/src/main/resources/oozie-default.xml
+++ b/core/src/main/resources/oozie-default.xml
@@ -102,7 +102,7 @@
 
     <property>
         <name>oozie.base.url</name>
-        <value>http://localhost:8080/oozie</value>
+        <value>http://${oozie.http.hostname}:${oozie.http.port}/oozie</value>
         <description>
              Base Oozie URL.
         </description>

http://git-wip-us.apache.org/repos/asf/oozie/blob/ce7eb312/core/src/test/java/org/apache/oozie/service/TestConfigurationService.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/oozie/service/TestConfigurationService.java b/core/src/test/java/org/apache/oozie/service/TestConfigurationService.java
index 42ffdbe..2a3d3d3 100644
--- a/core/src/test/java/org/apache/oozie/service/TestConfigurationService.java
+++ b/core/src/test/java/org/apache/oozie/service/TestConfigurationService.java
@@ -173,7 +173,7 @@ public class TestConfigurationService extends XTestCase {
         assertEquals("oozie-conf", ConfigurationService.get("test.nonexist"));
         assertEquals(ConfigUtils.STRING_DEFAULT, ConfigurationService.get(testConf, "test.nonexist"));
 
-        assertEquals("http://localhost:8080/oozie/callback", ConfigurationService.get(CallbackService.CONF_BASE_URL));
+        assertEquals("http://0.0.0.0:11000/oozie/callback", ConfigurationService.get(CallbackService.CONF_BASE_URL));
         assertEquals(5, ConfigurationService.getInt(CallbackService.CONF_EARLY_REQUEUE_MAX_RETRIES));
         assertEquals("gz", ConfigurationService.get(CodecFactory.COMPRESSION_OUTPUT_CODEC));
         assertEquals(4096, ConfigurationService.getInt(XLogStreamingService.STREAM_BUFFER_LEN));
@@ -208,7 +208,7 @@ public class TestConfigurationService extends XTestCase {
         assertEquals("10", ConfigurationService.get(JPAService.CONF_VALIDATE_DB_CONN_EVICTION_NUM).trim());
 
         assertEquals(2048, ConfigurationService.getInt(LauncherMapper.CONF_OOZIE_ACTION_MAX_OUTPUT_DATA));
-        assertEquals("http://localhost:8080/oozie?job=", ConfigurationService.get(JobXCommand.CONF_CONSOLE_URL));
+        assertEquals("http://0.0.0.0:11000/oozie?job=", ConfigurationService.get(JobXCommand.CONF_CONSOLE_URL));
         assertEquals(true, ConfigurationService.getBoolean(JavaActionExecutor.CONF_HADOOP_YARN_UBER_MODE));
         assertEquals(false, ConfigurationService.getBoolean(
                 "oozie.action.shell.launcher." + JavaActionExecutor.HADOOP_YARN_UBER_MODE));

http://git-wip-us.apache.org/repos/asf/oozie/blob/ce7eb312/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index faa30b7..4ccc9e5 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -1,5 +1,6 @@
 -- Oozie 4.4.0 release (trunk - unreleased)
 
+OOZIE-2850 Fix default callback notifications (asasvari via gezapeti)
 OOZIE-1283 Remove the old ssh documentation (Jan Hentschel via rkanter)
 OOZIE-2845 Replace reflection-based code which sets variable in HiveConf (pbacsko via abhishekbafna)
 OOZIE-2831 Update maven-project-info-reports-plugin to 2.9 (asasvari via gezapeti)

http://git-wip-us.apache.org/repos/asf/oozie/blob/ce7eb312/server/src/main/java/org/apache/oozie/server/EmbeddedOozieServer.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/oozie/server/EmbeddedOozieServer.java b/server/src/main/java/org/apache/oozie/server/EmbeddedOozieServer.java
index b7918b7..ab0d7ea 100644
--- a/server/src/main/java/org/apache/oozie/server/EmbeddedOozieServer.java
+++ b/server/src/main/java/org/apache/oozie/server/EmbeddedOozieServer.java
@@ -49,6 +49,7 @@ import java.net.URISyntaxException;
  */
 public class EmbeddedOozieServer {
     private static final Logger LOG = LoggerFactory.getLogger(EmbeddedOozieServer.class);
+    private static String contextPath;
     protected Server server;
     private int httpPort;
     private int httpsPort;
@@ -106,7 +107,7 @@ public class EmbeddedOozieServer {
      */
     public void setup() throws URISyntaxException, IOException, ServiceException {
         conf = serviceController.get(ConfigurationService.class).getConf();
-
+        setContextPath(conf);
         httpPort = getConfigPort(ConfigUtils.OOZIE_HTTP_PORT);
 
         HttpConfiguration httpConfiguration = new HttpConfigurationWrapper(conf).getDefaultHttpConfiguration();
@@ -128,7 +129,7 @@ public class EmbeddedOozieServer {
             server.setConnectors(new Connector[]{connector});
         }
 
-        servletContextHandler.setContextPath("/oozie/");
+        servletContextHandler.setContextPath(contextPath);
         oozieServletMapper.mapOozieServlets();
         oozieFilterMapper.addFilters();
 
@@ -168,6 +169,21 @@ public class EmbeddedOozieServer {
         return isSSLEnabled != null && Boolean.valueOf(isSSLEnabled);
     }
 
+    public static void setContextPath(Configuration oozieConfiguration) {
+        String baseUrl = oozieConfiguration.get("oozie.base.url");
+        String contextPath = baseUrl.substring(baseUrl.lastIndexOf("/"));
+        LOG.info("Server started with contextPath = " + contextPath);
+        EmbeddedOozieServer.contextPath = contextPath;
+    }
+
+    public static String getContextPath(Configuration oozieConfiguration) {
+        if (contextPath != null) {
+            return contextPath;
+        }
+
+        setContextPath(oozieConfiguration);
+        return EmbeddedOozieServer.contextPath;
+    }
 
     public void start() throws Exception {
         server.start();

http://git-wip-us.apache.org/repos/asf/oozie/blob/ce7eb312/server/src/main/java/org/apache/oozie/server/guice/ConstraintSecurityHandlerProvider.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/oozie/server/guice/ConstraintSecurityHandlerProvider.java b/server/src/main/java/org/apache/oozie/server/guice/ConstraintSecurityHandlerProvider.java
index 6c313fe..48cc469 100644
--- a/server/src/main/java/org/apache/oozie/server/guice/ConstraintSecurityHandlerProvider.java
+++ b/server/src/main/java/org/apache/oozie/server/guice/ConstraintSecurityHandlerProvider.java
@@ -18,7 +18,12 @@
 
 package org.apache.oozie.server.guice;
 
+import com.google.inject.Inject;
 import com.google.inject.Provider;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.oozie.server.EmbeddedOozieServer;
+import org.apache.oozie.service.ConfigurationService;
+import org.apache.oozie.service.Services;
 import org.eclipse.jetty.security.ConstraintMapping;
 import org.eclipse.jetty.security.ConstraintSecurityHandler;
 import org.eclipse.jetty.util.security.Constraint;
@@ -26,10 +31,18 @@ import org.eclipse.jetty.util.security.Constraint;
 import java.util.Arrays;
 
 class ConstraintSecurityHandlerProvider implements Provider<ConstraintSecurityHandler> {
+    private final Configuration oozieConfiguration;
+
+    @Inject
+    public ConstraintSecurityHandlerProvider(final Services oozieServices) {
+        oozieConfiguration = oozieServices.get(ConfigurationService.class).getConf();
+    }
+
     @Override
     public ConstraintSecurityHandler get() {
+        String contextPath = EmbeddedOozieServer.getContextPath(oozieConfiguration);
         ConstraintMapping callbackConstraintMapping = new ConstraintMapping();
-        callbackConstraintMapping.setPathSpec("/callback/*");
+        callbackConstraintMapping.setPathSpec(String.format("%s/callback/*", contextPath));
         Constraint unsecureConstraint = new Constraint();
         unsecureConstraint.setDataConstraint(Constraint.DC_NONE);
         callbackConstraintMapping.setConstraint(unsecureConstraint);

http://git-wip-us.apache.org/repos/asf/oozie/blob/ce7eb312/server/src/test/java/org/apache/oozie/server/TestEmbeddedOozieServer.java
----------------------------------------------------------------------
diff --git a/server/src/test/java/org/apache/oozie/server/TestEmbeddedOozieServer.java b/server/src/test/java/org/apache/oozie/server/TestEmbeddedOozieServer.java
index 0f36e8c..f073256 100644
--- a/server/src/test/java/org/apache/oozie/server/TestEmbeddedOozieServer.java
+++ b/server/src/test/java/org/apache/oozie/server/TestEmbeddedOozieServer.java
@@ -74,6 +74,7 @@ public class TestEmbeddedOozieServer {
         doReturn("65536").when(mockConfiguration).get("oozie.http.request.header.size");
         doReturn("65536").when(mockConfiguration).get("oozie.http.response.header.size");
         doReturn("42").when(mockConfiguration).get("oozie.server.threadpool.max.threads");
+        doReturn("https://localhost:11443/oozie").when(mockConfiguration).get("oozie.base.url");
         doReturn(mockConfiguration).when(mockConfigService).getConf();
         doReturn(mockConfigService).when(mockServices).get(ConfigurationService.class);
     }
@@ -91,6 +92,7 @@ public class TestEmbeddedOozieServer {
     @Test
     public void testServerSetup() throws Exception {
         doReturn("false").when(mockConfiguration).get("oozie.https.enabled");
+
         embeddedOozieServer.setup();
         verify(mockJspHandler).setupWebAppContext(isA(WebAppContext.class));
     }

http://git-wip-us.apache.org/repos/asf/oozie/blob/ce7eb312/server/src/test/java/org/apache/oozie/server/guice/TestConstraintSecurityHandlerProvider.java
----------------------------------------------------------------------
diff --git a/server/src/test/java/org/apache/oozie/server/guice/TestConstraintSecurityHandlerProvider.java b/server/src/test/java/org/apache/oozie/server/guice/TestConstraintSecurityHandlerProvider.java
new file mode 100644
index 0000000..d5f72f7
--- /dev/null
+++ b/server/src/test/java/org/apache/oozie/server/guice/TestConstraintSecurityHandlerProvider.java
@@ -0,0 +1,66 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * 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
+ *
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.oozie.server.guice;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.oozie.server.EmbeddedOozieServer;
+import org.apache.oozie.service.ConfigurationService;
+import org.apache.oozie.service.Services;
+import org.eclipse.jetty.security.ConstraintMapping;
+import org.eclipse.jetty.security.ConstraintSecurityHandler;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+@RunWith(MockitoJUnitRunner.class)
+public class TestConstraintSecurityHandlerProvider {
+    @Mock Services mockServices;
+    @Mock ConfigurationService mockCfgService;
+    @Mock Configuration mockConfig;
+
+    @Test
+    public void constraintHandlersCanBeSet() {
+        Configuration config = new Configuration(false);
+        config.set("oozie.base.url", "https://localhost:11443/oozie");
+        when(mockCfgService.getConf()).thenReturn(config);
+        when(mockServices.get(ConfigurationService.class)).thenReturn(mockCfgService);
+
+        ConstraintSecurityHandlerProvider constraintSecurityHandlerProvider = new ConstraintSecurityHandlerProvider(
+                mockServices);
+        ConstraintSecurityHandler actConstraintSecurityHandler = constraintSecurityHandlerProvider.get();
+        List<ConstraintMapping> actConstraintMappings = actConstraintSecurityHandler.getConstraintMappings();
+        assertEquals(actConstraintMappings.size(), 2);
+
+        List<String> actPathSpecs = new ArrayList<>();
+        for (ConstraintMapping sm : actConstraintMappings) {
+            actPathSpecs.add(sm.getPathSpec());
+        }
+
+        assertTrue(actPathSpecs.contains(String.format("%s/callback/*", EmbeddedOozieServer.getContextPath(config))));
+        assertTrue(actPathSpecs.contains("/*"));
+    }
+}