Browse Source

HUE-5202 Added API to allow archive extraction using Notebook shell connector

krish 9 năm trước cách đây
mục cha
commit
a41b6a6
1 tập tin đã thay đổi với 23 bổ sung0 xóa
  1. 23 0
      apps/filebrowser/src/filebrowser/views.py

+ 23 - 0
apps/filebrowser/src/filebrowser/views.py

@@ -1348,6 +1348,29 @@ def _upload_archive(request):
     else:
         raise PopupException(_("Error in upload form: %s") % (form.errors,))
 
+def extract_archive_in_hdfs(fs, upload_path, file_name):
+
+  _upload_extract_archive_script_to_hdfs(fs)
+
+  from notebook.connectors.base import Notebook
+
+  shell_notebook = Notebook()
+  shell_notebook.add_shell_snippet(shell_command='extract_archive_in_hdfs.sh',
+                                   arguments=[{'value': '-u=' + upload_path}, {'value': '-f=' + file_name}],
+                                   archives=[],
+                                   files=[{'value': '/user/hue/common/extract_archive_in_hdfs.sh'}, {"value": upload_path + '/' + file_name}],
+                                   env_var=[{'value': 'HADOOP_USER_NAME=${wf:user()}'}])
+  shell_notebook.execute(request, batch=True)
+
+def _upload_extract_archive_script_to_hdfs(fs):
+  if not fs.exists('/user/hue/common/'):
+    fs.do_as_user('hue', fs.mkdir, '/user/hue/common/')
+    fs.do_as_user('hue', fs.chmod, '/user/hue/common/', 0755)
+
+  if not fs.do_as_user('hue', fs.exists, '/user/hue/common/extract_archive_in_hdfs.sh'):
+    fs.do_as_user('hue', fs.copyFromLocal, 'desktop/core/src/desktop/lib/extract_archive_in_hdfs.sh',
+                          '/user/hue/common/extract_archive_in_hdfs.sh')
+    fs.do_as_user('hue', fs.chmod, '/user/hue/common/', 0755)
 
 def status(request):
     status = request.fs.status()