|
@@ -244,6 +244,7 @@ public class RMWebServices extends WebServices implements RMWebServiceProtocol {
|
|
boolean isCentralizedNodeLabelConfiguration = true;
|
|
boolean isCentralizedNodeLabelConfiguration = true;
|
|
private boolean filterAppsByUser = false;
|
|
private boolean filterAppsByUser = false;
|
|
private boolean filterInvalidXMLChars = false;
|
|
private boolean filterInvalidXMLChars = false;
|
|
|
|
+ private boolean enableRestAppSubmissions = true;
|
|
|
|
|
|
public final static String DELEGATION_TOKEN_HEADER =
|
|
public final static String DELEGATION_TOKEN_HEADER =
|
|
"Hadoop-YARN-RM-Delegation-Token";
|
|
"Hadoop-YARN-RM-Delegation-Token";
|
|
@@ -262,6 +263,9 @@ public class RMWebServices extends WebServices implements RMWebServiceProtocol {
|
|
this.filterInvalidXMLChars = conf.getBoolean(
|
|
this.filterInvalidXMLChars = conf.getBoolean(
|
|
YarnConfiguration.FILTER_INVALID_XML_CHARS,
|
|
YarnConfiguration.FILTER_INVALID_XML_CHARS,
|
|
YarnConfiguration.DEFAULT_FILTER_INVALID_XML_CHARS);
|
|
YarnConfiguration.DEFAULT_FILTER_INVALID_XML_CHARS);
|
|
|
|
+ this.enableRestAppSubmissions = conf.getBoolean(
|
|
|
|
+ YarnConfiguration.ENABLE_REST_APP_SUBMISSIONS,
|
|
|
|
+ YarnConfiguration.DEFAULT_ENABLE_REST_APP_SUBMISSIONS);
|
|
}
|
|
}
|
|
|
|
|
|
RMWebServices(ResourceManager rm, Configuration conf,
|
|
RMWebServices(ResourceManager rm, Configuration conf,
|
|
@@ -1716,6 +1720,10 @@ public class RMWebServices extends WebServices implements RMWebServiceProtocol {
|
|
@Override
|
|
@Override
|
|
public Response createNewApplication(@Context HttpServletRequest hsr)
|
|
public Response createNewApplication(@Context HttpServletRequest hsr)
|
|
throws AuthorizationException, IOException, InterruptedException {
|
|
throws AuthorizationException, IOException, InterruptedException {
|
|
|
|
+ if (!enableRestAppSubmissions) {
|
|
|
|
+ String msg = "App submission via REST is disabled.";
|
|
|
|
+ return Response.status(Status.FORBIDDEN).entity(msg).build();
|
|
|
|
+ }
|
|
UserGroupInformation callerUGI = getCallerUserGroupInformation(hsr, true);
|
|
UserGroupInformation callerUGI = getCallerUserGroupInformation(hsr, true);
|
|
initForWritableEndpoints(callerUGI, false);
|
|
initForWritableEndpoints(callerUGI, false);
|
|
|
|
|
|
@@ -1736,6 +1744,10 @@ public class RMWebServices extends WebServices implements RMWebServiceProtocol {
|
|
public Response submitApplication(ApplicationSubmissionContextInfo newApp,
|
|
public Response submitApplication(ApplicationSubmissionContextInfo newApp,
|
|
@Context HttpServletRequest hsr)
|
|
@Context HttpServletRequest hsr)
|
|
throws AuthorizationException, IOException, InterruptedException {
|
|
throws AuthorizationException, IOException, InterruptedException {
|
|
|
|
+ if (!enableRestAppSubmissions) {
|
|
|
|
+ String msg = "App submission via REST is disabled.";
|
|
|
|
+ return Response.status(Status.FORBIDDEN).entity(msg).build();
|
|
|
|
+ }
|
|
|
|
|
|
UserGroupInformation callerUGI = getCallerUserGroupInformation(hsr, true);
|
|
UserGroupInformation callerUGI = getCallerUserGroupInformation(hsr, true);
|
|
initForWritableEndpoints(callerUGI, false);
|
|
initForWritableEndpoints(callerUGI, false);
|