You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by di...@apache.org on 2016/09/09 14:57:44 UTC
ambari git commit: AMBARI-18071: Ambari Files View needs to have
ability to load security configurations ( Keta Patel via dili)
Repository: ambari
Updated Branches:
refs/heads/trunk 137d08e86 -> 6b04d3e0e
AMBARI-18071: Ambari Files View needs to have ability to load security configurations ( Keta Patel via dili)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6b04d3e0
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6b04d3e0
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6b04d3e0
Branch: refs/heads/trunk
Commit: 6b04d3e0efa6672b7f49db57914f6bda7071d49c
Parents: 137d08e
Author: Di Li <di...@apache.org>
Authored: Fri Sep 9 10:57:06 2016 -0400
Committer: Di Li <di...@apache.org>
Committed: Fri Sep 9 10:57:06 2016 -0400
----------------------------------------------------------------------
.../view/utils/hdfs/ConfigurationBuilder.java | 14 +++++++++
.../utils/hdfs/ConfigurationBuilderTest.java | 32 +++++++++++++++++++-
2 files changed, 45 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/6b04d3e0/contrib/views/utils/src/main/java/org/apache/ambari/view/utils/hdfs/ConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/contrib/views/utils/src/main/java/org/apache/ambari/view/utils/hdfs/ConfigurationBuilder.java b/contrib/views/utils/src/main/java/org/apache/ambari/view/utils/hdfs/ConfigurationBuilder.java
index d505e9a..1eae756 100644
--- a/contrib/views/utils/src/main/java/org/apache/ambari/view/utils/hdfs/ConfigurationBuilder.java
+++ b/contrib/views/utils/src/main/java/org/apache/ambari/view/utils/hdfs/ConfigurationBuilder.java
@@ -118,6 +118,20 @@ public class ConfigurationBuilder {
conf.set("fs.defaultFS", defaultFS);
LOG.info(String.format("HdfsApi configured to connect to defaultFS='%s'", defaultFS));
+
+ //Exposing KMS configuration for Ambari Files View Instance with a "Local" cluster configuration
+ if(context.getCluster() != null) {
+ String encryptionKeyProviderUri = getEncryptionKeyProviderUri();
+ if(encryptionKeyProviderUri != null) {
+ conf.set("dfs.encryption.key.provider.uri", encryptionKeyProviderUri);
+ }
+ }
+ }
+
+ protected String getEncryptionKeyProviderUri() {
+ //If KMS is configured, this value will not be empty
+ String encryptionKeyProviderUri = context.getCluster().getConfigurationValue("hdfs-site", "dfs.encryption.key.provider.uri");
+ return encryptionKeyProviderUri;
}
private String getDefaultFS(ViewContext context) throws HdfsApiException {
http://git-wip-us.apache.org/repos/asf/ambari/blob/6b04d3e0/contrib/views/utils/src/test/java/org/apache/ambari/view/utils/hdfs/ConfigurationBuilderTest.java
----------------------------------------------------------------------
diff --git a/contrib/views/utils/src/test/java/org/apache/ambari/view/utils/hdfs/ConfigurationBuilderTest.java b/contrib/views/utils/src/test/java/org/apache/ambari/view/utils/hdfs/ConfigurationBuilderTest.java
index ed3025b..12c613a 100644
--- a/contrib/views/utils/src/test/java/org/apache/ambari/view/utils/hdfs/ConfigurationBuilderTest.java
+++ b/contrib/views/utils/src/test/java/org/apache/ambari/view/utils/hdfs/ConfigurationBuilderTest.java
@@ -18,11 +18,19 @@
package org.apache.ambari.view.utils.hdfs;
+import org.apache.ambari.view.ViewContext;
+import org.apache.ambari.view.cluster.Cluster;
+import org.easymock.EasyMockSupport;
import org.junit.Test;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
import static org.junit.Assert.*;
-public class ConfigurationBuilderTest {
+public class ConfigurationBuilderTest extends EasyMockSupport {
@Test
public void testAddProtocolMissing() throws Exception {
String normalized = ConfigurationBuilder.addProtocolIfMissing("namenode.example.com:50070");
@@ -46,4 +54,26 @@ public class ConfigurationBuilderTest {
String normalized = ConfigurationBuilder.addPortIfMissing("webhdfs://namenode.example.com:50070");
assertEquals(normalized, "webhdfs://namenode.example.com:50070");
}
+
+ @Test
+ public void testGetEncryptionKeyProviderUri() throws Exception {
+ //For View with an associated cluster must return the following KeyProvider
+ //For View with NO cluster associated with it, getEncryptionKeyProviderUri() won't be called
+
+ String keyProvider = "kms://http@localhost:16000/kms";
+ Cluster cluster = createNiceMock(Cluster.class);
+ expect(cluster.getConfigurationValue("hdfs-site", "dfs.encryption.key.provider.uri")).andReturn(keyProvider);
+ replay(cluster);
+
+ ViewContext viewContext = createNiceMock(ViewContext.class);
+ expect(viewContext.getCluster()).andReturn(cluster);
+ Map<String, String> instanceProperties = new HashMap<>();
+ expect(viewContext.getProperties()).andReturn(instanceProperties).anyTimes();
+ replay(viewContext);
+
+ ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(viewContext);
+ String encryptionKeyProviderUri = configurationBuilder.getEncryptionKeyProviderUri();
+
+ assertEquals(encryptionKeyProviderUri, keyProvider);
+ }
}