diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java index 330b081..5eb2d3d 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/QueueCLI.java @@ -22,6 +22,7 @@ import java.io.PrintWriter; import java.nio.charset.Charset; import java.text.DecimalFormat; +import java.util.List; import java.util.Set; import org.apache.commons.cli.CommandLine; @@ -60,6 +61,7 @@ public int run(String[] args) throws Exception { "List queue information about given queue."); opts.addOption(HELP_CMD, false, "Displays help for all commands."); opts.getOption(STATUS_CMD).setArgName("Queue Name"); + opts.addOption(LIST_CMD, false, "List all configured queues."); CommandLine cliParser = null; try { @@ -79,7 +81,10 @@ public int run(String[] args) throws Exception { } else if (cliParser.hasOption(HELP_CMD)) { printUsage(opts); return 0; - } else { + } else if(cliParser.hasOption(LIST_CMD)) { + return listAllQueues(); + } + else { syserr.println("Invalid Command Usage : "); printUsage(opts); return -1; @@ -122,6 +127,34 @@ private int listQueue(String queueName) throws YarnException, IOException { return rc; } +/** + * List all configured queues + * + * @throws YarnException + * @throws IOException + */ + private int listAllQueues() throws IOException, YarnException { + int rc; + PrintWriter writer = new PrintWriter( + new OutputStreamWriter(sysout, Charset.forName("UTF-8"))); + + List queueList = client.getAllQueues(); + if(queueList != null) { + writer.println("Queue list :"); + for(QueueInfo info : queueList) { + if (info != null) { + writer.println(info.getQueueName()); + } + } + rc = 0; + }else { + writer.println("Error occured during get queues..."); + rc = -1; + } + writer.flush(); + return rc; + } + private void printQueueInfo(PrintWriter writer, QueueInfo queueInfo) { writer.print("Queue Name : "); writer.println(queueInfo.getQueueName()); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java index 7cf9788..79b4a8f 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java @@ -1721,6 +1721,26 @@ public void testGetQueueInfo() throws Exception { } @Test + public void testListAllQueues() throws Exception { + QueueCLI cli = createAndGetQueueCLI(); + List queueList = new ArrayList<>(); + QueueInfo queueInfo = QueueInfo.newInstance("queueA", 0.4f, 0.8f, 0.5f, + null, null, QueueState.RUNNING, null, "GPU", null, false); + queueList.add(queueInfo); + when(client.getAllQueues()).thenReturn(queueList); + int result = cli.run(new String[] { "-list" }); + assertEquals(0, result); + verify(client).getAllQueues(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + PrintWriter pw = new PrintWriter(baos); + pw.println("Queue list :"); + pw.println("queueA"); + pw.close(); + String queueInfoStr = baos.toString("UTF-8"); + Assert.assertEquals(queueInfoStr, sysOutStream.toString()); + } + + @Test public void testGetQueueInfoPreemptionEnabled() throws Exception { CapacitySchedulerConfiguration conf = new CapacitySchedulerConfiguration(); ReservationSystemTestUtil.setupQueueConfiguration(conf);