diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetAllApplicationsRequest.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetAllApplicationsRequest.java index 61cea28..f481d7e 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetAllApplicationsRequest.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetAllApplicationsRequest.java @@ -18,8 +18,10 @@ package org.apache.hadoop.yarn.api.protocolrecords; +import org.apache.hadoop.classification.InterfaceAudience.Private; import org.apache.hadoop.classification.InterfaceAudience.Public; import org.apache.hadoop.classification.InterfaceStability.Stable; +import org.apache.hadoop.classification.InterfaceStability.Unstable; import org.apache.hadoop.yarn.api.ApplicationClientProtocol; import org.apache.hadoop.yarn.util.Records; @@ -27,7 +29,6 @@ *

The request from clients to get a report of all Applications * in the cluster from the ResourceManager.

* - *

Currently, this is empty.

* * @see ApplicationClientProtocol#getAllApplications(GetAllApplicationsRequest) */ @@ -39,4 +40,12 @@ public static GetAllApplicationsRequest newInstance() { Records.newRecord(GetAllApplicationsRequest.class); return request; } + + @Public + @Stable + public abstract String getApplicationType(); + + @Private + @Unstable + public abstract void setApplicationType(String applicationType); } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/GetAllApplicationsRequestPBImpl.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/GetAllApplicationsRequestPBImpl.java index e003e5f..39aef76 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/GetAllApplicationsRequestPBImpl.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/GetAllApplicationsRequestPBImpl.java @@ -20,6 +20,7 @@ import org.apache.hadoop.yarn.api.protocolrecords.GetAllApplicationsRequest; import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetAllApplicationsRequestProto; +import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetAllApplicationsRequestProtoOrBuilder; public class GetAllApplicationsRequestPBImpl extends GetAllApplicationsRequest { GetAllApplicationsRequestProto proto = GetAllApplicationsRequestProto.getDefaultInstance(); @@ -60,4 +61,19 @@ public boolean equals(Object other) { public String toString() { return getProto().toString().replaceAll("\\n", ", ").replaceAll("\\s+", " "); } + + @Override + public String getApplicationType() { + GetAllApplicationsRequestProtoOrBuilder p = viaProto ? proto : builder; + return p.getApplicationType(); + } + + @Override + public void setApplicationType(String applicationType) { + if (viaProto || builder == null) { + builder = GetAllApplicationsRequestProto.newBuilder(proto); + } + viaProto = false; + builder.setApplicationType(applicationType); + } } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_service_protos.proto hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_service_protos.proto index 81a7d95..d25ec4a 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_service_protos.proto +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_service_protos.proto @@ -117,6 +117,7 @@ message GetClusterMetricsResponseProto { } message GetAllApplicationsRequestProto { + optional string applicationType = 1; } message GetAllApplicationsResponseProto { diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java index 2a0b482..5b1e6ea 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java @@ -405,7 +405,14 @@ public GetAllApplicationsResponse getAllApplications( for (RMApp application : this.rmContext.getRMApps().values()) { boolean allowAccess = checkAccess(callerUGI, application.getUser(), ApplicationAccessType.VIEW_APP, application.getApplicationId()); - reports.add(application.createAndGetApplicationReport(allowAccess)); + ApplicationReport applicationReport = + application.createAndGetApplicationReport(allowAccess); + if (request.getApplicationType() == null + || request.getApplicationType().isEmpty() + || request.getApplicationType().equals( + applicationReport.getApplicationType())) { + reports.add(application.createAndGetApplicationReport(allowAccess)); + } } GetAllApplicationsResponse response =