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.records;
020
021import org.apache.hadoop.classification.InterfaceAudience.Private;
022import org.apache.hadoop.classification.InterfaceAudience.Public;
023import org.apache.hadoop.classification.InterfaceStability.Unstable;
024import org.apache.hadoop.yarn.util.Records;
025
026/**
027 * <p>
028 * <code>ApplicationAttemptReport</code> is a report of an application attempt.
029 * </p>
030 * 
031 * <p>
032 * It includes details such as:
033 * <ul>
034 * <li>{@link ApplicationAttemptId} of the application.</li>
035 * <li>Host on which the <code>ApplicationMaster</code> of this attempt is
036 * running.</li>
037 * <li>RPC port of the <code>ApplicationMaster</code> of this attempt.</li>
038 * <li>Tracking URL.</li>
039 * <li>Diagnostic information in case of errors.</li>
040 * <li>{@link YarnApplicationAttemptState} of the application attempt.</li>
041 * <li>{@link ContainerId} of the master Container.</li>
042 * </ul>
043 * </p>
044 * 
045 */
046@Public
047@Unstable
048public abstract class ApplicationAttemptReport {
049
050  @Private
051  @Unstable
052  public static ApplicationAttemptReport newInstance(
053      ApplicationAttemptId applicationAttemptId, String host, int rpcPort,
054      String url, String oUrl, String diagnostics,
055      YarnApplicationAttemptState state, ContainerId amContainerId) {
056    ApplicationAttemptReport report =
057        Records.newRecord(ApplicationAttemptReport.class);
058    report.setApplicationAttemptId(applicationAttemptId);
059    report.setHost(host);
060    report.setRpcPort(rpcPort);
061    report.setTrackingUrl(url);
062    report.setOriginalTrackingUrl(oUrl);
063    report.setDiagnostics(diagnostics);
064    report.setYarnApplicationAttemptState(state);
065    report.setAMContainerId(amContainerId);
066    return report;
067  }
068
069  /**
070   * Get the <em>YarnApplicationAttemptState</em> of the application attempt.
071   * 
072   * @return <em>YarnApplicationAttemptState</em> of the application attempt
073   */
074  @Public
075  @Unstable
076  public abstract YarnApplicationAttemptState getYarnApplicationAttemptState();
077
078  @Private
079  @Unstable
080  public abstract void setYarnApplicationAttemptState(
081      YarnApplicationAttemptState yarnApplicationAttemptState);
082
083  /**
084   * Get the <em>RPC port</em> of this attempt <code>ApplicationMaster</code>.
085   * 
086   * @return <em>RPC port</em> of this attempt <code>ApplicationMaster</code>
087   */
088  @Public
089  @Unstable
090  public abstract int getRpcPort();
091
092  @Private
093  @Unstable
094  public abstract void setRpcPort(int rpcPort);
095
096  /**
097   * Get the <em>host</em> on which this attempt of
098   * <code>ApplicationMaster</code> is running.
099   * 
100   * @return <em>host</em> on which this attempt of
101   *         <code>ApplicationMaster</code> is running
102   */
103  @Public
104  @Unstable
105  public abstract String getHost();
106
107  @Private
108  @Unstable
109  public abstract void setHost(String host);
110
111  /**
112   * Get the <em>diagnositic information</em> of the application attempt in case
113   * of errors.
114   * 
115   * @return <em>diagnositic information</em> of the application attempt in case
116   *         of errors
117   */
118  @Public
119  @Unstable
120  public abstract String getDiagnostics();
121
122  @Private
123  @Unstable
124  public abstract void setDiagnostics(String diagnostics);
125
126  /**
127   * Get the <em>tracking url</em> for the application attempt.
128   * 
129   * @return <em>tracking url</em> for the application attempt
130   */
131  @Public
132  @Unstable
133  public abstract String getTrackingUrl();
134
135  @Private
136  @Unstable
137  public abstract void setTrackingUrl(String url);
138
139  /**
140   * Get the <em>original tracking url</em> for the application attempt.
141   * 
142   * @return <em>original tracking url</em> for the application attempt
143   */
144  @Public
145  @Unstable
146  public abstract String getOriginalTrackingUrl();
147
148  @Private
149  @Unstable
150  public abstract void setOriginalTrackingUrl(String oUrl);
151
152  /**
153   * Get the <code>ApplicationAttemptId</code> of this attempt of the
154   * application
155   * 
156   * @return <code>ApplicationAttemptId</code> of the attempt
157   */
158  @Public
159  @Unstable
160  public abstract ApplicationAttemptId getApplicationAttemptId();
161
162  @Private
163  @Unstable
164  public abstract void setApplicationAttemptId(
165      ApplicationAttemptId applicationAttemptId);
166
167  /**
168   * Get the <code>ContainerId</code> of AMContainer for this attempt
169   * 
170   * @return <code>ContainerId</code> of the attempt
171   */
172  @Public
173  @Unstable
174  public abstract ContainerId getAMContainerId();
175
176  @Private
177  @Unstable
178  public abstract void setAMContainerId(ContainerId amContainerId);
179}