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.Stable;
024import org.apache.hadoop.classification.InterfaceStability.Unstable;
025import org.apache.hadoop.yarn.api.ClientRMProtocol;
026
027/**
028 * <p><code>NodeReport</code> is a summary of runtime information of a 
029 * node in the cluster.</p>
030 * 
031 * <p>It includes details such as:
032 *   <ul>
033 *     <li>{@link NodeId} of the node.</li>
034 *     <li>HTTP Tracking URL of the node.</li>
035 *     <li>Rack name for the node.</li>
036 *     <li>Used {@link Resource} on the node.</li>
037 *     <li>Total available {@link Resource} of the node.</li>
038 *     <li>Number of running containers on the node.</li>
039 *     <li>{@link NodeHealthStatus} of the node.</li>
040 *   </ul>
041 * </p>
042 *
043 * @see NodeHealthStatus
044 * @see ClientRMProtocol#getClusterNodes(org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodesRequest)
045 */
046@Public
047@Stable
048public interface NodeReport {
049  /**
050   * Get the <code>NodeId</code> of the node.
051   * @return <code>NodeId</code> of the node
052   */
053  NodeId getNodeId();
054  
055  @Private
056  @Unstable
057  void setNodeId(NodeId nodeId);
058  
059  /**
060   * Get the <em>http address</em> of the node.
061   * @return <em>http address</em> of the node
062   */
063  @Public
064  @Stable
065  String getHttpAddress();
066  
067  @Private
068  @Unstable
069  void setHttpAddress(String httpAddress);
070  
071  /**
072   * Get the <em>rack name</em> for the node.
073   * @return <em>rack name</em> for the node
074   */
075  @Public
076  @Stable
077  String getRackName();
078  
079  @Private
080  @Unstable
081  void setRackName(String rackName);
082  
083  /**
084   * Get <em>used</em> <code>Resource</code> on the node.
085   * @return <em>used</em> <code>Resource</code> on the node
086   */
087  @Public
088  @Stable
089  Resource getUsed();        
090  
091  @Private
092  @Unstable
093  void setUsed(Resource used);
094  
095  /**
096   * Get the <em>total</em> <code>Resource</code> on the node.
097   * @return <em>total</em> <code>Resource</code> on the node
098   */
099  @Public
100  @Stable
101  Resource getCapability();
102  
103  @Private
104  @Unstable
105  void setCapability(Resource capability);
106  
107  /**
108   * Get the <em>number of running containers</em> on the node.
109   * @return <em>number of running containers</em> on the node
110   */
111  @Public
112  @Stable
113  int getNumContainers();
114  
115  @Private
116  @Unstable
117  void setNumContainers(int numContainers);
118  
119  /**
120   * Get the <code>NodeHealthStatus</code> of the node. 
121   * @return <code>NodeHealthStatus</code> of the node
122   */
123  @Public
124  @Stable
125  NodeHealthStatus getNodeHealthStatus();
126  
127  @Private
128  @Unstable
129  void setNodeHealthStatus(NodeHealthStatus nodeHealthStatus);
130}