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 java.util.List;
022
023 import org.apache.hadoop.classification.InterfaceAudience.Private;
024 import org.apache.hadoop.classification.InterfaceAudience.Public;
025 import org.apache.hadoop.classification.InterfaceStability.Stable;
026 import org.apache.hadoop.classification.InterfaceStability.Unstable;
027 import org.apache.hadoop.yarn.api.ApplicationClientProtocol;
028 import org.apache.hadoop.yarn.util.Records;
029
030 /**
031 * <p>QueueInfo is a report of the runtime information of the queue.</p>
032 *
033 * <p>It includes information such as:
034 * <ul>
035 * <li>Queue name.</li>
036 * <li>Capacity of the queue.</li>
037 * <li>Maximum capacity of the queue.</li>
038 * <li>Current capacity of the queue.</li>
039 * <li>Child queues.</li>
040 * <li>Running applications.</li>
041 * <li>{@link QueueState} of the queue.</li>
042 * </ul>
043 * </p>
044 *
045 * @see QueueState
046 * @see ApplicationClientProtocol#getQueueInfo(org.apache.hadoop.yarn.api.protocolrecords.GetQueueInfoRequest)
047 */
048 @Public
049 @Stable
050 public abstract class QueueInfo {
051
052 @Private
053 @Unstable
054 public static QueueInfo newInstance(String queueName, float capacity,
055 float maximumCapacity, float currentCapacity,
056 List<QueueInfo> childQueues, List<ApplicationReport> applications,
057 QueueState queueState) {
058 QueueInfo queueInfo = Records.newRecord(QueueInfo.class);
059 queueInfo.setQueueName(queueName);
060 queueInfo.setCapacity(capacity);
061 queueInfo.setMaximumCapacity(maximumCapacity);
062 queueInfo.setCurrentCapacity(currentCapacity);
063 queueInfo.setChildQueues(childQueues);
064 queueInfo.setApplications(applications);
065 queueInfo.setQueueState(queueState);
066 return queueInfo;
067 }
068
069 /**
070 * Get the <em>name</em> of the queue.
071 * @return <em>name</em> of the queue
072 */
073 @Public
074 @Stable
075 public abstract String getQueueName();
076
077 @Private
078 @Unstable
079 public abstract void setQueueName(String queueName);
080
081 /**
082 * Get the <em>configured capacity</em> of the queue.
083 * @return <em>configured capacity</em> of the queue
084 */
085 @Public
086 @Stable
087 public abstract float getCapacity();
088
089 @Private
090 @Unstable
091 public abstract void setCapacity(float capacity);
092
093 /**
094 * Get the <em>maximum capacity</em> of the queue.
095 * @return <em>maximum capacity</em> of the queue
096 */
097 @Public
098 @Stable
099 public abstract float getMaximumCapacity();
100
101 @Private
102 @Unstable
103 public abstract void setMaximumCapacity(float maximumCapacity);
104
105 /**
106 * Get the <em>current capacity</em> of the queue.
107 * @return <em>current capacity</em> of the queue
108 */
109 @Public
110 @Stable
111 public abstract float getCurrentCapacity();
112
113 @Private
114 @Unstable
115 public abstract void setCurrentCapacity(float currentCapacity);
116
117 /**
118 * Get the <em>child queues</em> of the queue.
119 * @return <em>child queues</em> of the queue
120 */
121 @Public
122 @Stable
123 public abstract List<QueueInfo> getChildQueues();
124
125 @Private
126 @Unstable
127 public abstract void setChildQueues(List<QueueInfo> childQueues);
128
129 /**
130 * Get the <em>running applications</em> of the queue.
131 * @return <em>running applications</em> of the queue
132 */
133 @Public
134 @Stable
135 public abstract List<ApplicationReport> getApplications();
136
137 @Private
138 @Unstable
139 public abstract void setApplications(List<ApplicationReport> applications);
140
141 /**
142 * Get the <code>QueueState</code> of the queue.
143 * @return <code>QueueState</code> of the queue
144 */
145 @Public
146 @Stable
147 public abstract QueueState getQueueState();
148
149 @Private
150 @Unstable
151 public abstract void setQueueState(QueueState queueState);
152 }