Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 81DF7200D07 for ; Wed, 23 Aug 2017 20:10:58 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 808051695FE; Wed, 23 Aug 2017 18:10:58 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 7C3C91695F7 for ; Wed, 23 Aug 2017 20:10:56 +0200 (CEST) Received: (qmail 41917 invoked by uid 500); 23 Aug 2017 18:10:54 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 40448 invoked by uid 99); 23 Aug 2017 18:10:53 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 Aug 2017 18:10:53 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 07BEEF5EF3; Wed, 23 Aug 2017 18:10:52 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: xgong@apache.org To: common-commits@hadoop.apache.org Date: Wed, 23 Aug 2017 18:11:01 -0000 Message-Id: In-Reply-To: <0cc12d4074ce4bc88286a9c215cbe3e1@git.apache.org> References: <0cc12d4074ce4bc88286a9c215cbe3e1@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [11/11] hadoop git commit: YARN-5953:Create CLI for changing YARN configurations. (Jonathan Hung via xgong) archived-at: Wed, 23 Aug 2017 18:10:58 -0000 YARN-5953:Create CLI for changing YARN configurations. (Jonathan Hung via xgong) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/217fd99f Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/217fd99f Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/217fd99f Branch: refs/heads/YARN-5734 Commit: 217fd99fc0ccf0330ac585f777406ab239ef195b Parents: cc813e5 Author: Xuan Authored: Fri Jul 7 14:16:46 2017 -0700 Committer: Xuan Committed: Wed Aug 23 11:05:56 2017 -0700 ---------------------------------------------------------------------- hadoop-yarn-project/hadoop-yarn/bin/yarn | 3 + hadoop-yarn-project/hadoop-yarn/bin/yarn.cmd | 5 + .../hadoop/yarn/client/cli/SchedConfCLI.java | 238 +++++++++++++++++++ .../yarn/client/cli/TestSchedConfCLI.java | 160 +++++++++++++ .../hadoop/yarn/webapp/dao/package-info.java | 27 +++ .../yarn/webapp/util/YarnWebServiceUtils.java | 14 ++ .../ConfigurationMutationACLPolicy.java | 2 +- .../DefaultConfigurationMutationACLPolicy.java | 2 +- .../scheduler/MutableConfScheduler.java | 2 +- .../scheduler/MutableConfigurationProvider.java | 2 +- .../scheduler/capacity/CapacityScheduler.java | 2 +- .../conf/MutableCSConfigurationProvider.java | 4 +- ...ueueAdminConfigurationMutationACLPolicy.java | 4 +- .../resourcemanager/webapp/RMWebServices.java | 1 + .../webapp/dao/QueueConfigInfo.java | 4 +- .../webapp/dao/SchedConfUpdateInfo.java | 18 +- .../TestConfigurationMutationACLPolicies.java | 4 +- .../TestMutableCSConfigurationProvider.java | 4 +- .../TestRMWebServicesConfigurationMutation.java | 65 +++-- 19 files changed, 507 insertions(+), 54 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/bin/yarn ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/bin/yarn b/hadoop-yarn-project/hadoop-yarn/bin/yarn index dcde0dc..331fcfe 100755 --- a/hadoop-yarn-project/hadoop-yarn/bin/yarn +++ b/hadoop-yarn-project/hadoop-yarn/bin/yarn @@ -142,6 +142,9 @@ function yarncmd_case HADOOP_SUBCMD_SUPPORTDAEMONIZATION="true" HADOOP_CLASSNAME='org.apache.hadoop.yarn.server.router.Router' ;; + schedconf) + HADOOP_CLASSNAME='org.apache.hadoop.yarn.client.cli.SchedConfCLI' + ;; scmadmin) HADOOP_CLASSNAME='org.apache.hadoop.yarn.client.SCMAdmin' ;; http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/bin/yarn.cmd ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/bin/yarn.cmd b/hadoop-yarn-project/hadoop-yarn/bin/yarn.cmd index 690badf..7ec9848 100644 --- a/hadoop-yarn-project/hadoop-yarn/bin/yarn.cmd +++ b/hadoop-yarn-project/hadoop-yarn/bin/yarn.cmd @@ -295,6 +295,11 @@ goto :eof set YARN_OPTS=%YARN_OPTS% %YARN_CLIENT_OPTS% goto :eof +:schedconf + set CLASS=org.apache.hadoop.yarn.client.cli.SchedConfCLI + set YARN_OPTS=%YARN_OPTS% %YARN_CLIENT_OPTS% + goto :eof + @rem This changes %1, %2 etc. Hence those cannot be used after calling this. :make_command_arguments if "%1" == "--config" ( http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/SchedConfCLI.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/SchedConfCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/SchedConfCLI.java new file mode 100644 index 0000000..e17062e --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/SchedConfCLI.java @@ -0,0 +1,238 @@ +/** +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package org.apache.hadoop.yarn.client.cli; + +import com.google.common.annotations.VisibleForTesting; +import com.sun.jersey.api.client.Client; +import com.sun.jersey.api.client.ClientResponse; +import com.sun.jersey.api.client.WebResource; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.GnuParser; +import org.apache.commons.cli.MissingArgumentException; +import org.apache.commons.cli.Options; +import org.apache.hadoop.classification.InterfaceAudience.Public; +import org.apache.hadoop.classification.InterfaceStability.Evolving; +import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.util.Tool; +import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hadoop.yarn.webapp.dao.QueueConfigInfo; +import org.apache.hadoop.yarn.webapp.dao.SchedConfUpdateInfo; +import org.apache.hadoop.yarn.webapp.util.WebAppUtils; +import org.apache.hadoop.yarn.webapp.util.YarnWebServiceUtils; + +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response.Status; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * CLI for modifying scheduler configuration. + */ +@Public +@Evolving +public class SchedConfCLI extends Configured implements Tool { + + private static final String ADD_QUEUES_OPTION = "addQueues"; + private static final String REMOVE_QUEUES_OPTION = "removeQueues"; + private static final String UPDATE_QUEUES_OPTION = "updateQueues"; + private static final String GLOBAL_OPTIONS = "globalUpdates"; + private static final String HELP_CMD = "help"; + + private static final String CONF_ERR_MSG = "Specify configuration key " + + "value as confKey=confVal."; + + public SchedConfCLI() { + super(new YarnConfiguration()); + } + + public static void main(String[] args) throws Exception { + SchedConfCLI cli = new SchedConfCLI(); + int exitCode = cli.run(args); + System.exit(exitCode); + } + + @Override + public int run(String[] args) throws Exception { + Options opts = new Options(); + + opts.addOption("add", ADD_QUEUES_OPTION, true, + "Add queues with configurations"); + opts.addOption("remove", REMOVE_QUEUES_OPTION, true, + "Remove queues"); + opts.addOption("update", UPDATE_QUEUES_OPTION, true, + "Update queue configurations"); + opts.addOption("global", GLOBAL_OPTIONS, true, + "Update global scheduler configurations"); + opts.addOption("h", HELP_CMD, false, "Displays help for all commands."); + + int exitCode = -1; + CommandLine parsedCli = null; + try { + parsedCli = new GnuParser().parse(opts, args); + } catch (MissingArgumentException ex) { + System.err.println("Missing argument for options"); + printUsage(); + return exitCode; + } + + if (parsedCli.hasOption(HELP_CMD)) { + printUsage(); + return 0; + } + + boolean hasOption = false; + SchedConfUpdateInfo updateInfo = new SchedConfUpdateInfo(); + try { + if (parsedCli.hasOption(ADD_QUEUES_OPTION)) { + hasOption = true; + addQueues(parsedCli.getOptionValue(ADD_QUEUES_OPTION), updateInfo); + } + if (parsedCli.hasOption(REMOVE_QUEUES_OPTION)) { + hasOption = true; + removeQueues(parsedCli.getOptionValue(REMOVE_QUEUES_OPTION), + updateInfo); + } + if (parsedCli.hasOption(UPDATE_QUEUES_OPTION)) { + hasOption = true; + updateQueues(parsedCli.getOptionValue(UPDATE_QUEUES_OPTION), + updateInfo); + } + if (parsedCli.hasOption(GLOBAL_OPTIONS)) { + hasOption = true; + globalUpdates(parsedCli.getOptionValue(GLOBAL_OPTIONS), updateInfo); + } + } catch (IllegalArgumentException e) { + System.err.println(e.getMessage()); + return -1; + } + + if (!hasOption) { + System.err.println("Invalid Command Usage: "); + printUsage(); + return -1; + } + + Client webServiceClient = Client.create(); + WebResource webResource = webServiceClient.resource(WebAppUtils. + getRMWebAppURLWithScheme(getConf())); + ClientResponse response = webResource.path("ws").path("v1").path("cluster") + .path("sched-conf").accept(MediaType.APPLICATION_JSON) + .entity(YarnWebServiceUtils.toJson(updateInfo, + SchedConfUpdateInfo.class), MediaType.APPLICATION_JSON) + .put(ClientResponse.class); + if (response != null) { + if (response.getStatus() == Status.OK.getStatusCode()) { + System.out.println("Configuration changed successfully."); + return 0; + } else { + System.err.println("Configuration change unsuccessful: " + + response.getEntity(String.class)); + } + } else { + System.err.println("Configuration change unsuccessful: null response"); + } + return -1; + } + + @VisibleForTesting + void addQueues(String args, SchedConfUpdateInfo updateInfo) { + if (args == null) { + return; + } + ArrayList queueConfigInfos = new ArrayList<>(); + for (String arg : args.split(";")) { + queueConfigInfos.add(getQueueConfigInfo(arg)); + } + updateInfo.setAddQueueInfo(queueConfigInfos); + } + + @VisibleForTesting + void removeQueues(String args, SchedConfUpdateInfo updateInfo) { + if (args == null) { + return; + } + List queuesToRemove = Arrays.asList(args.split(",")); + updateInfo.setRemoveQueueInfo(new ArrayList<>(queuesToRemove)); + } + + @VisibleForTesting + void updateQueues(String args, SchedConfUpdateInfo updateInfo) { + if (args == null) { + return; + } + ArrayList queueConfigInfos = new ArrayList<>(); + for (String arg : args.split(";")) { + queueConfigInfos.add(getQueueConfigInfo(arg)); + } + updateInfo.setUpdateQueueInfo(queueConfigInfos); + } + + @VisibleForTesting + void globalUpdates(String args, SchedConfUpdateInfo updateInfo) { + if (args == null) { + return; + } + HashMap globalUpdates = new HashMap<>(); + for (String globalUpdate : args.split(",")) { + putKeyValuePair(globalUpdates, globalUpdate); + } + updateInfo.setGlobalParams(globalUpdates); + } + + private QueueConfigInfo getQueueConfigInfo(String arg) { + String[] queueArgs = arg.split(","); + String queuePath = queueArgs[0]; + Map queueConfigs = new HashMap<>(); + for (int i = 1; i < queueArgs.length; ++i) { + putKeyValuePair(queueConfigs, queueArgs[i]); + } + return new QueueConfigInfo(queuePath, queueConfigs); + } + + private void putKeyValuePair(Map kv, String args) { + String[] argParts = args.split("="); + if (argParts.length == 1) { + if (argParts[0].isEmpty() || !args.contains("=")) { + throw new IllegalArgumentException(CONF_ERR_MSG); + } else { + // key specified, but no value e.g. "confKey=" + kv.put(argParts[0], null); + } + } else if (argParts.length > 2) { + throw new IllegalArgumentException(CONF_ERR_MSG); + } else { + if (argParts[0].isEmpty()) { + throw new IllegalArgumentException(CONF_ERR_MSG); + } + kv.put(argParts[0], argParts[1]); + } + } + + private void printUsage() { + System.out.println("yarn schedconf [-add queueAddPath1,confKey1=confVal1," + + "confKey2=confVal2;queueAddPath2,confKey3=confVal3] " + + "[-remove queueRemovePath1,queueRemovePath2] " + + "[-update queueUpdatePath1,confKey1=confVal1] " + + "[-global globalConfKey1=globalConfVal1," + + "globalConfKey2=globalConfVal2]"); + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestSchedConfCLI.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestSchedConfCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestSchedConfCLI.java new file mode 100644 index 0000000..d2f0639 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestSchedConfCLI.java @@ -0,0 +1,160 @@ +/** +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package org.apache.hadoop.yarn.client.cli; + +import org.junit.Before; +import org.junit.Test; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.List; +import java.util.Map; +import org.apache.hadoop.yarn.webapp.dao.QueueConfigInfo; +import org.apache.hadoop.yarn.webapp.dao.SchedConfUpdateInfo; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +/** + * Class for testing {@link SchedConfCLI}. + */ +public class TestSchedConfCLI { + + private ByteArrayOutputStream sysOutStream; + private PrintStream sysOut; + + private ByteArrayOutputStream sysErrStream; + private PrintStream sysErr; + + private SchedConfCLI cli; + + @Before + public void setUp() { + sysOutStream = new ByteArrayOutputStream(); + sysOut = new PrintStream(sysOutStream); + System.setOut(sysOut); + + sysErrStream = new ByteArrayOutputStream(); + sysErr = new PrintStream(sysErrStream); + System.setErr(sysErr); + + cli = new SchedConfCLI(); + } + + @Test(timeout = 10000) + public void testInvalidConf() throws Exception { + // conf pair with no key should be invalid + int exitCode = cli.run(new String[] {"-add", "root.a,=confVal"}); + assertTrue("Should return an error code", exitCode != 0); + assertTrue(sysErrStream.toString().contains("Specify configuration key " + + "value as confKey=confVal.")); + exitCode = cli.run(new String[] {"-update", "root.a,=confVal"}); + assertTrue("Should return an error code", exitCode != 0); + assertTrue(sysErrStream.toString().contains("Specify configuration key " + + "value as confKey=confVal.")); + + exitCode = cli.run(new String[] {"-add", "root.a,confKey=confVal=conf"}); + assertTrue("Should return an error code", exitCode != 0); + assertTrue(sysErrStream.toString().contains("Specify configuration key " + + "value as confKey=confVal.")); + exitCode = cli.run(new String[] {"-update", "root.a,confKey=confVal=c"}); + assertTrue("Should return an error code", exitCode != 0); + assertTrue(sysErrStream.toString().contains("Specify configuration key " + + "value as confKey=confVal.")); + } + + @Test(timeout = 10000) + public void testAddQueues() { + SchedConfUpdateInfo schedUpdateInfo = new SchedConfUpdateInfo(); + cli.addQueues("root.a,a1=aVal1,a2=aVal2," + + "a3=", schedUpdateInfo); + QueueConfigInfo addInfo = schedUpdateInfo.getAddQueueInfo().get(0); + assertEquals("root.a", addInfo.getQueue()); + Map params = addInfo.getParams(); + assertEquals(3, params.size()); + assertEquals("aVal1", params.get("a1")); + assertEquals("aVal2", params.get("a2")); + assertNull(params.get("a3")); + + schedUpdateInfo = new SchedConfUpdateInfo(); + cli.addQueues("root.b,b1=bVal1;root.c,c1=cVal1", schedUpdateInfo); + assertEquals(2, schedUpdateInfo.getAddQueueInfo().size()); + QueueConfigInfo bAddInfo = schedUpdateInfo.getAddQueueInfo().get(0); + assertEquals("root.b", bAddInfo.getQueue()); + Map bParams = bAddInfo.getParams(); + assertEquals(1, bParams.size()); + assertEquals("bVal1", bParams.get("b1")); + QueueConfigInfo cAddInfo = schedUpdateInfo.getAddQueueInfo().get(1); + assertEquals("root.c", cAddInfo.getQueue()); + Map cParams = cAddInfo.getParams(); + assertEquals(1, cParams.size()); + assertEquals("cVal1", cParams.get("c1")); + } + + @Test(timeout = 10000) + public void testRemoveQueues() { + SchedConfUpdateInfo schedUpdateInfo = new SchedConfUpdateInfo(); + cli.removeQueues("root.a,root.b,root.c.c1", schedUpdateInfo); + List removeInfo = schedUpdateInfo.getRemoveQueueInfo(); + assertEquals(3, removeInfo.size()); + assertEquals("root.a", removeInfo.get(0)); + assertEquals("root.b", removeInfo.get(1)); + assertEquals("root.c.c1", removeInfo.get(2)); + } + + @Test(timeout = 10000) + public void testUpdateQueues() { + SchedConfUpdateInfo schedUpdateInfo = new SchedConfUpdateInfo(); + cli.updateQueues("root.a,a1=aVal1,a2=aVal2," + + "a3=", schedUpdateInfo); + QueueConfigInfo updateInfo = schedUpdateInfo.getUpdateQueueInfo().get(0); + assertEquals("root.a", updateInfo.getQueue()); + Map params = updateInfo.getParams(); + assertEquals(3, params.size()); + assertEquals("aVal1", params.get("a1")); + assertEquals("aVal2", params.get("a2")); + assertNull(params.get("a3")); + + schedUpdateInfo = new SchedConfUpdateInfo(); + cli.updateQueues("root.b,b1=bVal1;root.c,c1=cVal1", schedUpdateInfo); + assertEquals(2, schedUpdateInfo.getUpdateQueueInfo().size()); + QueueConfigInfo bUpdateInfo = schedUpdateInfo.getUpdateQueueInfo().get(0); + assertEquals("root.b", bUpdateInfo.getQueue()); + Map bParams = bUpdateInfo.getParams(); + assertEquals(1, bParams.size()); + assertEquals("bVal1", bParams.get("b1")); + QueueConfigInfo cUpdateInfo = schedUpdateInfo.getUpdateQueueInfo().get(1); + assertEquals("root.c", cUpdateInfo.getQueue()); + Map cParams = cUpdateInfo.getParams(); + assertEquals(1, cParams.size()); + assertEquals("cVal1", cParams.get("c1")); + } + + @Test(timeout = 10000) + public void testGlobalUpdate() { + SchedConfUpdateInfo schedUpdateInfo = new SchedConfUpdateInfo(); + cli.globalUpdates("schedKey1=schedVal1,schedKey2=schedVal2", + schedUpdateInfo); + Map globalInfo = schedUpdateInfo.getGlobalParams(); + assertEquals(2, globalInfo.size()); + assertEquals("schedVal1", globalInfo.get("schedKey1")); + assertEquals("schedVal2", globalInfo.get("schedKey2")); + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/dao/package-info.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/dao/package-info.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/dao/package-info.java new file mode 100644 index 0000000..aec6762 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/dao/package-info.java @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Data structures for scheduler configuration mutation info. + */ +@InterfaceAudience.Private +@InterfaceStability.Unstable +package org.apache.hadoop.yarn.webapp.dao; +import org.apache.hadoop.classification.InterfaceAudience; +import org.apache.hadoop.classification.InterfaceStability; + http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/util/YarnWebServiceUtils.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/util/YarnWebServiceUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/util/YarnWebServiceUtils.java index 4167e21..1cf1e97 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/util/YarnWebServiceUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/util/YarnWebServiceUtils.java @@ -23,9 +23,14 @@ import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; import javax.ws.rs.core.MediaType; + +import com.sun.jersey.api.json.JSONJAXBContext; +import com.sun.jersey.api.json.JSONMarshaller; import org.apache.hadoop.conf.Configuration; import org.codehaus.jettison.json.JSONObject; +import java.io.StringWriter; + /** * This class contains several utility function which could be used to generate * Restful calls to RM/NM/AHS. @@ -59,4 +64,13 @@ public final class YarnWebServiceUtils { .get(ClientResponse.class); return response.getEntity(JSONObject.class); } + + @SuppressWarnings("rawtypes") + public static String toJson(Object nsli, Class klass) throws Exception { + StringWriter sw = new StringWriter(); + JSONJAXBContext ctx = new JSONJAXBContext(klass); + JSONMarshaller jm = ctx.createJSONMarshaller(); + jm.marshallToJSON(nsli, sw); + return sw.toString(); + } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ConfigurationMutationACLPolicy.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ConfigurationMutationACLPolicy.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ConfigurationMutationACLPolicy.java index 3a388fe..5bc5874 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ConfigurationMutationACLPolicy.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/ConfigurationMutationACLPolicy.java @@ -21,7 +21,7 @@ package org.apache.hadoop.yarn.server.resourcemanager.scheduler; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.yarn.server.resourcemanager.RMContext; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.SchedConfUpdateInfo; +import org.apache.hadoop.yarn.webapp.dao.SchedConfUpdateInfo; /** * Interface for determining whether configuration mutations are allowed. http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/DefaultConfigurationMutationACLPolicy.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/DefaultConfigurationMutationACLPolicy.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/DefaultConfigurationMutationACLPolicy.java index 6648668..1de6f6b 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/DefaultConfigurationMutationACLPolicy.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/DefaultConfigurationMutationACLPolicy.java @@ -22,7 +22,7 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.yarn.security.YarnAuthorizationProvider; import org.apache.hadoop.yarn.server.resourcemanager.RMContext; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.SchedConfUpdateInfo; +import org.apache.hadoop.yarn.webapp.dao.SchedConfUpdateInfo; /** * Default configuration mutation ACL policy. Checks if user is YARN admin. http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/MutableConfScheduler.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/MutableConfScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/MutableConfScheduler.java index 027d944..007dc29 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/MutableConfScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/MutableConfScheduler.java @@ -19,7 +19,7 @@ package org.apache.hadoop.yarn.server.resourcemanager.scheduler; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.UserGroupInformation; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.SchedConfUpdateInfo; +import org.apache.hadoop.yarn.webapp.dao.SchedConfUpdateInfo; import java.io.IOException; http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/MutableConfigurationProvider.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/MutableConfigurationProvider.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/MutableConfigurationProvider.java index 6b8306c..86be7c3 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/MutableConfigurationProvider.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/MutableConfigurationProvider.java @@ -19,7 +19,7 @@ package org.apache.hadoop.yarn.server.resourcemanager.scheduler; import org.apache.hadoop.security.UserGroupInformation; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.SchedConfUpdateInfo; +import org.apache.hadoop.yarn.webapp.dao.SchedConfUpdateInfo; import java.io.IOException; http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java index 2bde9d8..f800b00 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java @@ -137,11 +137,11 @@ import org.apache.hadoop.yarn.server.resourcemanager.scheduler.placement.Placeme import org.apache.hadoop.yarn.server.resourcemanager.scheduler.placement.SimplePlacementSet; import org.apache.hadoop.yarn.server.resourcemanager.security.AppPriorityACLsManager; import org.apache.hadoop.yarn.server.resourcemanager.security.RMContainerTokenSecretManager; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.SchedConfUpdateInfo; import org.apache.hadoop.yarn.server.utils.Lock; import org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator; import org.apache.hadoop.yarn.util.resource.ResourceCalculator; import org.apache.hadoop.yarn.util.resource.Resources; +import org.apache.hadoop.yarn.webapp.dao.SchedConfUpdateInfo; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/MutableCSConfigurationProvider.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/MutableCSConfigurationProvider.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/MutableCSConfigurationProvider.java index eb97260..670c0f9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/MutableCSConfigurationProvider.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/MutableCSConfigurationProvider.java @@ -31,8 +31,8 @@ import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CSQueue; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.conf.YarnConfigurationStore.LogMutation; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.QueueConfigInfo; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.SchedConfUpdateInfo; +import org.apache.hadoop.yarn.webapp.dao.QueueConfigInfo; +import org.apache.hadoop.yarn.webapp.dao.SchedConfUpdateInfo; import java.io.IOException; import java.util.ArrayList; http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/QueueAdminConfigurationMutationACLPolicy.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/QueueAdminConfigurationMutationACLPolicy.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/QueueAdminConfigurationMutationACLPolicy.java index 0a82d50..ee53fd1 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/QueueAdminConfigurationMutationACLPolicy.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/QueueAdminConfigurationMutationACLPolicy.java @@ -27,8 +27,8 @@ import org.apache.hadoop.yarn.server.resourcemanager.RMContext; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ConfigurationMutationACLPolicy; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.MutableConfScheduler; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.Queue; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.QueueConfigInfo; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.SchedConfUpdateInfo; +import org.apache.hadoop.yarn.webapp.dao.QueueConfigInfo; +import org.apache.hadoop.yarn.webapp.dao.SchedConfUpdateInfo; import java.io.IOException; import java.util.HashSet; http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java index 358b57b..516b6293 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java @@ -192,6 +192,7 @@ import org.apache.hadoop.yarn.webapp.BadRequestException; import org.apache.hadoop.yarn.webapp.ForbiddenException; import org.apache.hadoop.yarn.webapp.NotFoundException; import org.apache.hadoop.yarn.webapp.util.WebAppUtils; +import org.apache.hadoop.yarn.webapp.dao.SchedConfUpdateInfo; import com.google.common.annotations.VisibleForTesting; import com.google.inject.Inject; http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/QueueConfigInfo.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/QueueConfigInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/QueueConfigInfo.java index b20eda6..d1d91c2 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/QueueConfigInfo.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/QueueConfigInfo.java @@ -16,7 +16,7 @@ * limitations under the License. */ -package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao; +package org.apache.hadoop.yarn.webapp.dao; import java.util.HashMap; import java.util.Map; @@ -54,4 +54,4 @@ public class QueueConfigInfo { return this.params; } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/SchedConfUpdateInfo.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/SchedConfUpdateInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/SchedConfUpdateInfo.java index b7c585e..bb84096 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/SchedConfUpdateInfo.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/SchedConfUpdateInfo.java @@ -16,7 +16,7 @@ * limitations under the License. */ -package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao; +package org.apache.hadoop.yarn.webapp.dao; import java.util.ArrayList; import java.util.HashMap; @@ -54,16 +54,32 @@ public class SchedConfUpdateInfo { return addQueueInfo; } + public void setAddQueueInfo(ArrayList addQueueInfo) { + this.addQueueInfo = addQueueInfo; + } + public ArrayList getRemoveQueueInfo() { return removeQueueInfo; } + public void setRemoveQueueInfo(ArrayList removeQueueInfo) { + this.removeQueueInfo = removeQueueInfo; + } + public ArrayList getUpdateQueueInfo() { return updateQueueInfo; } + public void setUpdateQueueInfo(ArrayList updateQueueInfo) { + this.updateQueueInfo = updateQueueInfo; + } + @XmlElementWrapper(name = "global-updates") public HashMap getGlobalParams() { return global; } + + public void setGlobalParams(HashMap globalInfo) { + this.global = globalInfo; + } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestConfigurationMutationACLPolicies.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestConfigurationMutationACLPolicies.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestConfigurationMutationACLPolicies.java index 0f5a3d8..398e909 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestConfigurationMutationACLPolicies.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestConfigurationMutationACLPolicies.java @@ -25,8 +25,8 @@ import org.apache.hadoop.yarn.api.records.QueueInfo; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.server.resourcemanager.RMContext; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.conf.QueueAdminConfigurationMutationACLPolicy; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.QueueConfigInfo; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.SchedConfUpdateInfo; +import org.apache.hadoop.yarn.webapp.dao.QueueConfigInfo; +import org.apache.hadoop.yarn.webapp.dao.SchedConfUpdateInfo; import org.junit.Before; import org.junit.Test; http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/TestMutableCSConfigurationProvider.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/TestMutableCSConfigurationProvider.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/TestMutableCSConfigurationProvider.java index 3216781..9104f16 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/TestMutableCSConfigurationProvider.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/conf/TestMutableCSConfigurationProvider.java @@ -23,8 +23,8 @@ import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.yarn.server.resourcemanager.RMContext; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.QueueConfigInfo; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.SchedConfUpdateInfo; +import org.apache.hadoop.yarn.webapp.dao.QueueConfigInfo; +import org.apache.hadoop.yarn.webapp.dao.SchedConfUpdateInfo; import org.junit.Before; import org.junit.Test; http://git-wip-us.apache.org/repos/asf/hadoop/blob/217fd99f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesConfigurationMutation.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesConfigurationMutation.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesConfigurationMutation.java index 5fbe36f..26ef1b7 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesConfigurationMutation.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesConfigurationMutation.java @@ -22,8 +22,6 @@ import com.google.inject.Guice; import com.google.inject.servlet.ServletModule; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.WebResource; -import com.sun.jersey.api.json.JSONJAXBContext; -import com.sun.jersey.api.json.JSONMarshaller; import com.sun.jersey.guice.spi.container.servlet.GuiceContainer; import com.sun.jersey.test.framework.WebAppDescriptor; import org.apache.hadoop.conf.Configuration; @@ -35,11 +33,12 @@ import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulerConfiguration; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.QueueConfigInfo; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.SchedConfUpdateInfo; import org.apache.hadoop.yarn.webapp.GenericExceptionHandler; import org.apache.hadoop.yarn.webapp.GuiceServletConfig; import org.apache.hadoop.yarn.webapp.JerseyTestBase; +import org.apache.hadoop.yarn.webapp.dao.QueueConfigInfo; +import org.apache.hadoop.yarn.webapp.dao.SchedConfUpdateInfo; +import org.apache.hadoop.yarn.webapp.util.YarnWebServiceUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -50,7 +49,6 @@ import javax.ws.rs.core.Response.Status; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.io.StringWriter; import java.util.HashMap; import java.util.Map; @@ -183,8 +181,8 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase { r.path("ws").path("v1").path("cluster") .path("sched-conf").queryParam("user.name", userName) .accept(MediaType.APPLICATION_JSON) - .entity(toJson(updateInfo, SchedConfUpdateInfo.class), - MediaType.APPLICATION_JSON) + .entity(YarnWebServiceUtils.toJson(updateInfo, + SchedConfUpdateInfo.class), MediaType.APPLICATION_JSON) .put(ClientResponse.class); assertEquals(Status.OK.getStatusCode(), response.getStatus()); @@ -218,8 +216,8 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase { r.path("ws").path("v1").path("cluster") .path("sched-conf").queryParam("user.name", userName) .accept(MediaType.APPLICATION_JSON) - .entity(toJson(updateInfo, SchedConfUpdateInfo.class), - MediaType.APPLICATION_JSON) + .entity(YarnWebServiceUtils.toJson(updateInfo, + SchedConfUpdateInfo.class), MediaType.APPLICATION_JSON) .put(ClientResponse.class); assertEquals(Status.OK.getStatusCode(), response.getStatus()); @@ -244,8 +242,8 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase { r.path("ws").path("v1").path("cluster") .path("sched-conf").queryParam("user.name", userName) .accept(MediaType.APPLICATION_JSON) - .entity(toJson(updateInfo, SchedConfUpdateInfo.class), - MediaType.APPLICATION_JSON) + .entity(YarnWebServiceUtils.toJson(updateInfo, + SchedConfUpdateInfo.class), MediaType.APPLICATION_JSON) .put(ClientResponse.class); assertEquals(Status.OK.getStatusCode(), response.getStatus()); @@ -269,8 +267,8 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase { r.path("ws").path("v1").path("cluster") .path("sched-conf").queryParam("user.name", userName) .accept(MediaType.APPLICATION_JSON) - .entity(toJson(updateInfo, SchedConfUpdateInfo.class), - MediaType.APPLICATION_JSON) + .entity(YarnWebServiceUtils.toJson(updateInfo, + SchedConfUpdateInfo.class), MediaType.APPLICATION_JSON) .put(ClientResponse.class); assertEquals(Status.OK.getStatusCode(), response.getStatus()); @@ -300,8 +298,8 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase { r.path("ws").path("v1").path("cluster") .path("sched-conf").queryParam("user.name", userName) .accept(MediaType.APPLICATION_JSON) - .entity(toJson(updateInfo, SchedConfUpdateInfo.class), - MediaType.APPLICATION_JSON) + .entity(YarnWebServiceUtils.toJson(updateInfo, + SchedConfUpdateInfo.class), MediaType.APPLICATION_JSON) .put(ClientResponse.class); assertEquals(Status.OK.getStatusCode(), response.getStatus()); @@ -332,8 +330,8 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase { r.path("ws").path("v1").path("cluster") .path("sched-conf").queryParam("user.name", userName) .accept(MediaType.APPLICATION_JSON) - .entity(toJson(updateInfo, SchedConfUpdateInfo.class), - MediaType.APPLICATION_JSON) + .entity(YarnWebServiceUtils.toJson(updateInfo, + SchedConfUpdateInfo.class), MediaType.APPLICATION_JSON) .put(ClientResponse.class); assertEquals(Status.OK.getStatusCode(), response.getStatus()); @@ -360,8 +358,8 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase { r.path("ws").path("v1").path("cluster") .path("sched-conf").queryParam("user.name", userName) .accept(MediaType.APPLICATION_JSON) - .entity(toJson(updateInfo, SchedConfUpdateInfo.class), - MediaType.APPLICATION_JSON) + .entity(YarnWebServiceUtils.toJson(updateInfo, + SchedConfUpdateInfo.class), MediaType.APPLICATION_JSON) .put(ClientResponse.class); assertEquals(Status.OK.getStatusCode(), response.getStatus()); CapacitySchedulerConfiguration newCSConf = @@ -395,8 +393,8 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase { r.path("ws").path("v1").path("cluster") .path("sched-conf").queryParam("user.name", userName) .accept(MediaType.APPLICATION_JSON) - .entity(toJson(updateInfo, SchedConfUpdateInfo.class), - MediaType.APPLICATION_JSON) + .entity(YarnWebServiceUtils.toJson(updateInfo, + SchedConfUpdateInfo.class), MediaType.APPLICATION_JSON) .put(ClientResponse.class); assertEquals(Status.OK.getStatusCode(), response.getStatus()); CapacitySchedulerConfiguration newCSConf = cs.getConfiguration(); @@ -413,8 +411,8 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase { r.path("ws").path("v1").path("cluster") .path("sched-conf").queryParam("user.name", userName) .accept(MediaType.APPLICATION_JSON) - .entity(toJson(updateInfo, SchedConfUpdateInfo.class), - MediaType.APPLICATION_JSON) + .entity(YarnWebServiceUtils.toJson(updateInfo, + SchedConfUpdateInfo.class), MediaType.APPLICATION_JSON) .put(ClientResponse.class); assertEquals(Status.OK.getStatusCode(), response.getStatus()); newCSConf = cs.getConfiguration(); @@ -443,8 +441,8 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase { r.path("ws").path("v1").path("cluster") .path("sched-conf").queryParam("user.name", userName) .accept(MediaType.APPLICATION_JSON) - .entity(toJson(updateInfo, SchedConfUpdateInfo.class), - MediaType.APPLICATION_JSON) + .entity(YarnWebServiceUtils.toJson(updateInfo, + SchedConfUpdateInfo.class), MediaType.APPLICATION_JSON) .put(ClientResponse.class); assertEquals(Status.OK.getStatusCode(), response.getStatus()); CapacitySchedulerConfiguration newCSConf = @@ -468,8 +466,8 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase { r.path("ws").path("v1").path("cluster") .path("sched-conf").queryParam("user.name", userName) .accept(MediaType.APPLICATION_JSON) - .entity(toJson(updateInfo, SchedConfUpdateInfo.class), - MediaType.APPLICATION_JSON) + .entity(YarnWebServiceUtils.toJson(updateInfo, + SchedConfUpdateInfo.class), MediaType.APPLICATION_JSON) .put(ClientResponse.class); assertEquals(Status.OK.getStatusCode(), response.getStatus()); CapacitySchedulerConfiguration newCSConf = @@ -483,8 +481,8 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase { r.path("ws").path("v1").path("cluster") .path("sched-conf").queryParam("user.name", userName) .accept(MediaType.APPLICATION_JSON) - .entity(toJson(updateInfo, SchedConfUpdateInfo.class), - MediaType.APPLICATION_JSON) + .entity(YarnWebServiceUtils.toJson(updateInfo, + SchedConfUpdateInfo.class), MediaType.APPLICATION_JSON) .put(ClientResponse.class); assertEquals(Status.OK.getStatusCode(), response.getStatus()); newCSConf = @@ -506,13 +504,4 @@ public class TestRMWebServicesConfigurationMutation extends JerseyTestBase { } super.tearDown(); } - - @SuppressWarnings("rawtypes") - private String toJson(Object nsli, Class klass) throws Exception { - StringWriter sw = new StringWriter(); - JSONJAXBContext ctx = new JSONJAXBContext(klass); - JSONMarshaller jm = ctx.createJSONMarshaller(); - jm.marshallToJSON(nsli, sw); - return sw.toString(); - } } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org For additional commands, e-mail: common-commits-help@hadoop.apache.org