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.util.Records;
026
027/**
028 * <p><code>YarnClusterMetrics</code> represents cluster metrics.</p>
029 * 
030 * <p>Currently only number of <code>NodeManager</code>s is provided.</p>
031 */
032@Public
033@Stable
034public abstract class YarnClusterMetrics {
035  
036  @Private
037  @Unstable
038  public static YarnClusterMetrics newInstance(int numNodeManagers) {
039    YarnClusterMetrics metrics = Records.newRecord(YarnClusterMetrics.class);
040    metrics.setNumNodeManagers(numNodeManagers);
041    return metrics;
042  }
043
044  /**
045   * Get the number of <code>NodeManager</code>s in the cluster.
046   * @return number of <code>NodeManager</code>s in the cluster
047   */
048  @Public
049  @Stable
050  public abstract int getNumNodeManagers();
051
052  @Private
053  @Unstable
054  public abstract void setNumNodeManagers(int numNodeManagers);
055
056  /**
057   * Get the number of <code>DecommissionedNodeManager</code>s in the cluster.
058   * 
059   * @return number of <code>DecommissionedNodeManager</code>s in the cluster
060   */
061  @Public
062  @Unstable
063  public abstract int getNumDecommissionedNodeManagers();
064
065  @Private
066  @Unstable
067  public abstract void setNumDecommissionedNodeManagers(
068      int numDecommissionedNodeManagers);
069
070  /**
071   * Get the number of <code>ActiveNodeManager</code>s in the cluster.
072   * 
073   * @return number of <code>ActiveNodeManager</code>s in the cluster
074   */
075  @Public
076  @Unstable
077  public abstract int getNumActiveNodeManagers();
078
079  @Private
080  @Unstable
081  public abstract void setNumActiveNodeManagers(int numActiveNodeManagers);
082
083  /**
084   * Get the number of <code>LostNodeManager</code>s in the cluster.
085   * 
086   * @return number of <code>LostNodeManager</code>s in the cluster
087   */
088  @Public
089  @Unstable
090  public abstract int getNumLostNodeManagers();
091
092  @Private
093  @Unstable
094  public abstract void setNumLostNodeManagers(int numLostNodeManagers);
095
096  /**
097   * Get the number of <code>UnhealthyNodeManager</code>s in the cluster.
098   * 
099   * @return number of <code>UnhealthyNodeManager</code>s in the cluster
100   */
101  @Public
102  @Unstable
103  public abstract int getNumUnhealthyNodeManagers();
104
105  @Private
106  @Unstable
107  public abstract void setNumUnhealthyNodeManagers(int numUnhealthNodeManagers);
108
109  /**
110   * Get the number of <code>RebootedNodeManager</code>s in the cluster.
111   * 
112   * @return number of <code>RebootedNodeManager</code>s in the cluster
113   */
114  @Public
115  @Unstable
116  public abstract int getNumRebootedNodeManagers();
117
118  @Private
119  @Unstable
120  public abstract void setNumRebootedNodeManagers(int numRebootedNodeManagers);
121
122}