From f9a9c1ee633fd50ba478b87e1c9d84dce089a345 Mon Sep 17 00:00:00 2001 From: Owen O'Malley Date: Thu, 24 Apr 2014 15:49:44 +0000 Subject: [PATCH] HADOOP-10534. KeyProvider getKeysMetadata should take a list of names rather than returning all keys. (omalley) git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1589773 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop-common/CHANGES.txt | 7 +++++-- .../apache/hadoop/crypto/key/KeyProvider.java | 18 +++++++----------- .../org/apache/hadoop/crypto/key/KeyShell.java | 10 +++++----- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index c00fcf430f..2e3caa1274 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -23,8 +23,8 @@ Trunk (Unreleased) if the override value is same as the final parameter value. (Ravi Prakash via suresh) - HADOOP-8078. Add capability to turn on security in unit tests. (Jaimin Jetly - via jitendra) + HADOOP-8078. Add capability to turn on security in unit tests. (Jaimin + Jetly via jitendra) HADOOP-7757. Test file reference count is at least 3x actual value (Jon Eagles via bobby) @@ -141,6 +141,9 @@ Trunk (Unreleased) HADOOP-10430. KeyProvider Metadata should have an optional description, there should be a method to retrieve the metadata from all keys. (tucu) + HADOOP-10534. KeyProvider getKeysMetadata should take a list of names + rather than returning all keys. (omalley) + BUG FIXES HADOOP-9451. Fault single-layer config if node group topology is enabled. diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyProvider.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyProvider.java index a8a303ce7b..17ce33cfdb 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyProvider.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyProvider.java @@ -312,20 +312,16 @@ public abstract class KeyProvider { /** - * Get the key metadata for all keys. - * - * @return a Map with all the keys and their metadata + * Get key metadata in bulk. + * @param names the names of the keys to get * @throws IOException */ - public Map getKeysMetadata() throws IOException { - Map keysMetadata = new LinkedHashMap(); - for (String key : getKeys()) { - Metadata meta = getMetadata(key); - if (meta != null) { - keysMetadata.put(key, meta); - } + public Metadata[] getKeysMetadata(String... names) throws IOException { + Metadata[] result = new Metadata[names.length]; + for (int i=0; i < names.length; ++i) { + result[i] = getMetadata(names[i]); } - return keysMetadata; + return result; } /** diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyShell.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyShell.java index 3cbcb6f9e9..908179d034 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyShell.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/crypto/key/KeyShell.java @@ -230,16 +230,16 @@ public class KeyShell extends Configured implements Tool { } public void execute() throws IOException { - List keys; try { + List keys = provider.getKeys(); out.println("Listing keys for KeyProvider: " + provider.toString()); if (metadata) { - Map keysMeta = provider.getKeysMetadata(); - for (Map.Entry entry : keysMeta.entrySet()) { - out.println(entry.getKey() + " : " + entry.getValue()); + Metadata[] meta = + provider.getKeysMetadata(keys.toArray(new String[keys.size()])); + for(int i=0; i < meta.length; ++i) { + out.println(keys.get(i) + " : " + meta[i]); } } else { - keys = provider.getKeys(); for (String keyName : keys) { out.println(keyName); }