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>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
051 public 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 }