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>ContainerReport</code> is a report of an container.
029 * </p>
030 * 
031 * <p>
032 * It includes details such as:
033 * <ul>
034 * <li>{@link ContainerId} of the container.</li>
035 * <li>Allocated Resources to the container.</li>
036 * <li>Assigned Node id.</li>
037 * <li>Assigned Priority.</li>
038 * <li>Creation Time.</li>
039 * <li>Finish Time.</li>
040 * <li>Container Exit Status.</li>
041 * <li>{@link ContainerState} of the container.</li>
042 * <li>Diagnostic information in case of errors.</li>
043 * <li>Log URL.</li>
044 * </ul>
045 * </p>
046 * 
047 */
048
049@Public
050@Unstable
051public abstract class ContainerReport {
052  @Private
053  @Unstable
054  public static ContainerReport newInstance(ContainerId containerId,
055      Resource allocatedResource, NodeId assignedNode, Priority priority,
056      long creationTime, long finishTime, String diagnosticInfo, String logUrl,
057      int containerExitStatus, ContainerState containerState) {
058    ContainerReport report = Records.newRecord(ContainerReport.class);
059    report.setContainerId(containerId);
060    report.setAllocatedResource(allocatedResource);
061    report.setAssignedNode(assignedNode);
062    report.setPriority(priority);
063    report.setCreationTime(creationTime);
064    report.setFinishTime(finishTime);
065    report.setDiagnosticsInfo(diagnosticInfo);
066    report.setLogUrl(logUrl);
067    report.setContainerExitStatus(containerExitStatus);
068    report.setContainerState(containerState);
069    return report;
070  }
071
072  /**
073   * Get the <code>ContainerId</code> of the container.
074   * 
075   * @return <code>ContainerId</code> of the container.
076   */
077  @Public
078  @Unstable
079  public abstract ContainerId getContainerId();
080
081  @Public
082  @Unstable
083  public abstract void setContainerId(ContainerId containerId);
084
085  /**
086   * Get the allocated <code>Resource</code> of the container.
087   * 
088   * @return allocated <code>Resource</code> of the container.
089   */
090  @Public
091  @Unstable
092  public abstract Resource getAllocatedResource();
093
094  @Public
095  @Unstable
096  public abstract void setAllocatedResource(Resource resource);
097
098  /**
099   * Get the allocated <code>NodeId</code> where container is running.
100   * 
101   * @return allocated <code>NodeId</code> where container is running.
102   */
103  @Public
104  @Unstable
105  public abstract NodeId getAssignedNode();
106
107  @Public
108  @Unstable
109  public abstract void setAssignedNode(NodeId nodeId);
110
111  /**
112   * Get the allocated <code>Priority</code> of the container.
113   * 
114   * @return allocated <code>Priority</code> of the container.
115   */
116  @Public
117  @Unstable
118  public abstract Priority getPriority();
119
120  @Public
121  @Unstable
122  public abstract void setPriority(Priority priority);
123
124  /**
125   * Get the creation time of the container.
126   * 
127   * @return creation time of the container
128   */
129  @Public
130  @Unstable
131  public abstract long getCreationTime();
132
133  @Public
134  @Unstable
135  public abstract void setCreationTime(long creationTime);
136
137  /**
138   * Get the Finish time of the container.
139   * 
140   * @return Finish time of the container
141   */
142  @Public
143  @Unstable
144  public abstract long getFinishTime();
145
146  @Public
147  @Unstable
148  public abstract void setFinishTime(long finishTime);
149
150  /**
151   * Get the DiagnosticsInfo of the container.
152   * 
153   * @return DiagnosticsInfo of the container
154   */
155  @Public
156  @Unstable
157  public abstract String getDiagnosticsInfo();
158
159  @Public
160  @Unstable
161  public abstract void setDiagnosticsInfo(String diagnosticsInfo);
162
163  /**
164   * Get the LogURL of the container.
165   * 
166   * @return LogURL of the container
167   */
168  @Public
169  @Unstable
170  public abstract String getLogUrl();
171
172  @Public
173  @Unstable
174  public abstract void setLogUrl(String logUrl);
175
176  /**
177   * Get the final <code>ContainerState</code> of the container.
178   * 
179   * @return final <code>ContainerState</code> of the container.
180   */
181  @Public
182  @Unstable
183  public abstract ContainerState getContainerState();
184
185  @Public
186  @Unstable
187  public abstract void setContainerState(ContainerState containerState);
188
189  /**
190   * Get the final <code>exit status</code> of the container.
191   * 
192   * @return final <code>exit status</code> of the container.
193   */
194  @Public
195  @Unstable
196  public abstract int getContainerExitStatus();
197
198  @Public
199  @Unstable
200  public abstract void setContainerExitStatus(int containerExitStatus);
201
202}