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 }