will it blend?

This commit is contained in:
2023-11-11 23:26:39 +01:00
parent ed1777e9fc
commit 78e7930566

41
main.py
View File

@@ -146,6 +146,44 @@ def order_services_by_dependencies(servicesdict: dict) -> list:
return serviceslist 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: def yaml_file_to_container_list(filepath: str) -> list|None:
''' '''
Retourne le contenu d'un fichier yaml sous forme de dictionnaire Retourne le contenu d'un fichier yaml sous forme de dictionnaire
@@ -204,4 +242,5 @@ if __name__ == '__main__':
servicesDict = yaml_to_services_list(composefile) servicesDict = yaml_to_services_list(composefile)
servicesList = order_services_by_dependencies(servicesDict) servicesList = order_services_by_dependencies(servicesDict)
print(servicesList) for servicetobackup in reversed(servicesList):
backup_service(servicetobackup)