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

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

commit 086fb53fc8d816c76f5df69d5a33c4cb0e47bb6a
Author: Marcus Christie <[email protected]>
AuthorDate: Tue Apr 18 10:14:07 2023 -0400

    AIRAVATA-3694 Notice to user when experiment data is archived and also the 
general archive policy
---
 django_airavata/apps/api/views.py                  | 10 +++++++---
 .../storage/ExperimentStorageViewContainer.vue     | 23 ++++++++++++++++++++++
 2 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/django_airavata/apps/api/views.py 
b/django_airavata/apps/api/views.py
index f44e5e74..25a2f93a 100644
--- a/django_airavata/apps/api/views.py
+++ b/django_airavata/apps/api/views.py
@@ -1289,10 +1289,14 @@ class CurrentGatewayResourceProfile(APIView):
 class ExperimentArchiveView(APIView):
 
     def get(self, request, experiment_id=None, format=None):
-        experiment: ExperimentModel = 
request.airavata_client.getExperiment(request.authz_token, experiment_id)
-        result = dict(archived=False, archive_name=None, created_date=None)
+        experiment: ExperimentModel = request.airavata_client.getExperiment(
+            request.authz_token, experiment_id)
+        result = dict(archived=False, archive_name=None, created_date=None,
+                      max_age=settings.GATEWAY_USER_DATA_ARCHIVE_MAX_AGE_DAYS)
         try:
-            archive_entry = 
UserDataArchiveEntry.objects.get(entry_path=experiment.userConfigurationData.experimentDataDir,
 user_data_archive__rolled_back=False)
+            archive_entry = UserDataArchiveEntry.objects.get(
+                entry_path=experiment.userConfigurationData.experimentDataDir,
+                user_data_archive__rolled_back=False)
             result["archived"] = True
             result["archive_name"] = 
archive_entry.user_data_archive.archive_name
             result["created_date"] = 
archive_entry.user_data_archive.created_date
diff --git 
a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/ExperimentStorageViewContainer.vue
 
b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/ExperimentStorageViewContainer.vue
index a420c1ca..8868ed81 100644
--- 
a/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/ExperimentStorageViewContainer.vue
+++ 
b/django_airavata/apps/workspace/static/django_airavata_workspace/js/components/storage/ExperimentStorageViewContainer.vue
@@ -21,9 +21,18 @@
       @directory-selected="directorySelected"
       :download-in-new-window="true"
     ></experiment-storage-path-viewer>
+
+    <b-alert v-else-if="archived" show variant="warning">
+      This experiment was archived on {{ experimentArchive.created_date }}.
+    </b-alert>
     <b-alert v-else-if="experimentDataDirNotFound" show variant="warning">
       Experiment Data Directory does not exist in storage.
     </b-alert>
+
+    <small class="text-muted" v-if="archiveMaxAge > 0">
+      Data is retained for {{ archiveMaxAge }} days before it is removed and
+      archived.
+    </small>
   </b-card>
 </template>
 
@@ -43,18 +52,26 @@ export default {
     return {
       experimentStoragePath: null,
       experimentDataDirNotFound: false,
+      experimentArchive: null,
     };
   },
   components: {
     ExperimentStoragePathViewer,
   },
   created() {
+    this.loadExperimentArchive();
     return this.loadExperimentStoragePath("");
   },
   computed: {
     canDownloadDataDirectory() {
       return this.experimentStoragePath && !this.experimentDataDirNotFound;
     },
+    archived() {
+      return this.experimentArchive?.archived;
+    },
+    archiveMaxAge() {
+      return this.experimentArchive?.max_age;
+    },
   },
   methods: {
     loadExperimentStoragePath(path) {
@@ -83,6 +100,12 @@ export default {
     directorySelected(path) {
       return this.loadExperimentStoragePath(path);
     },
+    async loadExperimentArchive() {
+      const experimentArchive = await services.ExperimentArchiveService.get({
+        experimentId: this.experimentId,
+      });
+      this.experimentArchive = experimentArchive;
+    },
   },
 };
 </script>

Reply via email to