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>
