1 /**
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements.  See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership.  The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License.  You may obtain a copy of the License at
9 *
10 *     http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18 
19 package org.apache.hadoop.yarn.server.api;
20 
21 import java.io.IOException;
22 
23 import org.apache.hadoop.classification.InterfaceAudience.Private;
24 import org.apache.hadoop.classification.InterfaceAudience.Public;
25 import org.apache.hadoop.classification.InterfaceStability.Evolving;
26 import org.apache.hadoop.classification.InterfaceStability.Stable;
27 import org.apache.hadoop.io.retry.Idempotent;
28 import org.apache.hadoop.ipc.StandbyException;
29 import org.apache.hadoop.tools.GetUserMappingsProtocol;
30 import org.apache.hadoop.yarn.api.records.NodeId;
31 import org.apache.hadoop.yarn.api.records.ResourceOption;
32 import org.apache.hadoop.yarn.exceptions.YarnException;
33 import org.apache.hadoop.yarn.server.api.protocolrecords.AddToClusterNodeLabelsRequest;
34 import org.apache.hadoop.yarn.server.api.protocolrecords.AddToClusterNodeLabelsResponse;
35 import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshAdminAclsRequest;
36 import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshAdminAclsResponse;
37 import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshNodesRequest;
38 import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshNodesResponse;
39 import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshQueuesRequest;
40 import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshQueuesResponse;
41 import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshServiceAclsRequest;
42 import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshServiceAclsResponse;
43 import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshSuperUserGroupsConfigurationRequest;
44 import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshSuperUserGroupsConfigurationResponse;
45 import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshUserToGroupsMappingsRequest;
46 import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshUserToGroupsMappingsResponse;
47 import org.apache.hadoop.yarn.server.api.protocolrecords.RemoveFromClusterNodeLabelsRequest;
48 import org.apache.hadoop.yarn.server.api.protocolrecords.RemoveFromClusterNodeLabelsResponse;
49 import org.apache.hadoop.yarn.server.api.protocolrecords.ReplaceLabelsOnNodeRequest;
50 import org.apache.hadoop.yarn.server.api.protocolrecords.ReplaceLabelsOnNodeResponse;
51 import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeResourceRequest;
52 import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeResourceResponse;
53 
54 @Private
55 @Stable
56 public interface ResourceManagerAdministrationProtocol extends GetUserMappingsProtocol {
57 
58   @Public
59   @Stable
60   @Idempotent
refreshQueues(RefreshQueuesRequest request)61   public RefreshQueuesResponse refreshQueues(RefreshQueuesRequest request)
62   throws StandbyException, YarnException, IOException;
63 
64   @Public
65   @Stable
66   @Idempotent
refreshNodes(RefreshNodesRequest request)67   public RefreshNodesResponse refreshNodes(RefreshNodesRequest request)
68   throws StandbyException, YarnException, IOException;
69 
70   @Public
71   @Stable
72   @Idempotent
73   public RefreshSuperUserGroupsConfigurationResponse
refreshSuperUserGroupsConfiguration( RefreshSuperUserGroupsConfigurationRequest request)74   refreshSuperUserGroupsConfiguration(
75       RefreshSuperUserGroupsConfigurationRequest request)
76   throws StandbyException, YarnException, IOException;
77 
78   @Public
79   @Stable
80   @Idempotent
refreshUserToGroupsMappings( RefreshUserToGroupsMappingsRequest request)81   public RefreshUserToGroupsMappingsResponse refreshUserToGroupsMappings(
82       RefreshUserToGroupsMappingsRequest request)
83   throws StandbyException, YarnException, IOException;
84 
85   @Public
86   @Stable
87   @Idempotent
refreshAdminAcls( RefreshAdminAclsRequest request)88   public RefreshAdminAclsResponse refreshAdminAcls(
89       RefreshAdminAclsRequest request)
90   throws YarnException, IOException;
91 
92   @Public
93   @Stable
94   @Idempotent
refreshServiceAcls( RefreshServiceAclsRequest request)95   public RefreshServiceAclsResponse refreshServiceAcls(
96       RefreshServiceAclsRequest request)
97   throws YarnException, IOException;
98 
99   /**
100    * <p>The interface used by admin to update nodes' resources to the
101    * <code>ResourceManager</code> </p>.
102    *
103    * <p>The admin client is required to provide details such as a map from
104    * {@link NodeId} to {@link ResourceOption} required to update resources on
105    * a list of <code>RMNode</code> in <code>ResourceManager</code> etc.
106    * via the {@link UpdateNodeResourceRequest}.</p>
107    *
108    * @param request request to update resource for a node in cluster.
109    * @return (empty) response on accepting update.
110    * @throws YarnException
111    * @throws IOException
112    */
113   @Public
114   @Evolving
115   @Idempotent
updateNodeResource( UpdateNodeResourceRequest request)116   public UpdateNodeResourceResponse updateNodeResource(
117       UpdateNodeResourceRequest request)
118   throws YarnException, IOException;
119 
120   @Public
121   @Evolving
122   @Idempotent
addToClusterNodeLabels(AddToClusterNodeLabelsRequest request)123   public AddToClusterNodeLabelsResponse addToClusterNodeLabels(AddToClusterNodeLabelsRequest request)
124       throws YarnException, IOException;
125 
126   @Public
127   @Evolving
128   @Idempotent
removeFromClusterNodeLabels( RemoveFromClusterNodeLabelsRequest request)129   public RemoveFromClusterNodeLabelsResponse removeFromClusterNodeLabels(
130       RemoveFromClusterNodeLabelsRequest request) throws YarnException, IOException;
131 
132   @Public
133   @Evolving
134   @Idempotent
replaceLabelsOnNode( ReplaceLabelsOnNodeRequest request)135   public ReplaceLabelsOnNodeResponse replaceLabelsOnNode(
136       ReplaceLabelsOnNodeRequest request) throws YarnException, IOException;
137 }
138