From 597eb0e3839239905b477938f3bf98f4f7b181e4 Mon Sep 17 00:00:00 2001 From: Egor Matveev Date: Fri, 1 Apr 2022 19:23:50 +0300 Subject: [PATCH] cleaner --- SprintLib/testers/BaseTester.py | 12 ++++++------ daemons/management/commands/docker_cleaner.py | 11 +++++++++++ 2 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 daemons/management/commands/docker_cleaner.py diff --git a/SprintLib/testers/BaseTester.py b/SprintLib/testers/BaseTester.py index de5a2cf..80688f0 100644 --- a/SprintLib/testers/BaseTester.py +++ b/SprintLib/testers/BaseTester.py @@ -2,7 +2,7 @@ from os import listdir, mkdir from os.path import join, exists from subprocess import call, TimeoutExpired -from SprintLib.queue import notify +from SprintLib.queue import notify, send_to_queue from Main.models import ExtraFile, SolutionFile from Main.models.progress import Progress from Sprint.settings import CONSTS @@ -172,13 +172,13 @@ class BaseTester: self.solution.result = "TE" raise e self.solution.save() - self.call(f"docker rm --force solution_{self.solution.id}") - self.call(f"docker rm --force solution_{self.solution.id}_checker") + send_to_queue("cleaner", {"type": "container", "name": f"solution_{self.solution.id}"}) + send_to_queue("cleaner", {"type": "container", "name": f"solution_{self.solution.id}_checker"}) for file in self.dockerfiles: add_name = file.filename[11:] - self.call(f"docker rm --force solution_container_{self.solution.id}_{add_name}") - self.call(f"docker image rm solution_image_{self.solution.id}_{add_name}") - self.call(f"docker network rm solution_network_{self.solution.id}") + send_to_queue("cleaner", {"type": "container", "name": f"solution_container_{self.solution.id}_{add_name}"}) + send_to_queue("cleaner", {"type": "image", "name": f"solution_image_{self.solution.id}_{add_name}"}) + send_to_queue("cleaner", {"type": "network", "name": f"docker network rm solution_network_{self.solution.id}"}) self.solution.user.userinfo.refresh_from_db() notify( self.solution.user, diff --git a/daemons/management/commands/docker_cleaner.py b/daemons/management/commands/docker_cleaner.py new file mode 100644 index 0000000..35166bb --- /dev/null +++ b/daemons/management/commands/docker_cleaner.py @@ -0,0 +1,11 @@ +from subprocess import call + +from SprintLib.queue import MessagingSupport + + +class Command(MessagingSupport): + help = "starts docker cleaner" + queue_name = "cleaner" + + def process(self, payload: dict): + call(f'docker {payload["type"]} rm --force {payload["name"]}', shell=True)