Pārlūkot izejas kodu

AMBARI-5742. View: Files support for optional username view parameter. (jaimin)

Jaimin Jetly 11 gadi atpakaļ
vecāks
revīzija
fb12cc209b

+ 13 - 1
contrib/views/files/src/main/java/org/apache/ambari/view/filebrowser/HdfsService.java

@@ -66,9 +66,21 @@ public abstract class HdfsService {
   public HdfsApi getApi(ViewContext context) throws IOException, Exception {
     if (_api == null) {
       Thread.currentThread().setContextClassLoader(null);
-      _api = new HdfsApi(context.getProperties().get("dataworker.defaultFs"), context.getUsername());
+      _api = new HdfsApi(context.getProperties().get("dataworker.defaultFs"), getUsername(context));
     }
     return _api;
   }
 
+  /**
+   * Get username to use in HDFS
+   * @param context View Context instance
+   * @return user name
+   */
+  public String getUsername(ViewContext context) {
+    String username = context.getProperties().get("dataworker.username");
+    if (username == null || username.isEmpty())
+      username = context.getUsername();
+    return username;
+  }
+
 }

+ 5 - 1
contrib/views/files/src/main/resources/view.xml

@@ -24,7 +24,11 @@
         <description>FileSystem URI</description>
         <required>true</required>
     </parameter>
-
+    <parameter>
+        <name>dataworker.username</name>
+        <description>The username (defaults to ViewContext username)</description>
+        <required>false</required>
+    </parameter>
     
     <resource>
         <name>files</name>

+ 7 - 0
contrib/views/files/src/test/java/org/apache/ambari/view/filebrowser/FilebrowserTest.java

@@ -155,6 +155,13 @@ public class FilebrowserTest{
     Response result = fileBrowserService.download().downloadGZip(dr);
   }
 
+  @Test
+  public void testUsername() throws Exception {
+    Assert.assertEquals(System.getProperty("user.name"), fileBrowserService.upload().getUsername(context));
+    properties.put("dataworker.username", "test-user");
+    Assert.assertEquals("test-user", fileBrowserService.upload().getUsername(context));
+  }
+
   private static <T> T getService(Class<T> clazz,
                                   final ViewResourceHandler viewResourceHandler,
                                   final ViewContext viewInstanceContext) {