YARN-9986. Allow app owner to signal container via RMWebServices. Contributed by kyungwan nam.
This commit is contained in:
parent
3cecb2a469
commit
30b2096933
@ -2780,7 +2780,7 @@ public Response signalToContainer(
|
||||
@Context HttpServletRequest hsr)
|
||||
throws AuthorizationException {
|
||||
UserGroupInformation callerUGI = getCallerUserGroupInformation(hsr, true);
|
||||
initForWritableEndpoints(callerUGI, true);
|
||||
initForWritableEndpoints(callerUGI, false);
|
||||
if (!EnumUtils.isValidEnum(
|
||||
SignalContainerCommand.class, command.toUpperCase())) {
|
||||
String errMsg =
|
||||
|
@ -73,7 +73,7 @@ protected void configureServlets() {
|
||||
Configuration conf = new Configuration();
|
||||
conf.setClass(YarnConfiguration.RM_SCHEDULER, FifoScheduler.class,
|
||||
ResourceScheduler.class);
|
||||
conf.set(YarnConfiguration.YARN_ADMIN_ACL, userName);
|
||||
conf.set(YarnConfiguration.YARN_ADMIN_ACL, "admin");
|
||||
rm = new MockRM(conf);
|
||||
bind(ResourceManager.class).toInstance(rm);
|
||||
serve("/*").with(GuiceContainer.class);
|
||||
@ -141,7 +141,7 @@ public void testSignalContainer() throws Exception {
|
||||
assertTrue(
|
||||
response.getEntity(String.class).contains("Invalid ContainerId"));
|
||||
|
||||
// test correct signal
|
||||
// test correct signal by owner
|
||||
response =
|
||||
r.path("ws").path("v1").path("cluster").path("containers").path(
|
||||
app.getCurrentAppAttempt().getMasterContainer().getId().toString())
|
||||
@ -153,6 +153,18 @@ public void testSignalContainer() throws Exception {
|
||||
response.getType().toString());
|
||||
assertEquals(Response.SC_OK, response.getStatus());
|
||||
|
||||
// test correct signal by admin
|
||||
response =
|
||||
r.path("ws").path("v1").path("cluster").path("containers").path(
|
||||
app.getCurrentAppAttempt().getMasterContainer().getId().toString())
|
||||
.path("signal")
|
||||
.path(SignalContainerCommand.OUTPUT_THREAD_DUMP.name())
|
||||
.queryParam("user.name", "admin")
|
||||
.accept(MediaType.APPLICATION_JSON).post(ClientResponse.class);
|
||||
assertEquals(MediaType.APPLICATION_JSON_TYPE + "; " + JettyUtils.UTF_8,
|
||||
response.getType().toString());
|
||||
assertEquals(Response.SC_OK, response.getStatus());
|
||||
|
||||
rm.stop();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user