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 311C8173FB for ; Thu, 2 Oct 2014 20:52:30 +0000 (UTC) Received: (qmail 26656 invoked by uid 500); 2 Oct 2014 20:52:29 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 26582 invoked by uid 500); 2 Oct 2014 20:52:29 -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 26573 invoked by uid 99); 2 Oct 2014 20:52:29 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 02 Oct 2014 20:52:29 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 95304A17BAA; Thu, 2 Oct 2014 20:52:29 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: wang@apache.org To: common-commits@hadoop.apache.org Date: Thu, 02 Oct 2014 20:52:29 -0000 Message-Id: <8798289626764259ac2264f20ae155be@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/2] git commit: HDFS-7179. DFSClient should instantiate a KeyProvider, not a KeyProviderCryptoExtension. (wang) Repository: hadoop Updated Branches: refs/heads/trunk a56f3ecf8 -> 6ac10516e HDFS-7179. DFSClient should instantiate a KeyProvider, not a KeyProviderCryptoExtension. (wang) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/d2d5a0ea Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/d2d5a0ea Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/d2d5a0ea Branch: refs/heads/trunk Commit: d2d5a0ea03b0d461a4d376c7b9de8cd5c147effa Parents: a56f3ec Author: Andrew Wang Authored: Thu Oct 2 13:50:05 2014 -0700 Committer: Andrew Wang Committed: Thu Oct 2 13:50:05 2014 -0700 ---------------------------------------------------------------------- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../java/org/apache/hadoop/hdfs/DFSClient.java | 11 +++++---- .../java/org/apache/hadoop/hdfs/DFSUtil.java | 25 ++++++++++++++++---- .../apache/hadoop/hdfs/TestEncryptionZones.java | 3 +-- 4 files changed, 32 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/d2d5a0ea/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index bb7664a..e806e4a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -900,6 +900,9 @@ Release 2.6.0 - UNRELEASED HDFS-7162. Wrong path when deleting through fuse-dfs a file which already exists in trash (Chengbing Liu via cmccabe) + HDFS-7179. DFSClient should instantiate a KeyProvider, not a + KeyProviderCryptoExtension. (wang) + BREAKDOWN OF HDFS-6134 AND HADOOP-10150 SUBTASKS AND RELATED JIRAS HDFS-6387. HDFS CLI admin tool for creating & deleting an http://git-wip-us.apache.org/repos/asf/hadoop/blob/d2d5a0ea/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSClient.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSClient.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSClient.java index d83d8cb..c975ad5 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSClient.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSClient.java @@ -104,6 +104,7 @@ import org.apache.hadoop.crypto.CryptoCodec; import org.apache.hadoop.crypto.CryptoInputStream; import org.apache.hadoop.crypto.CryptoOutputStream; import org.apache.hadoop.crypto.CryptoProtocolVersion; +import org.apache.hadoop.crypto.key.KeyProvider; import org.apache.hadoop.crypto.key.KeyProviderCryptoExtension; import org.apache.hadoop.fs.BlockLocation; import org.apache.hadoop.fs.BlockStorageLocation; @@ -264,7 +265,7 @@ public class DFSClient implements java.io.Closeable, RemotePeerFactory, new DFSHedgedReadMetrics(); private static ThreadPoolExecutor HEDGED_READ_THREAD_POOL; @VisibleForTesting - KeyProviderCryptoExtension provider; + KeyProvider provider; /** * DFSClient configuration */ @@ -596,7 +597,7 @@ public class DFSClient implements java.io.Closeable, RemotePeerFactory, this.authority = nameNodeUri == null? "null": nameNodeUri.getAuthority(); this.clientName = "DFSClient_" + dfsClientConf.taskId + "_" + DFSUtil.getRandom().nextInt() + "_" + Thread.currentThread().getId(); - provider = DFSUtil.createKeyProviderCryptoExtension(conf); + provider = DFSUtil.createKeyProvider(conf); if (LOG.isDebugEnabled()) { if (provider == null) { LOG.debug("No KeyProvider found."); @@ -1315,7 +1316,9 @@ public class DFSClient implements java.io.Closeable, RemotePeerFactory, feInfo.getKeyName(), feInfo.getEzKeyVersionName(), feInfo.getIV(), feInfo.getEncryptedDataEncryptionKey()); try { - return provider.decryptEncryptedKey(ekv); + KeyProviderCryptoExtension cryptoProvider = KeyProviderCryptoExtension + .createKeyProviderCryptoExtension(provider); + return cryptoProvider.decryptEncryptedKey(ekv); } catch (GeneralSecurityException e) { throw new IOException(e); } @@ -3138,7 +3141,7 @@ public class DFSClient implements java.io.Closeable, RemotePeerFactory, return HEDGED_READ_METRIC; } - public KeyProviderCryptoExtension getKeyProvider() { + public KeyProvider getKeyProvider() { return provider; } http://git-wip-us.apache.org/repos/asf/hadoop/blob/d2d5a0ea/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSUtil.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSUtil.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSUtil.java index aba86d1..f1bfcb4 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSUtil.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSUtil.java @@ -1791,15 +1791,14 @@ public class DFSUtil { } /** - * Creates a new KeyProviderCryptoExtension by wrapping the - * KeyProvider specified in the given Configuration. + * Creates a new KeyProvider from the given Configuration. * * @param conf Configuration - * @return new KeyProviderCryptoExtension, or null if no provider was found. + * @return new KeyProvider, or null if no provider was found. * @throws IOException if the KeyProvider is improperly specified in * the Configuration */ - public static KeyProviderCryptoExtension createKeyProviderCryptoExtension( + public static KeyProvider createKeyProvider( final Configuration conf) throws IOException { final String providerUriStr = conf.get(DFSConfigKeys.DFS_ENCRYPTION_KEY_PROVIDER_URI, null); @@ -1823,6 +1822,24 @@ public class DFSUtil { throw new IOException("KeyProvider " + keyProvider.toString() + " was found but it is a transient provider."); } + return keyProvider; + } + + /** + * Creates a new KeyProviderCryptoExtension by wrapping the + * KeyProvider specified in the given Configuration. + * + * @param conf Configuration + * @return new KeyProviderCryptoExtension, or null if no provider was found. + * @throws IOException if the KeyProvider is improperly specified in + * the Configuration + */ + public static KeyProviderCryptoExtension createKeyProviderCryptoExtension( + final Configuration conf) throws IOException { + KeyProvider keyProvider = createKeyProvider(conf); + if (keyProvider == null) { + return null; + } KeyProviderCryptoExtension cryptoProvider = KeyProviderCryptoExtension .createKeyProviderCryptoExtension(keyProvider); return cryptoProvider; http://git-wip-us.apache.org/repos/asf/hadoop/blob/d2d5a0ea/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java index df1864c..c384bfb 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java @@ -43,7 +43,6 @@ import org.apache.hadoop.crypto.CipherSuite; import org.apache.hadoop.crypto.CryptoProtocolVersion; import org.apache.hadoop.crypto.key.JavaKeyStoreProvider; import org.apache.hadoop.crypto.key.KeyProvider; -import org.apache.hadoop.crypto.key.KeyProviderCryptoExtension; import org.apache.hadoop.crypto.key.KeyProviderFactory; import org.apache.hadoop.fs.CommonConfigurationKeysPublic; import org.apache.hadoop.fs.CreateFlag; @@ -1043,7 +1042,7 @@ public class TestEncryptionZones { public void testDelegationToken() throws Exception { UserGroupInformation.createRemoteUser("JobTracker"); DistributedFileSystem dfs = cluster.getFileSystem(); - KeyProviderCryptoExtension keyProvider = Mockito.mock(KeyProviderCryptoExtension.class, + KeyProvider keyProvider = Mockito.mock(KeyProvider.class, withSettings().extraInterfaces( DelegationTokenExtension.class, CryptoExtension.class));