From ba838eaf1fbc9781fab56a3b4c7b16997e91f24f Mon Sep 17 00:00:00 2001 From: Stephan Porada <sporada@uni-bielefeld.de> Date: Mon, 16 Sep 2019 14:09:07 +0200 Subject: [PATCH] Enhance delete_job method. --- app/main/views.py | 4 ++-- app/models.py | 7 ++++++- app/templates/main/jobs/job.html.j2 | 5 +++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/main/views.py b/app/main/views.py index 4b6aac74..5e81bbd8 100644 --- a/app/main/views.py +++ b/app/main/views.py @@ -155,7 +155,7 @@ def delete_job(job_id): db.session.refresh(job) if job.status == 'deleted': logger.warning('Job status is deleted.') - time.sleep(5) - job.delete_job() + time.sleep(5) # Wait 5 seconds before deleteing job and job files + job.delete_job() # See delete_job() method for further explanation deleted = True return redirect(url_for('main.dashboard')) diff --git a/app/models.py b/app/models.py index 02c789a1..494d0b03 100644 --- a/app/models.py +++ b/app/models.py @@ -8,6 +8,7 @@ from datetime import datetime import os import shutil import logging +import time class Permission: @@ -299,7 +300,11 @@ class Job(db.Model): def delete_job(self): """ Delete job with given job id from database. Also delete associated job - files + files. Wait 5 seconds after service has been flaged for stopping and + deleted. This method can only be used if the containers have been + totally stopped. Contianers are still running for a few seconds after + the associated service has been removed. + See: https://docs.docker.com/engine/swarm/swarm-tutorial/delete-service/ """ logger = logging.getLogger(__name__) delete_path = os.path.join('/mnt/opaque/', str(self.user_id), 'jobs', diff --git a/app/templates/main/jobs/job.html.j2 b/app/templates/main/jobs/job.html.j2 index 63110075..f35d0e04 100644 --- a/app/templates/main/jobs/job.html.j2 +++ b/app/templates/main/jobs/job.html.j2 @@ -104,14 +104,15 @@ <p id="description"></p> <a class="waves-effect waves-light btn" id="status"></a> <h2>Actions:</h2> - <!-- Confirm deletion of selected user with modal dialogue + <!-- Confirm deletion of job with modal dialogue Modal Trigger--> <a href="#modal-confirm-delete" class="waves-effect waves-light btn red modal-trigger"><i class="material-icons left">delete</i>Delete Job</a> <!-- Modal Strucutre --> <div id="modal-confirm-delete" class="modal"> <div class="modal-content"> <h4>Confirm deletion</h4> - <p>Do you really want to delete the job {{job.title}}?</p> + <p>Do you really want to delete the job {{job.title}}? + All iput and output files will be permanently deleted.</p> </div> <div class="modal-footer"> <a href="{{ url_for('main.delete_job', job_id=job.id) }}" class="modal-close waves-effect waves-green btn red"><i class="material-icons left">delete</i>Delete Job</a></a> -- GitLab