You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ro...@apache.org on 2016/12/28 06:46:56 UTC
hadoop git commit: YARN-6001. Improve moveApplicationQueues command
line. Contributed by Sunil G.
Repository: hadoop
Updated Branches:
refs/heads/trunk 0840b4329 -> e297be74e
YARN-6001. Improve moveApplicationQueues command line. Contributed by Sunil G.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e297be74
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e297be74
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e297be74
Branch: refs/heads/trunk
Commit: e297be74ed4c4334bf48dd01d3b10e302147041d
Parents: 0840b43
Author: Rohith Sharma K S <ro...@apache.org>
Authored: Wed Dec 28 12:16:11 2016 +0530
Committer: Rohith Sharma K S <ro...@apache.org>
Committed: Wed Dec 28 12:16:11 2016 +0530
----------------------------------------------------------------------
.../hadoop/yarn/client/cli/ApplicationCLI.java | 16 ++++-
.../hadoop/yarn/client/cli/TestYarnCLI.java | 62 +++++++++++++++++++-
2 files changed, 76 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e297be74/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java
index efe5921..893348a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ApplicationCLI.java
@@ -88,6 +88,7 @@ public class ApplicationCLI extends YarnCLI {
public static final String APP_ID = "appId";
public static final String UPDATE_PRIORITY = "updatePriority";
public static final String UPDATE_LIFETIME = "updateLifetime";
+ public static final String CHANGE_APPLICATION_QUEUE = "changeQueue";
private boolean allAppStates;
@@ -114,7 +115,7 @@ public class ApplicationCLI extends YarnCLI {
+ "based on application state and -appTags to filter applications "
+ "based on application tag.");
opts.addOption(MOVE_TO_QUEUE_CMD, true, "Moves the application to a "
- + "different queue.");
+ + "different queue. Deprecated command. Use 'changeQueue' instead.");
opts.addOption(QUEUE_CMD, true, "Works with the movetoqueue command to"
+ " specify which queue to move an application to.");
opts.addOption(HELP_CMD, false, "Displays help for all commands.");
@@ -146,6 +147,11 @@ public class ApplicationCLI extends YarnCLI {
opts.addOption(UPDATE_LIFETIME, true,
"update timeout of an application from NOW. ApplicationId can be"
+ " passed using 'appId' option. Timeout value is in seconds.");
+ opts.addOption(CHANGE_APPLICATION_QUEUE, true,
+ "Moves application to a new queue. ApplicationId can be"
+ + " passed using 'appId' option. 'movetoqueue' command is"
+ + " deprecated, this new command 'changeQueue' performs same"
+ + " functionality.");
Option killOpt = new Option(KILL_CMD, true, "Kills the application. "
+ "Set of applications can be provided separated with space");
killOpt.setValueSeparator(' ');
@@ -158,6 +164,7 @@ public class ApplicationCLI extends YarnCLI {
opts.getOption(APP_ID).setArgName("Application ID");
opts.getOption(UPDATE_PRIORITY).setArgName("Priority");
opts.getOption(UPDATE_LIFETIME).setArgName("Timeout");
+ opts.getOption(CHANGE_APPLICATION_QUEUE).setArgName("Queue Name");
} else if (args.length > 0 && args[0].equalsIgnoreCase(APPLICATION_ATTEMPT)) {
title = APPLICATION_ATTEMPT;
opts.addOption(STATUS_CMD, true,
@@ -315,6 +322,13 @@ public class ApplicationCLI extends YarnCLI {
updateApplicationTimeout(cliParser.getOptionValue(APP_ID),
ApplicationTimeoutType.LIFETIME, timeoutInSec);
+ } else if (cliParser.hasOption(CHANGE_APPLICATION_QUEUE)) {
+ if (!cliParser.hasOption(APP_ID)) {
+ printUsage(title, opts);
+ return exitCode;
+ }
+ moveApplicationAcrossQueues(cliParser.getOptionValue(APP_ID),
+ cliParser.getOptionValue(CHANGE_APPLICATION_QUEUE));
} else if (cliParser.hasOption(SIGNAL_CMD)) {
if (args.length < 3 || args.length > 4) {
printUsage(title, opts);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/e297be74/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestYarnCLI.java
----------------------------------------------------------------------
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 2e90581..7cf9788 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
@@ -1212,6 +1212,59 @@ public class TestYarnCLI {
}
@Test
+ public void testMoveApplicationAcrossQueuesWithNewCommand() throws Exception {
+ ApplicationCLI cli = createAndGetAppCLI();
+ ApplicationId applicationId = ApplicationId.newInstance(1234, 5);
+
+ ApplicationReport newApplicationReport2 = ApplicationReport.newInstance(
+ applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
+ "user", "queue", "appname", "host", 124, null,
+ YarnApplicationState.FINISHED, "diagnostics", "url", 0, 0,
+ FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
+ when(client.getApplicationReport(any(ApplicationId.class)))
+ .thenReturn(newApplicationReport2);
+ int result = cli.run(new String[]{"application", "-appId",
+ applicationId.toString(), "-changeQueue", "targetqueue"});
+ assertEquals(0, result);
+ verify(client, times(0)).moveApplicationAcrossQueues(
+ any(ApplicationId.class), any(String.class));
+ verify(sysOut)
+ .println("Application " + applicationId + " has already finished ");
+
+ ApplicationReport newApplicationReport = ApplicationReport.newInstance(
+ applicationId, ApplicationAttemptId.newInstance(applicationId, 1),
+ "user", "queue", "appname", "host", 124, null,
+ YarnApplicationState.RUNNING, "diagnostics", "url", 0, 0,
+ FinalApplicationStatus.SUCCEEDED, null, "N/A", 0.53789f, "YARN", null);
+ when(client.getApplicationReport(any(ApplicationId.class)))
+ .thenReturn(newApplicationReport);
+ result = cli.run(new String[]{"application", "-appId",
+ applicationId.toString(), "-changeQueue", "targetqueue"});
+ assertEquals(0, result);
+ verify(client).moveApplicationAcrossQueues(any(ApplicationId.class),
+ any(String.class));
+ verify(sysOut).println(
+ "Moving application application_1234_0005 to queue targetqueue");
+ verify(sysOut).println("Successfully completed move.");
+
+ doThrow(new ApplicationNotFoundException(
+ "Application with id '" + applicationId + "' doesn't exist in RM."))
+ .when(client)
+ .moveApplicationAcrossQueues(applicationId, "targetqueue");
+ cli = createAndGetAppCLI();
+ try {
+ result = cli.run(new String[]{"application", "-appId",
+ applicationId.toString(), "-changeQueue", "targetqueue"});
+ Assert.fail();
+ } catch (Exception ex) {
+ Assert.assertTrue(ex instanceof ApplicationNotFoundException);
+ Assert.assertEquals(
+ "Application with id '" + applicationId + "' doesn't exist in RM.",
+ ex.getMessage());
+ }
+ }
+
+ @Test
public void testListClusterNodes() throws Exception {
List<NodeReport> nodeReports = new ArrayList<NodeReport>();
nodeReports.addAll(getNodeReports(1, NodeState.NEW));
@@ -1972,6 +2025,12 @@ public class TestYarnCLI {
pw.println(" -appTypes <Types> Works with -list to filter applications");
pw.println(" based on input comma-separated list of");
pw.println(" application types.");
+ pw.println(" -changeQueue <Queue Name> Moves application to a new queue.");
+ pw.println(" ApplicationId can be passed using 'appId'");
+ pw.println(" option. 'movetoqueue' command is");
+ pw.println(" deprecated, this new command");
+ pw.println(" 'changeQueue' performs same");
+ pw.println(" functionality.");
pw.println(" -help Displays help for all commands.");
pw.println(" -kill <Application ID> Kills the application. Set of");
pw.println(" applications can be provided separated");
@@ -1983,7 +2042,8 @@ public class TestYarnCLI {
pw.println(" and -appTags to filter applications based");
pw.println(" on application tag.");
pw.println(" -movetoqueue <Application ID> Moves the application to a different");
- pw.println(" queue.");
+ pw.println(" queue. Deprecated command. Use");
+ pw.println(" 'changeQueue' instead.");
pw.println(" -queue <Queue Name> Works with the movetoqueue command to");
pw.println(" specify which queue to move an");
pw.println(" application to.");
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org