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);
+  }
 }