Browse Source

YARN-11318. Improve FederationInterceptorREST#createInterceptorForSubCluster Use WebAppUtils. (#4939)

slfan1989 2 years ago
parent
commit
874a004347

+ 3 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/FederationInterceptorREST.java

@@ -248,7 +248,9 @@ public class FederationInterceptorREST extends AbstractRESTRequestInterceptor {
           e);
     }
 
-    interceptorInstance.setWebAppAddress("http://" + webAppAddress);
+    String webAppAddresswithScheme =
+        WebAppUtils.getHttpSchemePrefix(this.getConf()) + webAppAddress;
+    interceptorInstance.setWebAppAddress(webAppAddresswithScheme);
     interceptorInstance.setSubClusterId(subClusterId);
     interceptors.put(subClusterId, interceptorInstance);
     return interceptorInstance;

+ 27 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestFederationInterceptorREST.java

@@ -30,6 +30,8 @@ import java.util.Collections;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
 
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.http.HttpConfig;
 import org.apache.hadoop.util.Time;
 import org.apache.hadoop.yarn.api.records.ApplicationId;
 import org.apache.hadoop.yarn.api.records.ReservationId;
@@ -89,6 +91,7 @@ import org.apache.hadoop.yarn.server.webapp.dao.ContainersInfo;
 import org.apache.hadoop.yarn.util.LRUCacheHashMap;
 import org.apache.hadoop.yarn.util.MonotonicClock;
 import org.apache.hadoop.yarn.util.Times;
+import org.apache.hadoop.yarn.webapp.util.WebAppUtils;
 import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -1127,4 +1130,28 @@ public class TestFederationInterceptorREST extends BaseRouterWebServicesTest {
     Assert.assertEquals(1, vCore);
     Assert.assertEquals(1024, memory);
   }
+
+  @Test
+  public void testWebAddressWithScheme() {
+    // The style of the web address reported by the subCluster in the heartbeat is 0.0.0.0:8000
+    // We design the following 2 test cases:
+    String webAppAddress = "0.0.0.0:8000";
+
+    // 1. We try to disable Https, at this point we should get the following link:
+    // http://0.0.0.0:8000
+    String expectedHttpWebAddress = "http://0.0.0.0:8000";
+    String webAppAddressWithScheme =
+        WebAppUtils.getHttpSchemePrefix(this.getConf()) + webAppAddress;
+    Assert.assertEquals(expectedHttpWebAddress, webAppAddressWithScheme);
+
+    // 2. We try to enable Https,at this point we should get the following link:
+    // https://0.0.0.0:8000
+    Configuration configuration = this.getConf();
+    configuration.set(YarnConfiguration.YARN_HTTP_POLICY_KEY,
+        HttpConfig.Policy.HTTPS_ONLY.name());
+    String expectedHttpsWebAddress = "https://0.0.0.0:8000";
+    String webAppAddressWithScheme2 =
+        WebAppUtils.getHttpSchemePrefix(this.getConf()) + webAppAddress;
+    Assert.assertEquals(expectedHttpsWebAddress, webAppAddressWithScheme2);
+  }
 }