From 78e7930566842ad650c2ce5f44abc0b5bc752811 Mon Sep 17 00:00:00 2001 From: Sora Date: Sat, 11 Nov 2023 23:26:39 +0100 Subject: [PATCH] will it blend? --- main.py | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index 7eb51bb..44ee137 100644 --- a/main.py +++ b/main.py @@ -146,6 +146,44 @@ def order_services_by_dependencies(servicesdict: dict) -> list: return serviceslist +def backup_service(servicename: str, servicesdict: dict, composefilepath: str) -> bool: + ''' + Pause les containers, lance la backup des dépendances si il y en a, lance sa propre backup, + puis redémarre les containers. + :param servicename: str + :param servicesdict: dict + :return: bool + ''' + + if servicesdict[servicename]["backupdone"]: + return True + + dockerclient = docker.from_env() + containersid = os.popen(f"docker-compose --file {composefilepath} ps --quiet {servicename}").readlines() + containerrunning = [] + for containerid in containersid: + container = dockerclient.containers.get(containerid) + containerrunning.append(container.status == "running") + print(f"stopping {container.name}") + container.stop() + + if len(servicesdict[servicename]["must_before"]): + for dependencie in servicesdict[servicename]["must_before"]: + backup_service(dependencie, servicesdict, composefilepath) + + # TODO: faire la sauvegarde + print(f"starting backup") + + for containerindex in range(0, len(containersid)): + if containerrunning[containerindex]: + container = dockerclient.containers.get(containersid[containerindex]) + print(f"restarting {container.name}") + container.start() + + servicesdict[servicename]["backupdone"] = True + return True + + def yaml_file_to_container_list(filepath: str) -> list|None: ''' Retourne le contenu d'un fichier yaml sous forme de dictionnaire @@ -204,4 +242,5 @@ if __name__ == '__main__': servicesDict = yaml_to_services_list(composefile) servicesList = order_services_by_dependencies(servicesDict) - print(servicesList) + for servicetobackup in reversed(servicesList): + backup_service(servicetobackup)