Return-Path: X-Original-To: apmail-hadoop-common-commits-archive@www.apache.org Delivered-To: apmail-hadoop-common-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 23B4D11728 for ; Tue, 2 Sep 2014 22:58:50 +0000 (UTC) Received: (qmail 46084 invoked by uid 500); 2 Sep 2014 22:58:37 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 45899 invoked by uid 500); 2 Sep 2014 22:58:36 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-dev@hadoop.apache.org Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 43622 invoked by uid 99); 2 Sep 2014 22:58:35 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 02 Sep 2014 22:58:35 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 6E98C9B0CCC; Tue, 2 Sep 2014 22:58:35 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: todd@apache.org To: common-commits@hadoop.apache.org Date: Tue, 02 Sep 2014 22:58:56 -0000 Message-Id: <8569acc38dba42ae869b22969d4a1472@git.apache.org> In-Reply-To: <473d84b6f05f4ac893f597001fc30f21@git.apache.org> References: <473d84b6f05f4ac893f597001fc30f21@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [23/50] [abbrv] git commit: YARN-2447. RM web service app submission doesn't pass secrets correctly. Contributed by Varun Vasudev YARN-2447. RM web service app submission doesn't pass secrets correctly. Contributed by Varun Vasudev Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/c686aa35 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/c686aa35 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/c686aa35 Branch: refs/heads/MR-2841 Commit: c686aa3533b42e1baf62a78bc1bfb0ac05be53bb Parents: 156e6a4 Author: Jian He Authored: Fri Aug 29 11:40:47 2014 -0700 Committer: Jian He Committed: Fri Aug 29 11:40:47 2014 -0700 ---------------------------------------------------------------------- hadoop-yarn-project/CHANGES.txt | 3 +++ .../resourcemanager/webapp/RMWebServices.java | 2 +- .../TestRMWebServicesAppsModification.java | 21 ++++++++++++++++---- 3 files changed, 21 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/c686aa35/hadoop-yarn-project/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 72e8a1e..5503c4e 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -257,6 +257,9 @@ Release 2.6.0 - UNRELEASED YARN-2450. Fix typos in log messages. (Ray Chiang via hitesh) + YARN-2447. RM web service app submission doesn't pass secrets correctly. + (Varun Vasudev via jianhe) + Release 2.5.1 - UNRELEASED INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/c686aa35/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 a8ec192..24a90bd 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 @@ -1061,7 +1061,7 @@ public class RMWebServices { token.decodeFromUrlString(entry.getValue()); ret.addToken(alias, token); } - for (Map.Entry entry : credentials.getTokens().entrySet()) { + for (Map.Entry entry : credentials.getSecrets().entrySet()) { Text alias = new Text(entry.getKey()); Base64 decoder = new Base64(0, null, true); byte[] secret = decoder.decode(entry.getValue()); http://git-wip-us.apache.org/repos/asf/hadoop/blob/c686aa35/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesAppsModification.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/TestRMWebServicesAppsModification.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesAppsModification.java index 12c5686..e02e410 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesAppsModification.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesAppsModification.java @@ -22,9 +22,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeTrue; -import java.io.IOException; -import java.io.StringReader; -import java.io.StringWriter; +import java.io.*; import java.net.URI; import java.util.ArrayList; import java.util.Arrays; @@ -47,6 +45,9 @@ import javax.xml.parsers.ParserConfigurationException; import org.apache.commons.codec.binary.Base64; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.io.DataInputBuffer; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.security.Credentials; import org.apache.hadoop.security.authentication.server.AuthenticationFilter; import org.apache.hadoop.security.authentication.server.PseudoAuthenticationHandler; import org.apache.hadoop.yarn.api.records.ApplicationAccessType; @@ -77,6 +78,7 @@ import org.apache.hadoop.yarn.webapp.WebServicesTestUtils; import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject; import org.junit.After; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -684,7 +686,8 @@ public class TestRMWebServicesAppsModification extends JerseyTest { CredentialsInfo credentials = new CredentialsInfo(); HashMap tokens = new HashMap(); HashMap secrets = new HashMap(); - secrets.put("secret1", Base64.encodeBase64URLSafeString("secret1".getBytes("UTF8"))); + secrets.put("secret1", Base64.encodeBase64String( + "mysecret".getBytes("UTF8"))); credentials.setSecrets(secrets); credentials.setTokens(tokens); ApplicationSubmissionContextInfo appInfo = new ApplicationSubmissionContextInfo(); @@ -757,6 +760,16 @@ public class TestRMWebServicesAppsModification extends JerseyTest { assertEquals(y.getType(), exampleLR.getType()); assertEquals(y.getPattern(), exampleLR.getPattern()); assertEquals(y.getVisibility(), exampleLR.getVisibility()); + Credentials cs = new Credentials(); + ByteArrayInputStream str = + new ByteArrayInputStream(app.getApplicationSubmissionContext() + .getAMContainerSpec().getTokens().array()); + DataInputStream di = new DataInputStream(str); + cs.readTokenStorageStream(di); + Text key = new Text("secret1"); + assertTrue("Secrets missing from credentials object", cs + .getAllSecretKeys().contains(key)); + assertEquals("mysecret", new String(cs.getSecretKey(key), "UTF-8")); response = this.constructWebResource("apps", appId).accept(acceptMedia)