| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.hadoop.yarn.server.router.webapp; |
| |
| import java.io.IOException; |
| import java.util.Set; |
| |
| import javax.servlet.http.HttpServletRequest; |
| import javax.servlet.http.HttpServletResponse; |
| import javax.ws.rs.core.Response; |
| |
| import org.apache.hadoop.security.authorize.AuthorizationException; |
| import org.apache.hadoop.yarn.exceptions.YarnException; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ActivitiesInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppActivitiesInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppAttemptsInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppPriority; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppQueue; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppState; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppTimeoutInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppTimeoutsInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ApplicationStatisticsInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ApplicationSubmissionContextInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppsInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ClusterInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ClusterMetricsInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ClusterUserInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.DelegationToken; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.LabelsToNodesInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.NodeInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.NodeLabelsInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.NodeToLabelsEntryList; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.NodeToLabelsInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.NodesInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.RMQueueAclInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ReservationDeleteRequestInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ReservationSubmissionRequestInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ReservationUpdateRequestInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ResourceInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ResourceOptionInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.BulkActivitiesInfo; |
| import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.SchedulerTypeInfo; |
| import org.apache.hadoop.yarn.server.webapp.dao.AppAttemptInfo; |
| import org.apache.hadoop.yarn.server.webapp.dao.ContainerInfo; |
| import org.apache.hadoop.yarn.server.webapp.dao.ContainersInfo; |
| |
| /** |
| * Mock interceptor that does not do anything other than forwarding it to the |
| * next interceptor in the chain. |
| */ |
| public class PassThroughRESTRequestInterceptor |
| extends AbstractRESTRequestInterceptor { |
| |
| @Override |
| public AppAttemptsInfo getAppAttempts(HttpServletRequest hsr, String appId) { |
| return getNextInterceptor().getAppAttempts(hsr, appId); |
| } |
| |
| @Override |
| public RMQueueAclInfo checkUserAccessToQueue(String queue, String username, |
| String queueAclType, HttpServletRequest hsr) |
| throws AuthorizationException { |
| return getNextInterceptor().checkUserAccessToQueue(queue, username, |
| queueAclType, hsr); |
| } |
| |
| @Override |
| public AppAttemptInfo getAppAttempt(HttpServletRequest req, |
| HttpServletResponse res, String appId, String appAttemptId) { |
| return getNextInterceptor().getAppAttempt(req, res, appId, appAttemptId); |
| } |
| |
| @Override |
| public ContainersInfo getContainers(HttpServletRequest req, |
| HttpServletResponse res, String appId, String appAttemptId) { |
| return getNextInterceptor().getContainers(req, res, appId, appAttemptId); |
| } |
| |
| @Override |
| public ContainerInfo getContainer(HttpServletRequest req, |
| HttpServletResponse res, String appId, String appAttemptId, |
| String containerId) { |
| return getNextInterceptor().getContainer(req, res, appId, appAttemptId, |
| containerId); |
| } |
| |
| @Override |
| public ClusterInfo get() { |
| return getNextInterceptor().get(); |
| } |
| |
| @Override |
| public ClusterInfo getClusterInfo() { |
| return getNextInterceptor().getClusterInfo(); |
| } |
| |
| @Override |
| public ClusterUserInfo getClusterUserInfo(HttpServletRequest hsr) { |
| return getNextInterceptor().getClusterUserInfo(hsr); |
| } |
| |
| @Override |
| public ClusterMetricsInfo getClusterMetricsInfo() { |
| return getNextInterceptor().getClusterMetricsInfo(); |
| } |
| |
| @Override |
| public SchedulerTypeInfo getSchedulerInfo() { |
| return getNextInterceptor().getSchedulerInfo(); |
| } |
| |
| @Override |
| public String dumpSchedulerLogs(String time, HttpServletRequest hsr) |
| throws IOException { |
| return getNextInterceptor().dumpSchedulerLogs(time, hsr); |
| } |
| |
| @Override |
| public NodesInfo getNodes(String states) { |
| return getNextInterceptor().getNodes(states); |
| } |
| |
| @Override |
| public NodeInfo getNode(String nodeId) { |
| return getNextInterceptor().getNode(nodeId); |
| } |
| |
| @Override |
| public ResourceInfo updateNodeResource(HttpServletRequest hsr, String nodeId, |
| ResourceOptionInfo resourceOption) throws AuthorizationException { |
| return getNextInterceptor().updateNodeResource( |
| hsr, nodeId, resourceOption); |
| } |
| |
| @Override |
| public AppsInfo getApps(HttpServletRequest hsr, String stateQuery, |
| Set<String> statesQuery, String finalStatusQuery, String userQuery, |
| String queueQuery, String count, String startedBegin, String startedEnd, |
| String finishBegin, String finishEnd, Set<String> applicationTypes, |
| Set<String> applicationTags, String name, Set<String> unselectedFields) { |
| return getNextInterceptor().getApps(hsr, stateQuery, statesQuery, |
| finalStatusQuery, userQuery, queueQuery, count, startedBegin, |
| startedEnd, finishBegin, finishEnd, applicationTypes, applicationTags, |
| name, unselectedFields); |
| } |
| |
| @Override |
| public ActivitiesInfo getActivities(HttpServletRequest hsr, String nodeId, |
| String groupBy) { |
| return getNextInterceptor().getActivities(hsr, nodeId, groupBy); |
| } |
| |
| @Override |
| public BulkActivitiesInfo getBulkActivities(HttpServletRequest hsr, |
| String groupBy, int activitiesCount) throws InterruptedException { |
| return getNextInterceptor().getBulkActivities(hsr, groupBy, |
| activitiesCount); |
| } |
| |
| @Override |
| public AppActivitiesInfo getAppActivities(HttpServletRequest hsr, |
| String appId, String time, Set<String> requestPriorities, |
| Set<String> allocationRequestIds, String groupBy, String limit, |
| Set<String> actions, boolean summarize) { |
| return getNextInterceptor().getAppActivities(hsr, appId, time, |
| requestPriorities, allocationRequestIds, groupBy, limit, |
| actions, summarize); |
| } |
| |
| @Override |
| public ApplicationStatisticsInfo getAppStatistics(HttpServletRequest hsr, |
| Set<String> stateQueries, Set<String> typeQueries) { |
| return getNextInterceptor().getAppStatistics(hsr, stateQueries, |
| typeQueries); |
| } |
| |
| @Override |
| public AppInfo getApp(HttpServletRequest hsr, String appId, |
| Set<String> unselectedFields) { |
| return getNextInterceptor().getApp(hsr, appId, unselectedFields); |
| } |
| |
| @Override |
| public AppState getAppState(HttpServletRequest hsr, String appId) |
| throws AuthorizationException { |
| return getNextInterceptor().getAppState(hsr, appId); |
| } |
| |
| @Override |
| public Response updateAppState(AppState targetState, HttpServletRequest hsr, |
| String appId) throws AuthorizationException, YarnException, |
| InterruptedException, IOException { |
| return getNextInterceptor().updateAppState(targetState, hsr, appId); |
| } |
| |
| @Override |
| public NodeToLabelsInfo getNodeToLabels(HttpServletRequest hsr) |
| throws IOException { |
| return getNextInterceptor().getNodeToLabels(hsr); |
| } |
| |
| @Override |
| public LabelsToNodesInfo getLabelsToNodes(Set<String> labels) |
| throws IOException { |
| return getNextInterceptor().getLabelsToNodes(labels); |
| } |
| |
| @Override |
| public Response replaceLabelsOnNodes(NodeToLabelsEntryList newNodeToLabels, |
| HttpServletRequest hsr) throws Exception { |
| return getNextInterceptor().replaceLabelsOnNodes(newNodeToLabels, hsr); |
| } |
| |
| @Override |
| public Response replaceLabelsOnNode(Set<String> newNodeLabelsName, |
| HttpServletRequest hsr, String nodeId) throws Exception { |
| return getNextInterceptor().replaceLabelsOnNode(newNodeLabelsName, hsr, |
| nodeId); |
| } |
| |
| @Override |
| public NodeLabelsInfo getClusterNodeLabels(HttpServletRequest hsr) |
| throws IOException { |
| return getNextInterceptor().getClusterNodeLabels(hsr); |
| } |
| |
| @Override |
| public Response addToClusterNodeLabels(NodeLabelsInfo newNodeLabels, |
| HttpServletRequest hsr) throws Exception { |
| return getNextInterceptor().addToClusterNodeLabels(newNodeLabels, hsr); |
| } |
| |
| @Override |
| public Response removeFromClusterNodeLabels(Set<String> oldNodeLabels, |
| HttpServletRequest hsr) throws Exception { |
| return getNextInterceptor().removeFromClusterNodeLabels(oldNodeLabels, hsr); |
| } |
| |
| @Override |
| public NodeLabelsInfo getLabelsOnNode(HttpServletRequest hsr, String nodeId) |
| throws IOException { |
| return getNextInterceptor().getLabelsOnNode(hsr, nodeId); |
| } |
| |
| @Override |
| public AppPriority getAppPriority(HttpServletRequest hsr, String appId) |
| throws AuthorizationException { |
| return getNextInterceptor().getAppPriority(hsr, appId); |
| } |
| |
| @Override |
| public Response updateApplicationPriority(AppPriority targetPriority, |
| HttpServletRequest hsr, String appId) throws AuthorizationException, |
| YarnException, InterruptedException, IOException { |
| return getNextInterceptor().updateApplicationPriority(targetPriority, hsr, |
| appId); |
| } |
| |
| @Override |
| public AppQueue getAppQueue(HttpServletRequest hsr, String appId) |
| throws AuthorizationException { |
| return getNextInterceptor().getAppQueue(hsr, appId); |
| } |
| |
| @Override |
| public Response updateAppQueue(AppQueue targetQueue, HttpServletRequest hsr, |
| String appId) throws AuthorizationException, YarnException, |
| InterruptedException, IOException { |
| return getNextInterceptor().updateAppQueue(targetQueue, hsr, appId); |
| } |
| |
| @Override |
| public Response createNewApplication(HttpServletRequest hsr) |
| throws AuthorizationException, IOException, InterruptedException { |
| return getNextInterceptor().createNewApplication(hsr); |
| } |
| |
| @Override |
| public Response submitApplication(ApplicationSubmissionContextInfo newApp, |
| HttpServletRequest hsr) |
| throws AuthorizationException, IOException, InterruptedException { |
| return getNextInterceptor().submitApplication(newApp, hsr); |
| } |
| |
| @Override |
| public Response postDelegationToken(DelegationToken tokenData, |
| HttpServletRequest hsr) throws AuthorizationException, IOException, |
| InterruptedException, Exception { |
| return getNextInterceptor().postDelegationToken(tokenData, hsr); |
| } |
| |
| @Override |
| public Response postDelegationTokenExpiration(HttpServletRequest hsr) |
| throws AuthorizationException, IOException, Exception { |
| return getNextInterceptor().postDelegationTokenExpiration(hsr); |
| } |
| |
| @Override |
| public Response cancelDelegationToken(HttpServletRequest hsr) |
| throws AuthorizationException, IOException, InterruptedException, |
| Exception { |
| return getNextInterceptor().cancelDelegationToken(hsr); |
| } |
| |
| @Override |
| public Response createNewReservation(HttpServletRequest hsr) |
| throws AuthorizationException, IOException, InterruptedException { |
| return getNextInterceptor().createNewReservation(hsr); |
| } |
| |
| @Override |
| public Response submitReservation(ReservationSubmissionRequestInfo resContext, |
| HttpServletRequest hsr) |
| throws AuthorizationException, IOException, InterruptedException { |
| return getNextInterceptor().submitReservation(resContext, hsr); |
| } |
| |
| @Override |
| public Response updateReservation(ReservationUpdateRequestInfo resContext, |
| HttpServletRequest hsr) |
| throws AuthorizationException, IOException, InterruptedException { |
| return getNextInterceptor().updateReservation(resContext, hsr); |
| } |
| |
| @Override |
| public Response deleteReservation(ReservationDeleteRequestInfo resContext, |
| HttpServletRequest hsr) |
| throws AuthorizationException, IOException, InterruptedException { |
| return getNextInterceptor().deleteReservation(resContext, hsr); |
| } |
| |
| @Override |
| public Response listReservation(String queue, String reservationId, |
| long startTime, long endTime, boolean includeResourceAllocations, |
| HttpServletRequest hsr) throws Exception { |
| return getNextInterceptor().listReservation(queue, reservationId, startTime, |
| endTime, includeResourceAllocations, hsr); |
| } |
| |
| @Override |
| public AppTimeoutInfo getAppTimeout(HttpServletRequest hsr, String appId, |
| String type) throws AuthorizationException { |
| return getNextInterceptor().getAppTimeout(hsr, appId, type); |
| } |
| |
| @Override |
| public AppTimeoutsInfo getAppTimeouts(HttpServletRequest hsr, String appId) |
| throws AuthorizationException { |
| return getNextInterceptor().getAppTimeouts(hsr, appId); |
| } |
| |
| @Override |
| public Response updateApplicationTimeout(AppTimeoutInfo appTimeout, |
| HttpServletRequest hsr, String appId) throws AuthorizationException, |
| YarnException, InterruptedException, IOException { |
| return getNextInterceptor().updateApplicationTimeout(appTimeout, hsr, |
| appId); |
| } |
| |
| @Override |
| public Response signalToContainer(String containerId, |
| String command, HttpServletRequest req) throws AuthorizationException { |
| return getNextInterceptor().signalToContainer(containerId, command, req); |
| } |
| } |