def test_has_s3_access(self): # When RAZ is not enabled assert_false(conf.has_s3_access(self.user)) # When only RAZ is enabled (S3 in Azure cluster) reset = RAZ.IS_ENABLED.set_for_testing(True) try: assert_false(conf.has_s3_access(self.user)) finally: reset() conf.clear_cache() # When RAZ is enabled along with S3 config resets = [ RAZ.IS_ENABLED.set_for_testing(True), conf.AWS_ACCOUNTS.set_for_testing({ 'default': { 'region': 'us-west-2', 'host': 's3-us-west-2.amazonaws.com', 'allow_environment_credentials': 'false' } }) ] try: assert_true(conf.has_s3_access(self.user)) finally: for reset in resets: reset() conf.clear_cache()
def hue(request): apps = appmanager.get_apps_dict(request.user) current_app, other_apps, apps_list = _get_apps(request.user, '') default_cluster_index, default_cluster_interface = Cluster(request.user).get_list_interface_indexes() clusters = get_clusters().values() return render('hue.mako', request, { 'apps': apps, 'other_apps': other_apps, 'is_s3_enabled': is_s3_enabled() and has_s3_access(request.user), 'is_adls_enabled': is_adls_enabled() and has_adls_access(request.user), 'is_ldap_setup': 'desktop.auth.backend.LdapBackend' in desktop.conf.AUTH.BACKEND.get(), 'leaflet': { 'layer': desktop.conf.LEAFLET_TILE_LAYER.get(), 'attribution': desktop.conf.LEAFLET_TILE_LAYER_ATTRIBUTION.get(), 'map_options': json.dumps(desktop.conf.LEAFLET_MAP_OPTIONS.get()), 'layer_options': json.dumps(desktop.conf.LEAFLET_TILE_LAYER_OPTIONS.get()), }, 'is_demo': desktop.conf.DEMO_ENABLED.get(), 'banner_message': get_banner_message(request), 'user_preferences': dict((x.key, x.value) for x in UserPreferences.objects.filter(user=request.user)), 'cluster': clusters[0]['type'] if clusters else None, 'clusters_config_json': json.dumps(clusters), 'default_cluster_index': default_cluster_index, 'default_cluster_interface': default_cluster_interface })
def commonheader(title, section, user, request=None, padding="90px", skip_topbar=False, skip_idle_timeout=False, is_mobile=False): """ Returns the rendered common header """ current_app, other_apps, apps_list = _get_apps(user, section) template = 'common_header.mako' if is_mobile: template = 'common_header_m.mako' return django_mako.render_to_string(template, { 'current_app': current_app, 'apps': apps_list, 'other_apps': other_apps, 'title': title, 'section': section, 'padding': padding, 'user': user, 'request': request, 'skip_topbar': skip_topbar, 'skip_idle_timeout': skip_idle_timeout, 'leaflet': { 'layer': desktop.conf.LEAFLET_TILE_LAYER.get(), 'attribution': desktop.conf.LEAFLET_TILE_LAYER_ATTRIBUTION.get(), 'map_options': json.dumps(desktop.conf.LEAFLET_MAP_OPTIONS.get()), 'layer_options': json.dumps(desktop.conf.LEAFLET_TILE_LAYER_OPTIONS.get()), }, 'is_demo': desktop.conf.DEMO_ENABLED.get(), 'is_ldap_setup': 'desktop.auth.backend.LdapBackend' in desktop.conf.AUTH.BACKEND.get(), 'is_s3_enabled': is_s3_enabled() and has_s3_access(user), 'is_adls_enabled': is_adls_enabled() and has_adls_access(request.user), 'banner_message': get_banner_message(request) })
def hue(request): apps = appmanager.get_apps_dict(request.user) return render( 'hue.mako', request, { 'apps': apps, 'interpreters': get_ordered_interpreters(request.user), 'is_s3_enabled': is_s3_enabled() and has_s3_access(request.user), 'is_ldap_setup': 'desktop.auth.backend.LdapBackend' in desktop.conf.AUTH.BACKEND.get(), 'leaflet': { 'layer': desktop.conf.LEAFLET_TILE_LAYER.get(), 'attribution': desktop.conf.LEAFLET_TILE_LAYER_ATTRIBUTION.get() }, 'is_demo': desktop.conf.DEMO_ENABLED.get(), 'banner_message': get_banner_message(request), 'cluster_config': ClusterConfig(request.user), 'user_preferences': dict((x.key, x.value) for x in UserPreferences.objects.filter(user=request.user)) })
def hue(request): apps = appmanager.get_apps_dict(request.user) return render( 'hue.mako', request, { 'apps': apps, 'tours_and_tutorials': Settings.get_settings().tours_and_tutorials, 'interpreters': get_ordered_interpreters(request.user), 'is_s3_enabled': is_s3_enabled() and has_s3_access(request.user), 'is_ldap_setup': 'desktop.auth.backend.LdapBackend' in desktop.conf.AUTH.BACKEND.get(), 'leaflet': { 'layer': desktop.conf.LEAFLET_TILE_LAYER.get(), 'attribution': desktop.conf.LEAFLET_TILE_LAYER_ATTRIBUTION.get() }, 'is_demo': desktop.conf.DEMO_ENABLED.get(), 'banner_message': get_banner_message(request), 'cluster_config': ClusterConfig(request.user) })
def has_access(fs=None, user=None): if fs == 'hdfs': return True elif fs == 'adl': return has_adls_access(user) elif fs == 's3a': return has_s3_access(user) elif fs == 'abfs': return has_abfs_access(user)
def global_js_constants(request): return HttpResponse(render('global_js_constants.mako', request, { 'is_s3_enabled': is_s3_enabled() and has_s3_access(request.user), 'leaflet': { 'layer': desktop.conf.LEAFLET_TILE_LAYER.get(), 'attribution': desktop.conf.LEAFLET_TILE_LAYER_ATTRIBUTION.get(), 'map_options': json.dumps(desktop.conf.LEAFLET_MAP_OPTIONS.get()), 'layer_options': json.dumps(desktop.conf.LEAFLET_TILE_LAYER_OPTIONS.get()), } }), content_type="application/javascript")
def responsive(request): apps = appmanager.get_apps_dict(request.user) return render('responsive.mako', request, { 'apps': apps, 'tours_and_tutorials': Settings.get_settings().tours_and_tutorials, 'interpreters': get_ordered_interpreters(request.user), 'is_s3_enabled': is_s3_enabled() and has_s3_access(request.user), 'is_ldap_setup': 'desktop.auth.backend.LdapBackend' in desktop.conf.AUTH.BACKEND.get() })
def responsive(request): apps = appmanager.get_apps_dict(request.user) return render( 'responsive.mako', request, { 'apps': apps, 'tours_and_tutorials': Settings.get_settings().tours_and_tutorials, 'interpreters': get_interpreters(request.user), 'is_s3_enabled': is_s3_enabled() and has_s3_access(request.user) })
def get_filesystems(request): response = {} filesystems = {} for k, v in list(FS_GETTERS.items()): if not k.startswith('s3') or has_s3_access(request.user): filesystems[k] = v is not None response['status'] = 0 response['filesystems'] = filesystems return JsonResponse(response)
def get_filesystems(request): response = {} filesystems = {} for k, v in FS_GETTERS.items(): if not k.startswith('s3') or has_s3_access(request.user): filesystems[k] = v is not None response['status'] = 0 response['filesystems'] = filesystems return JsonResponse(response)
def _get_scheme(self, path): if path.lower().startswith(S3A_ROOT): from desktop.auth.backend import rewrite_user # Avoid cyclic loop try: user = User.objects.get(username=self.user) if not has_s3_access(rewrite_user(user)): raise IOError(errno.EPERM, "Missing permissions for %s on %s" % (self.user, path,)) except User.DoesNotExist: raise IOError(errno.EPERM, "Can't check permissions for %s on %s" % (self.user, path)) split = urlparse(path) if split.scheme: return split.scheme if path and path[0] == posixpath.sep: return self._default_scheme
def commonheader(title, section, user, request=None, padding="90px", skip_topbar=False, skip_idle_timeout=False, is_mobile=False): """ Returns the rendered common header """ current_app = None other_apps = [] if user.is_authenticated(): apps = appmanager.get_apps(user) apps_list = appmanager.get_apps_dict(user) for app in apps: if app.display_name not in [ 'beeswax', 'impala', 'pig', 'jobsub', 'jobbrowser', 'metastore', 'hbase', 'sqoop', 'oozie', 'filebrowser', 'useradmin', 'search', 'help', 'about', 'zookeeper', 'proxy', 'rdbms', 'spark', 'indexer', 'security', 'notebook'] and app.menu_index != -1: other_apps.append(app) if section == app.display_name: current_app = app else: apps_list = [] template = 'common_header.mako' if is_mobile: template = 'common_header_m.mako' return django_mako.render_to_string(template, { 'current_app': current_app, 'apps': apps_list, 'other_apps': other_apps, 'title': title, 'section': section, 'padding': padding, 'user': user, 'request': request, 'skip_topbar': skip_topbar, 'skip_idle_timeout': skip_idle_timeout, 'leaflet': { 'layer': desktop.conf.LEAFLET_TILE_LAYER.get(), 'attribution': desktop.conf.LEAFLET_TILE_LAYER_ATTRIBUTION.get() }, 'is_demo': desktop.conf.DEMO_ENABLED.get(), 'is_ldap_setup': 'desktop.auth.backend.LdapBackend' in desktop.conf.AUTH.BACKEND.get(), 'is_s3_enabled': is_s3_enabled() and has_s3_access(user), 'banner_message': get_banner_message(request) })
def commonheader(title, section, user, request=None, padding="90px", skip_topbar=False, skip_idle_timeout=False, is_mobile=False): """ Returns the rendered common header """ current_app = None other_apps = [] if user.is_authenticated(): apps = appmanager.get_apps(user) apps_list = appmanager.get_apps_dict(user) for app in apps: if app.display_name not in [ 'beeswax', 'impala', 'pig', 'jobsub', 'jobbrowser', 'metastore', 'hbase', 'sqoop', 'oozie', 'filebrowser', 'useradmin', 'search', 'help', 'about', 'zookeeper', 'proxy', 'rdbms', 'spark', 'indexer', 'security', 'notebook'] and app.menu_index != -1: other_apps.append(app) if section == app.display_name: current_app = app else: apps_list = [] template = 'common_header.mako' if is_mobile: template = 'common_header_m.mako' return django_mako.render_to_string(template, { 'current_app': current_app, 'apps': apps_list, 'other_apps': other_apps, 'title': title, 'section': section, 'padding': padding, 'user': user, 'request': request, 'skip_topbar': skip_topbar, 'skip_idle_timeout': skip_idle_timeout, 'leaflet': { 'layer': desktop.conf.LEAFLET_TILE_LAYER.get(), 'attribution': desktop.conf.LEAFLET_TILE_LAYER_ATTRIBUTION.get() }, 'is_demo': desktop.conf.DEMO_ENABLED.get(), 'is_ldap_setup': 'desktop.auth.backend.LdapBackend' in desktop.conf.AUTH.BACKEND.get(), 'is_s3_enabled': is_s3_enabled() and has_s3_access(user) })