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/01/07 00:14:24 UTC

[airavata-django-portal-sdk] branch master updated: AIRAVATA-3362 experiment_dir_exists and fixes to computed paths

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 5a61fab  AIRAVATA-3362 experiment_dir_exists and fixes to computed paths
5a61fab is described below

commit 5a61fab2a011e47a3b20b60f290eca5c85fddcd9
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Wed Jan 6 19:13:55 2021 -0500

    AIRAVATA-3362 experiment_dir_exists and fixes to computed paths
---
 airavata_django_portal_sdk/user_storage.py | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/airavata_django_portal_sdk/user_storage.py b/airavata_django_portal_sdk/user_storage.py
index 8fe2bf4..7de1830 100644
--- a/airavata_django_portal_sdk/user_storage.py
+++ b/airavata_django_portal_sdk/user_storage.py
@@ -416,7 +416,7 @@ def listdir(request, path):
         raise ObjectDoesNotExist("User storage path does not exist")
 
 
-def list_experiment_dir(request, experiment_id, path=None):
+def list_experiment_dir(request, experiment_id, path=""):
     """
     List files, directories in experiment data directory. Returns a tuple,
     see `listdir`.
@@ -428,15 +428,14 @@ def list_experiment_dir(request, experiment_id, path=None):
             request.authz_token, experiment_id)
     datastore = _Datastore()
     exp_data_path = experiment.userConfigurationData.experimentDataDir
-    if path is not None:
-        exp_data_path = os.path.join(exp_data_path, path)
+    exp_data_path = os.path.join(exp_data_path, path)
     exp_owner = experiment.userName
     if datastore.dir_exists(exp_owner, exp_data_path):
         directories, files = datastore.list_user_dir(
             exp_owner, exp_data_path)
         directories_data = []
         for d in directories:
-            dpath = os.path.join(path, d)
+            dpath = os.path.join(exp_data_path, d)
             created_time = datastore.get_created_time(
                 exp_owner, dpath)
             size = datastore.size(exp_owner, dpath)
@@ -451,7 +450,7 @@ def list_experiment_dir(request, experiment_id, path=None):
             )
         files_data = []
         for f in files:
-            user_rel_path = os.path.join(path, f)
+            user_rel_path = os.path.join(exp_data_path, f)
             if not datastore.exists(exp_owner, user_rel_path):
                 logger.warning(
                     f"list_experiment_dir skipping {exp_owner}:{user_rel_path}, "
@@ -484,6 +483,20 @@ def list_experiment_dir(request, experiment_id, path=None):
     else:
         raise ObjectDoesNotExist("Experiment data directory does not exist")
 
+
+def experiment_dir_exists(request, experiment_id, path=""):
+
+    if _is_remote_api():
+        raise NotImplementedError()
+    experiment = request.airavata_client.getExperiment(
+            request.authz_token, experiment_id)
+    datastore = _Datastore()
+    exp_data_path = experiment.userConfigurationData.experimentDataDir
+    exp_data_path = os.path.join(exp_data_path, path)
+    exp_owner = experiment.userName
+    return datastore.dir_exists(exp_owner, exp_data_path)
+
+
 def get_experiment_dir(
         request,
         project_name=None,