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 import java.util.Set;
023
024 import org.apache.hadoop.classification.InterfaceAudience.Private;
025 import org.apache.hadoop.classification.InterfaceAudience.Public;
026 import org.apache.hadoop.classification.InterfaceStability.Stable;
027 import org.apache.hadoop.classification.InterfaceStability.Unstable;
028 import org.apache.hadoop.yarn.api.ApplicationClientProtocol;
029 import org.apache.hadoop.yarn.util.Records;
030
031 /**
032 * <p>QueueInfo is a report of the runtime information of the queue.</p>
033 *
034 * <p>It includes information such as:
035 * <ul>
036 * <li>Queue name.</li>
037 * <li>Capacity of the queue.</li>
038 * <li>Maximum capacity of the queue.</li>
039 * <li>Current capacity of the queue.</li>
040 * <li>Child queues.</li>
041 * <li>Running applications.</li>
042 * <li>{@link QueueState} of the queue.</li>
043 * </ul>
044 * </p>
045 *
046 * @see QueueState
047 * @see ApplicationClientProtocol#getQueueInfo(org.apache.hadoop.yarn.api.protocolrecords.GetQueueInfoRequest)
048 */
049 @Public
050 @Stable
051 public abstract class QueueInfo {
052
053 @Private
054 @Unstable
055 public static QueueInfo newInstance(String queueName, float capacity,
056 float maximumCapacity, float currentCapacity,
057 List<QueueInfo> childQueues, List<ApplicationReport> applications,
058 QueueState queueState, Set<String> accessibleNodeLabels,
059 String defaultNodeLabelExpression) {
060 QueueInfo queueInfo = Records.newRecord(QueueInfo.class);
061 queueInfo.setQueueName(queueName);
062 queueInfo.setCapacity(capacity);
063 queueInfo.setMaximumCapacity(maximumCapacity);
064 queueInfo.setCurrentCapacity(currentCapacity);
065 queueInfo.setChildQueues(childQueues);
066 queueInfo.setApplications(applications);
067 queueInfo.setQueueState(queueState);
068 queueInfo.setAccessibleNodeLabels(accessibleNodeLabels);
069 queueInfo.setDefaultNodeLabelExpression(defaultNodeLabelExpression);
070 return queueInfo;
071 }
072
073 /**
074 * Get the <em>name</em> of the queue.
075 * @return <em>name</em> of the queue
076 */
077 @Public
078 @Stable
079 public abstract String getQueueName();
080
081 @Private
082 @Unstable
083 public abstract void setQueueName(String queueName);
084
085 /**
086 * Get the <em>configured capacity</em> of the queue.
087 * @return <em>configured capacity</em> of the queue
088 */
089 @Public
090 @Stable
091 public abstract float getCapacity();
092
093 @Private
094 @Unstable
095 public abstract void setCapacity(float capacity);
096
097 /**
098 * Get the <em>maximum capacity</em> of the queue.
099 * @return <em>maximum capacity</em> of the queue
100 */
101 @Public
102 @Stable
103 public abstract float getMaximumCapacity();
104
105 @Private
106 @Unstable
107 public abstract void setMaximumCapacity(float maximumCapacity);
108
109 /**
110 * Get the <em>current capacity</em> of the queue.
111 * @return <em>current capacity</em> of the queue
112 */
113 @Public
114 @Stable
115 public abstract float getCurrentCapacity();
116
117 @Private
118 @Unstable
119 public abstract void setCurrentCapacity(float currentCapacity);
120
121 /**
122 * Get the <em>child queues</em> of the queue.
123 * @return <em>child queues</em> of the queue
124 */
125 @Public
126 @Stable
127 public abstract List<QueueInfo> getChildQueues();
128
129 @Private
130 @Unstable
131 public abstract void setChildQueues(List<QueueInfo> childQueues);
132
133 /**
134 * Get the <em>running applications</em> of the queue.
135 * @return <em>running applications</em> of the queue
136 */
137 @Public
138 @Stable
139 public abstract List<ApplicationReport> getApplications();
140
141 @Private
142 @Unstable
143 public abstract void setApplications(List<ApplicationReport> applications);
144
145 /**
146 * Get the <code>QueueState</code> of the queue.
147 * @return <code>QueueState</code> of the queue
148 */
149 @Public
150 @Stable
151 public abstract QueueState getQueueState();
152
153 @Private
154 @Unstable
155 public abstract void setQueueState(QueueState queueState);
156
157 /**
158 * Get the <code>accessible node labels</code> of the queue.
159 * @return <code>accessible node labels</code> of the queue
160 */
161 @Public
162 @Stable
163 public abstract Set<String> getAccessibleNodeLabels();
164
165 /**
166 * Set the <code>accessible node labels</code> of the queue.
167 */
168 @Private
169 @Unstable
170 public abstract void setAccessibleNodeLabels(Set<String> labels);
171
172 /**
173 * Get the <code>default node label expression</code> of the queue, this takes
174 * affect only when the <code>ApplicationSubmissionContext</code> and
175 * <code>ResourceRequest</code> don't specify their
176 * <code>NodeLabelExpression</code>.
177 *
178 * @return <code>default node label expression</code> of the queue
179 */
180 @Public
181 @Stable
182 public abstract String getDefaultNodeLabelExpression();
183
184 @Public
185 @Stable
186 public abstract void setDefaultNodeLabelExpression(
187 String defaultLabelExpression);
188 }