You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2021/04/09 20:36:08 UTC

[airavata-django-portal-sdk] branch master updated: AIRAVATA-3362 implementing remote api support for exp dir functions

This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal-sdk.git


The following commit(s) were added to refs/heads/master by this push:
     new eedd030  AIRAVATA-3362 implementing remote api support for exp dir functions
eedd030 is described below

commit eedd030e91a52d0054ade3448ae9e2f94d2e90ae
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Fri Apr 9 16:32:24 2021 -0400

    AIRAVATA-3362 implementing remote api support for exp dir functions
---
 airavata_django_portal_sdk/user_storage.py | 33 ++++++++++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

diff --git a/airavata_django_portal_sdk/user_storage.py b/airavata_django_portal_sdk/user_storage.py
index 27ddc8c..76d749a 100644
--- a/airavata_django_portal_sdk/user_storage.py
+++ b/airavata_django_portal_sdk/user_storage.py
@@ -5,6 +5,7 @@ import logging
 import mimetypes
 import os
 import shutil
+import warnings
 from http import HTTPStatus
 from urllib.parse import quote, unquote, urlparse
 
@@ -447,7 +448,23 @@ def list_experiment_dir(request, experiment_id, path=""):
     see `listdir`.
     """
     if _is_remote_api():
-        raise NotImplementedError()
+        resp = _call_remote_api(request,
+                                "/experiment-storage/{experiment_id}/{path}",
+                                path_params={"path": path,
+                                             "experiment_id": experiment_id},
+                                )
+        data = resp.json()
+        for directory in data['directories']:
+            # Convert JSON ISO8601 timestamp to datetime instance
+            directory['created_time'] = convert_iso8601_to_datetime(
+                directory['createdTime'])
+        for file in data['files']:
+            # Convert JSON ISO8601 timestamp to datetime instance
+            file['created_time'] = convert_iso8601_to_datetime(
+                file['createdTime'])
+            file['mime_type'] = file['mimeType']
+            file['data-product-uri'] = file['dataProductURI']
+        return data['directories'], data['files']
 
     experiment = request.airavata_client.getExperiment(
         request.authz_token, experiment_id)
@@ -512,11 +529,22 @@ def list_experiment_dir(request, experiment_id, path=""):
 def experiment_dir_exists(request, experiment_id, path=""):
 
     if _is_remote_api():
-        raise NotImplementedError()
+        resp = _call_remote_api(request,
+                                "/experiment-storage/{experiment_id}/{path}",
+                                path_params={"path": path,
+                                             "experiment_id": experiment_id},
+                                raise_for_status=False)
+        if resp.status_code == HTTPStatus.NOT_FOUND:
+            return False
+        resp.raise_for_status()
+        return resp.json()['isDir']
+
     experiment = request.airavata_client.getExperiment(
         request.authz_token, experiment_id)
     datastore = _Datastore()
     exp_data_path = experiment.userConfigurationData.experimentDataDir
+    if exp_data_path is None:
+        return False
     exp_data_path = os.path.join(exp_data_path, path)
     exp_owner = experiment.userName
     return datastore.dir_exists(exp_owner, exp_data_path)
@@ -549,6 +577,7 @@ def get_rel_path(request, path):
 
 def get_rel_experiment_dir(request, experiment_id):
     """Return experiment data dir path relative to user's directory."""
+    warnings.warn("Use list_experiment_dir instead.", DeprecationWarning)
     if _is_remote_api():
         resp = _call_remote_api(request,
                                 "/experiments/{experimentId}/",