diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java index 2410053..7c294d6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java @@ -152,6 +152,9 @@ import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.StatisticsItemInfo; import org.apache.hadoop.yarn.server.security.ApplicationACLsManager; import org.apache.hadoop.yarn.server.utils.BuilderUtils; +import org.apache.hadoop.yarn.server.webapp.WebServices; +import org.apache.hadoop.yarn.server.webapp.dao.ContainerInfo; +import org.apache.hadoop.yarn.server.webapp.dao.ContainersInfo; import org.apache.hadoop.yarn.util.AdHocLogDumper; import org.apache.hadoop.yarn.util.ConverterUtils; import org.apache.hadoop.yarn.webapp.BadRequestException; @@ -165,7 +168,7 @@ @Singleton @Path("/ws/v1/cluster") -public class RMWebServices { +public class RMWebServices extends WebServices { private static final Log LOG = LogFactory.getLog(RMWebServices.class.getName()); private static final String EMPTY = ""; @@ -184,6 +187,7 @@ @Inject public RMWebServices(final ResourceManager rm, Configuration conf) { + super(rm.getClientRMService()); this.rm = rm; this.conf = conf; isDistributedNodeLabelConfiguration = @@ -612,39 +616,6 @@ public ApplicationStatisticsInfo getAppStatistics( return appStatInfo; } - private static Set parseQueries( - Set queries, boolean isState) { - Set params = new HashSet(); - if (!queries.isEmpty()) { - for (String query : queries) { - if (query != null && !query.trim().isEmpty()) { - String[] paramStrs = query.split(","); - for (String paramStr : paramStrs) { - if (paramStr != null && !paramStr.trim().isEmpty()) { - if (isState) { - try { - // enum string is in the uppercase - YarnApplicationState.valueOf( - StringUtils.toUpperCase(paramStr.trim())); - } catch (RuntimeException e) { - YarnApplicationState[] stateArray = - YarnApplicationState.values(); - String allAppStates = Arrays.toString(stateArray); - throw new BadRequestException( - "Invalid application-state " + paramStr.trim() - + " specified. It should be one of " + allAppStates); - } - } - params.add( - StringUtils.toLowerCase(paramStr.trim())); - } - } - } - } - } - return params; - } - private static Map> buildScoreboard( Set states, Set types) { Map> scoreboard @@ -724,6 +695,29 @@ public AppAttemptsInfo getAppAttempts(@Context HttpServletRequest hsr, } @GET + @Path("/apps/{appid}/appattempts/{appattemptid}/containers") + @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) + @Override + public ContainersInfo getContainers(@Context HttpServletRequest req, + @Context HttpServletResponse res, @PathParam("appid") String appId, + @PathParam("appattemptid") String appAttemptId) { + init(res); + return super.getContainers(req, res, appId, appAttemptId); + } + + @GET + @Path("/apps/{appid}/appattempts/{appattemptid}/containers/{containerid}") + @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) + @Override + public ContainerInfo getContainer(@Context HttpServletRequest req, + @Context HttpServletResponse res, @PathParam("appid") String appId, + @PathParam("appattemptid") String appAttemptId, + @PathParam("containerid") String containerId) { + init(res); + return super.getContainer(req, res, appId, appAttemptId, containerId); + } + + @GET @Path("/apps/{appid}/state") @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) public AppState getAppState(@Context HttpServletRequest hsr,