001/**
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019package org.apache.hadoop.yarn.api.protocolrecords;
020
021import org.apache.hadoop.classification.InterfaceAudience.Private;
022import org.apache.hadoop.classification.InterfaceAudience.Public;
023import org.apache.hadoop.classification.InterfaceStability.Stable;
024import org.apache.hadoop.classification.InterfaceStability.Unstable;
025import org.apache.hadoop.yarn.api.AMRMProtocol;
026import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
027
028/**
029 * <p>The request sent by the <code>ApplicationMaster</code> to 
030 * <code>ResourceManager</code> on registration.</p>
031 * 
032 * <p>The registration includes details such as:
033 *   <ul>
034 *     <li>
035 *         {@link ApplicationAttemptId} being managed by the 
036 *         <code>ApplicationMaster</code>
037 *     </li>
038 *     <li>Hostname on which the AM is running.</li>
039 *     <li>RPC Port</li>
040 *     <li>Tracking URL</li>
041 *   </ul>
042 * </p>
043 * 
044 * @see AMRMProtocol#registerApplicationMaster(RegisterApplicationMasterRequest)
045 */
046@Public
047@Stable
048public interface RegisterApplicationMasterRequest {
049
050  /**
051   * Get the <code>ApplicationAttemptId</code> being managed by the 
052   * <code>ApplicationMaster</code>.
053   * @return <code>ApplicationAttemptId</code> being managed by the 
054   *         <code>ApplicationMaster</code>
055   */
056  @Public
057  @Stable
058  ApplicationAttemptId getApplicationAttemptId();
059  
060  /**
061   * Set the <code>ApplicationAttemptId</code> being managed by the 
062   * <code>ApplicationMaster</code>.
063   * @param applicationAttemptId <code>ApplicationAttemptId</code> being managed  
064   *                             by the <code>ApplicationMaster</code>
065   */
066  @Public
067  @Stable
068  void setApplicationAttemptId(ApplicationAttemptId applicationAttemptId);
069
070  /**
071   * Get the <em>host</em> on which the <code>ApplicationMaster</code> is 
072   * running.
073   * @return <em>host</em> on which the <code>ApplicationMaster</code> is running
074   */
075  @Public
076  @Stable
077  String getHost();
078  
079  /**
080   * Set the <em>host</em> on which the <code>ApplicationMaster</code> is 
081   * running.
082   * @param host <em>host</em> on which the <code>ApplicationMaster</code> 
083   *             is running
084   */
085  @Private
086  @Unstable
087  void setHost(String host);
088
089  /**
090   * Get the <em>RPC port</em> on which the <code>ApplicationMaster</code> 
091   * is responding. 
092   * @return the <em>RPC port<em> on which the <code>ApplicationMaster</code> is 
093   *         responding
094   */
095  @Public
096  @Stable
097  int getRpcPort();
098  
099  /**
100   * Set the <em>RPC port<em> on which the <code>ApplicationMaster</code> is 
101   * responding.
102   * @param port <em>RPC port<em> on which the <code>ApplicationMaster</code> is 
103   *             responding
104   */
105  @Public
106  @Stable
107  void setRpcPort(int port);
108
109  /**
110   * Get the <em>tracking URL</em> for the <code>ApplicationMaster</code>.
111   * @return <em>tracking URL</em> for the <code>ApplicationMaster</code>
112   */
113  @Public
114  @Stable
115  String getTrackingUrl();
116  
117  /**
118   * Set the <em>tracking URL</em> for the <code>ApplicationMaster</code>.
119   * @param trackingUrl <em>tracking URL</em> for the 
120   *                    <code>ApplicationMaster</code>
121   */
122  @Public
123  @Stable
124  void setTrackingUrl(String trackingUrl);
125}