Bläddra i källkod

HUE-4142 [aws] Enable S3 browse option in filebrowser

TODO: Integrate into filepicker modals
Jenny Kim 9 år sedan
förälder
incheckning
e33a03081a

+ 3 - 0
apps/filebrowser/src/filebrowser/templates/fb_components.mako

@@ -23,6 +23,9 @@ from django.utils.translation import ugettext as _
     % if from_listdir:
       <ul class="nav nav-pills hueBreadcrumbBar">
         <li><a href="${url('filebrowser.views.view', path=urlencode(path))}?default_to_home" class="homeLink"><i class="fa fa-home"></i> ${_('Home')}</a></li>
+        % if is_s3_enabled:
+        <li class="s3-display"><a href="${url('filebrowser.views.view', path=s3_path)}" class="homeLink"><i class="fa fa-cloud"></i> ${_('S3')}</a></li>
+        % endif
         <li>
             <ul id="editBreadcrumb" class="hueBreadcrumb editable-breadcrumbs" data-bind="foreach: breadcrumbs" style="padding-right:40px; padding-top: 12px" title="${_('Edit path')}">
                 <li data-bind="visible: label.slice(-1) == '/'"><a data-bind="click: show, attr:{'href': '${url('filebrowser.views.view', path=urlencode(''))}' + url}"><span class="divider" data-bind="text: label"></span></a></li>

+ 3 - 1
apps/filebrowser/src/filebrowser/views.py

@@ -37,7 +37,6 @@ from django.http import Http404, HttpResponse, HttpResponseNotModified
 from django.views.decorators.http import require_http_methods
 from django.views.static import was_modified_since
 from django.shortcuts import redirect
-from django.template.defaultfilters import urlencode
 from django.utils.functional import curry
 from django.utils.http import http_date
 from django.utils.html import escape
@@ -46,6 +45,7 @@ from cStringIO import StringIO
 from gzip import GzipFile
 from avro import datafile, io
 
+from aws.conf import is_enabled as is_s3_enabled
 from desktop import appmanager
 from desktop.lib import i18n, paginator
 from desktop.lib.conf import coerce_bool
@@ -436,7 +436,9 @@ def listdir_paged(request, path):
     is_fs_superuser = _is_hdfs_superuser(request)
     data = {
         'path': path,
+        's3_path': 's3://',
         'breadcrumbs': breadcrumbs,
+        'is_s3_enabled': is_s3_enabled(),
         'current_request_path': request.path,
         'files': page.object_list,
         'page': _massage_page(page),

+ 2 - 2
desktop/core/src/desktop/lib/fsmanager.py

@@ -21,7 +21,7 @@ import sys
 import logging
 
 import aws
-from aws.conf import AWS_ACCOUNTS
+from aws.conf import is_enabled as is_s3_enabled
 
 from desktop.lib.fs import ProxyFS
 from hadoop import cluster
@@ -32,7 +32,7 @@ DEFAULT_SCHEMA = 'hdfs'
 
 FS_GETTERS = {
   "hdfs": cluster.get_hdfs,
-  "s3": aws.get_s3fs if 'default' in AWS_ACCOUNTS.keys() else None,
+  "s3": aws.get_s3fs if is_s3_enabled() else None,
 }
 
 

+ 5 - 1
desktop/libs/aws/src/aws/conf.py

@@ -52,11 +52,15 @@ AWS_ACCOUNTS = UnspecifiedConfigSection(
 )
 
 
+def is_enabled():
+  return 'default' in AWS_ACCOUNTS.keys()
+
+
 def config_validator(user):
   res = []
 
   if AWS_ACCOUNTS.keys():
-    if 'default' not in AWS_ACCOUNTS.keys():
+    if is_enabled():
       res.append(('aws.aws_accounts', 'Default AWS account is not configured'))
 
     regions = get_regions('s3')  # S3 is only supported service so far