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
019 package org.apache.hadoop.yarn.api.records;
020
021 import org.apache.hadoop.classification.InterfaceAudience.Private;
022 import org.apache.hadoop.classification.InterfaceAudience.Public;
023 import org.apache.hadoop.classification.InterfaceStability.Unstable;
024 import 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
048 public abstract class ApplicationAttemptReport {
049
050 @Private
051 @Unstable
052 public static ApplicationAttemptReport newInstance(
053 ApplicationAttemptId applicationAttemptId, String host, int rpcPort,
054 String url, String diagnostics, YarnApplicationAttemptState state,
055 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.setDiagnostics(diagnostics);
063 report.setYarnApplicationAttemptState(state);
064 report.setAMContainerId(amContainerId);
065 return report;
066 }
067
068 /**
069 * Get the <em>YarnApplicationAttemptState</em> of the application attempt.
070 *
071 * @return <em>YarnApplicationAttemptState</em> of the application attempt
072 */
073 @Public
074 @Unstable
075 public abstract YarnApplicationAttemptState getYarnApplicationAttemptState();
076
077 @Private
078 @Unstable
079 public abstract void setYarnApplicationAttemptState(
080 YarnApplicationAttemptState yarnApplicationAttemptState);
081
082 /**
083 * Get the <em>RPC port</em> of this attempt <code>ApplicationMaster</code>.
084 *
085 * @return <em>RPC port</em> of this attempt <code>ApplicationMaster</code>
086 */
087 @Public
088 @Unstable
089 public abstract int getRpcPort();
090
091 @Private
092 @Unstable
093 public abstract void setRpcPort(int rpcPort);
094
095 /**
096 * Get the <em>host</em> on which this attempt of
097 * <code>ApplicationMaster</code> is running.
098 *
099 * @return <em>host</em> on which this attempt of
100 * <code>ApplicationMaster</code> is running
101 */
102 @Public
103 @Unstable
104 public abstract String getHost();
105
106 @Private
107 @Unstable
108 public abstract void setHost(String host);
109
110 /**
111 * Get the <em>diagnositic information</em> of the application attempt in case
112 * of errors.
113 *
114 * @return <em>diagnositic information</em> of the application attempt in case
115 * of errors
116 */
117 @Public
118 @Unstable
119 public abstract String getDiagnostics();
120
121 @Private
122 @Unstable
123 public abstract void setDiagnostics(String diagnostics);
124
125 /**
126 * Get the <em>tracking url</em> for the application attempt.
127 *
128 * @return <em>tracking url</em> for the application attempt
129 */
130 @Public
131 @Unstable
132 public abstract String getTrackingUrl();
133
134 @Private
135 @Unstable
136 public abstract void setTrackingUrl(String url);
137
138 /**
139 * Get the <code>ApplicationAttemptId</code> of this attempt of the
140 * application
141 *
142 * @return <code>ApplicationAttemptId</code> of the attempt
143 */
144 @Public
145 @Unstable
146 public abstract ApplicationAttemptId getApplicationAttemptId();
147
148 @Private
149 @Unstable
150 public abstract void setApplicationAttemptId(
151 ApplicationAttemptId applicationAttemptId);
152
153 /**
154 * Get the <code>ContainerId</code> of AMContainer for this attempt
155 *
156 * @return <code>ContainerId</code> of the attempt
157 */
158 @Public
159 @Unstable
160 public abstract ContainerId getAMContainerId();
161
162 @Private
163 @Unstable
164 public abstract void setAMContainerId(ContainerId amContainerId);
165 }