MAPREDUCE-7260. Cross origin request support for Job history server web UI. Contributed by Adam Antal
This commit is contained in:
parent
825db8fe2a
commit
7f3e1e0c07
|
@ -255,6 +255,13 @@ public class JHAdminConfig {
|
|||
public static final String MR_HISTORY_XFS_OPTIONS = MR_HISTORY_XFS_PREFIX +
|
||||
"xframe-options";
|
||||
|
||||
/**
|
||||
* CORS settings.
|
||||
*/
|
||||
public static final String MR_HISTORY_ENABLE_CORS_FILTER = MR_HISTORY_PREFIX +
|
||||
"webapp.cross-origin.enabled";
|
||||
public static final boolean DEFAULT_MR_HISTORY_ENABLE_CORS_FILTER = false;
|
||||
|
||||
/**
|
||||
* Settings for .jhist file format.
|
||||
*/
|
||||
|
|
|
@ -75,6 +75,7 @@ import org.apache.hadoop.mapreduce.v2.hs.webapp.HsWebApp;
|
|||
import org.apache.hadoop.mapreduce.v2.jobhistory.JHAdminConfig;
|
||||
import org.apache.hadoop.mapreduce.v2.util.MRWebAppUtil;
|
||||
import org.apache.hadoop.net.NetUtils;
|
||||
import org.apache.hadoop.security.HttpCrossOriginFilterInitializer;
|
||||
import org.apache.hadoop.security.UserGroupInformation;
|
||||
import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod;
|
||||
import org.apache.hadoop.security.token.Token;
|
||||
|
@ -154,6 +155,9 @@ public class HistoryClientService extends AbstractService {
|
|||
@VisibleForTesting
|
||||
protected void initializeWebApp(Configuration conf) throws IOException {
|
||||
webApp = new HsWebApp(history);
|
||||
|
||||
setupFilters(conf);
|
||||
|
||||
InetSocketAddress bindAddress = MRWebAppUtil.getJHSWebBindAddress(conf);
|
||||
ApplicationClientProtocol appClientProtocol =
|
||||
ClientRMProxy.createRMProxy(conf, ApplicationClientProtocol.class);
|
||||
|
@ -196,6 +200,17 @@ public class HistoryClientService extends AbstractService {
|
|||
return this.bindAddress;
|
||||
}
|
||||
|
||||
private void setupFilters(Configuration conf) {
|
||||
boolean enableCorsFilter =
|
||||
conf.getBoolean(JHAdminConfig.MR_HISTORY_ENABLE_CORS_FILTER,
|
||||
JHAdminConfig.DEFAULT_MR_HISTORY_ENABLE_CORS_FILTER);
|
||||
|
||||
if (enableCorsFilter) {
|
||||
conf.setBoolean(HttpCrossOriginFilterInitializer.PREFIX
|
||||
+ HttpCrossOriginFilterInitializer.ENABLED_SUFFIX, true);
|
||||
}
|
||||
}
|
||||
|
||||
private class HSClientProtocolHandler implements HSClientProtocol {
|
||||
|
||||
private RecordFactory recordFactory = RecordFactoryProvider.getRecordFactory(null);
|
||||
|
|
Loading…
Reference in New Issue