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